니모닉
니모닉은 서명 장치에서 키와 주소를 복원할 때 사용하는 단어 묶음입니다. 복원하는 것은 물리적 기기가 아니라 거래에 서명할 개인키와 주소입니다. 개인키 자체를 단어로 바꾼 것이 아니라, 무작위로 만든 엔트로피와 검사값을 정해진 단어 목록으로 표현한 문구입니다. 서명 장치는 이 니모닉과 선택적으로 사용하는 패스프레이즈를 바탕으로 시드를 계산하고, 시드에서 여러 열쇠와 주소를 파생합니다. BIP39는 이 과정을 규정합니다.
문구를 알고 있고 별도의 패스프레이즈를 사용하지 않았다면, 호환되는 서명 장치 설정과 파생 경로를 통해 같은 키와 주소를 복원할 수 있습니다. 패스프레이즈를 사용했다면 정확한 패스프레이즈도 필요합니다.
긴 값을 단어로 표현하는 이유
개인키는 사람이 그대로 보고 옮겨 적기 어려운 긴 값입니다. 한 글자만 틀려도 전혀 다른 열쇠가 될 수 있습니다. 니모닉은 개인키를 직접 바꾸는 방식이 아니라, 키와 주소를 다시 만들 수 있는 입력값을 정해진 단어로 표현해 사람이 기록하고 확인하기 쉽게 합니다.
큰 나무를 통째로 옮기려면 가지와 잎을 모두 챙겨야 하지만, 씨앗 하나를 옮기면 같은 나무를 다시 키울 수 있습니다. 니모닉도 이와 비슷합니다. 서명 장치에는 주소마다 열쇠가 있고 열쇠가 수백 개로 늘어날 수도 있지만, 같은 니모닉과 설정으로 그 열쇠들을 다시 파생할 수 있습니다.
니모닉은 어떻게 만들어지나요?
BIP39 방식의 과정은 대략 다음과 같습니다.
- 기기가 예측하기 어려운 무작위 엔트로피를 만듭니다.
- 엔트로피에 검사값을 덧붙입니다.
- 엔트로피와 검사값을 11비트 단위로 나누고, 각 값에 대응하는 단어를 목록에서 골라 순서대로 배치합니다.
- 서명 장치는 니모닉과 선택적으로 입력한 패스프레이즈를 별도 계산에 사용해 시드를 파생합니다.
널리 사용되는 BIP39 영어 목록에는 2,048개의 단어가 들어 있습니다. 영어 목록은 각 단어를 앞 네 글자로 구분할 수 있게 구성되어 있습니다. 이 특성을 다른 언어 목록에도 무조건 적용해서는 안 되므로, 원래 단어 전체를 기록하는 편이 안전합니다.
12단어와 24단어의 차이
BIP39는 엔트로피 길이에 따라 12·15·18·21·24단어 형식을 사용합니다. 12단어는 128비트 엔트로피와 4비트 검사값을, 24단어는 256비트 엔트로피와 8비트 검사값을 표현합니다. 검사값은 엔트로피에서 결정적으로 계산되므로 무작위성을 추가하지 않습니다.
| 니모닉 | 엔트로피 | 검사값 | 가능한 무작위 입력 |
|---|---|---|---|
| 12단어 | 128비트 | 4비트 | 2^128가지 |
| 24단어 | 256비트 | 8비트 | 2^256가지 |
따라서 24단어의 엔트로피는 12단어의 정확히 두 배이고, 가능한 무작위 입력의 수는 2^128과 2^256입니다. 이는 조합 수가 두 배라는 뜻이 아닙니다. 두 형식 모두 니모닉과 패스프레이즈로부터 길이 512비트의 시드를 파생하므로, 시드 길이가 단어 수에 비례해 두 배가 되는 것도 아닙니다.
엔트로피는 결과를 미리 예측하기 어려운 무작위성입니다. 공정한 동전 한 번의 결과에는 두 가지 가능성이 있고, 공정한 6면체 주사위 한 번에는 여섯 가지 가능성이 있습니다. 여러 번 반복하면 가능한 결과의 수가 곱셈으로 늘어나듯이, 충분히 예측하기 어려운 무작위 입력을 사용해야 엔트로피가 커집니다. BIP39 니모닉은 사람이 임의로 만들어 기억한 문장에서 키를 만드는 방식이 아니라, 컴퓨터가 생성한 무작위성을 표현하도록 설계되었습니다.
검사값은 잘못 입력한 문구를 어느 정도 찾아내는 역할을 합니다. 다만 검사값이 맞는 다른 문구가 존재할 수 있으므로, 문구를 잘못 적었다고 서명 장치가 항상 거부해 주는 것은 아닙니다.
니모닉과 시드, 개인키의 차이
니모닉은 엔트로피와 검사값을 단어로 표현한 값이고, 시드는 니모닉과 패스프레이즈에서 별도로 계산되는 값입니다. 시드에서 파생 경로에 따라 여러 개인키와 주소가 만들어집니다. 따라서 니모닉을 개인키나 시드와 같은 값이라고 부르면 정확하지 않습니다.
문구를 아는 사람이 같은 키와 주소를 복원할 수 있지만, 패스프레이즈를 사용했다면 문구만으로는 충분하지 않습니다. 다른 패스프레이즈를 입력하면 오류가 나지 않고 전혀 다른 키와 주소가 파생될 수 있으므로, 정확한 패스프레이즈와 서명 장치의 파생 경로도 함께 관리해야 합니다.
순서와 철자를 정확히 보관하기
니모닉은 단어만 맞으면 되는 것이 아닙니다. 단어의 순서와 철자를 정확히 기록해야 합니다. 띄어쓰기와 사용하는 서명 장치의 규격도 맞아야 합니다. 일부 환경에서는 단어의 앞부분만으로 입력할 수 있지만, 원래 단어 전체를 적어 두는 편이 안전합니다.
열두 단어 대신 스물네 단어를 사용하는 경우도 있습니다. 이는 더 긴 엔트로피를 표현하는 방식입니다. 어떤 길이를 사용할지는 서명 장치가 따르는 규격을 확인해야 합니다.
니모닉을 잃으면 재발급받을 수 있나요?
니모닉을 잃으면 비밀번호 찾기처럼 다른 곳에 문의해 재발급받을 수 있다고 생각하기 쉽습니다. 서명 장치 제작자나 회사가 사본을 보관하는 구조가 아니라면 재발급해 줄 창구는 없습니다.
문구를 아는 사람이 열쇠를 복구할 수 있으므로, 니모닉은 잃지 않는 동시에 남에게 알려지지 않게 보관해야 합니다. 사진, 클라우드, 메모 앱, 메신저처럼 인터넷에 연결될 수 있는 곳에 남기지 않는 편이 좋습니다. 종이에 손으로 정확히 적되, 인쇄기를 사용하면 출력물이나 기기에 기록이 남을 가능성도 고려해야 합니다. 오래 보관해야 한다면 불과 물에 견딜 수 있는 금속판을 고려할 수 있습니다.
사본을 만들었다면 원본과 사본의 번호, 순서, 철자를 서로 대조하고, 정기적으로 글자가 지워지거나 번지지 않았는지 확인해야 합니다. 사본을 서로 떨어진 두 장소에 두면 한 장소의 화재나 침수에 대비할 수 있지만, 사본이 늘어날수록 노출 가능성도 함께 관리해야 합니다.
가능하다면 신뢰할 수 있는 오프라인 기기에서 복구 절차를 시험해 볼 수 있습니다. 다만 시험을 위해 유일하게 정상인 서명 장치를 초기화하거나, 웹사이트나 온라인 화면에 니모닉을 입력해서는 안 됩니다. 시험 뒤에는 복구된 주소가 예상한 주소인지 확인하고, 시험 과정에서 문구가 노출되지 않았는지도 점검해야 합니다.
상속을 고려한다면 신뢰할 수 있는 사람에게 문구 자체를 알려 주기보다, 문구의 존재와 보관 장소, 복구에 필요한 절차를 안내하는 별도의 문서를 마련할 수 있습니다. 안내문에는 니모닉이나 패스프레이즈를 그대로 적지 말고, 누가 어떤 조건에서 접근할 수 있는지 신중하게 정해야 합니다.
문구를 반씩 나누어 두면 한쪽만 잃어도 전체를 지킬 수 있을 것처럼 보이지만, 한쪽을 잃는 순간 복구할 수 없고 일부가 노출되면 나머지를 추측하기 쉬워질 수 있습니다. 나누어 보관하려면 그 목적에 맞는 별도의 방식을 이해하고 사용해야 합니다.
복구가 아닌데 니모닉을 입력하라고 요구하는 화면은 주의해야 합니다. 이벤트나 에어드롭을 이유로 문구를 요구하는 곳은 사기로 보아야 하며, 고객센터도 니모닉을 요구하지 않습니다.
패스프레이즈를 덧붙이는 경우
일부 서명 장치는 니모닉과 함께 사용자가 정한 패스프레이즈를 입력할 수 있습니다. 같은 니모닉이라도 다른 패스프레이즈를 사용하면 완전히 다른 열쇠 묶음이 열립니다. 패스프레이즈를 추가한 구성이 12단어 니모닉보다 항상 안전하다거나, 24단어 니모닉보다 항상 안전하다고 단정할 수는 없습니다. 비교 결과는 니모닉에 사용한 독립적인 무작위성의 크기와 패스프레이즈의 비밀성·예측 가능성에 따라 달라집니다.
예를 들어 1처럼 누구나 시도할 수 있는 값을 SHA-256에 넣으면 결과는 256비트로 보이지만, 입력을 예측할 수 있으므로 256비트의 무작위 엔트로피를 얻은 것이 아닙니다. 패스프레이즈가 충분히 예측하기 어렵다면 결과적으로 공격을 어렵게 만들 수 있지만, 약한 엔트로피를 비밀 패스프레이즈로 보완하는 방법을 기본 전략으로 삼아서는 안 됩니다. BIP39가 전제로 하는 것은 처음부터 충분히 예측하기 어려운 컴퓨터 생성 무작위성입니다.
패스프레이즈는 강력한 선택이 될 수 있지만, 잊으면 니모닉을 가지고 있어도 해당 열쇠 묶음을 복구할 수 없습니다. 다른 패스프레이즈를 입력하면 오류 대신 잔액이 없는 주소나 다른 주소가 나타날 수 있으므로, 사용 여부와 정확한 값을 별도로 안전하게 관리해야 합니다. 패스프레이즈를 사용할지는 보안성과 복구 가능성을 함께 고려해 결정해야 합니다.
니모닉은 개인키 자체가 아니라 엔트로피와 검사값을 단어로 표현한 복구 입력값입니다. 니모닉과 패스프레이즈에서 시드가 파생되고, 시드에서 여러 열쇠와 주소가 만들어집니다. 재발급 창구는 없으므로, 정확성을 확인하면서 잃지 않고 들키지 않게 보관하는 일이 곧 안전입니다.
관련 개념은 HD 서명 장치에서 이어서 볼 수 있습니다.