SLIP-39는 Shamir's Secret Sharing에 기반한 상호운용 가능한 단어 지분의 SatoshiLabs 명세입니다. 분할, 메타데이터, 오류 검사와 passphrase를 표준화하며 지분은 BIP 39 문구와 호환되지 않습니다.
BIP 32 지갑 백업의 마스터 비밀은 확장 비공개 루트가 아니라 입력 시드입니다. 먼저 encrypted master secret(EMS)을 만들고 이를 지분으로 나눕니다. 계산은 바이트별로 GF(256)에서 하며, 명세는 비밀을 f(255)에, 임계값이 2 이상이면 검증 다이제스트를 f(254)에 저장합니다. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [BIP 32 — Hierarchical Deterministic Wallets]
먼저 필요한 각 그룹의 구성원 임계값을 충족하고 이어서 그룹 임계값을 충족해야 합니다. 예를 들어 3개 그룹 중 2개가 필요하고 각 그룹은 3명 중 2명입니다. A의 두 지분과 B의 두 지분은 충분하지만 A의 세 지분과 B의 한 지분은 똑같이 네 개여도 부족합니다. 기본 2-of-3 방식은 그룹 하나를 사용합니다. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]
단어 목록은 영어 1024개로 이루어지며 인터페이스 언어에 따라 번역하지 않습니다. 128비트 비밀은 지분당 20단어, 256비트 비밀은 33단어가 됩니다. 식별자, extendable 플래그, 반복 지수, 인덱스와 임계값도 들어 있습니다. 결합 시 메타데이터 일치와 구성원 인덱스의 고유성을 확인하며 같은 지분의 사본 두 개는 두 구성원이 아닙니다. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]
마지막 세 단어는 RS1024를 이루며 최대 세 단어에 영향을 준 오류를 반드시 감지합니다. 지분의 출처나 보유자의 권한을 증명하지 않으며 명세는 자동 수정을 권하지 않습니다. 재구성 다이제스트는 잘못된 집합을 감지하는 데 도움을 줍니다. 이 32비트 검사 때문에 임계값 미만에서 누출이 전혀 없다는 이상적 주장을 SLIP-39에 무조건 적용할 수는 없습니다. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]
암호화는 네 번의 Feistel 라운드로 각 라운드에서 PBKDF2-HMAC-SHA256을 2500×2^e회 반복합니다. 명세는 인쇄 가능한 ASCII 32–126을 허용하고 passphrase가 없으면 빈 문자열을 씁니다. 올바른 passphrase인지는 직접 확인할 수 없으며 다른 입력은 다른 마스터 비밀을 만듭니다. 유효한 지분만으로 원하는 지갑임을 확인할 수 없으므로 알려진 주소를 대조해야 합니다. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]
BIP 39는 단어 목록, 체크섬과 문구를 시드로 바꾸는 방식이 다릅니다. 단어를 여러 종이에 나눈다고 SLIP-39나 그 임계값 보호가 되지 않습니다. 같은 지갑을 유지하는 이전에는 올바른 BIP 32 시드와 파생 맥락 보존이 필요하며 원래 엔트로피를 다른 단어로 재인코딩하는 것만으로 보장되지 않습니다. 구체적으로 지원되는 절차를 확인해야 합니다. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [BIP 39 — Mnemonic code for generating deterministic keys]
extendable 플래그가 1이면 암호화 솔트에서 식별자를 제외합니다. 따라서 passphrase를 몰라도 같은 EMS를 새 식별자로 다시 나눌 수 있습니다. Trezor는 호환되는 단일 지분 백업을 여러 지분으로 확장하는 방법을 설명합니다. 하지만 새 집합이 이전 집합을 무효화하지는 않으며 충분한 이전 조합은 같은 비밀을 계속 복구합니다. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [Trezor — Multi-share Backup]
SLIP-39는 복구할 때 하나의 비밀을 재구성하며 Multisig나 매 거래의 온체인 승인을 만들지 않습니다. 배치는 동시 손실과 공격자의 충분한 조합 확보를 제한해야 합니다. 신뢰할 수 있는 기기에서 복구를 시험하고 passphrase와 지갑 맥락을 보관하며 참조 구현과 테스트 벡터로 호환성을 확인해야 합니다. 지분 수만으로는 충분하지 않습니다. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [Trezor — python-shamir-mnemonic reference implementation]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Shamir Secret Sharing, BIP 39, Trezor, Multisig, HD Wallet. 다음 항목에서도 이 글을 참조합니다 BIP 39, Pavol “Stick” Rusnák, Shamir Secret Sharing.