뉴스
비트코인 멀티시그 백업 표준 BIP138 — 시드만으론 못 찾아요
멀티시그 지갑은 시드 24단어만 있어도 코인을 못 찾을 수 있어요. 지갑 구조를 적은 디스크립터가 필요한데, 이걸 암호화해서 클라우드에 둘 수 있게 만든 BIP138 초안이 9월 21일 비트코인 BIP 저장소에 들어갔어요.

3줄 요약
- 1BIP138 은 지갑 디스크립터와 정책을 암호화해서 백업하는 규격이에요. 9월 21일 비트코인 BIP 저장소에 초안(Draft)으로 들어갔어요.
- 2암호를 푸는 열쇠가 디스크립터에 들어 있는 공개키들이에요. 공동 서명자라면 자기 xpub 만으로 백업을 열 수 있고, 개인키는 백업에 넣지 않아요.
- 3렛저·트레저 데스크톱 앱처럼 계정 xpub 을 서버로 보내는 앱의 xpub 을 멀티시그에 다시 쓰면, 그 서버가 백업을 열 수 있다고 규격이 직접 경고해요.
AI가 쓴 글이에요. 출처를 바탕으로 자동으로 작성·발행돼요. 사람이 검수하지 않으니 사실과 다를 수 있어요. 중요한 내용은 아래 출처 링크에서 원문을 확인해 주세요.
멀티시그 지갑은 시드 24단어를 다 적어 뒀어도 코인을 못 찾을 수 있어요. 어떤 공개키들을 몇 개 모아야 쓸 수 있는 지갑인지 적어 둔 디스크립터가 따로 있어야 하거든요. 이 디스크립터를 암호화해서 클라우드 같은 남의 저장소에 올려 두게 만든 BIP138 초안이 9월 21일 비트코인 BIP 저장소에 들어갔어요.
시드만 있으면 된다는 오해
시드 구문은 서명할 권한을 주는 열쇠예요. 그런데 내 코인이 어디 있는지 알려 주지는 않아요. 그 역할을 하는 게 디스크립터(Descriptor) — 어떤 공개키와 스크립트, 어떤 조건으로 돈을 쓸 수 있는지 적은 설명서예요.
혼자 쓰는 단일서명 지갑은 시드에서 디스크립터를 다시 만들 수 있어요. 멀티시그는 그게 안 돼요. 내 키 하나만으로는 나머지 공동 서명자의 공개키를 알 수가 없거든요.
BIP138 문서는 이렇게 표현해요. 디스크립터를 잃는 건 시드를 잃는 것과 거의 같다고요. 3명 중 2명이면 복구되게 설계해 둔 지갑도, 잃어버린 한 사람의 공개키까지 같이 사라지면 코인에 손을 못 대게 돼요.
종이에 적기도, 클라우드에 올리기도 어려웠어요
지금까지 디스크립터 백업은 어느 쪽을 골라도 걸리는 데가 있었어요.
| 방법 | 문제 |
|---|---|
| 종이·금속판에 적기 | 디스크립터가 시드 24단어보다 훨씬 길어요. 손으로 옮기다 틀리기 쉬워요 |
| USB·외장 저장장치 | 시간이 지나면 데이터가 상해요. 물·불에는 버티지 못해요 |
| 클라우드에 그냥 올리기 | 내 공개키와 스크립트 구조가 그대로 드러나요 |
BIP138 이 노리는 자리가 세 번째 줄이에요. 남의 서버에 여러 벌 올려 두면서도 내용은 안 보이게 하는 거예요.
공개키로 잠그고, 공개키로 풀어요
암호를 푸는 열쇠를 따로 만들지 않는 게 이 규격의 핵심이에요. 디스크립터에 들어 있는 공개키들을 사전 순서대로 줄 세워 해시한 값이 그대로 암호 열쇠가 돼요.
그래서 공동 서명자는 자기 xpub(확장 공개키)만 있으면 백업을 열 수 있어요. 새로 외울 비밀번호가 없어요. 하드웨어 지갑에서 개인키를 꺼내지 않아도 돼요. 반대로 그 지갑의 참여자가 아니면 못 열어요.
암호 알고리즘은 ChaCha20-Poly1305(RFC 8439)를 써요. 비트코인 코어가 P2P 통신 암호화(BIP324)에 이미 쓰는 방식이라 라이브러리 구하기가 쉽고, 하드웨어 지갑처럼 성능이 약한 기기에서도 돌아가요.
개인키는 절대 넣지 말라고 규격에 못 박아 뒀어요. 공개키로 열리는 상자라서, 개인키를 넣으면 공개키만 아는 사람이 개인키를 가져갈 수 있어요.
파일 크기와 참여자 수까지 감춰요
암호화만 하면 내용은 가려지지만, 파일을 보고 짐작할 수 있는 게 남아요. BIP138 은 그 틈도 막아 놨어요.
- 지문(fingerprint)을 평문으로 안 적어요. 적으면 참여자가 누구인지 단서가 돼요.
- 가짜 열쇠 조각을 섞어요. 실제 공동 서명자가 2명이어도 조각 개수를 5개, 10개, 20개 같은 칸으로 올려 채워요. 몇 명짜리 지갑인지 세지 못하게 하는 거예요.
- 파일 크기를 칸에 맞춰 늘려요. 10KiB 이하는 10KiB 로 채워요. 거래가 생길 때마다 백업을 새로 올리는 지갑은 파일 크기 변화만으로 활동이 드러나거든요.
조심할 점 — 앱에 넘긴 xpub
규격이 직접 경고하는 대목이 하나 있어요. xpub 은 블록체인에 안 올라가도 남이 알 수 있어요.
렛저(Ledger)와 트레저(Trezor) 데스크톱 앱 같은 단일서명 지갑은 계정 xpub 을 서버로 보내요. 서버가 그 xpub 에서 주소를 뽑아 잔액을 보여 주는 구조예요. 단일서명으로 쓸 때는 서버가 이미 아는 정보라 큰 문제가 없어요.
문제는 그 xpub 을 멀티시그 디스크립터에 다시 쓸 때예요. 그러면 그 서버는 이 멀티시그의 백업을 전부 열 수 있어요. 열어도 돈을 옮기지는 못하지만, 참여자 수와 스크립트 구조는 보게 돼요.
규격의 권고는 이래요. 멀티시그는 서버에 xpub 을 보낸 적 없는 계정으로 만들라는 거예요. BIP48 이나 BIP87 경로에서 뽑은 계정이 그런 계정이에요.
같은 이유로, 블록체인에 그대로 찍히는 형태의 키는 암호 열쇠에서 빼요. 한 번 쓴 거래만 봐도 열쇠를 되짚어 계산할 수 있으니까요.
아직 초안이에요
BIP138 의 상태는 초안(Draft)이에요. 네트워크 규칙이 아니라 지갑 앱이 골라서 따르는 규격이고, 내 지갑에 자동으로 적용되지도 않아요. 문서 버전은 0.1.3, 작성자는 와이자드사딘(Wizardsardine)의 개발자 Pyth 예요.
지금 멀티시그를 쓰는 분이라면 표준을 기다릴 일은 아니에요. 디스크립터를 시드와 따로, 지금 쓰는 방식으로 한 벌 더 챙겨 두는 게 먼저예요.
정리
- 멀티시그 지갑은 시드 말고 디스크립터도 백업해야 해요. 없으면 내 키가 있어도 코인을 못 찾아요.
- BIP138 은 그 디스크립터를 암호화해서 클라우드에 둘 수 있게 만든 초안이에요. 공동 서명자는 자기 xpub 만으로 열 수 있고, 개인키는 넣지 않아요.
- 렛저·트레저 데스크톱 앱에 넘긴 계정 xpub 을 멀티시그에 재사용하면 그 서버가 백업을 열 수 있어요.
다음에 할 일 한 가지 — 멀티시그를 쓰고 있다면 지갑 앱에서 디스크립터를 내보내(export) 시드와 다른 곳에 한 벌 보관해 보세요.
출처 (3개)
이 글은 아래 출처를 바탕으로 작성됐어요
함께 보면 좋아요

코인풀이 텔레그램 소통방
차트 공부부터 실시간 분석까지, 같이 이야기해요. 새 글도 여기 가장 먼저 올라가요.