코인 지갑에 대한 오해 [김형중 분산금융 톺아보기] - 이코노미스트

Home > 증권 > 가상 화폐

print

코인 지갑에 대한 오해 [김형중 분산금융 톺아보기]

코인 지갑에는 코인이 아닌 개인키가 들어 있는 것
가상자산 거래소, 키 관리에 만전 기해야

[게티이미지]

[게티이미지]

 
 
지갑의 정의가 달라져야 한다. 지갑은 지폐를 담는 물건을 의미하는 명사였다. 세월이 흘러 지갑에 신용카드와 운전면허증을 넣기 시작했다. 지폐 사용 빈도가 점차 낮아지면서 이제 지갑은 지폐를 담는 물건에서 신용카드 형태의 플라스틱을 담는 물건으로 변했다.
 
이런 가운데 코인 지갑이 등장했다. 그런데 정작 그 지갑에는 코인이 담겨있지 않다. 코인 지갑에는 코인을 이동시킬 수 있는 개인키가 담겨있다. 그래서 지갑에 코인이 담겨있을 거란 환상을 버려야 한다.
 
개인키는 길이가 무려 256비트에 달한다. 인터넷 IP 주소가 32비트인데도 외우기 힘들어서 도메인 네임을 쓴다. 길이가 IP 주소의 8배나 되는 개인키 주소를 외우라는 것은 무리다. 그래서 종이에 적어 보관하려 하지만 그것도 전문가들이 권하지 않는다.
 
코인의 개인키를 컴퓨터나 스마트폰에 저장하는 것은 “이거 가져잘 수 있다면 가져가 봐”라고 말하는 거랑 다르지 않다. 해커들이 이미 고객의 단말 안에 들어와 있을지 모른다.
 
그래서 개인키를 안전하게 저장하기 위하여 코인 지갑이라는 걸 쓴다. 지갑은 소프트웨어 지갑과 하드웨어 지갑의 두 종류가 있다. 소프트웨어 지갑은 핫 월렛이 대부분이며 하드웨어 지갑은 거의 콜드 월렛이다.
 
핫 월렛은 인터넷에 바로 연결될 수 있는 지갑이다. 이 지갑에서 저 지갑으로 코인을 바로 보낼 수 있으면 그게 핫 월렛이다. 이 지갑의 개인키를 꺼내 블록체인에 담긴 코인을 보내는 거다. 콜드 월렛에 있는 개인키는 핫 월렛으로 옮겨야 그 개인키로 코인을 옮길 수 있다.
 
USB 같은 것에 개인키를 담아 보관하면 그게 콜드 월렛이다. 콜드 월렛이 더 안전하다는 것은 단순히 인터넷에 연결되어 있지 않기 때문이다. 그런데 USB를 컴퓨터에 꽂는 순간 바로 핫 월렛이 된다. 그래서 그 경계가 사실상 애매하다.
 
​다시 한 번 강조하거니와 지갑에는 코인이 들어있지 않고 블록체인에 기록되어 있다. 코인은 만질 수 없고 볼 수도 없는 숫자에 불과하다. 블록체인에 기록된 코인 정보는 투명하게 공개되어 누구나 검증할 수 있다.
 

​코인 주소의 비밀

개인키는 지갑 주소의 시작점이다. 개인키를 생성하고, 이어 개인키로부터 공개키를 만들고, 공개키로부터 지갑 주소를 만든다. 코인을 받으려면 주소가 있어야 한다. 송금된 현금을 받으려면 은행 계좌번호가 필요하듯 코인 세계에서는 지갑 주소가 필요하다.
 
​현금을 찾을 때는 계좌 주인임을 입증하기 위해 신분증과 미리 등록해 둔 도장 또는 서명을 직원에게 보여줘야 한다. 코인을 찾을 때는 은행에 가는 게 아니다. 은행을 배제하자고 만든 게 코인이다. 그래서 본인임을 입증할 수학적 방법이 필요하다.
 
​코인의 주인임을 입증하기 위해 개인키가 사용된다. 개인키를 지닌 사람이 지갑 주소의 주인이란 걸 보여야 한다. 지갑 주소는 개인키로부터 만들어졌으니 개인키를 들이대면 지갑 주인인게 증명된다.
 
​그렇다면 두 가지 질문이 가능할 것 같다. 지갑 주소로부터 개인키를 만드는 게 쉽지 않을까? 쉬웠다면 비트코인이 존재할 수 없다. 지갑 주소와 쌍을 이루는 개인키가 여러 개 존재하지 않을까? 그렇지 않다. 오로지 하나만 유일하게 존재한다는 게 수학적으로 증명되었다.
 
​개인키나 공개키는 길이가 모두 256비트이다. 공개키는 누구나 다 알 수 있게 공개한다. 그런데 공개키를 공개해도 되지만 공개키 대신으로 160비트로 줄인 지갑 주소를 공개한다. 그래서 공개키를 기억하고 있는 사람들이 거의 없다.
 
​코인 세계에서는 개인키와 지갑 주소만 알면 된다. 그리고 이 둘은 잘 기억하고 있어야 한다. 개인키는 코인을 꺼낼 때, 지갑 주소는 코인을 받을 때 써야 하기 때문이다. 개인키와 지갑 주소 사이에 존재하는 공개키는 굳이 알 필요가 없다.
 
​지갑 주소를 망각했다 해도 비밀키를 알고 있으면 지갑 주소를 만들 수 있다. 그런데 개인키를 분실하면 모든 것을 잃게 된다. 지갑 주소로 받은 코인을 꺼낼 수 없게 된다.
 
​다시 한 번 강조하거니와 지갑에는 코인이 들어있지 않다. 그런데 계속 지갑으로 코인을 받는다고 쓰니 혼란스러울 것이다. 지갑 주소는 은행 계좌번호와 같다고 앞에서 설명했다. 코인 세계에는 은행 역할을 블록체인이 대신한다. 블록체인에서 코인 받을 주소가 필요한데 그게 지갑 주소인 것이다.  
 
비밀키의 생성 과정을 보면 ① 128비트의 난수 생성 ② 132비트의 니모닉(mnemonic) 생성 ③ 512비트짜리 시드 구문(seed phrase) 생성 ④ 256비트 짜리의 개인키 생성 ⑥ 256비트의 공개키 생성 ⑦ 160비트의 지갑 주소 생성의 과정을 거친다.
 
​이 가운데서 보통사람들은 132비트의 니모닉, 256비트짜리 개인키, 160비트의 지갑 주소를 기억해야 한다. 지갑 주소는 문자 형태 또는 QR 코드 형태로 제공된다.
 
​코인이라는 재산을 안전하게 관리하려면 비밀키와 니모닉을 잘 관리해야 한다. 이것들은 가능하면 콜드 월렛에 저장하는 게 좋다. 재산이 아주 많은 법인이라면 시중은행이 투자해서 만든 커스터디(수탁) 업체에 보관하는 게 좋다.
 
​은행에 권총 강도들이 들끓던 시대가 있었다. 코인이 쌓여 있는 암호화폐(가상자산) 거래소에 해커들이 몰리는 게 이상하지 않다. 엄밀히 말하면 거래소에 코인이 쌓여 있는데 아니고 개인키들이 엄청나게 모여 있다. 암호화폐 거래소가 특별히 키 관리에 더 만전을 기해야 하는 이유다.

김형중 고려대 정보보호대학원 특임교수
Log in to Twitter or Facebook account to connect
with the Korea JoongAng Daily
help-image Social comment?
lock icon

To write comments, please log in to one of the accounts.

Standards Board Policy (0/250자)

많이 본 뉴스

실시간 뉴스