링 서명이란? 암호화폐가 송신자를 숨기는 원리

· 읽는 데 7분

링 서명을 쓰면 그룹을 대표해 서명할 수 있으며, 누구나 그 서명이 그룹의 키 중 하나에서 나왔다는 것은 확인할 수 있지만 어느 키인지는 알 수 없습니다. 이 글은 링 서명을 처음 소개한 2001년 논문부터 키 이미지와 CLSAG까지 링 서명의 작동 방식을 설명하고, Blocknet이 크기 16의 링으로 모든 결제의 송신자를 프라이빗하게 지키는 방식을 보여 줍니다.

링 서명이란 무엇입니까?

짧은 답변

링 서명은 개인 키 하나와 다른 사람들의 공개 키 집합으로 만드는 디지털 서명입니다. 검증자는 그 키들 중 하나의 소유자가 서명했다는 것은 확인할 수 있지만, 어느 키인지는 알 수 없습니다. 서명자는 사전 설정이나 다른 구성원의 협조 없이 그 자리에서 그룹을 고릅니다.

일반적인 디지털 서명은 메시지를 공개 키 하나에 연결합니다. 링 서명은 메시지를 링이라고 부르는 공개 키 집합에 연결합니다. 서명자에게는 자신의 개인 키만 있으면 되며, 다른 구성원은 이미 공개한 공개 키 외에는 아무것도 제공하지 않습니다. 외부에서 보면 링의 모든 구성원이 똑같이 그럴듯한 서명자입니다.

링 서명은 어디에서 왔습니까?

Ron Rivest, Adi Shamir, Yael Tauman은 ASIACRYPT 2001에서 “How to Leak a Secret”이라는 논문으로 링 서명을 소개했습니다. 논문의 예시는 어느 장관인지는 밝히지 않으면서 내각에서 나온 정보라는 것을 증명하는 방식으로 기자에게 정보를 흘리려는 장관입니다. 장관은 자신의 키와 다른 장관들의 공개 키로 서명하고, 기자는 누가 썼는지 알지 못한 채 서명을 검증할 수 있습니다.

이 아이디어를 돋보이게 한 두 가지 특성이 있습니다. 서명자의 신원을 밝힐 수 있는 그룹 관리자가 없다는 점이 링 서명을 이전의 그룹 서명과 구별합니다. 그리고 링은 즉석에서 만들어집니다. 서명자는 서명하는 순간 공개된 아무 키로나 링을 구성할 수 있습니다. 저자들이 이 이름을 고른 이유는 “링은 균일한 둘레를 가지며 중심이 없는 기하학적 영역”이기 때문입니다. 모든 구성원이 가장자리에 있고 누구도 주도하지 않습니다. 서명 알고리즘도 같은 모양으로, 스스로에게 되돌아오는 계산의 사슬입니다.

링 서명은 어떻게 작동합니까?

암호화폐에서 쓰는 현대적인 방식은 해시와 타원 곡선 키로 이 고리를 만듭니다. 16개의 공개 키로 이루어진 링을 예로 들어 아이디어를 쉬운 단계로 설명하면 다음과 같습니다.

  1. 자신의 자리에서 시작합니다. 서명자는 무작위 비밀 숫자를 골라 메시지와 함께 해시합니다. 이 해시가 링의 다음 자리에 대한 챌린지가 됩니다.
  2. 나머지 모든 자리의 응답을 꾸며 냅니다. 다른 구성원 15명 각각에 대해 서명자는 무작위 응답을 골라, 그 구성원의 공개 키와 현재 챌린지와 결합해 다음 자리의 챌린지를 계산합니다.
  3. 링을 닫습니다. 한 바퀴를 다 돌면 사슬은 서명자 자신의 자리로 돌아옵니다. 그 자리의 개인 키를 가진 사람만이 사슬을 정확히 시작한 곳에 도달하게 하는 유일한 응답을 계산할 수 있습니다.

서명은 시작 챌린지와 16개의 응답으로 이루어집니다. 검증자는 아무 곳에서나 시작해 공개 키와 응답으로 각 챌린지를 다시 계산하며 링을 한 바퀴 돌고, 고리가 닫히는지 확인합니다. 모든 자리는 공개 키 하나와 무작위처럼 보이는 응답 하나로 똑같아 보입니다. 서명자가 어디에서 시작했는지 표시하는 것은 없으므로, 검증자는 개인 키 하나가 링을 닫았다는 것만 알 뿐 어느 키인지는 알 수 없습니다.

키 이미지는 이중 지불을 어떻게 막습니까?

단순한 링 서명에는 돈으로 쓰기에 한 가지 빈틈이 있습니다. 모든 지출이 다른 출력들 사이에 숨으면 네트워크는 같은 코인이 두 번 사용되었는지 알 수 없습니다. 연결 가능한 링 서명이 이 문제를 해결합니다. Joseph Liu, Victor Wei, Duncan Wong은 ACISP 2004에서 첫 번째 방식인 LSAG를 발표했습니다(ePrint 2004/027). 같은 개인 키로 만든 두 서명은 서로 연결될 수 있지만, 서명자는 여전히 링 안에 숨습니다.

2013년의 CryptoNote 설계는 이를 키 이미지로 발전시켰습니다. 개인 키가 x이고 공개 키가 P인 출력에 대해 지갑은 I = x · Hp(P)를 계산하며, 여기서 Hp는 공개 키를 곡선 위의 점으로 해시합니다. 서명은 I가 서명한 링 구성원의 것임을 증명하지만 어느 구성원인지는 말하지 않습니다. 키 이미지는 사용하는 출력에만 의존하므로, 그 출력을 다시 사용하면 항상 같은 I가 나옵니다. 모든 노드는 이미 본 키 이미지 목록을 유지하며, 키 이미지를 반복하는 트랜잭션은 거부합니다.

MLSAG에서 CLSAG로

금액까지 숨기는 암호화폐에서는 링 서명이 두 번째 사실, 즉 숨겨진 입력 금액이 트랜잭션이 쓰는 금액과 일치한다는 것도 증명해야 합니다. Shen Noether의 2015년 논문 “Ring Signature Confidential Transactions for Monero”(RingCT)는 소유권용과 금액 커밋먼트용, 두 개의 키 집합에 대한 링 서명인 MLSAG로 이를 구현했습니다.

Brandon Goodell, Sarang Noether, Arthur Blue의 CLSAG(ePrint 2019/654)는 같은 두 가지 사실을 더 간결하게 증명합니다. Monero는 2020년 10월 업그레이드에서 MLSAG를 CLSAG로 교체했습니다. Monero 문서에 따르면 검증 속도가 약 20% 빨라졌고, 입력 2개와 출력 2개로 된 일반적인 트랜잭션의 크기가 약 2.5 kB에서 1.9 kB로 줄었습니다.

링 크기는 프라이버시에 어떤 의미가 있습니까?

짧은 답변

링 크기는 각 링에 들어 있는 출력의 수, 즉 실제 출력과 디코이를 합친 수입니다. 링 크기가 16이면 관찰자는 모든 입력마다 똑같이 유효한 후보 16개를 보게 됩니다. 크기가 고정되어 있다는 점은 크기가 크다는 점만큼 중요합니다. 모든 입력이 같은 크기를 쓰면 크기 자체로는 누가 트랜잭션을 만들었는지 아무것도 드러나지 않기 때문입니다.

디코이는 체인에 있는 실제 출력이므로, 각각이 실제로 사용되는 코인일 수 있습니다. 링 크기가 달라질 수 있다면 특이한 크기를 고른 지갑은 자기 트랜잭션을 스스로 표시하게 됩니다. Monero는 2022년 8월 업그레이드에서 링 크기를 11에서 16으로 늘렸으며, Blocknet은 합의 규칙으로 모든 입력에 16을 사용합니다.

Blocknet의 링 서명 사용 방식

Blocknet의 모든 입력은 정확히 16개의 출력으로 이루어진 링에 대해 CLSAG와 RingCT로 서명됩니다. 규칙은 합의 단계에서 강제되므로 어떤 지갑도 이를 건너뛸 수 없습니다.

트랜잭션 형식에는 투명 모드가 없으므로 체인의 모든 결제에 이런 링이 들어 있습니다. 링 서명은 송신자를 숨기고, 일회용 스텔스 주소는 수신자를, 페더슨 커밋먼트와 Bulletproofs는 금액을 숨깁니다. Blocknet이 결제를 프라이빗하게 지키는 방법에서 각 계층과 그것이 누군가에게 결제할 때 어떤 의미인지 설명합니다.

Faraday 업그레이드로 달라지는 점

blocknetcrypto.com에 따르면 Blocknet은 2027년 2월 16일 무렵 활성화를 목표로 Faraday라는 네트워크 업그레이드를 계획하고 있습니다. 사이트의 표현으로는 “현재 지출은 16개의 출력 사이에 숨습니다. Faraday 이후에는 체인의 모든 출력 사이에 숨습니다.” Faraday는 새로운 지출 증명도 도입할 예정이며, 사이트는 이를 “양자 컴퓨터가 지출을 위조할 수 없도록 설계”되었다고 설명합니다. 설계, 테스트, 적대적 검토가 진행 중이며, 날짜는 확정이 아닌 계획입니다.

프라이빗하게 보낼 BNT 얻기

이런 링을 쓰는 코인을 얻는 간단한 방법은 채굴입니다. seine 채굴기는 무료 오픈 소스이며 컴퓨터에 맞게 스스로 설정되고, 기본 풀은 bntpool.com이므로 몇 분 안에 채굴을 시작할 수 있습니다. 설정 방법은 채굴 가이드에서 다루며, 자신의 주소나 Blocknet ID 이름으로 바로 채굴할 수 있습니다.

자주 묻는 질문

링 서명과 그룹 서명은 무엇이 다릅니까?

그룹 서명에는 그룹을 미리 구성하고 서명자를 밝힐 수 있는 관리자가 필요합니다. 링 서명에는 관리자도 사전 설정도 없습니다. 서명자는 그 자리에서 아무 공개 키 집합이나 고르며, 키가 사용된 사람들을 포함해 누구도 나중에 어느 구성원이 서명했는지 증명할 수 없습니다.

링 서명에서 키 이미지란 무엇입니까?

키 이미지는 사용하려는 출력의 개인 키로 계산한 값입니다. 같은 출력은 항상 같은 키 이미지를 만들기 때문에 네트워크는 그 출력의 두 번째 사용을 거부하지만, 키 이미지는 링 구성원 중 어느 것이 진짜인지 드러내지 않습니다. 키 이미지는 링 서명을 이중 지불을 막는 연결 가능한 링 서명으로 바꿉니다.

CLSAG란 무엇입니까?

CLSAG는 Brandon Goodell, Sarang Noether, Arthur Blue가 2019년에 발표한 연결 가능한 링 서명 방식입니다. 서명자가 링 안의 출력 하나를 소유하고 있으며 금액이 맞는다는 것을 증명하고, 키 이미지로 이중 지불을 막습니다. Monero는 2020년 10월에 이를 도입했으며, Blocknet은 모든 입력을 CLSAG와 RingCT로 서명합니다.

Blocknet은 링 크기를 얼마로 사용합니까?

Blocknet은 모든 입력에 크기가 정확히 16인 링을 사용합니다. 실제 출력 하나와 디코이 15개이며, 디코이는 모두 이미 체인에 있는 실제 출력입니다. 합의 규칙은 다른 크기를 모두 거부합니다. 모든 입력이 같은 크기를 쓰므로 링 크기로 특정 트랜잭션을 구별할 수 없으며, 실제 출력은 링 안의 무작위 위치에 놓입니다.

링 서명은 결제 금액도 숨깁니까?

아닙니다. 링 서명은 어느 출력이 지불했는지를 숨깁니다. 금액은 별도의 계층이 숨깁니다. 숫자를 드러내지 않고 고정하는 페더슨 커밋먼트와, 각 금액이 유효함을 증명하는 Bulletproofs 범위 증명입니다. Blocknet은 이 모두를 수신자를 숨기는 일회용 스텔스 주소와 함께 모든 트랜잭션에 사용합니다.