HD 지갑을 파생하기위한 시드(seed)로 사용되는 난수를 인코딩한 단어 시퀀스
BIP39 표준을 기반으로 정의된 12~24 단어로 구성돼었으며 순서대로 나열된 영어 단어에서 시드(seed)를 만드는 방법이다.
BIP39 : 32자리의 16진수로 표현되는 시드를 기억하기 쉬운 형태(니모닉)으로 만들기 위해 제안된 표준
HD지갑 생성시 사용하며 지갑주소 분실시 이를 이용해 쉽게 복원할 수 있다.
128bit ~ 256bit (128,160,192,224,256) 길이의 임의의 시퀀스 S 생성
(1)에서 생성한 S에 SHA-256 해시를 적용하여 S' 를 생성하고 S'의 길이/32bit (4,5,6,7,8) 만큼을 chechsum으로 생성
S + checksum = (132,165,198,231,264)bit
(3) 에서 생성한 결과를 11비트 길이의 크기로 나눈다.
(132/11=12개, 165/11=15개, 198/11=18개,
231/11=21개, 264/11=24개)
각각의 11bit를 2048개(2^11)의 미리 정의된 단어로 매핑, 치환
단어 시퀀스로부터 순서를 유지하면서 니모닉 코드 생성
PBKDF2 : 키 스트레칭 (Key Stretching Function)
니모닉 코드와 salt를 HMAC-SHA512로 2048번 해시하여 512bit의 해시값을 리턴하는 함수
Seed = PBKDF2(
HMAC-SHA512, // Pseudorandom function
{Mnemonic code words}, // Password
"mnemonic" + {optional passphrase}, //Salt
2048, // The number of iteration
512 // length of Derived key
)
니모닉 코드는 HD 지갑의 시드를 생성하기 위한 BIP-39 표준의 단어 시퀀스
니모닉 코드를 이용하여 분실한 지갑주소를 쉽게 되찾을 수 있다.
http://wiki.hash.kr/index.php/BIP39#cite_note-.EA.B9.83.ED.97.88.EB.B8.8C-1