일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 이더리움
- 프로그래머스
- reentrancy
- 알고리즘
- dsYM
- Blockchain
- 비트코인
- DPOS
- view 이동
- .dsym
- 백준
- DEFI
- 분산원장
- pow
- 블록체인
- ethereum
- solidity
- Mining
- ios
- viewcontroller
- External Call
- PBFT
- 암호화폐
- 블록체인 기술
- Crash
- POS
- Xcode
- 재진입공격
- Report
- Algorithm
- Today
- Total
개발하기좋은날
니모닉 생성 - 1 (니모닉 이란) 본문
니모닉(Mnemonic)이란 결정적 지갑에서 난수를 12개의 영단어로 인코딩한 영단어 그룹, BIP39 에서 제안
- 기존의 시드 키는 숫자와 문자로 구성된 난수이기 떄문에 사용자가 기억하기 어려웠지만, 니코닉 코드 단어의 경우 사용자가 기억하고 사용하기 쉬운 형태로 구성되어 있다는 장점이 있다.
블록체인에서 니모닉은 지갑을 복구하기 위한 일반적인 단어들의 조합이다
니모닉 Wallet
- 니모닉을 사용하여 비밀키 관리를 용이하게 해주는 암호화폐 지갑
- 사용자는 비밀 키를 잃어버릴수 있다는 위험성 떄문에, 비밀키 복구할때 니모닉을 사용
- 니모닉 Wallet은 암호화폐 지갑의 핵심인 비밀키 관리를 용이하게 해줌
- 암화화폐 지갑에 화폐 자체가 들어있는것은 아님
- 암호 화폐 지갑은 키를 관리하는 키 매니지먼트 시스템
ex) 내 계정에 있는 이더리움을 내것이라고 증명 할 수 있는 비밀키를 지갑이 관리한다고 보면됨
니모닉이 필요한 이유
- 암호 화폐 지갑은 공개키와 비밀키를 둘다 사용하는 비대칭 키 방식
- 암호 화폐 지갑에서는 공개키로는 주로 계좌 번호 처럼 주소로 사용됨
- 비밀키는 공개키로 계산이 되지만 공개키로는 비밀키 계산이 현실적으로 불가능함
- 암호화폐 지갑은 비대칭 키 암호 방식을 사용하는데 여기서 비밀키를 사람이 쓰기 편하게 만든게 니모닉
- 영단어 그룹으로 된 문자열 배열을 초기 배열대로 나열하지못하면 지갑을 열수없는 구조
니모닉 코드와 시드 생성 과정 (9단계)
니모닉 코드는 해시 함수를 재귀적으로 반복하는 키 스트레칭 과정을 거쳐 마스터 시드를 생성하고, 마스터 시드는 HD 지갑 주소 생성의 바탕이됨
BIP-39에 정의도니 니모닉 코드와 시드 생성 9단계는 아래와 같다
1. 128bit 또는 256bit 길이의 난수 생성
2. 난수를 SHA-256 해싱 -> 해시값에서 (시드 키의 길이 / 32) 만큼을 떼어냄
2-1. 떼어낸 4bit는 체크섬으로 만든다 ex) 길이가 128bit 라면 128/32 = 4bit 을 앞에서 뗴어내 체크섬으로 만듬
3. 체크섬을 난수 뒤에 붙인다
4. 체크섬을 붙인 난수를 11bit 단위로 잘라냄
5. 각 11bit 단어를 사전에 정의된 단어로 치환
6. 각 11bit의 순서를 유지하여 일련의 니모닉 코드를 만든다
결과적으로 128~256bit 길이의 엔트로피를 표현하는 니모닉 코드가 생성된거다
이후 이 코드를 이용하여 키 스트레칭 함수 PBKDF2를 사용하여 더긴(512bit) 시드를 파생시키면된다
7. 이전 단계에서 만든 12글자 니모닉 코드
8. 솔트(Salt)는 문자열 상수 "mnemonic" 과 선택적으로 사용되는 지정된 암호문을 연결한 값
9. HMAC-SHA512 알고리즘을 사용하여 최종적으로 512비트 값인 seed 생성
솔팅
- 해커들의 레인보우 테이블 공격에 대비하기 위해서 문자열에 + "임의의 값" 첨가하여 해싱하여 저장하는 방식
- 공격자는 솔트를 모르면 레인보우 테이블 공격을 할수가 없다
키 스트레칭
- 솔팅을 여러번 반복하는 과정
'BlockChain' 카테고리의 다른 글
트릴레마 (Trilemma) 와 해결 방법 (0) | 2022.07.21 |
---|---|
니모닉 생성 - 2 (니모닉 개발) (0) | 2022.07.20 |
다양한 지갑 (0) | 2022.07.13 |
크립토 이코노미 와 거버넌스 (0) | 2022.07.12 |
암호화폐 -2 (코인과 토큰) (0) | 2022.07.11 |