145 / 736BIP85

BIP85

하나의 상위 백업에서 여러 지갑 만들기

BIP85를 사용하면 상위 지갑에서 저마다 복구 단어를 가진 다른 지갑을 만들 수 있습니다. 용도를 나눌 수 있지만, 파생 지갑들은 여전히 공통 기반의 보호에 의존합니다.

BIP85는 상위 지갑의 비밀 정보로 다른 지갑에 쓸 새로운 비밀 정보를 반복해서 만드는 방법입니다. 예를 들어 휴대전화에는 주요 저축을 보호하는 단어 대신 자체 Seed Phrase, 즉 복구 단어를 넣을 수 있습니다. 시작 비밀과 설정이 같으면 결과도 항상 같습니다. 이를 결정적 파생이라고 합니다. BIP85는 비트코인을 옮기거나 백업을 여러 조각으로 나누지 않으며, 잃어버린 상위 백업을 대신하지도 않습니다.

안나는 상위 백업을 안전하게 보관하면서 소액 결제용 지갑을 따로 만들고 싶습니다. 지갑은 비트코인을 받고 보내는 앱이나 기기입니다. BIP85로 별도의 복구 단어를 만들면 휴대전화에는 그것만 가져올 수 있습니다. 개인키는 지갑이 자금 지출을 승인하는 디지털 서명을 만들 때 사용하는 비밀 숫자 값입니다. 기술적인 시작점은 키 트리의 뿌리인 BIP 32 확장 개인 루트입니다. 이 루트는 BIP 39 복구 단어에서 만들어졌을 수 있습니다. 단어와 선택적인 passphrase로 먼저 seed, 즉 루트를 계산할 비밀 입력을 만듭니다. 이 명칭들은 같은 대상을 달리 부르는 것이 아니라 서로 다른 단계를 뜻합니다. BIP85는 루트에서 새로운 비밀 데이터를 계산하지만, 과정을 거슬러 원래 단어를 복구하지는 못합니다. [1] [2] [3] [5]

안나는 파생할 때 선택한 설정도 기록해야 합니다. Derivation Path는 그 단계들을 정확히 적은 것입니다. m/83696968'/39'/0'/12'/0'라는 예는 BIP85, BIP 39 애플리케이션, 영어 단어 목록, 12단어, 인덱스 0을 선택합니다. 여기서 애플리케이션은 정해진 결과 처리 방식이지 특정 휴대전화 앱이 아닙니다. 인덱스 1은 다른 자식, 즉 다른 파생 복구 단어를 만듭니다. 휴대전화 지갑 안에 있는 결제 주소의 번호가 아닙니다. 체코어 목록의 코드는 이 페이지 언어와 관계없이 8'입니다. 목록이나 단어 수를 바꾸면 경로와 결과가 달라집니다. 같은 복구 단어를 번역하는 것이 아닙니다. [1]

중간 데이터를 엔트로피라고 합니다. 여기서는 비밀 기반으로 계산한 데이터이며, 그 기반을 모르면 예측할 수 없어야 합니다. 12단어에는 결과의 앞 128비트를, 24단어에는 앞 256비트를 사용합니다. BIP 39는 일부 필사 오류를 알아내는 체크섬을 더한 뒤 데이터를 단어로 바꿉니다. 그 단어에서 새 지갑의 seed와 키를 만듭니다. BIP85 자체가 주소 유형, 주소 경로나 과거 결제를 찾는 방식을 정하지는 않습니다. 결과가 길다고 추측하기 쉬운 시작 비밀이 구제되는 것도 아닙니다. 파생은 새로운 독립적 무작위성을 더하지 않기 때문입니다. [1] [3]

Passphrase는 BIP 39 복구 단어와 함께 쓰는 선택적 추가 비밀입니다. 기기 PIN이나 앱을 여는 비밀번호가 아닙니다. 안나가 상위 단어에 사용했다면 BIP85의 같은 입력 루트를 복구할 때도 필요합니다. 상위 passphrase가 다르면 자식들도 달라집니다. 별도의 두 번째 passphrase를 휴대전화의 파생 단어에 적용할 수도 있습니다. 이것은 대상 지갑의 seed를 바꾸며, 이미 만들어진 단어를 바꾸지는 않습니다. BIP85는 이 대상 passphrase를 백업하지 않습니다. 따라서 이것 없이 단어만 복구했다고 원래 지갑이 복구되는 것은 아닙니다. [3] [4]

구성이 올바르고 시작 비밀이 충분히 강하면, 하나의 파생 단어 묶음에서 상위 루트나 다른 파생 지갑의 비밀 정보를 계산해 얻는 것은 현실적으로 불가능합니다. 따라서 휴대전화 단어의 유출만으로 상위 백업이 드러나지는 않습니다. 반대 방향은 가능합니다. 상위 개인 루트와 필요한 설정을 얻은 사람은 자식들을 재현할 수 있습니다. 추가 대상 passphrase가 있다면 그것은 별도 비밀로 남습니다. 상위 기반을 잃으면 자체적으로 쓸 수 있는 백업이 없는 자식들이 위험해집니다. BIP85는 이처럼 책임의 일부를 한곳에 모읍니다. 침해된 상위 루트를 복구해 주지 않으며, 자식을 내보낸다고 감염된 휴대전화가 안전해지지도 않습니다. [1] [4]

모든 파생 단계는 hardened이며 부모 키의 개인 부분이 필요합니다. 공개 키를 파생하는 확장 공개 키인 xpub만으로는 부족합니다. 얻어진 개인 키 k는 32바이트입니다. BIP85는 이를 HMAC-SHA512로 다시 처리합니다. 메시지와 키를 입력받는 암호학적 계산입니다. 여기서는 k가 메시지이고 고정 문자열 bip-entropy-from-k가 키이며, 출력은 64바이트입니다. 비밀을 지키는 것은 공개된 고정 문자열이 아니라 개인 입력 k입니다. 이 변환은 결과 데이터를 파생 키와 분리합니다. 그 중간 키를 결제 서명에도 함께 쓰라는 권고가 아닙니다. [1] [2]

XPRV 애플리케이션은 새로운 확장 개인 키를 만들 수 있습니다. m/83696968'/32'/0' 예에서 앞 32바이트는 후속 파생에 필요한 추가 데이터인 chain code, 뒤 32바이트는 개인 키가 됩니다. 일반적인 BIP 32 루트 생성과 반대 순서입니다. 결과 숫자가 유효한 키가 아니라면 프로그램은 오류를 알려야 하고 사용자는 다음 인덱스를 골라야 합니다. 아무 말 없이 쓸 수 있는 키로 받아들이면 안 됩니다. HEX는 데이터를 십육진수 문자로 표현하고, WIF는 개인 키 형식이며, 다른 애플리케이션은 비밀번호를 만듭니다. 규칙이 각각 다르므로 문자열이 비슷해 보인다고 내용이 같거나 호환되는 것은 아닙니다. [1] [2]

COLDCARD 문서는 BIP 39, WIF, XPRV, HEX의 파생과 내보내기를 설명합니다. BIP85 지원이 모든 기기 버전에서 모든 애플리케이션을 지원한다는 뜻은 아닙니다. 형식, 단어 목록, 길이, 인덱스와 어느 상위 지갑에서 시작했는지 기록하고, passphrase는 별도 비밀로 보호하세요. 이 절차에 의존하기 전에 같은 파생 단어와 대상 지갑의 해당 주소를 재현하는지 확인해야 합니다. 공개 테스트 벡터는 알려진 입력과 예상 출력의 쌍으로, 소프트웨어를 확인하는 데 쓰이지 개인 백업을 확인하지는 않습니다. BIP85는 관리를 단순하게 만들 수 있지만, 늘어나는 복잡함이 의미 있으려면 자신의 복구 절차를 이해해야 합니다. [4] [1]

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 HD Wallet, BIP 39, BIP39 passphrase, Derivation Path, Hardware Wallet, Seed Phrase. 다음 항목에서도 이 글을 참조합니다 Duress Wallet.

DOC · 001BIP 85 — Deterministic Entropy From BIP32 Keychains명세 DOC · 002BIP 32 — Hierarchical Deterministic Wallets명세 DOC · 003BIP 39 — Mnemonic code for generating deterministic keys명세 DOC · 004COLDCARD — Export Deterministic Entropy (BIP-85)문서 DOC · 005Bitcoin Developer Guide — Wallets문서
개정일: 1차 출처 우선 · 투자 조언이 아닙니다