•  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Mnemonic(r5 Blame)

r5
r1

(새 문서)
1[목차]
2
3== 개요 ==
4
5=== 블록체인에서 소유권이란 ===
6
7블록체인에서 디지털 자산의 소유권은 서버나 기관이 아닌 '''개인키(Private Key)'''로 증명된다. 은행 계좌와 달리 내 계정임을 증명할 중앙 기관이 없으며, 개인키를 가진 사람이 곧 그 자산의 주인이라고 할 수 있다.
8
9개인키 또는 니모닉이 탈취되지 않는 한 해당 지갑의 디지털 자산은 온전히 본인의 것이다. 반대로 탈취당하는 순간 그 자산에 대한 통제권을 영구적으로 잃으며, 비밀번호 초기화나 고객센터 문의로 되찾을 방법이 없다. 개인키를 직접 보유하지 않으면 그 자산은 진정한 의미에서 본인의 것이 아니라는 의미에서, 블록체인 업계에서는 "Not your keys, not your coins"라는 표현이 널리 쓰인다.
10
11=== 니모닉이란 ===
12
13'''니모닉(Mnemonic)'''은 사람이 읽기 쉬운 단어 조합으로 표현된 암호화폐 지갑의 백업 및 복구용 시드 문구다. '''BIP-39(Bitcoin Improvement Proposal 39)'''에서 처음 표준으로 제안되었으며, 현재 이더리움, 솔라나 등 대부분의 블록체인 지갑이 이 표준을 따른다.
14
15'''시드 문구(Seed Phrase)''', '''복구 문구(Recovery Phrase)'''라고도 불리며, 일반적으로 12개 또는 24개의 단어로 구성된다.
16
17=== 개인키와 니모닉의 차이 ===
18
19블록체인 지갑의 실체는 256비트의 무작위 숫자, 즉 개인키다. 16진수로 표현하면 아래와 같다.
20
21{{{
223a1076bf45ab87712ad64ccb3b10217737f7faacbf2872e88fdd9a537d8fe266
23}}}
24
25이 64자리 문자열을 사람이 직접 기억하거나 실수 없이 종이에 옮겨 적기는 현실적으로 매우 어렵다. 한 글자라도 틀리면 지갑에 접근할 수 없다. 니모닉은 동일한 정보를 사람이 읽을 수 있는 단어 목록으로 표현한 것이다.
26
27||<tablealign=center><tablewidth=100%><tablebordercolor=#000><tablebgcolor=#fff><rowbgcolor=#eee> || '''형태''' ||
28|| 개인키 원문 || {{{3a1076bf45ab87712ad64ccb3b10217737f7faacbf2872e88fdd9a537d8fe266}}} ||
29|| 니모닉 (12단어) || {{{witch collapse practice feed shame open despair creek road again ice least}}} ||
30
31두 표현은 수학적으로 동일한 정보를 담고 있다. 단, 니모닉과 개인키는 엄밀히 다른 개념이다. 개인키는 특정 계정 하나에 대한 접근 권한이고, 니모닉은 지갑에 속한 모든 계정의 개인키를 파생할 수 있는 상위 개념이다. 따라서 니모닉 하나로 지갑에 속한 모든 계정과 자산을 복구할 수 있으며, 기기를 바꾸거나 앱을 삭제해도 이 단어들만 있으면 어디서든 지갑을 되살릴 수 있다.
32
33=== 용어 정리 ===
34
r4
35니모닉, 시드 문구, 복구 문구는 모두 같은 것을 가리키는 다른 이름이다. [[MetaMask|'''MetaMask''']]는 "Secret Recovery Phrase", Ledger는 "Recovery Phrase"라는 표현을 쓰지만 모두 동일한 BIP-39 표준을 따른다. 니모닉을 요구하는 dApp이나 웹사이트는 피싱이다. 정상적인 서비스는 절대 니모닉을 요구하지 않는다.
r1

(새 문서)
36
37
38== BIP-39 표준 ==
39
40=== 배경 및 목적 ===
41
r5
42[[BIP-39|'''BIP-39''']]는 2013년 Trezor 팀이 제안한 비트코인 개선 제안(Bitcoin Improvement Proposal, BIP)으로, 지갑의 시드(Seed)를 사람이 읽고 기록하기 쉬운 단어 목록으로 표현하는 표준이다. BIP-39 이전에는 지갑마다 백업 방식이 제각각이었으나, 이후 대부분의 지갑이 동일한 방식으로 니모닉을 생성하고 복구할 수 있게 되었다.[* BIP-39, "Mnemonic code for generating deterministic keys", 2013. https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki]
r1

(새 문서)
43
44=== Wordlist ===
45
46BIP-39는 언어별로 2048개의 단어 목록(Wordlist)을 정의한다. 니모닉의 각 단어는 이 목록에서 선택되며, 각 단어는 11비트의 정보에 대응한다 (2¹¹ = 2048). 언어가 달라도 니모닉이 담고 있는 수학적 정보(엔트로피)는 동일하나, 대부분의 지갑은 영어 Wordlist를 기본으로 사용하므로 복구 호환성을 위해 영어 니모닉을 권장한다.
47
48* 영어 (English, 기본 표준 · 가장 널리 사용)
49* 한국어 (Korean)
50* 일본어 (Japanese)
51* 중국어 간체 (Chinese Simplified)
52* 중국어 번체 (Chinese Traditional)
53* 스페인어 (Spanish)
54* 프랑스어 (French)
55* 이탈리아어 (Italian)
56* 체코어 (Czech)
57* 포르투갈어 (Portuguese)
58
59=== 니모닉 생성 과정 ===
60
61==== 엔트로피(Entropy) 생성 ====
62
63128~256비트 크기의 무작위 데이터('''엔트로피''')를 생성한다. 비트 크기가 클수록 가능한 조합의 수가 기하급수적으로 늘어나 보안이 강해진다.
64
65{{{
66엔트로피 예시 (128비트):
671010 1100 0011 1111 ... (총 128비트의 랜덤 데이터)
68}}}
69
70==== 체크섬(Checksum) 추가 ====
71
72엔트로피의 SHA-256 해시값 중 첫 ENT / 32 비트를 '''체크섬'''으로 엔트로피 뒤에 붙인다. 128비트 엔트로피라면 체크섬은 4비트(128 / 32 = 4)다.
73
74체크섬은 니모닉 입력 오류를 검증하는 역할을 한다. 단어 하나라도 잘못 입력하면 체크섬 검증에 실패한다. ({{{[128비트 엔트로피] + [4비트 체크섬] = 132비트}}})
75
76==== 비트 결합 및 11비트 분할 ====
77
78엔트로피와 체크섬을 이어붙인 뒤 전체 비트열을 11비트 단위로 나눈다. ({{{132비트 ÷ 11비트 = 12개 그룹 → 12단어 니모닉}}})
79
80||<tablealign=center><tablewidth=100%><tablebordercolor=#000><tablebgcolor=#fff><rowbgcolor=#eee> '''엔트로피 (비트)''' || '''체크섬 (비트)''' || '''합계 (비트)''' || '''단어 수''' ||
81|| 128 || 4 || 132 || 12 ||
82|| 160 || 5 || 165 || 15 ||
83|| 192 || 6 || 198 || 18 ||
84|| 224 || 7 || 231 || 21 ||
85|| 256 || 8 || 264 || 24 ||
86
87==== Wordlist 매핑 ====
88
89각 11비트 값을 0~2047 사이의 인덱스로 해석하여 Wordlist에서 해당 인덱스의 단어를 가져온다. 이 단어들을 순서대로 나열한 것이 최종 니모닉이다.
90
91{{{
9200000000001 → 인덱스 1 → "abandon"
9300000000010 → 인덱스 2 → "ability"
9410000000000 → 인덱스 1024 → "nature"
95...
96}}}
97
98== 니모닉과 HD Wallet ==
99
100니모닉 하나로 지갑의 모든 계정을 복구할 수 있는 것은 '''HD Wallet(Hierarchical Deterministic Wallet, 계층적 결정론적 지갑)''' 구조 덕분이다. HD Wallet은 하나의 시드(Seed)로부터 계층적으로 무한히 많은 키를 파생할 수 있는 지갑 방식으로, [[BIP-32|'''BIP-32''']]에서 처음 정의되었다.
101
102"결정론적(Deterministic)"은 동일한 시드와 경로를 입력하면 언제나 동일한 키가 출력된다는 의미다. 니모닉 → 시드 변환 역시 결정론적으로 이루어지기 때문에, 니모닉만 있으면 언제 어디서든 동일한 지갑을 완전히 재현할 수 있다.
103
104=== 니모닉에서 지갑 주소까지 ===
105
106{{{
107니모닉
108 ↓ PBKDF2-HMAC-SHA512 (2048회 반복)
109시드 (512비트)
110 ↓ HMAC-SHA512, BIP-32
111마스터 키
112 ↓ BIP-44 파생 경로
113계정별 개인키 → 공개키 → 지갑 주소
114}}}
115
116니모닉과 선택적 패스프레이즈를 입력으로 PBKDF2-HMAC-SHA512 함수를 2048회 반복 적용하여 512비트 시드를 생성한다. 2048회 반복은 무차별 대입(Brute‑Force) 공격에 대한 연산 비용을 높이기 위한 설계다. 이후 시드로부터 BIP-32에 따라 마스터 키가 만들어지고, [[BIP-44]] 파생 경로를 따라 계정별 개인키와 주소가 파생된다.[* BIP-32, "Hierarchical Deterministic Wallets", 2012. https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki][* BIP-44, "Multi-Account Hierarchy for Deterministic Wallets", 2014. https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki]
117
118== 패스프레이즈 (Passphrase) ==
119
120=== 개념 ===
121
r2
122'''패스프레이즈'''는 니모닉에 추가하는 선택적 비밀번호다. BIP-39 표준에 정의되어 있으며, 니모닉 12~24개 단어 외에 사용자가 직접 지정하는 임의의 문자열로, '''"25번째 단어"'''라고도 불린다.
r1

(새 문서)
123
124PBKDF2 과정에서 패스프레이즈는 솔트(salt) 값의 일부로 사용된다.
125
126{{{
127PBKDF2(
128 password = 니모닉,
129 salt = "mnemonic" + passphrase, ← 여기에 사용됨
130 ...
131)
132}}}
133
134패스프레이즈가 달라지면 PBKDF2의 출력값(시드)이 완전히 달라지고, 그 결과 전혀 다른 마스터 키와 지갑 주소가 생성된다.
135
136=== 동일한 니모닉, 다른 지갑 ===
137
138같은 니모닉이라도 패스프레이즈에 따라 완전히 다른 지갑이 만들어진다.
139세 지갑은 서로 완전히 독립적이며, 지갑 A의 자산은 지갑 B나 C에서 보이지 않는다.
140
141{{{
142니모닉: "witch collapse practice feed shame open ..."
143
144+ 패스프레이즈 없음 → 지갑 A (주소: 0xAAA...)
145+ 패스프레이즈 "abc" → 지갑 B (주소: 0xBBB...)
146+ 패스프레이즈 "xyz" → 지갑 C (주소: 0xCCC...)
147}}}
148
149
150=== 보안 효과 ===
151
152BIP-39 원문은 패스프레이즈의 설계 의도를 "그럴듯한 부인 가능성(plausible deniability)"으로 설명한다. 모든 패스프레이즈가 유효한 지갑을 생성하지만, 올바른 패스프레이즈를 가진 지갑만이 실제 자산에 접근할 수 있다. 니모닉이 유출되더라도 패스프레이즈를 모르는 공격자는 실제 자산이 있는 지갑에 접근할 수 없다.
153
154== MetaMask 실습 ==
155
156[[MetaMask]]에서 니모닉으로 지갑을 복구하면, 초기화 전과 동일한 계정 주소와 개인키가 재생성된다. 이는 [[#s-3|섹션 3]]에서 설명한 니모닉의 결정론적 특성을 직접 확인할 수 있는 방법이다. 니모닉과 BIP-44 파생 경로가 동일하다면 기기나 앱이 달라도 언제나 동일한 키가 만들어진다.[* MetaMask, "How to restore your wallet using your Secret Recovery Phrase". https://support.metamask.io/configure/wallet/how-to-restore-your-metamask-wallet-from-secret-recovery-phrase/]
157
158== 니모닉 관리 방법 ==
159
160니모닉은 지갑의 모든 자산에 대한 접근 권한과 동일하다. 잘못 관리하면 분실 또는 탈취로 이어질 수 있다.
161
162=== 금지 행위 ===
163
164||<tablealign=center><tablewidth=100%><tablebordercolor=#000><tablebgcolor=#fff><rowbgcolor=#eee> '''금지 행위''' || '''이유''' ||
165|| 클라우드(Google Drive, iCloud, Dropbox 등)에 저장 || 계정 해킹 시 니모닉 즉시 노출 ||
166|| 메모 앱, 카카오톡, 이메일 등에 저장 || 앱 서버 해킹, 키로거(Keylogger) 및 멀웨어에 의한 노출 위험 ||
167|| 스크린샷 촬영 || 사진 앱이 클라우드에 자동 동기화됨 ||
168|| 온라인 니모닉 검증 사이트에 입력 || 입력 즉시 서버로 전송될 수 있음 ||
169|| 다른 사람에게 구두로 알림 || 사회공학적 공격(Social Engineering)에 취약 ||
170|| 니모닉을 요구하는 dApp에 입력 || 정상적인 서비스는 절대 니모닉을 요구하지 않음 ||
171
172=== 니모닉 관리 방법 비교 ===
173
174==== 종이 백업 ====
175
176니모닉을 종이에 직접 손으로 적어 보관하는 방법은 가장 단순하고 오프라인 보관이라 해킹 위험이 없지만, 화재·침수·분실에 취약하므로 두 곳 이상의 서로 다른 물리적 장소에 나누어 보관하고 방수 봉투나 지퍼백에 넣어 습기를 차단하는 것이 좋다.
177
178==== 금속 백업 ====
179
180니모닉을 스테인리스 또는 티타늄 재질의 금속판에 새기거나 각인하는 방법이다. 화재(약 1500°C 이상에서 녹음)와 침수에 강하며 장기 보관에 유리하다. 종이 백업의 물리적 취약점을 보완한다.
181
182'''Cryptosteel''' 등의 제품이 대표적이다.
183
184==== 하드웨어 지갑 ====
185
r3
186Ledger, Trezor 같은 전용 기기에 니모닉을 저장하는 방법이다. 개인키가 기기 외부로 노출되지 않으며, 트랜잭션 서명도 기기 내부에서 처리된다. 컴퓨터가 악성코드에 감염되어도 니모닉이 탈취되지 않는다.
r1

(새 문서)
187
188기기 자체를 분실하거나 고장날 수 있으므로, 니모닉 백업(종이 또는 금속)은 반드시 별도로 보관해야 한다. 하드웨어 지갑을 분실해도 니모닉이 있으면 새 기기에서 복구할 수 있다.
189
190==== 암호화된 디지털 보관 ====
191
192니모닉을 암호화한 뒤 디지털 매체에 저장하는 방법이다. 암호화된 USB/외장 하드에 저장하거나, 강력한 비밀번호로 암호화한 파일을 클라우드에 저장하는 방식이 대표적이다.
193
194단, 디바이스 손상이나 분실 시 복구가 불가능할 수 있으므로 반드시 이중 백업이 필요하다. 클라우드 저장 시에는 계정 해킹에 대비해 강력한 비밀번호와 이중 인증(2FA)을 함께 사용해야 한다.
195
196==== 나누어서 보관 ====
197
198니모닉을 여러 조각으로 분할하여 각각 다른 장소에 보관하는 방법이다. 일부 조각이 유출되더라도 전체 니모닉이 노출되지 않는다는 장점이 있다.
199
200단, 설정이 복잡하고 일부 조각을 분실하면 복구가 불가능해질 수 있어 신중하게 적용해야 한다.
201
202=== 방법별 비교 요약 ===
203
204||<tablealign=center><tablewidth=100%><tablebordercolor=#000><tablebgcolor=#fff><rowbgcolor=#eee> '''방법''' || '''해킹 위험''' || '''물리적 위험''' || '''편의성''' ||
205|| 종이 백업 || 없음 || 높음 (화재, 침수) || 높음 ||
206|| 금속 백업 || 없음 || 낮음 || 중간 ||
207|| 암호화된 디지털 보관 || 중간 (계정 해킹) || 낮음 || 중간 ||
208|| 나누어서 보관 || 낮음 || 중간 (조각 분실) || 낮음 ||
209|| 하드웨어 지갑 || 매우 낮음 || 중간 (기기 분실) || 중간 ||
210
211=== 패스프레이즈 관리 ===
212
213패스프레이즈는 어디에도 저장되지 않으며 지갑 앱도 기억하지 않는다. 패스프레이즈를 잊어버리면 니모닉이 있어도 해당 지갑을 복구할 수 없다.
214
215* 패스프레이즈는 니모닉과 반드시 별도의 장소에 보관한다. 같은 장소에 함께 보관하면 보안 효과가 사라진다.
216* 패스프레이즈 없이 접근 가능한 지갑(빈 패스프레이즈)에는 소액만 보관하고, 패스프레이즈로 보호된 지갑에 주요 자산을 보관하는 방식으로 활용할 수 있다.
217
218== 외부 링크 ==
219
220* [[https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki|BIP-39 — Mnemonic code for generating deterministic keys]]
221* [[https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki|BIP-32 — Hierarchical Deterministic Wallets]]
222* [[https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki|BIP-44 — Multi-Account Hierarchy for Deterministic Wallets]]
223* [[https://support.metamask.io/configure/wallet/how-to-restore-your-metamask-wallet-from-secret-recovery-phrase/|MetaMask 공식 가이드 — Secret Recovery Phrase로 지갑 복구]]
224
225[[분류:블록체인]]
226[[분류:암호화]]