비트코인(BTC) 지갑(wallet), 키(Keys), 시드(Seeds) 활용과 보안 - VegaX 연구 보고서

Reporter Jenny Lee 2022-09-24 10:52 News DN 50.00

일반적으로 지갑(wallet)은 사용자의 공용 키(주소)와 관련된 코인의 "잔액"을 표시하고 추가로 사용자의 개인 키를 보호하는 소프트웨어 애플리케이션으로, 코인에 액세스하고 사용할 수 있다. 반면에, 씨앗은 데이터의 한 조각에 불과합니다. 특히, 시드는 모든 후속 개인 키와 공개 키가 파생되는 무작위로 생성된 64바이트 데이터 조각이다.

이번 연구 보고서 내용은 계층적 결정론(HD) 지갑의 개념과 특징, 그리고 현재의 비트코인 상황에서 왜 이런 유형의 지갑이 성행하는지를 살펴보는 데 초점이 맞춰질 예정이다. 이 콘텐츠의 기술적 특성으로 인해, 다음과 같이 가능한 한 체계적인 방식으로 진행할 것입니다.

- 지갑 시드와 그 반복에 대한 간략한 검토.

- HD 지갑이란 무엇이며, 왜 사람이 그것을 사용할 수 있는가?

- HD 지갑은 어떻게 작동하나요?

- "마스터" 및 "확장" 개인 및 공용 키.

- "자녀" 키와 키 파생 방법.

- 무작위로 생성된 보안

앞에서 언급했듯이, "시드"는 무작위로 생성된 64비트 숫자이며, 16진수 형식으로 표현된다. 현대의 지갑에서 시드는 니모닉 문장으로 표현된다: 그 안에 무작위로 생성된 숫자(시드)의 순서를 포함하는 일련의 12개에서 24개의 단어.

대부분의 지갑은 니모닉(연상 기호) 문장을 만들기 위해 취한 일련의 단계를 표시하지 않지만, 과정을 이해하는 것이 유익하다.

첫 번째 단계는 무작위성의 원천인 엔트로피를 생성하는 것이다. 이것은 이전에 생성되지 않은 매우 큰 숫자로 생각할 수 있으며, 다시는 생성되지 않는다. 엔트로피는 컴퓨터가 데이터를 저장하는 방식이기 때문에 일련의 비트(예: 0010101011101)로 고려하는 것이 가장 좋습니다.

두 번째 단계는 그 엔트로피를 우리의 니모닉(연상 기호) 문장으로 변환하는 것이다. 이 변환의 정확한 (기술적인) 방법은 이 보고서의 범위를 능가하지만, 관심 있는 독자들은 BIP-39 제안에 의해 요약된 표준을 스스로 검토할 수 있다.

마지막 단계는 니모닉 문장을 64바이트 16진수 시드로 변환하는 것이다. 이는 선택적 암호 구문이 있는 니모닉 문장을 PBKDF2(Password-Based Key Derivation Function 2)를 통해 입력함으로써 발생합니다. 기본적으로 이 함수는 최종 64바이트(512비트) 시드를 생성할 때까지 두 입력을 여러 번 해시합니다.

HD 지갑: 무엇과 왜?

계층적 결정론적 지갑은 모든 키와 주소를 단일 소스에서 생성하는 지갑이다. 매번 동일한 방식으로 키와 주소를 생성하기 때문에 결정론적이며, 이러한 키와 주소를 트리로 구성할 수 있기 때문에 계층적입니다.

HD 월렛을 사용하는 한 가지 이점은 보안을 위해 단일 백업 소스만 필요하다는 것입니다. 기본 지갑은 새 지불을 받을 때마다 개별적으로 새 개인/공용 키 쌍을 생성합니다. 반면 HD 지갑은 수십억 개의 "자녀" 개인/공개 키 쌍을 생성할 수 있는 마스터 개인 키를 생성할 수 있습니다. 이 경우 마스터 개인 키가 모든 자식 키를 확실하게 생성할 수 있기 때문에 단일 시드만 백업하면 됩니다.

지갑의 각 자식 키도 자체 키를 생성할 수 있으므로 사용자는 자신의 키를 계층 트리로 구성할 수 있습니다. 이를 위한 한 가지 사용 사례는 트리의 다른 부분을 활용하여 계정을 구별하는 것일 수 있습니다.

마스터 개인 키에는 해당 마스터 공용 키가 있으며, 이 키는 관련 개인 키를 몰라도 동일한 하위 공용 키를 생성할 수 있습니다. 따라서 마스터 공용 키를 다른 컴퓨터/서버 스택으로 전송하여 새로운 수신 주소를 생성할 수 있으며, 서버 해킹 시 개인 키가 손상될 염려가 없다.

이것은 전용 장치에 개인 키를 저장하지만 별도의 장치에서 수신 주소를 생성할 수 있는 편리함을 희생하지 않는 하드웨어 지갑과 같은 응용 프로그램에 유용합니다. 이러한 모든 것이 HD 지갑을 사용해야 하는 훌륭한 이유이며, 다음 섹션에서는 지갑이 그대로 작동할 수 있도록 하는 프로세스에 대해 알아보겠습니다.

HD 지갑은 어떻게 작동하나요?

이 모든 것은 무작위로 생성된 64바이트 16진수 값인 시드로 시작한다. 다시 말하지만, 현대 지갑에서 이 값은 가장 일반적으로 니모닉(연상 기호) 문장으로 표현됩니다. "시드 문구"라고도 합니다. 지갑은 모든 후속 키와 주소를 도출하기 위해 무작위로 생성된 큰 숫자가 필요하며, 그 숫자를 니모닉 문장으로 저장하는 것이 편리한 방법이다.

다음 단계는 지갑의 마스터 개인 키를 만드는 것입니다. 이것은 시드를 "해시 기반 메시지 인증 코드"(HMAC)라고 불리는 해시 함수를 통해 64바이트의 다른 세트를 생성함으로써 수행된다. 64바이트의 새로운 집합에서 처음 32바이트는 개인 키이고 마지막 32바이트는 체인 코드이다. 체인 코드는 개인 키와 결합하는 추가 32바이트입니다.

그러면 확장 키가 만들어집니다. 나중에 이 개념을 다시 살펴보겠지만, 현재로서는 체인 코드가 네트워크에서 방송되지 않는 "비밀" 데이터 조각이라는 것을 이해해야 한다. 이는 하위 키에 대한 나중에 논의하는 데 중요합니다.

확장 키로 돌아가기: HD 지갑에서 새 키(자녀 키)를 가져오는 데 사용할 수 있는 개인 키 또는 공용 키입니다. 단일 확장 개인 키는 지갑의 모든 후속 하위 개인/공개 키 쌍의 소스로 사용할 수 있습니다.

또한, 확장된 공개 키는 연관된 개인 키에 대한 지식 없이도 정확히 동일한 하위 공개 키(확장된 개인 키와 동일)를 생성할 수 있습니다. 확장 키의 절반을 구성하는 개인 키는 이전 버전에서 설명한 대로 해당 공용 키를 만드는 데 여전히 사용될 수 있습니다.

하위 키 및 뉘앙스

HD 지갑에서 새 키와 주소는 동일한 소스(시드)에서 파생되며 후속 출력은 트리로 구성할 수 있습니다. 즉 계층적이라는 것을 기억하십시오. 이러한 방식으로 마스터 확장 개인 키(개인 키 + 체인 코드)를 가져와 HMAC 기능을 통해 실행하여 하위 키를 생성할 수 있습니다.

인덱스 번호도 이 단계에서 마스터 확장 개인 키로 해시됩니다. 인덱스 번호가 변경될 때마다 해싱 출력이 달라지므로 단일 마스터 확장 개인 키에서 여러 개의 하위 키를 만들 수 있습니다. 참고로, 하나의 확장 키는 이러한 자식 키 중 2,147,483,648개를 생성할 수 있습니다.

이전 섹션에서 확장된 개인 키에 의해 생성된 것과 동일한 하위 공용 키를 생성할 수 있는 확장된 공용 키를 생성할 수 있다고 언급했습니다(결과적으로 개인/공개 키 쌍). 확장 공용 키를 구성하려면 확장 개인 키의 공용 키가 필요하며, 이를 확장 개인 키를 만드는 데 사용되는 동일한 체인 코드와 결합해야 합니다.

마스터 확장 개인 키는 HMAC 기능을 통해 해당 확장 공용 키의 내용을 실행하고 결과를 원래 개인 키에 추가하여 하위 개인 키를 생성합니다. 마찬가지로 마스터 확장 공용 키는 HMAC 기능을 통해 내용을 추가하고 결과를 원래 공용 키에 추가하여 새 하위 공용 키를 생성합니다. 따라서 원래 개인 키와 공용 키가 동일한 양(체인 코드 및 인덱스 번호)으로 조정되었기 때문에 새 자식 개인 키와 공용 키가 일치합니다.

체인 코드로 키를 확장하는 이유는 무엇입니까?

간단히 말해서, 우리는 이 코드를 키에 추가하는데, 이는 원래 키에서 생성된 후속 하위 키가 이전 키에서만 파생된 것이 아니기 때문이다. 예를 들어, 공개 키 중 하나를 사용하여 비트코인을 수신했다고 가정하면, 이 공개 키는 블록체인에 표시됩니다. 만약 체인 코드가 우리가 사용한 자식 키를 도출하는 데 사용되지 않는다면, 누군가는 그 공개 키를 가져가서 그것에 대한 모든 아이들을 도출할 수 있을 것이다.

그러나 네트워크에 방송되지 않는 비밀 데이터인 체인 코드를 사용하면 악의적인 엔티티가 될 수 있는 모든 엔티티는 어린이를 도출할 수 없습니다. 그리고 다시 한 번 강조하자면, 우리가 정상적인 키를 그 체인 코드 조각과 결합할 때, 우리는 그 출력을 확장 키라고 부릅니다.

또한 트리에서 두 개의 공용 키(또는 주소)가 동일한 지갑의 일부라는 것을 알 수 없다. 하위 키는 확장 키에서 특정 방식으로 파생되지만 실제 공개 키 자체는 유사성을 공유하지 않습니다. 완전히 독립적으로 생성된 것으로 나타나야 합니다.

확장 키에 액세스할 수 있는 사람은 누구나 자신의 모든 하위 관리자를 도출할 수 있기 때문에 확장 키를 제대로 보호할 수 있도록 매우 주의해야 합니다. 예를 들어, 누군가의 확장된 마스터 공용 키가 유출된 경우, 원하는 모든 사용자는 모든 하위 키를 도출할 수 있으므로 해당 하위 공용 키와 관련된 모든 주소를 찾을 수 있습니다. 이제, 그것들은 공개 키이기 때문에, 자금이 도난당할 위험은 없지만, 악의 있는 실체가 그 지갑에 얼마나 많은 비트코인이 있는지 정확히 알 수 있을 것이다.

확장 공개 키와 자식 개인 키가 유출된 경우 악의적인 엔티티는 이 두 개의 확장 키를 가져와서 마스터 확장 개인 키를 계산할 수 있습니다. 그러한 경우에 기업은 모든 개인/공개 키 쌍을 생성할 수 있고 따라서 지갑이 소유한 모든 자금을 훔칠 수 있을 것이다. 보안 프로토콜과 관련하여 기억해야 할 사항입니다.

결론

비트코인 네트워크는 공개 키 암호 기술의 발전으로 이익을 계속 얻고 있다. 이러한 개념은 비트코인 네트워크의 기술 스택의 다른 측면보다 더 기술적인 것처럼 보일 수 있지만, 그럼에도 불구하고 네트워크에 대한 지식을 증가시키기 위해 이해해야 한다.

오늘날 대부분의 지갑이 이 보고서에 설명된 프로세스를 추상화하기 때문에 대부분의 사용자는 "뒤에서" 무슨 일이 일어나고 있는지 완전히 알지 못합니다. 경험으로 말하자면, 비트코인 네트워크의 기초가 되는 기술 시스템에 대한 일반적인 지식을 늘리는 것은 네트워크에서의 거래에 더 익숙해지는 확실한 방법이다.

이 보고서가 귀하의 기술 지식을 넓히는 데 도움이 되었기를 바랍니다. 읽어주셔서 감사합니다!


Reporter Jenny Lee (news@dailycoinews.com)의 기사 더 보기

- 데일리코인뉴스는 현장의 목소리를 우선합니다(news@dailycoinews.com) -

- 기사에 사용된 모든 자료에 대한 책임은 작성자 본인에게 있습니다 -

[저작권자ⓒ Daily Coin News 무단전재 및 재배포 금지]

Write

Leave a Comment

X