니모닉
니모닉은 결정적 지갑에서 난수를 12개의 영단어로 인코딩한 영단어 그룹으로, BIP39에서 제안되었습니다. 기존의 시드 키는 난수였기 때문에 사용자가 기억하기 어려움이 있었지만, 니모닉은 영단어로 구성되어 보기 쉽고 기억하기 용이합니다.
니모닉 생성 과정
- 128bit 또는 256bit 길이의 난수를 생성해 시드 키로 사용합니다.
- 난수를 SHA-256 알고리즘으로 해싱합니다.
- 해시값에서 (시드 키의 길이 / 32 )bit 만큼 앞에서부터 떼어냅니다.
- 떼어낸 데이터는 체크섬으로 만듭니다.
- 체크섬을 난수의 뒤에 붙칩니다.
- 난수를 11bit 단위로 자릅니다.
- 각 11bit의 데이터를 단어로 치환합니다.
※ 체크섬 : 중복 검사를 하기 위한 방법으로, 어떤 일련의 데이터에 오류가 존재하는지 확인하기 위한 검사용 데이터를 뜻합니다.
시드 생성
BIP39에서 니모닉 단어로부터 시드 키를 생성합니다. 시드는 결정적 지갑을 구축하고 비밀 키를 생성하는 데 사용합니다.
시트 키 생성에는 PBKDF2 함수를 사용합니다.
BIP39 시드 생성 과정
- PBKDF2 함수에 니모닉 코드를 입력합니다.
- PBKDF2 함수에 솔트를 입력합니다.
- PBKDF2 함수는 입력값을 사용해 HMAC-SHA512로 2048번 해싱하여 512bit의 시드를 만듭니다.
솔팅
솔팅은 원본 데이터에 임의의 문자열인 솔트를 추가하여 해싱하는 방식입니다. 솔팅 방식으로 비밀번호를 암호화하여 보관하면 솔트가 무엇인지 알지 못하는 이상 원본 데이터를 알 기 어렵습니다.
키 스트레칭
키 스트레칭은 솔팅 방식을 여러 번 반복하는 것입니다. 예측 가능한 데이터들도 키 스트레칭을 통하면 더욱 예측하기 어렵게 합니다.
'BlockChain > theory' 카테고리의 다른 글
[BlockChain] DID와 SSI 알아보기 (1) | 2022.05.30 |
---|---|
[BlockChain] HD 지갑 알아보기 (1) | 2022.05.14 |
[BlockChain] 디지털 서명 알아보기 (1) | 2022.05.13 |
[BlockChain] 블록체인에서 해시함수의 역할 (2) | 2022.05.13 |
[BlockChain] 머클 트리 와 머클 루트 알아보기 (0) | 2022.05.12 |
댓글