BIP39 패스프레이즈
BIP39 패스프레이즈("25번째 단어"라고도 함)는 시드에 섞어 넣는 선택적 추가 비밀 값입니다. 같은 복구 문구라도 패스프레이즈가 다르면 마스터 지문, xpub, 주소가 모두 다른 완전히 별개의 지갑이 됩니다.
BitTool Signer는 지갑을 생성할 때와 가져올 때 모두 패스프레이즈를 지원합니다. BIP39 passphrase(BIP39 패스프레이즈)를 켜고 두 번 입력하면 됩니다. 패스프레이즈는 문구와 함께 암호화된 볼트 안에 저장되므로, 서명할 때 다시 입력할 필요가 없습니다.
비밀 두 개, 백업 두 개
패스프레이즈가 있는 지갑은 복구 문구만으로 복원할 수 없습니다. 앱은 모든 백업 화면에서 이를 안내하며, 어떤 백업 형태(단어, QR 코드, 복구 카드)에도 패스프레이즈는 포함되지 않습니다. 패스프레이즈는 지갑 비밀번호와도 다릅니다. 비밀번호는 이 iPhone의 볼트를 암호화할 뿐입니다.
시드에 반영되는 방식
seed = PBKDF2-HMAC-SHA512(password = NFKD(phrase), salt = NFKD("mnemonic" + passphrase), 2048 iterations, 64 bytes)
- 패스프레이즈는 BIP39가 요구하는 대로 Unicode NFKD로 정규화됩니다. 이는 악센트, 전각 문자, CJK 호환 문자가 들어간 패스프레이즈에서 중요합니다. 정규화를 건너뛰는 지갑은 같은 텍스트에서 다른 시드를 파생합니다.
- 그 외에는 입력한 그대로 사용합니다. 공백 제거도, 대소문자 변환도 하지 않습니다. 끝에 있는 공백도 패스프레이즈의 일부입니다.
- 빈 패스프레이즈는 "패스프레이즈 없음"을 뜻합니다. 옵션을 켰다면 비어 있으면 안 되며, 두 번의 입력이 일치해야 합니다.
- 최대 1,024바이트(UTF-8).
구현은 공개된 BIP39 벡터와, 호환 문자가 들어간 패스프레이즈를 포함하는 공식 일본어 벡터로 검증했습니다.
예시
공개 테스트 문구에 패스프레이즈 TREZOR(공개 BIP39 테스트 벡터에서 사용하는 패스프레이즈)를 적용했을 때와 적용하지 않았을 때의 비교입니다.
| 패스프레이즈 없음 | 패스프레이즈 TREZOR | |
|---|---|---|
| 마스터 지문 | 73c5da0a | b4e3f5ed |
Bitcoin m/84'/0'/0'/0/0 | bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu | bc1qv5rmq0kt9yz3pm36wvzct7p3x6mtgehjul0feu |
EVM m/44'/60'/0'/0/0 | 0x9858EfFD232B4033E47d90003D41EC34EcaEda94 | 0x9c32F71D4DB8Fb9e1A58B0a80dF79935e7256FA6 |
TRON m/44'/195'/0'/0/0 | TUEZSdKsoDHQMeZwihtdoBiN46zxhGWYdH | TAyDUYP5rcf56xFwrg8cU1qQwvnWpkeapM |
Solana m/44'/501'/0'/0' | HAgk14JpMQLgt6rVgv7cBQFJWFto5Dqxi472uT3DKpqk | 7zSmbu6gKkb6HB7UDPtHYjwCWuBHU1D4TpNZFm4sndQe |
64바이트 시드
시드, 패스프레이즈 없음
5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4
시드, 패스프레이즈 TREZOR
c55257c360c07c72029aebc1b53c05ed0362ada38ead3e3e9efa3708e53495531f09a6987599d18264c1e1c92f2cf141630c7a3c4ab7c81b2f001698e7463b04
지갑에 미치는 영향
특별히 할 일은 없습니다. 패스프레이즈는 BitTool Signer 밖으로 나가지 않습니다. 패스프레이즈 지갑은 자신의 마스터 지문과 xpub으로 페어링될 뿐이며, 서명 요청에는 그 지문을 넣어야 합니다. 연동하는 입장에서는 그저 또 하나의 지갑입니다.
실무적으로는 두 가지를 기억하세요.
- 문구 하나, 지갑 여러 개. 사용자는 같은 문구를 BitTool Signer에 패스프레이즈 없이 한 번, 패스프레이즈와 함께 한 번, 이렇게 두 번 둘 수 있습니다. 두 지갑의 지문은 다릅니다. 계정을 문구나 이름 기준으로 합치지 말고, 내보낸 공개 키 기준으로만 합치세요.
- 지문으로 빠르게 확인할 수 있습니다. 사용자가 패스프레이즈 지갑을 기대했는데 페어링한 지갑의 지문이 패스프레이즈 없는 지갑의 것으로 보인다면, 패스프레이즈를 빠뜨렸거나 잘못 입력했을 가능성이 높습니다.