열두 개의 단어. 이 글을 읽는 대부분의 사람에게 이것이 곧 보안 모델의 전부입니다. 흔한 영어 단어 열두 개 또는 스물네 개를 한 번 생성해 종이에 적어 두면, 그것이 온체인에 보유한 모든 것을 통제합니다. BIP39 시드 문구는 마땅히 인정받을 자격이 있습니다 — 지갑 백업을 이식 가능하고, 표준화되며, 특정 업체에 종속되지 않게 만들었으니까요. 하지만 그것은 동시에 업계에서 가장 집중된 위험이 되어 조용히 자리 잡았습니다. 시드 문구는 단일 실패 지점입니다. 그것을 읽는 누구에게든 모든 것을 넘겨주고, 그것을 아는 유일한 사람이 잃어버리면 모든 것을 묻어 버리는, 단 하나의 비밀인 것이죠.
핵심부터 말하자면, 이 문제는 더 나은 은닉처로는 해결할 수 없습니다. 단일 시드 문구를 어떻게 배치하든, 노출 위험과 분실 위험을 서로 맞바꾸는 것에 불과합니다. 해법은 구조적입니다 — 통제 권한을 독립된 여러 키에 분산해, 어떤 단일 비밀도 지갑을 비울 수 없고, 사라짐으로써 지갑을 영원히 잠글 수도 없게 만드는 것입니다.
하나의 비밀, 정반대로 실패하는 두 가지 방식
시드 문구는 지갑의 완전한 마스터 키입니다. 모든 개인 키와 모든 주소를 결정론적으로 파생하므로, 그 단어들을 가진 사람은 아무런 추가 확인 절차 없이 자금을 통제합니다. 그것은 소지자 비밀(bearer secret)입니다. 동결할 계정도, 비밀번호 재설정도, 이체를 되돌릴 권한을 가진 지원 창구도 없습니다.
단일 실패 지점이란, 그것이 침해되거나 손실되면 전체 시스템이 무너지는 모든 구성 요소를 말합니다. 이 정의에 비추어 보면, 단일 시드 커스터디는 양쪽 방향으로 동시에 실패합니다.
- 노출. 그 단어들을 읽는 누구든 — 도둑, 클라우드에 동기화된 사진첩, 메모 앱을 훑는 악성코드, 당신이 물건을 어디에 두는지 아는 친척 — 어디서든 몇 분 만에, 되돌릴 수 없이 지갑을 비울 수 있습니다.
- 분실. 유일한 사본이 불타거나, 물에 잠기거나, 잉크가 바래거나, 쓰레기와 함께 버려지면, 코인은 온체인에서 영원히 보이되 결코 지출할 수 없는 상태로 남습니다. 블록체인은 당신의 손주들에게도 기꺼이 잔액을 보여 주겠지만, 그중 누구도 거기에 손댈 수 없습니다.
불편한 지점은 이 두 위험이 서로 반대 방향으로 잡아당긴다는 것입니다. 사본을 늘리면 분실 확률은 줄어들지만 노출 확률은 배가됩니다. 사본 하나를 훌륭한 은닉처에 두면 그 반대가 됩니다. 단일 시드 문구로는 어느 쪽 실패를 더 겪기 쉬울지 고를 수 있을 뿐, 실패 양식 자체를 없앨 수는 없습니다.
업계에서 가장 잘 기록된 손실 사례들
이 중 어느 것도 가상의 이야기가 아닙니다. 2013년, 웨일스의 IT 종사자 James Howells는 약 7,500 BTC의 키가 담긴 하드 드라이브를 버렸습니다. 그 이후로 지금까지 뉴포트의 한 매립지에 묻혀 있으며, 10년에 걸친 발굴 제안은 지역 의회도, 코인도 움직이지 못했습니다. 샌프란시스코의 프로그래머 Stefan Thomas는 7,000 BTC를 조금 넘는 키가 담긴 암호화된 IronKey 드라이브를 가지고 있는데 — 몇 년 전 비밀번호를 잃어버렸고, 2021년에 널리 보도된 대로, 드라이브가 영원히 잠기기 전 주어진 열 번의 시도 중 여덟 번을 이미 써 버렸습니다. 유명한 사례들 외에도, 널리 인용되는 Chainalysis의 추정에 따르면 영구히 소실된 비트코인은 지금까지 채굴된 전체 코인의 약 20%에 이릅니다.
이들이 누구인지 주목하세요. IT 전문가와 노련한 소프트웨어 엔지니어로, 둘 다 자신이 무엇을 쥐고 있는지 정확히 이해할 만큼 일찍 업계에 발을 들인 사람들입니다. 단일 키 커스터디는 무지를 벌하지 않습니다 — 평범한 인간의 실수를 벌하며, 그것도 완전하게 벌합니다. 은행 고객이라면 오후 한나절의 전화 통화로 끝날 서류상의 실수가, 셀프 커스터디 보유자에게는 모든 것을 영구히 앗아 갑니다.
왜 백업을 늘려도 해결되지 않는가
손실 이야기가 나올 때마다 따라오는 표준 조언은 늘 같습니다. 제대로 백업하라. 불과 물이 파괴하지 못하도록 단어들을 강철에 새겨라. 여러 장소에 사본을 보관하라. 안전 금고를 빌려라. 이 모든 것은 그 나름대로는 합리적입니다 — 그러나 그 어느 것도 근본 구조에는 손대지 못합니다. 시드 문구의 모든 사본이 곧 키 전체이기 때문입니다. 강철판은 주택 화재에서 살아남습니다. 동시에 누군가에게 발견될 만큼 오래 살아남기도 합니다. 백업 장소를 하나 더 늘릴 때마다, 당신 재산의 완전하고 지출 가능한 사본이 엉뚱한 사람이 읽어 주기를 기다리며 놓여 있는 장소가 하나씩 더 늘어나는 셈입니다.
업계도 이 점을 알고 있으며, 그렇기에 '서비스형 시드 백업'이 거듭 시도됩니다. 올해 5월, Ledger는 기기 시드의 암호화된 사본을 신원 확인과 연동해 세 곳의 수탁 기관에 분산하는 선택형 구독 서비스 Recover를 발표했습니다. 기술 사용자들의 반발은 즉각적이었고, Ledger가 출시를 중단할 만큼 거셌습니다. 우리는 당시 이 사건이 셀프 커스터디에 대해 무엇을 가르쳐 주었는지를 다룬 바 있습니다. 여기서 중요한 더 좁은 논점은, 애초에 왜 그런 제품이 존재하느냐는 것입니다. 백업 없는 단일 시드는 언젠가 터질 손실이며, 업체들은 매일 지원 티켓을 통해 그 압박을 체감합니다. 하지만 제3자를 거쳐 시드를 다시 조립하는 방식은 단일 실패 지점을 없애지 못합니다 — 그것을 거래 상대방 위험과 절차 위험으로 바꿔치기할 뿐이며, 이 위험 범주는 지난해 11월 FTX의 붕괴가 아직 그 교훈이 필요했던 모든 이에게 그 대가를 매겨 보여 준 바 있습니다.
공정하게 말하자면, 하드웨어 월렛은 그들이 내세우는 바에 있어서는 진정으로 훌륭합니다. 인터넷에 연결된 컴퓨터로부터 키를 떼어 놓는 일 말입니다. 하지만 하드웨어 월렛 안의 시드도 여전히 하나의 시드입니다. 기기와 그 종이 백업을 함께 잃으면 결과는 매립지의 경우와 똑같습니다.
무엇이 실제로 단일 실패 지점을 없애는가
멀티시그 — 다중 서명 커스터디 — 는 은닉처가 아니라 구조를 바꿉니다. 멀티시그 지갑은 모든 트랜잭션을 승인하는 데 N개 중 M개의 독립된 키를 요구합니다. 2-of-3, 3-of-5 등이 그것이죠. 어떤 단일 키도 자금을 옮길 수 없고, 어떤 단일 키가 파괴되어도 자금을 동결할 수 없습니다. 단일 실패 지점은 더 잘 숨겨지는 것이 아니라, 아예 존재하기를 멈춥니다.
제대로 구성하면, N개의 키는 각각 자체 기기에서 자체 표준 BIP39 시드 문구로 생성되어 각자의 장소에 보관됩니다 — 그리고 각 키는 서로 다른 사람에게 속할 수 있습니다. 키가 두 도시, 두 사람의 손에 나뉘어 있는 2-of-3 지갑에는, 그 실패가 치명적인 단 하나의 장소도, 기기도, 개인도 존재하지 않습니다.
대안들에 공정하기 위해 덧붙이자면, MPC 지갑은 다른 수학으로 같은 목표를 추구합니다. 하나의 키를 여러 조각(share)으로 나누어 그것들이 공동으로 하나의 서명을 계산하도록 하는 방식이죠 — 프로토콜 투명성과 회복을 둘러싼 나름의 트레이드오프를 지닌 합리적인 설계입니다. 수탁 기관은 키 관리를 전면 제거하는데, 이는 일부 기관이 정당하게 필요로 하는 바이지만, 그 대가로 수탁 기관을 신뢰해야 합니다. 멀티시그만의 고유한 장점은 체인 자체가 규칙을 강제한다는 점입니다. 누구나 지출 임계값을 온체인에서 검증할 수 있고, 회복이 어떤 회사가 사업을 유지하는지에 의존하지 않습니다. 바로 그 검증 가능성 때문에, Ownbit의 MultiSig는 앱은 오픈소스가 아니더라도 온체인 컨트랙트만큼은 오픈소스로 유지하며, Ownbit 지갑의 모든 공동 서명자 키는 표준 도구로 회복할 수 있는 평범한 BIP39 문구입니다.
실생활을 견디는 2-of-3
오직 휴대폰만으로 구성하는, 우리가 가장 자주 권하는 구성은 다음과 같습니다.
- 키 1 — 당신의 일상용 휴대폰. 지갑 앱이 하나의 시드를 보관하며 트랜잭션을 조율합니다.
- 키 2 — 콜드월렛으로 쓰는 남는 휴대폰. 초기화한 뒤 영구히 오프라인으로 두는 오래된 단말기가 두 번째 시드를 보관합니다. 서명되지 않은 트랜잭션이 들어가고 서명이 QR 코드로 나오므로, 이 키는 절대 네트워크에 닿지 않습니다. Ownbit의 콜드월렛 워크플로가 바로 이를 위해 존재하며, 따로 구매할 하드웨어도 없습니다.
- 키 3 — 다른 곳에 둔 백업 시드. 세 번째 시드 문구는 종이나 강철에 담겨 두 번째 장소에, 또는 당신이 신뢰하는 가족 구성원에게 보관됩니다.
이제 실패 상황들을 하나씩 짚어 봅시다. 주택 화재로 일상용 휴대폰과 콜드 휴대폰을 모두 잃었다면? 키 3에 대체 기기를 더하면 2-of-3 통제권이 복구됩니다. 도둑이 백업 시드를 찾아냈다면? 그것 하나만으로는 아무것도 서명하지 못하며, 당신은 침착하게 자신의 일정에 맞춰 자금을 새 지갑으로 옮기면 됩니다. 공항에서 휴대폰을 도난당했다면? 같은 답입니다. 2-of-3 멀티시그에서는 어떤 키 하나를 잃어도 견딜 수 있고, 어떤 키 하나를 훔쳐도 아무 소용이 없습니다 — 단일 시드에서 서로 반대로 잡아당기던 두 위험이, 이제는 동일한 구조 안에서 함께 흡수됩니다.
목표는 키 분실을 불가능하게 만드는 것이 아닙니다. 어떤 단일 분실도 견딜 수 있게, 어떤 단일 도난도 무의미하게 만드는 것입니다.
솔직한 비용
멀티시그가 공짜는 아닙니다. 모든 지출에는 두 번째 서명이 필요하고, 이는 조율 단계를 하나 더합니다 — 저축에는 견딜 만하지만 커피값에는 성가신 일이며, 그렇기에 작은 단일 키 핫월렛도 멀티시그 금고 곁에 여전히 정당한 자리를 차지합니다. 일부 체인에서는 멀티시그 트랜잭션의 수수료가 다소 더 듭니다. 그리고 이제 당신은 하나가 아니라 세 개의 시드 문구를 잘 보관해야 합니다. 관리의 규율이 사라지는 것이 아니라 분산되는 것이죠. 달라지는 것은 실수의 결과입니다. 예전에는 치명적이던 오류가 이제는 복구 가능한 사고가 됩니다.
더 조용한 이점도 있습니다. 키가 서로 다른 사람에게 속할 수 있기 때문에, 멀티시그는 상속의 자연스러운 토대가 됩니다. 상속인은 오늘 지출할 수는 없으면서도 오늘 키를 보유할 수 있고, 누구도 살아 있는 동안 시드 문구를 공유할 필요가 없습니다. 이는 별도의 글로 다룰 만한 주제입니다 — 지금으로서는 그 요점만으로도 충분합니다. 온체인에 있는 당신의 전 재산이 비밀이면서 동시에 안전하게 유지되어야 하는 단 한 줄의 단어들에 달려 있다면, 문제는 그 구성이 실패할 수 있는지가 아니라, 어느 방향으로 먼저 실패하느냐입니다.
자주 묻는 질문
누군가 내 시드 문구를 발견하면 어떻게 되나요?
그 사람이 지갑을 완전히 통제하게 됩니다. 시드 문구는 모든 개인 키를 다시 생성하므로, 발견한 사람은 몇 분 안에 자신이 통제하는 주소로 모든 것을 이체할 수 있고, 온체인 이체는 되돌릴 수 없습니다. 즉시 자금을 새 지갑으로 옮기는 것이 유일한 방어책이며 — 그것도 노출을 제때 알아챘을 때에만 가능합니다.
금속 시드 문구 백업이면 충분한가요?
금속은 내구성 — 불, 침수, 바래는 잉크 — 문제를 해결하지만, 기밀성이나 집중의 문제는 해결하지 못합니다. 강철판은 여전히 발견될 수 있는 한 장소에 놓인, 지출 가능한 지갑의 완전한 사본입니다. 그것은 보관 계획의 좋은 구성 요소일 뿐, 단일 실패 지점 자체를 없애는 것에 대한 대체물로는 형편없습니다.
멀티시그를 쓰면 이제 시드 문구가 없다는 뜻인가요?
아니요 — 오히려 여러 개를 갖게 됩니다. 표준 멀티시그에서는 각 공동 서명자 키가 각자 독립적으로 생성되고 보관되는 자체 BIP39 시드 문구입니다. 차이는, 그중 어떤 하나도 단독으로는 자금을 지출하거나 분실됨으로써 자금을 동결할 수 없다는 점입니다. 오직 2-of-3 같은 임계값만이 그 권한을 가집니다.
BIP39 패스프레이즈('25번째 단어')만으로 충분한 보호가 되지 않나요?
패스프레이즈는 누군가 적어 둔 시드를 발견하는 상황을 막아 주며, 이는 실질적인 가치가 있습니다. 하지만 그것은 잃어버릴 수 있는 두 번째 대상을 더합니다. 패스프레이즈를 잊으면 시드만으로는 아무것도 복구되지 않습니다. 그것은 은닉처를 더 깊게 만들 뿐, 독립된 멀티시그 키가 하는 방식으로 단일 실패 지점을 없애 주지는 않습니다.
은닉처를 계속 업그레이드하기보다 구조 자체를 바꾸고 싶다면, Ownbit의 MultiSig는 당신의 휴대폰, 오프라인 예비 단말기, 백업 시드에 걸쳐 2-of-3를 구성합니다 — 모든 키가 우리 서버 없이도 복구할 수 있는 표준 BIP39 문구입니다. 콜드월렛 워크플로 페이지에서는 QR 기반 오프라인 서명 설정을 단계별로 보여 줍니다.