—작성자 | Cobo Vault Manager
"탈중앙화 지갑"을 사용해 본 학생들은 모두 니모닉 단어에 익숙하다고 생각합니다.
하드웨어 지갑이든 소프트웨어 지갑이든 지갑을 만드는 방법에는 두 가지가 있습니다.
니모닉 단어 만들기: 지갑이 임의로 니모닉 단어 세트를 생성하며 사용자는 복사 및 백업이 필요합니다.
니모닉 단어 가져오기: 사용자는 자산을 복원하기 위해 기존 니모닉 단어 세트를 지갑으로 가져옵니다.
그렇다면 니모닉은 어떻게 우리의 마스터 개인 키가 되고 HD에서 모든 하위 개인 키를 생성합니까?
실제로 정말 쉽습니다. 니모닉 세트는 HMAC-SHA512 알고리즘의 2048 라운드 후에 마스터 개인 키를 생성한 다음 HD 지갑 세트를 파생합니다.
따라서 상기 니모닉 문구와 마스터 개인키는 일대일 대응이 되며, 상기 니모닉 문구의 집합은 마스터 개인키, 즉 HD 지갑에 해당한다.
여기에서 매우 무서운 질문에 대해 생각해 본 적이 있습니까?
예를 들어, 다음은 가게 주인의 손에 있는 12개의 니모닉입니다.
cat tonight sadness walnut fan captain sure assume gorilla caution story pull
편의상 이 단어 집합을 [cat mnemonic]이라고 합니다.
그런데 가게 주인이 [고양이 니모닉 문구]를 지갑에 들여왔을 때 떨리는 손으로 입력한 첫 번째 단어가 개가 되어서 니모닉 문구가 다음과 같이 되었습니다.
dog tonight sadness walnut fan captain sure assume gorilla caution story pull
편의상 이 단어 집합을 [개 연상 단어]라고 합니다.
이것은 비극이 시작되는 때입니다.
순수한 24K 사재기 파티로서 가게 주인은 돈을 아끼기 위해 열심히 노력했고 그의 모든 신념을 [강아지 니모닉] 아래의 주소로 충전했습니다.
그러던 어느 날 휴대폰이나 하드웨어 지갑이 고장나거나, 악수로 인해 지갑 앱이 삭제될 수도 있으니 요컨대 여러 가지 이유로 니모닉을 빼서 자산을 복구해야 하는 상황이 발생합니다.
이때 가게 주인은 먼지 투성이의 [고양이 니모닉 문구] 세트를 꺼내 지갑에 넣었다.
앞서 언급했듯이 니모닉 세트는 HD 지갑과 일대일 대응입니다. 이때 [고양이 니모닉 문구]를 이용하여 복구된 주소는 [강아지 니모닉 문구]의 주소와 다릅니다. 즉, [cat mnemonic] 아래에는 자산이 없습니다.
니모닉 단어 개를 실수로 입력했기 때문에 가게 주인의 모든 자산과 신념이 사라졌습니다.
무섭나요?
사실 재치 있는 비트코인 개발자들은 이 모든 것을 오래 전에 생각했습니다. 니모닉에 대한 표준 프로토콜을 정의하고 모든 니모닉이 유효한지 여부를 확인합니다.
"검증 원칙"에 대해 이야기하기 전에 상점 주인은 먼저 니모닉에 대한 기본 지식을 대중화합니다.
BIP39는 2048개 단어의 어휘를 포함하는 니모닉 단어에 대한 표준을 정의합니다(참조 링크 1). 모든 지갑이 BIP39를 따르는 한, 생성된 니모닉은 이 2048 단어 어휘에서 얻어지며 [cat mnemonic]의 모든 단어도 예외는 아닙니다.
2048 어휘의 각 단어에는 "0"에서 "2047"까지의 일련 번호가 표시되어 있습니다. 가장 큰 시퀀스 번호 "2047"은 이진법으로 정확히 11자리 "11111111111"입니다. 따라서 어휘의 각 단어에 대해 일련 번호에 따라 11비트 이진수에 해당할 수 있습니다. 2진수 변환 후 11자리 미만인 경우 11자리가 될 때까지 2진수 앞에 "0"을 추가합니다.
예를 들어 cat은 287번째 단어이고 일련번호는 "286"이고 이에 대응하는 11자리 이진수는 "100011110"입니다.
다음으로 구체적인 "확인" 단계를 살펴보겠습니다.
1단계: 위의 방법에 따라 2048 어휘에 따라 [cat mnemonic]의 12단어에 해당하는 11비트 이진수를 찾습니다.
2단계: 이 12개 단어에 해당하는 11비트 이진수를 함께 연결하여 132비트 이진수를 얻습니다.
001000111101110010010010111101111111101101100101001011000100010001110110100000000110111101100100101001001001011101011010010101101010
3단계: 이 132비트 이진수를 왼쪽에 128비트, 오른쪽에 4비트의 두 부분으로 나눕니다.
왼쪽 128비트: 00100011110111001001001011110111111101101100101001011000100010001110110100000000110111011001001010010010010111010 1101001010110
오른쪽 4자리(확인값): 1010
4단계: 이 니모닉 세트의 유효성을 확인하기 시작합니다.
유효성 판단의 원칙: 왼쪽 128비트 이진수의 SHA256 결과의 처음 4비트는 오른쪽 4비트 이진수와 같아야 합니다.
[고양이 니모닉] 결과를 확인해 봅시다.
왼쪽 128비트 이진수를 온라인 SHA256 계산기에 넣습니다(링크 2 참조).
(온라인 도구를 사용하여 동전으로 니모닉 문구를 확인하지 마십시오!!!)
SHA256 결과의 처음 4자리가 정확히 132비트 이진수 오른쪽의 4자리 "1010"임을 알 수 있습니다.
이는 [고양이 니모닉 문구]가 검증을 통과했고 유효한 니모닉 문구의 집합이며 이후 마스터 개인 키 생성 프로세스에 들어갈 수 있음을 의미합니다.
그럼 단어를 잘못 입력한 [dog mnemonic]이 검증을 통과할 수 있는지 바로 연습해 봅시다.
1단계: [개 니모닉] 어휘의 11비트 이진수에 해당하는 12단어는 다음과 같다.
2단계: 이 12개 단어에 해당하는 11비트 이진수를 함께 연결하여 132비트 이진수를 얻습니다.
010000001001110010010010111101111111101101100101001011000100010001110110100000000110111101100100101001001001011101011010010101101010
3단계: 이 132비트 이진수를 왼쪽에 128비트, 오른쪽에 4비트의 두 부분으로 나눕니다.
왼쪽 128 비트: 01000000100111001001001011110111111101101100101001011000100010001110110100000000110111011001001010010010010111010 1101001010110
오른쪽 4자리(확인값): 1010
4단계: [dog mnemonic] 왼쪽에 있는 128비트 이진수를 SHA256 계산기에 입력합니다.
(온라인 도구를 사용하여 동전으로 니모닉 문구를 확인하지 마십시오!!!)
SHA256 결과의 처음 4자리가 "0010"으로 132비트 이진수의 오른쪽 4자리 "1010"과 일치하지 않음을 알 수 있다.
이런 식으로 이 [개 니모닉 단어] 그룹은 검증을 통과할 수 없으며 표준 BIP39 프로토콜에 따라 개발된 지갑 앱은 사용자에게 자신의 니모닉 단어를 확인하도록 상기시킵니다. 이때 사용자는 오류를 찾아 "개"를 올바른 "고양이"로 변경하여 확인을 통과하고 지갑 생성을 완료하여 비극을 피할 수 있습니다.
마지막으로 국내외 유명 HD지갑이 유효하지 않은 니모닉 단어 세트 입력 시 표준 BIP39 프로토콜에 따라 니모닉 단어의 오류를 체크하는지 숙제를 확인해 볼까요?
유효하지 않은 니모닉 집합을 입력해야만 검사의 목적이 달성될 수 있기 때문에 편의상 복잡한 니모닉을 입력하지 않고 바로 12고양이(이것이 무효한 니모닉 집합)를 입력합니다. 검사 결과는 다음과 같습니다.
첫 번째 회사: imToken이 성공적으로 테스트를 통과했습니다!
두 번째: 후오비 지갑이 성공적으로 테스트를 통과했습니다!
세 번째: 트러스트 월렛이 성공적으로 테스트를 통과했습니다!
네 번째: BRD가 성공적으로 테스트를 통과했습니다!
다섯 번째 회사: BitPay가 성공적으로 테스트를 통과했습니다!
여섯 번째 회사: imKey가 성공적으로 테스트를 통과했습니다!
일곱 번째 하우스: Cobo Wallet 및 Cobo Vault가 성공적으로 테스트를 통과했습니다!
여덟 번째 회사: Bitpie 지갑, 니모닉 인증 없음, 유효하지 않은 니모닉으로 지갑 생성 가능, 니모닉 오류 프롬프트 없음.
아홉 번째: 하드웨어 지갑 Bitshield. 휴대폰에 빗쉴드의 니모닉을 입력하는데 니모닉 12개를 입력하면 헷갈리는 단어가 나오겠지만 니모닉 24개를 입력하면 단어가 없기 때문에 고양이 24개(이것도 유효하지 않은 니모닉)를 입력해 봤는데 결과는 니모닉 오류가 없다는 것입니다.
마지막으로 하드웨어 지갑의 위험 요소를 모두에게 상기시키고 싶습니다.
상점 주인이 니모닉 단어 검증 작업을 확인했을 때 일부 하드웨어 지갑이 휴대폰에서 니모닉 단어 입력을 완료한 것을 발견했습니다.
우리가 하드웨어 지갑을 사용하는 이유는 니모닉/프라이빗 키를 오프라인으로 저장하기 위함인데, 네트워크에 연결된 기기에 니모닉을 입력하면 하드웨어 지갑의 의미가 완전히 상실됩니다.
여기서 한 가지 해결 방법은 니모닉을 하드웨어 지갑으로 가져올 때 휴대폰에서 어순을 뒤섞고 혼란스러운 단어를 추가하는 것입니다.혼란스러운 단어의 작동 원리는 다음과 같습니다. 니모닉), 휴대폰에 니모닉을 입력하면 콜드 엔드에 다음 메시지가 표시됩니다.
휴대폰에서 3번째 니모닉을 입력해주세요(포기 입력)
휴대전화에 고양이를 입력하세요.
휴대폰에 12번째 니모닉을 입력해주세요(about입력)
휴대전화에 개를 입력하세요.
…
휴대폰에 6번째 니모닉을 입력해주세요(포기입력)
휴대전화에서 지역을 입력하세요.
고양이, 개, 지역은 혼동되는 단어입니다.
하지만 단어를 혼동하고 단어 순서 가져오기를 방해하는 것이 정말 유용할까요?
참조 링크:
참조 링크:
