MODULE 2 (B) - CRYPTOCURRENCY TRANSACTIONS INTUITION
08. HIERARCHICALLY DETERMINISTIC (HD) WALLETS
HD 지갑 또는 계층 결정적(Hierarchically Deterministic) 지갑에 대해 알아보자.
위 공개 키, 개인 키, 검증함수 구조에서 여기에서는 프라이버시를 중점적으로 볼 것이다.
일반적으로 비트코인과 블록체인 또는 암호화폐가 익명이다.
즉, 개인 키가 누구의 소유인지 모른다면 그 사람의 정체를 아는 사람은 없다.
하지만 이것이 완전히 익명이라고는 할 수 없다.
왜냐하면 개인 키가 누구 소유인지 알게 되면 어떤 트랜잭션이 오갔는지에 대해 모두 알 수 있는 구조이기 때문이다.
따라서 개인 키는 곧 장애물 또는 어떤 사람의 아바타나 가명성 같은 것이다.
하지만 암호화폐에서 트랜잭션을 기반으로 어떠한 사람의 정체를 알 수 없는 것으로 되어 있다.
즉, 어떤 사람이 무슨 행동을 하는지 등도 감시할 수 없도록 되어 있다.
하지만 어떤 사람이 누군가에게 송금을 할 때면 항상 주소를 보내야 한다. 그리고 송금을 할 때마다 매번 그 사람의 공개 키가 해당 트랜잭션에 포함된다.
따라서 공개되어 있는 전체 블록체인 네트워크를 살펴봐서 그 사람이 주소를 보낼 때마다 공개 키가 나오기 때문에 해당 트랜잭션들을 추적할 수도 있을 것이다.
이는 주소가 정확히 누구의 소유이며 누가 이를 통해 거래하는지 알 수는 없지만 양상은 볼 수 있다.
즉, 한 주소가 지속적으로 송금하는 다른 주소는 어디인지 이 공개 키가 특정 셋 또는 다섯 가지 주소에 송금을 하는 등 그 패턴 말이다.
이러한 양상 또는 패턴들은 해당 주소가 누구의 소유인지 특정할 수도 있다.
이는 익명성을 해칠 수 있는 문제이다.
어떻게 해결하면 될까?
이전에는 위 그림처럼 익명성를 위해 여러 개인 키를 만들어 키마다 공개 키와 주소를 따로 생성하였다.
그리고 개인 키나 공개 키 또는 주소를 특정 항목별로 사용하는 것이다.
추가적인 익명성를 원할 경우에는 매번 새로운 개인 키를 생성해서 새로운 주소를 얻는 것이다.
이는 거의 무제한으로 공개 키와 주소를 생성할 수 있기 때문에 가능하다.
하지만 이들을 일일이 관리하고 개인 키의 보안을 유지하는 작업은 아주 귀찮다.
얼마 지나지 않아 비트코인은 개선책으로 Bip(Bitcoin inprovement proposal)32라는 기술을 선보였다.
이 제안에 다뤄 보려는 계층 결정적 지갑(Hierarchically Deterministic Wallet, HD Wallet)의 개념이 나와 있다.
사람들은 HD 지갑을 통해 마스터 개인 키(Master Private Key)를 가질 수 있다.
마스터 개인 키를 통해 익명성을 보호할 수 있는데, 다음과 같은 과정을 통해 이루어진다.
바로 이 과정이 안전한 것이다.
마스터 개인 키를 통해 손쉽게 여러 개인 키, 공개 키, 주소를 생성할 수 있기 때문에 익명성이 강화되고, 귀찮은 일을 줄여준다.
따라서 마스터 개인 키나 개인 키 정보를 알리지 않아야 한다.
이러한 마스터 개인 키를 통한 개인 키, 공개 키, 주소 생성은 지갑의 기능으로 아주 유용한다.
송금을 하거나 받을 때 자동으로 위 과정이 수행되어 항상 다른 공개 키와 주소를 사용할 수 있다.
이렇게 하면 누구도 돈이 어디에서 나왔고 또 어디로 가는지 추적할 수 없다.
또한 단체에서 각자 개인키를 부여하여 각자가 암호화폐를 다룰 수 있고 서로의 트랜잭션들은 볼 수 없지만, 마스터 개인 키를 가지고 있는 사람 또는 단체는 모든 트랜잭션들을 확인할 수 있다.
이처럼 각각의 개인 키로 이루어진 계층이 있기 때문에 계층 결정적 지갑이라고 부르는 것이다.
즉, 개별적인 개인 키들은 모두 개별적으로 공개 키와 주소를 생성하기 때문에 각각의 개인 키들은 분리되어 있지만 마스터 개인 키는 이들은 모두 관리할 수 있는 것이다.
Bip32에서 제안하는 또 다른 기능으로 마스터 공개 키(Master Public Key)가 있다.
마스터 공개 키는 마스터 개인 키나 개인 키처럼 보안을 유지할 대상이 아니다.
마스터 공개 키를 통해서 개인 키를 생성할 수는 없다. 그러나 마스터 공개 키는 모든 공개 키를 다시 만들 수 있다.
이 마스터 공용 키는 감사인과 같이 트랜잭션을 보낼 필요가 없는 대상에게 부여할 수 있다.
즉, 송금을 할 필요가 없지만 블록체인을 통해 자금이 어디로 흘렀는지 볼 수 있는 공개 키에 대한 접근 권한을 필요한 사람들에게 부여할 수 있을 것이다.
여기서 마스터 개인 키를 어떻게 안전하도록 보관할 수 있냐는 점이 궁금할 것이다.
마스터 개인 키는 니모닉(Mnemonic)을 통해 관리할 수 있는데, 니모닉은 영문자에서 특정 12자를 뽑아서 만든 조합을 말한다.
니모닉을 통해 마스터 개인 키를 재생성할 수 있기 때문에 마스터 개인 키를 관리하고 안전하게 보관하기 위한 목적으로 사용된다.
니모닉은 가능한 경우의 수가 너무 크므로 두 사람이 같은 니모닉을 부여받아 동일한 마스터 개인 키를 가질 확률이 매우 낮다.
또한 니모닉을 종이에 써 두거나 하면 암호를 잃어버리거나 서버가 파괴되는 등 마스터 개인 키를 잃어버려도 해당 니모닉을 이용해서 동일한 알고리즘을 통해 마스터 개인 키를 생성할 수 있다.
"결정적 지갑의 이점과 과소평가된 결함" - Vitalik Buterin
Vitalik Buterin, (2013), Deterministic Wallets, Their Advantages and their Understated Flaws