MSTR Cat

블록체인/레벨 II · 작동 원리/2.1 암호학/수업 4

디지털 서명: ECDSA와 슈노어

키를 노출하지 않고 지출을 승인하는 수학적 악수

준비물위트니스 데이터를 보여주는 블록 탐색기비교할 네이티브 SegWit 지출 1건과 Taproot 키 경로 지출 1건

호기심

  1. 서명은 어떻게 비밀 숫자를 드러내지 않고도 그 숫자에 대한 통제권을 증명할까요?
  2. 소니 플레이스테이션 3와 여러 안드로이드 비트코인 지갑은 왜 재사용되거나 예측 가능한 논스 때문에 키를 잃었을까요?
  3. ECDSA에 비해 슈노어 서명이 더 작고 빠르며, 집계가 가능한 이유는 무엇인가요?

탐구

  1. 디지털 서명은 개인 키를 공개하지 않고도 그 소유를 증명합니다. 비트코인에서 트랜잭션 출력을 지출하려면, 그 출력의 잠금 스크립트에 있는 공개 키에 대응하는 개인 키로 트랜잭션 해시에 서명해야 합니다. 서명은 누구나 공개 키와 메시지 해시를 사용해 검증할 수 있습니다. 이 메커니즘은 프라이버시를 유지하면서 키 보유자만 이체를 승인할 수 있도록 보장합니다.
  2. ANSI X9.62(1999)로 표준화된 ECDSA는 2009년부터 비트코인의 주요 서명 방식이었습니다. ECDSA는 메시지 해시와 비밀 논스 k로부터 한 쌍의 값 (r, s)를 생성합니다. r 값은 점 k·G의 x 좌표이고, s 값은 k⁻¹(hash + x·r) mod n이며, 여기서 x는 개인 키입니다. 서명마다 새로운 무작위 k가 필요하기 때문에, k를 재사용하거나 유출하면 공격자가 개인 키를 곧바로 계산할 수 있습니다.
  3. 2010년 fail0verflow가 소니가 모든 서명에 같은 논스를 재사용했다는 사실을 시연하면서 소니 플레이스테이션 3의 서명 키가 탈취되었습니다. 비트코인에서도 2013년 8월, 예측 가능한 논스를 만들어 낸 안드로이드 SecureRandom 결함 때문에 비슷한 도난이 발생했습니다. RFC 6979(2013)는 개인 키와 메시지 해시로부터 k를 결정론적으로 도출함으로써 외부 난수원에 대한 의존을 없애 이 문제를 해결했습니다.
  4. ECDSA 서명에는 가변성(malleability)이 있습니다. 주어진 r에 대해 유효한 s 값이 두 개(s와 n−s) 존재합니다. 제3자가 이 동등한 서명으로 바꿔 넣으면 트랜잭션을 무효화하지 않고도 트랜잭션 ID를 바꿀 수 있습니다. 비트코인 정책은 'low-S' 정규화를 요구하여 s를 곡선 차수의 하위 절반으로 제한합니다. 이 제약 덕분에 각 메시지는 논스당 단 하나의 정규 서명만 갖게 됩니다.
  5. 클라우스-페터 슈노어가 특허를 출원한 슈노어 서명(1991년 미국 특허 취득, 2008년 만료)은 BIP340을 통해 비트코인에서 표준화되었으며, DER 인코딩의 오버헤드 없이 고정된 64바이트 크기의 서명을 생성합니다. 이 서명 방식은 선형적이어서, 적절한 프로토콜을 사용하면 여러 공개키를 하나의 집계키로 결합하고 그에 해당하는 서명들도 하나의 서명으로 통합할 수 있습니다. 이를 통해 온체인상에서 단일 서명자 형태로 나타나는 MuSig2 멀티시그 방식이 가능해지며, 거래 크기를 줄이고 프라이버시를 강화할 수 있습니다.
  6. Taproot는 2021년 11월(블록 709,632)에 활성화되어 P2TR 출력에 네이티브 슈노어 서명 지원을 도입했습니다. 키 경로 지출은 위트니스에 64바이트 서명 하나만 있으면 되지만, P2WPKH 지출에는 71-72바이트 ECDSA 서명과 33바이트 공개 키가 필요합니다. 크기가 고정되어 있어 파싱이 단순해지며, 슈노어 서명은 서로 다른 키의 여러 서명을 하나씩 검증하는 것보다 빠르게 한꺼번에 검증하는 일괄 검증을 허용합니다. 다만 Bitcoin Core는 아직 이 기능을 사용하지 않습니다.

핵심 사실

  • ECDSA(ANSI X9.62, 1999)는 약 71–72바이트 크기의 DER로 인코딩된 서명을 생성하며, Schnorr(BIP340)은 고정된 64바이트 크기의 서명을 생성합니다.
  • ECDSA 논스 k를 재사용하거나 유출하면 개인 키가 드러납니다: 소니 PS3(2010년) 및 안드로이드 지갑 도난 사건(2013년 8월).
  • RFC 6979는 개인 키와 메시지 해시로부터 k를 결정론적으로 도출하여 난수 생성기에 대한 의존을 없앱니다.
  • ECDSA 서명에는 가변성이 있으며, 비트코인 정책은 정규 인코딩을 보장하기 위해 'low-S'를 강제합니다.
  • 슈노어 서명은 선형적입니다. 키와 서명을 집계(MuSig2)할 수 있고, 효율을 위해 일괄 검증할 수 있습니다.
  • 2021년 11월(블록 709,632)에 Taproot가 활성화되면서 P2TR 출력에 네이티브 슈노어 서명 지원이 도입되었습니다.

연습 아홉, 여섯, 셋, 하나

9모으기디지털 서명 방식 또는 키 유형 9가지를 나열하세요. 표준화 기관, 연도, 출력 크기, 서명 집계 지원 여부를 함께 적으세요.
6묶기9가지를 검증 복잡도에 따라 6개로 묶으세요: 고정 크기·선형, 가변 크기·가변성(malleable) 있음, 가변 크기·정규형(canonical), 일괄 검증 가능, 단일 당사자 전용, 혼합형.
3추리기6개를 서명 크기, 프라이버시, 연산 효율성 사이의 3가지 핵심 트레이드오프로 줄이세요.
1결정화디지털 서명이 키 통제에 관해 무엇을 보장하고 무엇을 드러내지 않는지 한 문장으로 쓰세요.

팩트 체크

날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.

인터랙티브 아카데미에서 열기 →

EN PT ES ZH JA RU DE FR MS