대부분의 Ledger Nano 소유자는 어느 시점에서 자신의 시드를 맞춤 설정할 수 있는지 궁금해하기 시작합니다. 일부는 더 나아가 복구 과정에서 무작위로 선택한 단어를 사용하려고 시도할 수도 있습니다. 이러한 경우 마지막 단어를 확인한 후에는 거의 확실하게 다음 메시지가 표시됩니다.
"Recovery phrase is invalid, retry"
그렇다면 나만의 맞춤 단어 세트로 새 지갑을 만드는 것이 불가능하다는 뜻인가요?
놀라운 사실은 다음과 같습니다. 가능하지만 특정 제한이 있습니다. 하지만 처음부터 시작해 보겠습니다.
첫 번째 제한 사항은 모든 단어가 BIP39 표준 목록에 있어야 한다는 요구 사항입니다.
(비트코인 개선 제안 - 39번). 비트코인 개선 제안이 무엇인지는 Wikipedia 문서에서 자세히 확인할 수 있습니다.
BIP39는 모든 단어의 처음 4자가 고유한 방식으로 선택된 2048개의 단어 집합에 지나지 않습니다. 이 규칙은 세 글자 단어에도 적용됩니다.
이 속성을 사용하면 정확히 시드인 여러 단어로 구성된 시퀀스를 생성할 때 더 쉽게 기억할 수 있습니다.
두 번째 제한사항은 시퀀스의 마지막 단어에 대한 요구사항입니다. 결정된 특정 체크섬입니다. 나머지 시퀀스 요소는 모두 선택해야 하며 직접 선택할 수는 없습니다. 이것이 바로 우리가 보는 이유입니다. 무작위로 선택한 단어를 Ledger Nano의 시드로 입력하려고 할 때마다 오류 메시지가 표시됩니다. 일반적으로 체크섬 조건은 두 단어 이상으로 충족됩니다. 그러나 단순히 추측만으로 유효한 것을 찾을 가능성은 엄청나게 적습니다. 체크섬 조건을 만족하는 단어 수는 전체 시드 단어 수와 밀접하게 관련되어 있습니다. 24단어 시드(가장 안전한 옵션)의 경우 체크섬 역할을 할 수 있는 단어는 항상 정확히 8개입니다. 따라서 2048 단어 BIP39 집합에서 유효한 단어를 무작위로 뽑을 확률은 2048년에 정확히 8, 즉 0.39%에 불과합니다. 오류 메시지가 표시되는 것도 당연합니다.
그렇다면 우리가 선택한 시퀀스에 대한 적절한 체크섬을 어떻게 찾을 수 있을까요? 예를 들어 BIP39 표준을 준수하는 임의의 23개 단어 집합을 생각해 보겠습니다.
모든 단어에는 알파벳 순서에 따른 숫자인 색인이 있습니다. 0부터 번호를 매기는 것이 중요합니다. 그런 다음 각 색인은 이진 값으로 표현되어야 합니다. BIP39 목록에는 2048개의 요소가 포함되어 있으므로 모든 단어 인덱스는 11비트로 구성되어야 합니다. 따라서 우리는 다음을 발견합니다:
다음 단계에서는 표시 순서를 유지하면서 모든 색인을 연결합니다. 이는 253비트 바이너리 시퀀스를 제공합니다.
얻은 결과를 우리가 선택한 추가 3비트로 보완합니다.
24개 단어 시드에는 정확히 8개의 체크섬 결과가 있다고 말한 것을 기억하시나요?
숫자 8은 이 3비트의 단순한 결과일 뿐입니다.
여기에 000, 001, 010, 011, 100, 101, 110 및 111을 간단히 입력하면 8가지 결과를 모두 얻을 수 있습니다.
이 예에서는 다음을 선택합니다. 000.
마지막에 이를 연결하면 256비트 바이너리 단어가 생성됩니다.
다음 단계는 준비된 바이너리 데이터의 SHA256 해시를 계산하는 것입니다.
SHA256 알고리즘(보안 해싱 알고리즘, 256비트 출력)은 블록체인 기술의 필수 부분입니다.
SHA256에 대한 자세한 내용은 SHA-256 알고리즘에 관한 Wikipedia 문서를 참조하세요.
이 계산 결과로 다음과 같은 16진수 단어를 얻습니다.
다음 조치는 위 결과에서 처음 8비트를 추출하는 것입니다. 따라서 처음 2개의 16진수 문자를 사용합니다. 27.
이는 다음에 해당합니다.
다시 한 번 이전에 선택한 것과 동일한 3비트를 사용합니다. 이번에는 추출된 바이너리 문자열 앞에 연결합니다. 결과적으로 다음과 같은 결과를 얻습니다.
이는 바이너리 값 39입니다. 이는 우리가 찾으려는 체크섬 단어의 BIP39 인덱스입니다. 색인 번호는 '0'부터 시작된다는 점을 잊지 마세요. 따라서 '1'부터 시작하는 표준 숫자로 된 BIP39 단어 목록을 사용하는 경우 그러면 실제 색인 번호는 40이 됩니다. 우리는 다음에서 적절한 색인을 찾습니다. BIP39 목록 그리고 우리는 다음과 같은 단어를 얻습니다. agent 마지막으로 우리가 선택한 23개 단어를 포함하는 24개 단어 시드는 다음과 같습니다.
나머지 3비트 조합의 경우 마지막 체크섬 단어는 다음과 같습니다.


