BIP32,39와 44: 지갑에서 가장 많이 사용된 시드(seed)의 차이점들을 중심으로

본 글은 국내 HD지갑에 대한 글들이 턱없이 부족한 문제점을 바탕으로, Emanuele Pagliari가 작성한 글을 번역하였습니다. 원작자의 허락을 받았으며, 그림과 내용들은 모두 저작권자의 소유입니다. 한글본에 대한 오역, 오타에 대해서는 댓글 남겨주시면 감사하겠습니다. 한글로 훨씬 부드럽게 번역할 수 있었지만 영어 그대로 문장 구조를 살리기 위해 노력하였고, 첫 번역으로 미숙한 점에 대한 지적은 언제든지 환영합니다

BIP32,39와 44: 지갑에서 가장 많이 사용된 시드(seed)의 차이점들을 중심으로

어느 암호화폐든 지갑은 각각 그것만의 고유한 시드(seed)를 가지고 있다. 이것은 많은 단어들을 구성하는 문장으로 구성된다.시드(seed)는 극도로 중요하며, 이것은 왜 무척 관심을 가지고 아마도 오프라인(offline)에서 몇몇의 종이 조각들에, 저장되어야 하는 이유가 되며, 지갑 안에서 유지되고 있는 자금들을 복구하기 위해 본질적이기 때문이다.

하지만, 사용자들이 다른 지갑들에 있는 그들의 자금을 복구하는 것을 허용하기 위해, 실제 기준들에 속해있는 다른 유형의 시드(seed)들이 있다. 만약, 예를 들어, Electrum 이나 Coinomi 하루 만에 사라질 운명이었는데, 잘-정의된(well-defined) 기준 없이 자금을 복구하는 것이 어떻게 가능할까?

이러한 이유로 근년 간 그들의 개인 키(private keys)들을 안전하게 저장하기 위한 시드(seed)의 몇몇의 잘-명시된(well-specified) 표준들이 정의되어져 왔다.

시드(seed): 어디서나, 언제나, 모든 것을 저장하기 위한 구절

대부분의 지갑들은 시드(seed)를 통해 자금의 백업(backup)을 만들기 위한 가능성을 제공하기 위해 사용했다. 그것은, 주로 12개로, 무작위의 단어 문자열로 구성하지만, 18이나 24 단어 또한 될 수 있다. 대략 다음과 같다:

“inspire october ten crop warfare wink game regular alley mimic anchor extra”.

그런 구성된 단어들의 문장은 의미가 통하지 않지만, 얼마나 많은 거래들이 실행되어왔는가와 얼마나 많은 주소들이 생성 되어 왔는지에 상관 없이,그것은 연동된 지갑의 자금을 얻기 위한 유일한 방법이 될 것이다.

종이 한 장이나 암기를 할때, SEED(잃어버리거나 도둑 맞은 결루을 예외로 하고)는 항상 당신이 연동된 주소에서 비트 코인들을 얻는 것을 허용할 것이다. 어떤 컴퓨터에서 어디에 지갑이 설치되어 있든, 설치 되어 있지 않았거나 파괴되었든, SEED는 항상 당신에게 자금을 복구하는 것을 허용할 것이다.

어떻게 시드(seed)는 잃어버린 자금을 복구할 수 있는가?

장점은, 특히 계층 결정론적 지갑(hierarchical deterministic wallet)의 개념 ,암호학에 있는데, 수학적인 기능들의 사용 덕분에, 시드(seed)로부터 시작해서, 사용자로 하여금 모든 것을 복구하는 것을 허용케 한다. 사실, 이것은, 결정론적인 순서에서 얻어질 것인 모든 다른 키들로부터, 시드(seed)를 마스터 키로 이해한다. 실제 세계에서처럼 당신은 특정 계산의 사용에 묶여 있지 않고, 심지어 시드(seed)조차 그러므로 주어진 지갑의 구체적인 소프트웨어에 묶여있지 않는다.

BIP32, BIP39, BIP44

복구 절차는, 하지만, 채택된 시드(seed)의 기준에 기초하여 몇가지 구분을 만드는데 필요하기 떄문에, 너무 명백하지는 않는다. BIP32를 포함해 BIP39, BIP33와 또한 BIP43이 있다. 보통, 대부분의 암호화폐 지갑들은 전자 3개를 사용한다.

BIP32는 계층 결정론적 지갑(hierarchical deterministic wallets)들에 대한 첫 시드(seed) 표준이었다. 그것들은 부분적으로 혹은 전체적으로 다른 시스템들에 공유될 수 있는, 각각 코안들을 사용하는 가능성을 포함하거나 제외하는, 지갑들이다.
1

BIP39와 44는, 반면, 주어진 표현에 대해 단어들(패스프레이즈)의 구체적인 목록의 규격화의 더 최신 형태이다. 이 기준은 또한 HD BIP32 지갑을 생성하기 위해 필요시 되는 실제 시드(SEED)인, 16진수 512-비트 시드(SEED)로 이러한 단어들을 변환하는 과정을 포함한다. 세부적으로, BIP44는 다수 계정들 사용의 가능성을 소개한 적이 있다.

그래서 "BIP 32/39/44 호환이 되는"단어들을 보여 주는 모든 지갑은 결정론적인 512-비트 시드를 생성하기 위해 사용되는 12에서 24단어들의 패스프레이즈를 생성할 것이다. 후자는 그 후 결정론적인 방식으로 BIP32의 마스터키를 생성하는 데에 사용될 것이다. 마지막으로, 그것으로부터, 자손 키(the daughter keys)들은 BIP39나 44의 설명서들에서 보고된 방법들에 따라 생성될 것이다.

이안 콜맨 코드 변환기 (Ian Coleman Code Converter)

하지만, 주요 지갑들에서 다른 시드(seed) 이행들의 사용은 몇몇의 부정적인 영향들을 가진다. 예를 들어, 레져 나노 S(the Ledger Nano S)하드웨어 지갑들은 시드 BIP39와 44를 트레조(Trezor)와 같이 지원한다. 일렉트럼은, 반면, BIP32를 사용한다. 멀티비트(MultiBit)는 이두(Eidoo)가 BIP39를 지원하는 반면, BIP32와 BIP44를 모두 지원한다.

결과적으로, 몇몇의 레져(Ledger)와 같은 지갑들은 24-단어 패스프레이즈를 사용한다. 엑소더스(Exodus)와 같은, 다른 것들은 12-단어 패스프레이즈를 읽을 수 있다. 명백하게도, 이러한 경우들에서, 시스템은 동작하지 않을 것이기 때문에, 오직 첫 12단어들을 삽입하는 것이 가능하지 않다.

이 이유에서, 그러므로, 이안 콜맨(Ian Coleman)의 하나와 같은, 몇몇 생성기들을 사용하여, 당신은 마스터키 BIP32에 당신의 시드(seed) BIP32나 BIP44를 전환하는 것을 필요로 할 지도 모른다. 후자는, 다른 것들 사이에서, 보안을 최대화하기 위해 오프라인(offline)을 실행할 수 있다.

이 도구들을 사용하여, 실제로, 당신은 당신이 단순히 시드(seed)를 입력하는 것으로 지갑과 연동된 필요로 하는 자금들을 복구하기 위한 모든 정보를 가질 수 있다. 먼저, 응용 프로그램은, 개인 키들의 수입을 허용하는 모든 다른 포트폴리오나 일렉트럼(Electrum)으로 자금을 얻기 위해 사용될 수 있는 개인키들과 주소들을 얻을 것이다.

두번째로, 예를 들어, 일렉트럼(Electrum)을 사용하여 지갑을 얻기 위해 사용되는 확장된 BIP32 키와 그것의 마스터 키가 보여질 것이다.

어떻게 이것이 가능한가?

어떻게 패스프레이즈가 동작하는지 이해하기 위해서 당신은 비트코인 저장소에 대한 몇가지 기초적인 지식이 필요하다. 사용자가 비트코인들을 받을 때, 그들은 특정 주소와 관련이 있다. 이 주소는, 그러므로 개인 키의 파생인 공개 키의 파생물이다.

그러므로, 지갑은 처음에, 결과적으로 다음에 주소로 변환되는 공개키를 획득 하는개인키를 만들어 낸다.

지갑에서 비트코인에 대한 단순한 백업(backup)시스템은 암호화된 파일로 개인 키를 바꾸는 것을 구성할 수 있다. 개인 키는 이것과 비슷하게, 글자들의 랜덤한 문자열이다:

“L3GrBerZZXtTDcAVNiULbN84UVGjX7ezypSCsYYroBdQDDKKX1E53”.

하지만, 보안적인 이유로 당신의 주소를 재사용 하는 것은 강력히 추천되지 않는다. 이러한 이유로, 마지막 지갑은 당신이 비트코인을 받고 싶은 매번 마다 새로운 주소를 생성한다. 그러므로, 받은 비트코인을 백업하기 위해, 당신은 매번 생성된 모든 개인 키들을 기록 해야 한다. 사실, 이 해결책은 아주 불편하다.

운이 좋게도, 2012년에 개발자 피터 와일(Pieter Wuille)은 계층 결정론적 지갑(hierarchical deterministic wallets)들의 기초해 BIP32 설명서를 생성했다. 그것을 모아서, 피터(Pieter)는 결정론적인 방식으로 모든 다른 키들을 얻기 위한 마스터 키를 생성하기 위해 수학적인 기능을 생성했다.

예를 들어, 주어진 마스터 키인 A는, 그것은 항상 a,b,c,d, 등등, 항상 이 방식으로 키들을 생성할 것이다. 다음에, 몇몇의 개발자들은 몇몇 계정들에 지원을 더하기 위해(BIP44) 그리고 12,18이나 24단어들의(BIP39)의 시드(seed)로부터 마스터키를 얻기 위한 추가적인 도구들을 만들어 냈다.

이 경우의 BIP44는, 그러므로, 당신이 예시에서 가지고 있듯, 주어진 마스터 키인 A, 그것은 그들만의 고유한 키인 1,2,3을 각각 갖는 계정들 a,b,c를 생성할 것이다. 지갑들이 블록체인의 데이터 마이닝에 대해 사용자들의 개인 정보를 확실하게 하는 아주 흥미로운 특징이다. 수 년을 지나, 사실, 분석 매커니즘들은 블록체인에서 보이는 주소들과 거래들을 추적하는 것으로 사용자들의 신원을 추적하기 위해 발전해왔다. BIP44로는, 그러므로, 그들은 비효율적이다.

시드(seed)는, 그러므로, 그것이 또한 당신이 모든 주소들과 거래들을 추적하기 위해 허용하기 때문에 ,복구용 키 그 이상이다. 물론, 단지 비트코인들만이 아니라, 이 시스템은 또한 다른 암호 화폐들과 동작한다. 당신은 그 후 같은 시드(seed)로부터 라이트코인(litecoin), 모네로(monero), 이더리움(ethereum) 기타 등등을 위한 키들을 가질 수 있다. 이러한 이유로, 엑소더즈(Exodus), Jaxx(잭스), 그리고 다른 것들과 같은 다중-화폐 지갑들은 같은 시드(seed)를 사용하여 다중 암호 화폐들을 저장할 수 있다.

오프라인(offline)은 항상 더 안전하다

하지만, 마지막 남은 한 문제가 있다. 지갑들이 오픈 소스인 만큼, PC들은 멀웨어(malware)로부터 보호되고 있고, 브라우저들은 안티 피싱(anti-phishing)필터들과 등등으로 도구를 갖춰, 누군가 위상 발생(the generation phase)동안에 시드(seed)가 훔칠 수 있는 약간의 가능성은 항상 있다.

사실 PC들에 의해 수행되는 활동들을 기록하는 도구들도 있다. 더욱이, 특히 만약에 네트워크로부터 연결이 끊긴다면, 컴퓨터들은, 무작위의 연속된 숫자들을 생성하는 엔트로피(entropy)의 충분한 레벨을 항상 가지고 있지는 않다.

이 이유로, 당신은 모든 이러한 동작들을 오프라인(offline)으로 수행할 수 있고 사용자에 의해 수작업으로 선택된 추가 변수 파라미터들을 사용할 수 있다. 시드(seed)가 생성되면, 아마 금속성의 시드 키퍼들(metallic seed keepers)이나 다수 종이 뭉치와 같이, 최고의 저장 해결책들 중 하나는 오프라인 저장이다.

1 Like

첫 글 올려주셨네요! 감사합니다 앞으로 자주 봬요:smiling_face_with_three_hearts: