Schnorr 서명과 multisig 집계

·9분 읽기·작성자: SSP Editorial Team
남색 SSP 커버, 어두운 그라데이션 위 키·방패·CPU·번개 아이콘, Multisig Deep Dive 시리즈의 Schnorr 장

이전 글에서 우리는 SSP가 실제로 어떻게 multisig 지갑을 온체인에서 구성하는지 살펴봤다: BIP48 경로, 사전식으로 정렬된 두 개의 xpubs, 체인이 검사하는 redeem script. 그 전체 메커니즘은 특정 서명 방식 위에 만들어졌다 — secp256k1 곡선 위의 ECDSA, Bitcoin이 2009년에 출시한 그리고 대부분의 체인이 물려받은 같은 방식이다.

이 글은 다른 서명 방식 — Schnorr — 그리고 그 위에서 multisig를 만들 때 무엇이 바뀌는지에 대해 다룬다. 헤드라인이 되는 변화는 Schnorr가 **집계(aggregation)**를 지원한다는 것이다: 올바른 프로토콜 하에서 n명의 cosigner로부터의 n개의 서명이 개의 서명으로 결합될 수 있고, 그것은 온체인에서 단일 키로부터의 일반적인 서명처럼 보인다. 지갑은 multisig 지갑처럼 동작하지만, 체인은 결코 multi-스러움을 보지 못한다. 이것은 수수료, 프라이버시, 그리고 어떤 종류의 multisig가 경제적으로 실용적이 되는지에 대해 실질적인 결과를 갖는다.

TL;DR

  • ECDSA는 현재 대부분의 multisig (오늘날의 SSP 포함)가 서명에 사용하는 것이다. 각 cosigner는 별도의 서명을 만들어 내고; 체인은 모두를 확인한다. 비용과 발자국은 n과 함께 확장된다.
  • Schnorr는 2021년 Taproot 업그레이드를 통해 Bitcoin에서 활성화된 다른 서명 방식이다. ECDSA가 가지지 않은 수학적 속성 — 선형성 — 을 가진다. 선형성은 여러 Schnorr 서명이 결합된 키에 대한 단일한 유효 서명으로 더해질 수 있게 한다.
  • **MuSig2**는 그 수학적 속성을 사용 가능한 multisig 프로토콜로 바꾸는 현대적이고 실용적인 프로토콜이다. n명의 cosigner가 짧은 상호 작용 프로토콜을 실행하고, 각각이 한 라운드의 nonce와 한 개의 부분 서명을 기여한다; 결과는 단일 키 서명과 구별할 수 없는 단일 Schnorr 서명이다.
  • 이는 검증 측면에서 엄격한 승리다 — 수수료, 블록체인 비대, 프라이버시 모두 혜택을 받는다. 서명 측면에서는 공짜 승리가 아니다: 집계는 신중한 nonce 처리가 필요하며, 버그가 있는 구현은 개인 키를 누설할 수 있다.
  • 오늘날의 SSP는 그것이 지원하는 체인 전반에 걸쳐 BIP48 + ECDSA multisig를 사용한다. 로드맵은 사용자가 이미 가지고 있는 기존 2-of-2 모델을 깨뜨리지 않고, 체인이 그것을 지원하는 곳에서 Schnorr/MuSig2 경로를 추가하는 것이다.

서명이 무엇을 하는지에 대한 빠른 복습

디지털 서명은 검증자에게 두 가지를 증명한다: 이 정확한 메시지가 이 공개 키에 대한 개인 키를 가진 누군가에 의해 서명되었다. 온체인에서, "메시지"는 거래 해시이며, "공개 키"는 주소(또는 주소를 파생시키는 것)이고, "검증자"는 네트워크의 모든 노드다. 서명이 통과하면, 거래는 유효하고; 아니면, 거부된다.

ECDSA — Bitcoin과 대부분의 EVM 체인이 사용하는 방식 — 는 잘 이해되고, 보수적이며, 단일 서명자의 경우에 잘 동작한다. 문제는 여러 서명자가 같은 거래를 승인하길 원할 때 무엇이 일어나는가다. ECDSA는 서명을 결합하는 방법이 없다. two-of-two를 원한다면, 체인은 두 서명을 모두 저장하고 둘 다 확인해야 한다. three-of-five, 다섯 서명. 거래는 cosigner 수와 함께 커진다.

What is multisig프로토콜 부분을 설명한다 — nm 키, redeem 규칙, 임계값을 강제하는 체인. 그 이전 글이 충분히 길게 머무르지 않은 것은 비용이다: ECDSA 하에서, 그 모든 서명은 거래에 산다. 2-of-2 P2WSH 거래는 같은 효과를 가진 단일 서명 거래보다 진정으로 더 크고 방송하는 데 더 비싸다.

Schnorr가 바꾸는 것

Schnorr 서명은 1980년대 후반에 처음 제안되었지만, 그 시점의 특허 불확실성 때문에 Bitcoin의 원래 디자인에서 회피되었다. 그것들은 한 구체적인 면에서 ECDSA보다 수학적으로 깨끗하다: 그것들은 선형적이다. 만약 s1이 키 P1 하의 메시지에 대한 유효한 서명이고, s2가 같은 메시지에 대한 키 P2 하의 유효한 서명이라면, s1 + s2P1 + P2 하의 그 메시지에 대한 유효한 서명이다. 키와 서명 모두 더해진다.

왜 이것이 중요한가: 갑자기 서명을 그것들이 체인에 닿기 전에 결합하는 것이 가능해진다. 거래에 두 개의 서명을 저장하는 대신, 하나 — 합 — 를 저장한다. 검증자는 두 공개 키의 에 대해 그 단일 서명을 확인하며, 두 서명자 모두 사전에 계산할 수 있다. 체인의 관점에서, 결과 거래는 단일 키로 서명된 거래와 구별할 수 없게 보인다.

ECDSA는 이것을 할 수 없다. ECDSA의 수학은 선형성을 깨뜨리는 곱셈 역원을 포함한다; ECDSA 서명의 합은 유효한 서명이 아니다. 그래서 ECDSA 기반 multisig는 모든 개별 서명을 온체인에 보내야 한다. 체인은 각각을 별도로 검사한다.

Bitcoin은 2021년 Taproot 소프트 포크의 일부로 Schnorr 서명(BIP340을 통해)을 출시했다. 서명 자체는 ECDSA 서명보다 약간 더 작다(64바이트 대 ~71), 하지만 훨씬 더 큰 거래는 그 선형성이 multisig와 결합될 때 가능하게 하는 것이다.

MuSig2 — 온체인에서 한 서명처럼 보이는 multisig

"Schnorr 서명을 더할 수 있다"의 정직한 버전은 주의 깊게 해야 한다는 것이다. 순진한 접근법 — 각 cosigner가 nonce를 고르게 하고, 부분 서명을 공유하고, 모든 것을 더하게 한다 — 는 반복 서명 하에서 키 자료를 누설하고 "rogue key" 공격의 한 클래스에 취약하다. 실용적인 집계 프로토콜은 둘 다로부터 방어해야 한다.

MuSig2는 이 문제에 대한 약 10년의 정제의 결과다. 그것은 n-of-n Schnorr multisig를 위한 사실상의 표준이다: 서명 시간에, cosigner들은 두 라운드의 nonce를 교환하고, 각각이 부분 서명을 만들고, 그들 중 하나가 부분들을 최종 집계 서명으로 더한다. 결과는 단일 집계 공개 키에 대해 유효하며, 온체인에서 단일 키 서명과 구별할 수 없는, 단일 Schnorr 서명이다.

MuSig2에 대한 몇 가지 중요한 점:

  • 현재는 n-of-n이다. 집계 하에서 진정한 m-of-n(예: 2-of-3)을 얻으려면 추가 기계가 필요하다 — FROST가 선도적인 제안 — 그리고 그것은 여전히 양산화 중이다. 그래서 2026년에, SSP가 깨끗하게 집계할 수 있는 것은 2-of-2 기본값이다. 선택기 글의 2-of-3과 그 이상의 구성은 여전히 대부분 ECDSA 스타일의 온체인 가시성을 사용한다.
  • 여전히 서명하기 위해 두 cosigner 모두 온라인이어야 한다. 집계는 필요한 서명자의 수를 줄이지 않는다; 그것은 단지 최종 출력을 압축한다. UX는 오늘과 같다 — 두 기기가 같은 거래에 서명한다 — 그러나 결과의 온체인 발자국은 더 작다.
  • 버그가 있는 MuSig2 구현은 키를 누설할 수 있다. nonce 처리가 미묘하다. 프로덕션 배포는 이 이유로 잘 감사된 라이브러리(libsecp256k1의 MuSig2 모듈, rust-bitcoin 스택 등)에 의존한다.

이것이 오늘날 SSP에게 의미하는 것

오늘날의 SSP는 그것이 지원하는 모든 체인에서 BIP48 파생 ECDSA multisig를 사용한다. 두 기기, 두 개인 키, 온체인에 두 개의 별도 서명. 그것은 정확하고, 감사되었으며(Halborn에 의해 — 기존 2-of-2 글의 inside-ssp-2025-halborn-audits 참조 보라), BIP48 호환의 어떤 다른 지갑과도 상호 운용 가능하다. 단점은 2-of-2의 전체 온체인 비용을 지불한다는 것이다.

여기서부터의 로드맵, 명료하게: Bitcoin(Taproot가 활성화되고 안정적인 곳)을 위해 같은 2-of-2 지갑을 집계를 사용해 대신 서명하는 Schnorr/MuSig2 코드 경로를 추가하는 것. 지갑의 임계값 의미론은 변하지 않는다 — 두 기기 모두 여전히 서명해야 한다. 온체인 바이트가 줄어들고, 결과 거래는 단일 서명 지출처럼 보인다.

사용자에게, 이것은 주로 다음과 같이 나타날 것이다:

  • 거래당 약간 더 낮은 Bitcoin 수수료.
  • 개선된 프라이버시 — 지갑이 체인 분석에 "나는 multisig 지갑이다"라고 외치는 것을 멈춘다.
  • 지갑 UI를 위한 더 빠른 조정(주소당 가져오고 파싱할 데이터가 약간 더 적다).

이것은 보안 업그레이드가 아니다 — 그리고 명료하게 말할 가치가 있다. 암호학은 비슷하게 어렵고, 단지 다르게 구조화되었을 뿐이다. 그것을 채택할 이유는 효율성과 프라이버시이지, 원시 보안이 아니다.

이것이 비용, 프라이버시, UX에 의미하는 것

체인에 집계가 광범위하게 배포되면 이것이 떨어지는 세 곳:

비용. Bitcoin은 vbytes 단위로 거래 크기에 따라 대략 수수료를 부과한다. ECDSA P2WSH 2-of-2 거래는 동등한 Taproot-MuSig2 거래보다 의미 있게 크다. 적은 금액을 보내는 저잔액 지갑의 경우, 상대적 수수료 절약은 20–30%일 수 있다. 고처리량 비즈니스의 경우, 연간 수수료의 절대적 절약은 실제 돈이다.

프라이버시. 오늘, 지갑이 P2WSH 2-of-2 지출을 방송하면, 그 사실은 블록체인 익스플로러를 실행하는 누구에게나 보인다. 세련된 체인 분석 회사들은 지출 패턴으로 주소를 클러스터링하며, "이 주소는 multisig이다"는 강한 클러스터 신호다. Schnorr 집계 지출은 단일 서명 지출과 동일하게 보인다. 클러스터 신호가 사라진다.

UX. SSP의 서명 UX — 브라우저에서 서명하고, 그 다음 폰에서 확인 — 는 변하지 않는다. 두 기기 모두 여전히 부분 서명을 생성한다; 지갑은 단지 둘 다 방송하는 대신 방송 전에 그것들을 결합한다. 사용자의 관점에서 유일한 가시적 변화는 "지갑이 사용하기에 더 저렴하게 느껴진다"이다.

지평선에는 더 깊은 UX 승리도 있다. m-of-n 집계(FROST 또는 유사한 것을 통해)가 프로덕션 준비가 되면, 이전 글이 묘사하는 솔로 복구 셋업과 같은 2-of-3 SSP 지갑을 상상할 수 있다 — 온체인에서 일반 단일 서명 지갑처럼 보이는. 세 번째 "복구" 키는 진정으로 세 번째 서명 키이지만, 체인은 결코 알 필요가 없다.

이것이 너에게 의미하는 것

세 가지 결론:

  1. SSP를 올바르게 사용하기 위해 Schnorr를 생각할 필요가 없다. 오늘 가지고 있는 2-of-2 셋업은 잘 감사된 ECDSA multisig 위에 구축되었고, 집계가 어떻게 떨어지든 그대로 유지된다. 시리즈의 다음 글(social recovery vs multisig)은 집계를 의도적으로 무시한다 — 누가 지출할 수 있는지에 대한 질문은 서명이 온체인에서 어떻게 보이는지와 독립적이기 때문이다.
  2. 집계는 "수수료와 프라이버시" 업그레이드이지, "보안" 업그레이드가 아니다. 만약 언젠가 "MuSig2 = 더 안전"하다고 홍보하는 지갑을 본다면, 회의적이어라. 잘 구현된 MuSig2의 암호학적 보안은 잘 구현된 ECDSA multisig와 비교 가능하다; 승리는 다른 곳에 있다.
  3. 지갑 마케팅이 아닌 체인 지원을 보라. Schnorr는 Bitcoin에 살아 있고 EVM 세계에서 account abstraction을 통해 채택되고 있다. 그것을 잘 지원하는 체인이 SSP가 집계된 multisig를 먼저 출시할 곳이고; 다른 곳에서는 BIP48 + ECDSA가 옳고 안전한 기본값으로 남는다.

이 시리즈의 다음 글, Social recovery vs multisig는 초점을 암호학에서 운영으로 옮긴다: 언제 multisig를 잡고 언제 social recovery가 이기는가? 둘 다 키를 잃는 것에 대해 보호한다; 그들은 다른 질문에 답한다. SSP가 오늘 어떤 기기를 사용하는지와 그 이유에 대한 빠른 복습은, Meet SSP Wallet이 출발점으로 남는다.

이 글 공유하기

관련 글