What is Multi-Sig, and What Can It Do?

What is Multi-Sig, and What Can It Do?

2019, Jan 25    

벤 데이븐포트(BEN DAVENPORT)가 쓴 What is Multi-Sig, and What Can It Do?의 번역본입니다. 벤 데이븐포트는 지갑 서비스 업체인 BitGo의 공동 설립자이며 수석 엔지니어를 거쳐 고문으로 활동하고 있습니다.

Introduction

비트코인은 public/private ECDSA key pairs 기반의 “주소”에 저장되고 있습니다. 비트코인이 생겨난 이래로 대부분의 주소는 단일 private key를 사용하고 있습니다. 이 글이 작성되는 시점(2014년 11월)에 보면 97%의 비트코인이 단일 private key로 저장되어 있습니다. 이들 주소는(표준 주소라고 말하는) “1”로 시작하기 때문에 식별 가능합니다. private key를 알고 있는 사람은 누구라도 그 주소에 있는 비트코인을 다른 곳으로 송금할 수 있습니다. 흔히 말하는 줍는 사람이 임자(possession is nine-tenths of the law)라는 말은 비트코인에서는 private key를 알고 있는 사람이 임자라는 말입니다. 왜냐하면 한 번 송금되면 되돌리기 힘들기 때문입니다. 비트코인 네트워크에서는 private key를 가지고 있는 것이 송금할 수 있는 권한과 같은 것입니다. 이러한 단일키 구조가 주는 장점 또는 단점은 여러 가지 심각한 문제를 초래할 수 있습니다.

Problem: Security

기본적인 수준의 단일키는 지갑은 도난으로부터 키를 안전하게 보관하는 기능이 있지만 사실 비트코인을 사용할 수 있는 private key들을 모아놓은 것에 지나지 않습니다. 단일키 지갑의 키들은 보통 한 대의 컴퓨터에서 생성되고 또 디스크에 암호화하여 저장됩니다. 그러나 키를 보호하는 가장 좋은 방법을 가지고 있더라도 단일키 지갑을 저장하고 있는 컴퓨터는 single point of failure를 피할 수 없습니다.

“single point of failure”라는 것은 하나의 컴퓨터에 문제가 생기면 모든 것이 중지되는 상황을 말합니다. 여기서는 키를 저장하고 있는 컴퓨터에 문제가 생기면 그 안에 저장된 키를 잃어버릴 수도 있다는 의미가 되겠습니다.

만약에 지갑이 저장된 파일을 누군가 훔쳐간다면 오프라인에서 암호를 풀 수도 있을 겁니다. 또는 해커나 악성 프로그램이 상주하면서 사용자의 암호를 알아낼 수도 있습니다. 비트코인의 가치는 계속 오르고 있고 그에 따라서 비트코인 지갑을 노리는 악성 프로그램은 진화하고(re-engineered) 있습니다. 이러한 단일키의 근본적인 위험성때문에 완전히 오프라인에서 물리적인 장치(업계에서는 이것을 “cold storage”라고 부릅니다)에 키를 보관하기 위한 정교한 프로토콜이 개발되기 시작했습니다.

하지만 cold storage도 그 자체로 위험성과 취약성을 가지고 있습니다. 키를 생성하는 단일 컴퓨터의 난수 발생기는 취약성이 있는데 컴퓨터에 어떤 침입이 없어도 위험할 수 있습니다. 오프라인 cold storage 솔루션은 보안에서는 효과적이지만 그것을 운용하기 위해서는 큰 부담이 될 수 있습니다.

Problem: Access Control

어떻게 하면 비지니스에서 비트코인을 효과적으로 사용할 수 있을까요? 회사에서는 보통 기술적인 부분들은 IT 스텝들에 위임하는 경우가 많습니다. 그러나 비트코인 지갑을 IT 부서에 맡기는 것은 100달러 지폐 더미를 사무실 한 가운데에 있는 테이블 위에 내버려 두는 경우와 같습니다. 누구나 흔적을 남기지 않고 키에 접근할 수 있기 때문에, 책임소재나 내부 횡령을 막을 실제적인 방법이 없습니다. 비트코인의 역사를 볼 때 외부로부터 해킹되었다고 주장한 절도 사건이 내부 소행이었던 경우가 비일비재합니다. 절도를 성공적으로 방지했던 비트코인 비지니스들은 키 접근 권한을 가진 사람들의 수를 엄격하게 관리했습니다. 그런 회사들은 비지니스 책임자들을 물리적인 안전 요원이나 최종 문지기로 삼았고, 한 사람이 자기 마음대로 거래를 할 수 없도록 키를 분리하는 기술을 도입했습니다.

그런데 비트코인과 관련된 더 큰 비지니스 영역에서는 CEO와 CFO가 모든 트랜잭션에 개입해야 하는 것은 바람직한 해결책이 아닙니다. 조직에서는 자체적으로 트랜잭션과 거래 금액, 승인 등의 내부 정책을 정의할 필요가 있는 것입니다.

표준 기업 회계 소프트웨어와 같은 유형의 관리가 필요할 수도 있습니다. 한 가지 해결책은 사업에 사용되는 비트코인을 다른 기관, 결국 비트코인 은행 같은 곳에 위탁하여 관리할 수도 있을 것입니다. 그러나 여기 다른 방법도 있습니다.

The Solution: Multi-sig

2012년 초부터 비트코인은 단일키에 대한 대안을 모색했습니다. 그 시기에 새로운 형태의 주소, pay-to-script-hash(P2SH)라고 부르는 주소 체계가 표준으로 정의되었습니다. P2SH 주소들은 “1” 대신 “3”으로 시작하는 주소로 식별할 수 있습니다. P2SH 주소가 지원하는 기능들 중에 multi-signature 또는 multi-sig라고 하는, 다수의 private key를 트랜잭션에 사용할 수 있도록 하는 것이 가능해졌습니다.

P2SH 주소는 트랜잭션에 요구되는 M개 중에 임의의 N개의 키를 가질 수 있도록 하는데 — 이것을 “M-of-N” 이라고 말합니다. 실제 블록체인에서는 N의 크기를 제한하고 있는데, 가장 일반적인 multi-sig는 2-of-2 또는 2-of-3과 같은 형태로 구현됩니다(이런 관점에서 보면 단일키는 1-of-1로 생각할 수 있습니다).

실생활에서 볼 수 있는 multi-sig를 예로 들면 하나의 열쇠를 고객이 다른 하나는 은행이 보관하는, 두 개의 열쇠로 열 수 있는 금고입니다. 금고를 열기 위해서는 두 개의 열쇠가 모두 필요하므로 2-of-2 multi-sig라고 할 수 있습니다.

multi-sig 기술로 즉시 얻을 수 있는 장점들이 있습니다. 우선 키들을 완전히 분리된 장치에서 생성하고 보관할 수 있기 때문에 single points of failure가 없습니다. 예를 들어, 하나의 키는 사용자의 노트북에서 생성되고, 다른 하나는 휴대폰에서 생성되면 트랜잭션을 위해서는 두 개의 장치가 모두 필요합니다. 악성 소프트웨어가 노트북에 심어져 있다고 해도 휴대폰에 저장된 다른 키가 없기 때문에 코인을 훔칠 수 없습니다. 두 번째로는 이중화(redundancy)입니다. 앞서 살펴본 예에서 사용자가 휴대폰을 잃어버렸다면 어떻게 될까요? 만약에 세 번째 키를 오프라인에 보관하고 있고 2-of-3 구조라면 사용자가 둘 중 하나를 잃어버렸다고 해도 오프라인에 보관한 키를 사용하여 자신의 재산을 되찾을 수 있습니다. 세 번째는 접근 제어 문제를 관리할 수 있습니다. 남편과 부인이 트랜잭션에 두 개의 서명을 모두 요구하는 multi-sig 지갑을 생성하거나 3명의 파트너가 적어도 2명의 서명이 필요한 지갑을 생성할 수도 있을 것입니다. multi-sig 기술로 인하여 완전히 새로운 가능성이 열리게 된 것입니다 — 다음 시나리오를 생각해보겠습니다.

Trustless Escrow

밥이 약속한 물품을 전달했다면 앨리스는 밥에게 비트코인을 전송합니다. 밥은 판매한 상품에 대한 대금을 보장받고 싶어합니다. 그들 모두 분쟁이 생겼을 경우 트렌트가 판정을 해주기를 믿지만 그렇다고 그에게 대금을 맡길 정도는 아닙니다.

여기서 Trent는 다음과 같은 의미로 해석합니다.
Trent, an Alice and Bob placeholder used in cryptography, referring to a trusted arbitrator or third party

이 경우에 2-of-3 multi-sig 주소를 생성하고 각 키를 앨리스, 밥, 그리고 트렌트가 가지도록 합니다. 거래가 문제없이 성사되면 앨리스와 밥은 트렌트의 개입없이 거래를 완결할 수 있습니다. 만약에 분쟁이 생기면 트렌트가 심판으로 나서고 앨리스 또는 밥과 함께 대금을 어떻게 처리할지 결정합니다. 이러한 절차가 진행되는 동안 비트코인은 일종의 중립 상태(limbo)로 남고, 누구도 거래 대금을 자기 마음대로 움직일 수 없게 됩니다.

Organizational Limits

회사는 직원들 중 세 사람이 비트코인 지갑에 접근할 수 있는 정책을 만들고 싶어 합니다. 그런데 5,000달러를 넘는 거래에 대해서는 세 사람 중에 두 사람의 서명이 필요하도록 하고 싶습니다. 이를 위해서는 2-of-2 multi-sig를 생성하고 하나를 회사가, 다른 하나는 외부의 정책 감시 기관(policy-enforcement)이 가지도록 합니다.

직원 중 한 명이 트랜잭션을 발생시키는 경우 회사의 키로 서명을 하고 인증받은 서비스를 통해 공동 서명 요청을 보냅니다. 외부의 정책 서비스 기관은 미리 설정된 금액 범위를 보고 공동 서명을 할 지 또는 다른 두 명의 직원들 중 한 명에게 승인을 요청할지 결정합니다.

외부의 정책 서비스 기관은 회사의 재산에 손을 댈 수 없지만 그것을 거래할 수 있는 트랜잭션을 막을 수는 있습니다. 이것을 원치 않는다면 회사는 2-of-3로 만든 다음, 정책 서비스 기관과의 협력이 원활하지 않는 경우 다른 직원 또는 보안 담당자가 추가적인 백업 키로 회사의 기금을 되돌릴 수 있도록 할 수 있습니다.

Trustless Margin

어떤 사용자가 거래소에서 거래를 하려고 합니다. 그러나 거래소의 보안 수준을 완전히 신뢰하지는 않아서 거래소에 모든 자산을 맡기고 싶지는 않습니다. 그는 자신과 거래소가 하나의 키를 공유하고, 외부의 감시 기관이 다른 키를 소유하는 2-of-2 지갑을 만듭니다. 사용자는 비트코인을 지갑으로 전송하고 거래소는 거래 마진이나 대출, 또는 다른 목적으로 사용할 수 있도록 합니다. 이 경우에 외부 감시 기관의 역할은 미체결 거래(outstanding order)나 확정되지 않은 트레이드가 진행되는 동안 고객이 비트코인을 인출하지 못하도록 하고, 거래소가 일방적으로 기금을 훔치거나 잃지 않도록 보장하는 것입니다.

위와 같은 시나리오가 보여주듯이, multi-sig는 개인이나 회사 모두에게 보안과 접근제어, 부분적인 신뢰의 위임과 같은 측면에서 상당히 유용한 기술이 될 수 있습니다.

거래소나 다른 비지니스에서 고객이 손실이나 우려없이 기금을 전송할 수 있기 때문에 고객들은 다른 영역에서도 유사한 기술이 도입되기를 원할 것입니다. 이러한 리스크가 줄어들면 투명성과 유동성(transparency and liquidity)으로 인해 전체 생태계가 상당한 이익을 얻게 될 것입니다. 이러한 이유로 비트코인은 시간이 갈수록 P2SH multi-sig 주소로 옮겨갈 것으로 전망됩니다.

전통적인 재무에서는 재정 관리인(custodian)은 다른 사람을 위해 자산을 관리하는 신뢰를 갖춘 제 3의 기관이었습니다. 비트코인에서는 기금의 관리자가 항상 공정하지 않다는 것을 아는 것이 중요합니다. Bank of America, JP Morgan 그리고 State Street(투자 자문 회사)이 각각 하나의 키를 소유하는 3-of-3 multi-sig 지갑에서는 누가 관리인이 될까요? 비트코인에서는 최종 재정 관리인은 블록체인이고, 물론 그 자체는 탈중앙화되어 있습니다. 결론적으로 입법자나 규제기관들은 기존의 규정을 어떻게 바꾸고 새로운 것을 만들기 위해서는 이러한 새로운 패러다임을 이해할 필요가 있을 것입니다.