2-of-2 멀티시그란 무엇인가?

·9분 읽기·작성자: SSP Editorial Team
하나의 트랜잭션을 승인하는 두 명의 서명자를 보여주는 2-of-2 멀티시그 지갑 다이어그램

암호화폐를 소유해 본 적이 있다면 거의 틀림없이 같은 경고를 들었을 것입니다: "시드 문구를 잘 지키세요." 종이에 적힌 12개 또는 24개의 단어는, 그것을 찾은 누구나 세계 어디에서든 당신의 지갑을 비울 수 있게 합니다. 그 한 줄의 단어가 대부분의 자기수탁(self-custody) 지갑의 전체 보안 모델이며, 바로 그것이 문제입니다. 잃어버리면 자금이 사라집니다. 누군가가 복사하도록 두면 자금이 사라집니다. 한 번의 실수, 한순간의 부주의, 한 번의 그럴듯한 피싱 사이트 — 결과는 모두 같습니다.

2-of-2 멀티시그는 이 취약성에 대한 가장 접근하기 쉬운 해답입니다. 지갑의 키를 두 개의 기기로 분할하여, 단일 시드, 단일 화면, 단일 서명만으로는 코인을 움직일 수 없게 합니다. 이 글은 그것이 어떻게 작동하는지, 왜 중요한지, 그리고 어떤 공격을 막아주고 어떤 공격은 막지 못하는지를 설명합니다.

단일 시드의 실패 모드

대부분의 암호화폐 지갑은 — 휴대폰에 있든, 브라우저 확장 프로그램에 있든, 하드웨어 장치에 있든 — 하나의 비밀 위에 구축됩니다. 그 비밀은 시드 문구입니다: 지갑을 처음 설정할 때 생성되는 단어들의 시퀀스로, 그 지갑의 모든 개인 키가 이로부터 수학적으로 파생됩니다. 시드 문구를 가진 사람은 그 지갑이 포함하는 모든 블록체인에서 모든 코인에 대해 완전하고 되돌릴 수 없는 통제권을 갖습니다.

이것은 놀랍도록 편리합니다. 그리고 동시에 단일 실패 지점입니다.

당신이 코인을 보유하려는 수 년 동안 그 비밀이 견뎌야 하는 것들을 생각해 보세요. 도둑이 집에 들어와 서랍 속 종이를 발견하는 일을 견뎌야 합니다. 화재, 홍수, 호기심 많은 아이를 견뎌야 합니다. 클립보드와 스크린샷을 스캔하는 멀웨어에 감염된 노트북을 견뎌야 합니다. 모든 피싱 이메일, 모든 가짜 브라우저 팝업, 단어를 "확인" 양식에 입력하라는 모든 가짜 "지원" 전화를 견뎌야 합니다. 오늘은 예측할 수 없는, 당신 자신의 미래의 실수들도 견뎌야 합니다.

2022년 FBI는 미국 소비자만 암호화폐 관련 절도 및 사기로 25억 달러 이상을 잃었다고 추정했으며, 그 손실의 대부분은 단일 비밀이 침해된 데서 비롯되었습니다. Mt. Gox, Bitfinex, Ronin 브리지 — 잘 알려진 모든 암호화폐 재난은 같은 형태를 갖습니다: 하나의 비밀, 하나의 침해, 되돌릴 수 없는 하나의 이체.

2-of-2 구성은 이렇게 말하는 방식입니다: 내 코인이 도난당한 포스트잇 하나로 사라지는 일은 없어야 한다.

M-of-N 멀티시그, 간단히

멀티시그 — "multi-signature"의 줄임말 — 는 트랜잭션을 보내기 위해 두 개 이상의 서명이 필요한 지갑입니다. 일반적인 형태는 M-of-N이라고 합니다: 총 N개의 키가 있고, 그중 M개가 서명해야 코인이 움직일 수 있습니다.

<span id="signer"></span>서명자는 그 N개의 키 중 하나를 가진 장치 또는 당사자입니다. 실제로 서명자는 보통 별도의 하드웨어나 소프트웨어 조각입니다: 휴대폰, 책상 위의 하드웨어 지갑, 노트북, 공동 서명자 서비스, 또는 심지어 신뢰할 수 있는 친구일 수도 있습니다. 중요한 속성은 서명자들이 독립적이라는 점입니다 — 그중 하나를 침해해도 공격자에게 다른 서명자에 대한 접근권이 주어져서는 안 됩니다.

<span id="threshold"></span>임계값(M)은 지출에 필요한 서명의 수입니다. 임계값이 2라면, 블록체인이 트랜잭션을 유효한 것으로 받아들이기 전에 N명의 서명자 중 두 명이 각각 승인하고 암호학적으로 서명해야 합니다. 2-of-3 지갑은 세 명의 서명자를 가지며 그중 두 명을 필요로 합니다. 3-of-5 지갑은 다섯 명의 서명자를 가지며 그중 세 명을 필요로 합니다. 임계값은 지갑을 생성할 때 고정되며, 어떤 회사가 아니라 블록체인 자체에 의해 강제됩니다.

임계값과 서명자 수는 함께 지갑의 보안 모델을 정의합니다: 당신이 지출하기 위해 잘 풀려야 할 일이 몇 가지이고, 도둑이 지출하려면 동시에 얼마나 많은 일이 잘못되어야 하는지를 말입니다.

2-of-2 고유의 모델

<span id="2-of-2"></span>2-of-2 멀티시그에서는 임계값이 서명자 총 수와 같습니다: 정확히 두 개의 키가 있고, 모든 지출에 두 개 모두 서명해야 합니다. 예비 키도, 백업 서명자도, 의지할 정족수도 없습니다. 두 장치 모두 트랜잭션을 승인하거나, 그렇지 않으면 트랜잭션은 일어나지 않습니다.

이는 여전히 의미 있는 보호를 제공하는 가장 단순한 멀티시그 구성입니다. 2-of-3과 비교하면 설정이 더 쉽고 — 세 명이 아니라 두 명의 서명자만 관리하면 되며 — 예비 키를 보관할 제3자나 장소를 선택할 필요도 없습니다. 트레이드오프는 2-of-2에 내장된 복구 경로가 없다는 점입니다: 두 서명자 중 하나가 영구적으로 분실되거나 파괴되면, 그 주소의 코인은 더 이상 지출할 수 없습니다. 2-of-2의 복구는 각 서명자의 시드를 별도로 백업함으로써 처리되며, 보통 장치 자체와 분리되어 보관되는 봉인된 종이 또는 강철 백업을 사용합니다.

자기수탁 사용자에게 가장 흔한 2-of-2 페어링은 "휴대폰 + 하드웨어 키" 또는 "휴대폰 + 두 번째 봉인된 장치"입니다. 사용자는 매번 양쪽 모두에서 서명합니다.

지갑이 주소를 찾는 방법: BIP48

<span id="bip48"></span>BIP48 — Bitcoin Improvement Proposal 48 — 은 멀티시그 지갑이 각 서명자의 시드 문구로부터 공개 키와 주소를 어떻게 파생할지를, 서로 다른 소프트웨어 공급업체 간에 호환 가능한 방식으로 알려주는 기술 표준입니다. 그 덕분에 한 애플리케이션에서 만들어진 2-of-2 지갑이 몇 년 뒤 다른 호환 애플리케이션에서 다시 열리고, 감사받고, 복구될 수 있습니다.

간단히 말하자면: 각 서명자의 시드 문구는 결정론적 경로를 따르는 키 계층 구조로 변환됩니다. BIP48은 멀티시그 지갑에 대한 정확한 경로를 명시합니다 — 여기에는 지갑이 legacy 주소, SegWit, native SegWit 중 무엇을 사용하는지를 기록하는 슬롯과 시드 내에서 사용 중인 "계정"을 위한 슬롯이 포함됩니다. 두 서명자가 각각 동일한 BIP48 경로를 따라 자신의 공개 키를 파생할 때, 지갑은 그 두 개의 공개 키를 단일 멀티시그 주소로 결합합니다. 그 주소로 보낸 코인은 원래 두 시드 모두의 서명으로만 잠금 해제될 수 있습니다.

표준이 왜 중요할까요? 그것이 없다면 멀티시그 지갑은 블랙박스가 될 것이기 때문입니다. 공급업체가 사라지면 시드 문구 두 개를 갖고 있어도 그것들이 보호하는 주소를 재구성할 휴대 가능한 방법이 없을 것입니다. BIP48은 주소를 시드와 경로의 순수한 함수로 만듭니다 — 표준과 시드를 가진 누구나, 어떤 회사도 신뢰할 필요 없이 영원히 지갑을 재구축할 수 있습니다.

이더리움과 EVM 체인은 다른 메커니즘(스마트 컨트랙트 지갑과 ERC-4337)을 사용하지만 사용자에게 보이는 모델은 동일합니다: 두 명의 서명자, 하나의 주소, 둘 다 필요.

2-of-2가 실제로 막는 것

2-of-2의 가치를 가장 명확하게 보는 방법은 구체적인 공격을 살펴보면서 묻는 것입니다: 공격자가 하나가 아니라 두 개의 독립된 장치를 침해해야 한다면 무엇이 달라지는가?

피싱. 사용자가 그럴듯한 "지갑 마이그레이션" 링크를 클릭하고 가짜 페이지에 시드 문구 중 하나를 입력합니다. 단일 시드 지갑이라면 자금은 몇 분 안에 사라집니다 — 공격자는 시드를 가져와 이체를 방송합니다. 2-of-2에서는 공격자가 지갑의 절반만 갖게 됩니다. 사용자가 피싱 페이지에 입력하지 않은 다른 장치에 있는 두 번째 시드까지 훔치지 않는 한, 코인 하나도 움직일 수 없습니다. 피싱 시도는 치명적인 사건에서 단순히 우려스러운 사건으로 격하됩니다.

휴대폰 또는 노트북의 멀웨어. 클립보드를 가로채는 멀웨어나 정보 탈취 도구가 서명 장치 하나를 침해합니다. 단일 키 지갑에서는 그 장치가 어떤 트랜잭션을 시도하는 순간, 멀웨어는 목적지 주소를 바꿔치기하고 사용자는 스스로 그것에 서명합니다. 2-of-2에서는 두 번째 장치가 멀웨어가 통제하지 않는 화면에서 진짜, 변조되지 않은 트랜잭션 세부 정보를 사용자에게 보여줍니다. 사용자는 불일치를 발견하고 공동 서명을 거부합니다.

분실된 장치. 사용자의 휴대폰이 기차에서 도난당합니다. PIN으로만 보호된 단일 서명 핫 지갑에서는, 의지가 강한 공격자가 몇 시간 안에 시드를 추출할 수 있습니다. 2-of-2에서 분실된 휴대폰은 두 서명자 중 하나일 뿐이며 — 단독으로는 쓸모가 없습니다. 사용자는 남은 서명자와 휴대폰의 시드 백업을 사용해 자금을 새 주소로 옮길 시간이 있습니다.

강압("5달러 렌치 공격"). 물리적 접근권이 있는 누군가가 사용자의 시드 문구를 요구합니다. 단일 시드라면 응한다는 것은 전액 손실을 의미합니다. 두 서명자가 서로 다른 물리적 장소에 있는 2-of-2에서는 — 예를 들어 하나는 집에, 다른 하나는 은행 안전 금고에, 또는 하나가 신뢰할 수 있는 공동 서명자 서비스에 있다면 — 사용자는 그 자리에서 실제로 이체를 완료할 수 없습니다. 공격자는 그러한 공격을 시도할 가치를 만드는 즉각적인 보상을 빼앗깁니다.

모든 경우에 근본적인 원칙은 동일합니다: 같은 짧은 시간 안에 두 개의 독립적인 침해는 하나보다 훨씬 어려운 문제입니다.

2-of-2가 보호해 주지 않는 것

멀티시그는 마법이 아닙니다. 의도적으로 악의적인 트랜잭션에 서명하는 것을 막아주지는 않습니다 — 두 장치 모두 같은 잘못된 목적지 주소를 보여주고 당신이 그래도 승인한다면, 블록체인은 그것을 알 방법이 없습니다. 같은 화재나 홍수로 두 백업을 모두 잃는 것을 막아주지 않습니다 — 그래서 두 백업은 물리적으로 분리된 장소에 보관되어야 합니다. 지갑 소프트웨어 자체의 버그를 막아주지는 않지만, 이러한 지갑들의 오픈 소스이며 BIP48 호환적인 특성은 그러한 버그가 폐쇄형 수탁 시스템에서는 불가능한 방식으로 감사되고 우회될 수 있다는 것을 의미합니다. 그리고 충분히 그럴듯한 사기에 대응하여 사용자 자신이 자발적으로 두 장치 모두에서 코인을 양도하는 것을 막아주지는 않습니다. 임계값은 진입 장벽을 높일 뿐, 사용자를 회로에서 제거하지는 않습니다.

직접 시도해 보세요

2-of-2 멀티시그를 체득하는 가장 유용한 방법은 직접 하나를 설정하고 실제 트랜잭션이 방송되기 전에 두 번의 승인이 필요함을 지켜보는 것입니다. SSP Wallet은 처음부터 정확히 이 모델을 중심으로 설계되었습니다 — 당신의 휴대폰과 브라우저가 두 명의 서명자 역할을 하며, 뒤에서 숨어 있는 단일 시드 모드는 존재하지 않습니다.

첫 SSP 지갑 설정하기 글은 페어링, 백업, 그리고 첫 번째 서명된 트랜잭션을 단계별로 안내합니다.

이 글 공유하기

관련 글