1. 개요 [편집]
1.1. 블록체인에서 소유권이란 [편집]
블록체인에서 디지털 자산의 소유권은 서버나 기관이 아닌 개인키(Private Key)로 증명된다. 은행 계좌와 달리 내 계정임을 증명할 중앙 기관이 없으며, 개인키를 가진 사람이 곧 그 자산의 주인이라고 할 수 있다.
개인키 또는 니모닉이 탈취되지 않는 한 해당 지갑의 디지털 자산은 온전히 본인의 것이다. 반대로 탈취당하는 순간 그 자산에 대한 통제권을 영구적으로 잃으며, 비밀번호 초기화나 고객센터 문의로 되찾을 방법이 없다. 개인키를 직접 보유하지 않으면 그 자산은 진정한 의미에서 본인의 것이 아니라는 의미에서, 블록체인 업계에서는 "Not your keys, not your coins"라는 표현이 널리 쓰인다.
1.2. 니모닉이란 [편집]
니모닉(Mnemonic)은 사람이 읽기 쉬운 단어 조합으로 표현된 암호화폐 지갑의 백업 및 복구용 시드 문구다. BIP-39(Bitcoin Improvement Proposal 39)에서 처음 표준으로 제안되었으며, 현재 이더리움, 솔라나 등 대부분의 블록체인 지갑이 이 표준을 따른다.
시드 문구(Seed Phrase), 복구 문구(Recovery Phrase)라고도 불리며, 일반적으로 12개 또는 24개의 단어로 구성된다.
1.3. 개인키와 니모닉의 차이 [편집]
블록체인 지갑의 실체는 256비트의 무작위 숫자, 즉 개인키다. 16진수로 표현하면 아래와 같다.
3a1076bf45ab87712ad64ccb3b10217737f7faacbf2872e88fdd9a537d8fe266
이 64자리 문자열을 사람이 직접 기억하거나 실수 없이 종이에 옮겨 적기는 현실적으로 매우 어렵다. 한 글자라도 틀리면 지갑에 접근할 수 없다. 니모닉은 동일한 정보를 사람이 읽을 수 있는 단어 목록으로 표현한 것이다.
형태 | |
개인키 원문 | 3a1076bf45ab87712ad64ccb3b10217737f7faacbf2872e88fdd9a537d8fe266 |
니모닉 (12단어) | witch collapse practice feed shame open despair creek road again ice least |
두 표현은 수학적으로 동일한 정보를 담고 있다. 단, 니모닉과 개인키는 엄밀히 다른 개념이다. 개인키는 특정 계정 하나에 대한 접근 권한이고, 니모닉은 지갑에 속한 모든 계정의 개인키를 파생할 수 있는 상위 개념이다. 따라서 니모닉 하나로 지갑에 속한 모든 계정과 자산을 복구할 수 있으며, 기기를 바꾸거나 앱을 삭제해도 이 단어들만 있으면 어디서든 지갑을 되살릴 수 있다.
1.4. 용어 정리 [편집]
니모닉, 시드 문구, 복구 문구는 모두 같은 것을 가리키는 다른 이름이다.
MetaMask는 "Secret Recovery Phrase", Ledger는 "Recovery Phrase"라는 표현을 쓰지만 모두 동일한 BIP-39 표준을 따른다.
니모닉을 요구하는 dApp이나 웹사이트는 피싱이다. 정상적인 서비스는 절대 니모닉을 요구하지 않는다.
2. BIP-39 표준 [편집]
2.1. 배경 및 목적 [편집]
2.2. Wordlist [편집]
BIP-39는 언어별로 2048개의 단어 목록(Wordlist)을 정의한다. 니모닉의 각 단어는 이 목록에서 선택되며, 각 단어는 11비트의 정보에 대응한다 (2¹¹ = 2048). 언어가 달라도 니모닉이 담고 있는 수학적 정보(엔트로피)는 동일하나, 대부분의 지갑은 영어 Wordlist를 기본으로 사용하므로 복구 호환성을 위해 영어 니모닉을 권장한다.
* 영어 (English, 기본 표준 · 가장 널리 사용)
* 한국어 (Korean)
* 일본어 (Japanese)
* 중국어 간체 (Chinese Simplified)
* 중국어 번체 (Chinese Traditional)
* 스페인어 (Spanish)
* 프랑스어 (French)
* 이탈리아어 (Italian)
* 체코어 (Czech)
* 포르투갈어 (Portuguese)
2.3. 니모닉 생성 과정 [편집]
2.3.1. 엔트로피(Entropy) 생성 [편집]
128~256비트 크기의 무작위 데이터(엔트로피)를 생성한다. 비트 크기가 클수록 가능한 조합의 수가 기하급수적으로 늘어나 보안이 강해진다.
엔트로피 예시 (128비트):
1010 1100 0011 1111 ... (총 128비트의 랜덤 데이터)
2.3.2. 체크섬(Checksum) 추가 [편집]
엔트로피의 SHA-256 해시값 중 첫 ENT / 32 비트를 체크섬으로 엔트로피 뒤에 붙인다. 128비트 엔트로피라면 체크섬은 4비트(128 / 32 = 4)다.
체크섬은 니모닉 입력 오류를 검증하는 역할을 한다. 단어 하나라도 잘못 입력하면 체크섬 검증에 실패한다. (
[128비트 엔트로피] + [4비트 체크섬] = 132비트)2.3.3. 비트 결합 및 11비트 분할 [편집]
엔트로피와 체크섬을 이어붙인 뒤 전체 비트열을 11비트 단위로 나눈다. (
132비트 ÷ 11비트 = 12개 그룹 → 12단어 니모닉)엔트로피 (비트) | 체크섬 (비트) | 합계 (비트) | 단어 수 |
128 | 4 | 132 | 12 |
160 | 5 | 165 | 15 |
192 | 6 | 198 | 18 |
224 | 7 | 231 | 21 |
256 | 8 | 264 | 24 |
2.3.4. Wordlist 매핑 [편집]
각 11비트 값을 0~2047 사이의 인덱스로 해석하여 Wordlist에서 해당 인덱스의 단어를 가져온다. 이 단어들을 순서대로 나열한 것이 최종 니모닉이다.
00000000001 → 인덱스 1 → "abandon"
00000000010 → 인덱스 2 → "ability"
10000000000 → 인덱스 1024 → "nature"
...
3. 니모닉과 HD Wallet [편집]
니모닉 하나로 지갑의 모든 계정을 복구할 수 있는 것은 HD Wallet(Hierarchical Deterministic Wallet, 계층적 결정론적 지갑) 구조 덕분이다. HD Wallet은 하나의 시드(Seed)로부터 계층적으로 무한히 많은 키를 파생할 수 있는 지갑 방식으로, BIP-32에서 처음 정의되었다.
"결정론적(Deterministic)"은 동일한 시드와 경로를 입력하면 언제나 동일한 키가 출력된다는 의미다. 니모닉 → 시드 변환 역시 결정론적으로 이루어지기 때문에, 니모닉만 있으면 언제 어디서든 동일한 지갑을 완전히 재현할 수 있다.
3.1. 니모닉에서 지갑 주소까지 [편집]
니모닉
↓ PBKDF2-HMAC-SHA512 (2048회 반복)
시드 (512비트)
↓ HMAC-SHA512, BIP-32
마스터 키
↓ BIP-44 파생 경로
계정별 개인키 → 공개키 → 지갑 주소
니모닉과 선택적 패스프레이즈를 입력으로 PBKDF2-HMAC-SHA512 함수를 2048회 반복 적용하여 512비트 시드를 생성한다. 2048회 반복은 무차별 대입(Brute‑Force) 공격에 대한 연산 비용을 높이기 위한 설계다. 이후 시드로부터 BIP-32에 따라 마스터 키가 만들어지고, BIP-44 파생 경로를 따라 계정별 개인키와 주소가 파생된다.[2][3]
4. 패스프레이즈 (Passphrase) [편집]
4.1. 개념 [편집]
패스프레이즈는 니모닉에 추가하는 선택적 비밀번호다. BIP-39 표준에 정의되어 있으며, 니모닉 12~24개 단어 외에 사용자가 직접 지정하는 임의의 문자열로, "25번째 단어"라고도 불린다.
PBKDF2 과정에서 패스프레이즈는 솔트(salt) 값의 일부로 사용된다.
PBKDF2(
password = 니모닉,
salt = "mnemonic" + passphrase, ← 여기에 사용됨
...
)
패스프레이즈가 달라지면 PBKDF2의 출력값(시드)이 완전히 달라지고, 그 결과 전혀 다른 마스터 키와 지갑 주소가 생성된다.
4.2. 동일한 니모닉, 다른 지갑 [편집]
같은 니모닉이라도 패스프레이즈에 따라 완전히 다른 지갑이 만들어진다.
세 지갑은 서로 완전히 독립적이며, 지갑 A의 자산은 지갑 B나 C에서 보이지 않는다.
니모닉: "witch collapse practice feed shame open ..."
+ 패스프레이즈 없음 → 지갑 A (주소: 0xAAA...)
+ 패스프레이즈 "abc" → 지갑 B (주소: 0xBBB...)
+ 패스프레이즈 "xyz" → 지갑 C (주소: 0xCCC...)
4.3. 보안 효과 [편집]
BIP-39 원문은 패스프레이즈의 설계 의도를 "그럴듯한 부인 가능성(plausible deniability)"으로 설명한다. 모든 패스프레이즈가 유효한 지갑을 생성하지만, 올바른 패스프레이즈를 가진 지갑만이 실제 자산에 접근할 수 있다. 니모닉이 유출되더라도 패스프레이즈를 모르는 공격자는 실제 자산이 있는 지갑에 접근할 수 없다.
5. MetaMask 실습 [편집]
6. 니모닉 관리 방법 [편집]
니모닉은 지갑의 모든 자산에 대한 접근 권한과 동일하다. 잘못 관리하면 분실 또는 탈취로 이어질 수 있다.
6.1. 금지 행위 [편집]
금지 행위 | 이유 |
클라우드(Google Drive, iCloud, Dropbox 등)에 저장 | 계정 해킹 시 니모닉 즉시 노출 |
메모 앱, 카카오톡, 이메일 등에 저장 | 앱 서버 해킹, 키로거(Keylogger) 및 멀웨어에 의한 노출 위험 |
스크린샷 촬영 | 사진 앱이 클라우드에 자동 동기화됨 |
온라인 니모닉 검증 사이트에 입력 | 입력 즉시 서버로 전송될 수 있음 |
다른 사람에게 구두로 알림 | 사회공학적 공격(Social Engineering)에 취약 |
니모닉을 요구하는 dApp에 입력 | 정상적인 서비스는 절대 니모닉을 요구하지 않음 |
6.2. 니모닉 관리 방법 비교 [편집]
6.2.1. 종이 백업 [편집]
니모닉을 종이에 직접 손으로 적어 보관하는 방법은 가장 단순하고 오프라인 보관이라 해킹 위험이 없지만, 화재·침수·분실에 취약하므로 두 곳 이상의 서로 다른 물리적 장소에 나누어 보관하고 방수 봉투나 지퍼백에 넣어 습기를 차단하는 것이 좋다.
6.2.2. 금속 백업 [편집]
니모닉을 스테인리스 또는 티타늄 재질의 금속판에 새기거나 각인하는 방법이다. 화재(약 1500°C 이상에서 녹음)와 침수에 강하며 장기 보관에 유리하다. 종이 백업의 물리적 취약점을 보완한다.
Cryptosteel 등의 제품이 대표적이다.
6.2.3. 하드웨어 지갑 [편집]
Ledger, Trezor 같은 전용 기기에 니모닉을 저장하는 방법이다. 개인키가 기기 외부로 노출되지 않으며, 트랜잭션 서명도 기기 내부에서 처리된다. 컴퓨터가 악성코드에 감염되어도 니모닉이 탈취되지 않는다.
기기 자체를 분실하거나 고장날 수 있으므로, 니모닉 백업(종이 또는 금속)은 반드시 별도로 보관해야 한다. 하드웨어 지갑을 분실해도 니모닉이 있으면 새 기기에서 복구할 수 있다.
6.2.4. 암호화된 디지털 보관 [편집]
니모닉을 암호화한 뒤 디지털 매체에 저장하는 방법이다. 암호화된 USB/외장 하드에 저장하거나, 강력한 비밀번호로 암호화한 파일을 클라우드에 저장하는 방식이 대표적이다.
단, 디바이스 손상이나 분실 시 복구가 불가능할 수 있으므로 반드시 이중 백업이 필요하다. 클라우드 저장 시에는 계정 해킹에 대비해 강력한 비밀번호와 이중 인증(2FA)을 함께 사용해야 한다.
6.2.5. 나누어서 보관 [편집]
니모닉을 여러 조각으로 분할하여 각각 다른 장소에 보관하는 방법이다. 일부 조각이 유출되더라도 전체 니모닉이 노출되지 않는다는 장점이 있다.
단, 설정이 복잡하고 일부 조각을 분실하면 복구가 불가능해질 수 있어 신중하게 적용해야 한다.
6.3. 방법별 비교 요약 [편집]
방법 | 해킹 위험 | 물리적 위험 | 편의성 |
종이 백업 | 없음 | 높음 (화재, 침수) | 높음 |
금속 백업 | 없음 | 낮음 | 중간 |
암호화된 디지털 보관 | 중간 (계정 해킹) | 낮음 | 중간 |
나누어서 보관 | 낮음 | 중간 (조각 분실) | 낮음 |
하드웨어 지갑 | 매우 낮음 | 중간 (기기 분실) | 중간 |
6.4. 패스프레이즈 관리 [편집]
패스프레이즈는 어디에도 저장되지 않으며 지갑 앱도 기억하지 않는다. 패스프레이즈를 잊어버리면 니모닉이 있어도 해당 지갑을 복구할 수 없다.
* 패스프레이즈는 니모닉과 반드시 별도의 장소에 보관한다. 같은 장소에 함께 보관하면 보안 효과가 사라진다.
* 패스프레이즈 없이 접근 가능한 지갑(빈 패스프레이즈)에는 소액만 보관하고, 패스프레이즈로 보호된 지갑에 주요 자산을 보관하는 방식으로 활용할 수 있다.
7. 외부 링크 [편집]
[1] BIP-39, "Mnemonic code for generating deterministic keys", 2013. https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki[2] BIP-32, "Hierarchical Deterministic Wallets", 2012. https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki[3] BIP-44, "Multi-Account Hierarchy for Deterministic Wallets", 2014. https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki[4] 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/