차세대 하드웨어 지갑 : 커스터디 서비스와 보안 토큰의 결합

Junhoo Park
IOTRUST : Team Blog
7 min readMay 20, 2020

암호 화폐를 자산으로 보는 시각이 늘어나고 있습니다. 암호 화폐가 가진 장점을 어떻게 활용할 것인가에 대한 방법을 찾기 위한 움직임으로 이어지고 있는 것은 환영할 만한 일입니다. 미국에서는 암호 화폐 거래와 관련하여 세금을 부과하고 더 나은 관리를 위해 정부가 세법을 제정하기 위한 움직임을 보이고 있고, 최근 들어 다양한 국가의 CBDC(Central Bank Digital Currency)발행과 관련하여서도 블록체인 적용의 검토가 활발히 일어나고 있습니다.

“모든 자산이 디지털화 될 수 있을까?”에 답하기에는 아직 가야할 길이 멀지만, 이러한 세상을 준비하는 노력은 활발히 진행되고 있습니다. 그 중 하나로 커스터디(Custody) 서비스를 꼽을 수 있습니다. 커스터디 서비스는 개인의 자산을 안전하게 보관하면서 결제, 대여, 회계 등의 부가서비스도 함께 제공합니다. 개인이 가질 수 있는 보관 및 관리에 드는 부담을 줄여줌과 동시에 자산으로 인해 발생하는 가치를 높이기 위한 인프라입니다. 국내에서는 아톰릭스랩이 KB국민은행과 함께 준비하는 KBDAC도 이에 속합니다.

그렇다면 과연 커스터디 서비스를 제공받는 개인 혹은 기관의 입장에서 무엇을 준비해야 하고, 과연 믿을 만한 서비스인지를 어떻게 알 수 있을까요? 또, 암호 화폐를 이용할 때 개인이 준비할 수 있는 것은 어떤 것이 있을까요?

커스터디 서비스에 사용되는 TSS

기술적인 원리에 대해서 먼저 알아보겠습니다. 암호 화폐는 소유주(Owner)가 보내고자 하는 금액을 보유한 잔액(Balance) 내에서 정하여 소유주만이 가지고 있는 개인키(Private Key)로 서명하여 트랜잭션을 생성합니다. 트랜잭션에 포함된 서명의 유효성은 합의를 거쳐 검증 후 블록체인에 저장되고, 소유주의 변경 상태가 업데이트 됩니다. 따라서, 암호 화폐를 송금하려면 서명을 위해 개인키가 반드시 필요하며, 안전하게 보관되어야 하기 때문에 소유주만이 가지고 있는 것이 바람직합니다.

그렇다면 모든 자산이 특정 한 명의 소유가 아니라 다수의 소유일 경우 어떻게 할까요? 다수의 소유 자산에 대한 개인키(Private Key)는 한 명이 보관하는 것이 바람직하지 않을 수 있습니다. 이럴 때에는 다수가 동의했다는 증명이 가능한 서명이 필요하겠지요. 더 나아가 그룹 내에 특정 인원의 수만 만족되면 서명이 가능한 방법도 생각해 볼 수 있습니다.

이럴 때 활용 가능한 서명 구조를 Threshold Signature Shceme(TSS)라고 합니다. TSS에서는 서명 생성에 필요한 개인키를 분할하여 지분(Share)을 참여자들끼리 나눠 가집니다. 예를 들어, 2-of-3 Signature의 경우, 3명 중 2명이 동의할 경우 유효한 서명이 생성되는 방식으로 동작합니다. 여기서 3은 전체 키를 나눠 가진 사람의 수, 2는 만족되어야 하는 서명 참여자 수를 의미합니다.

TSS를 구성하는 가장 기본적인 원리는 Shamir’s Secret Sharing으로, 서명 생성에 필요한 개인키를 분리하여 각 참여자가 지분을 보관하고, 서명이 필요할 때 지분을 재구성(Reconstruction)하여 개인키를 구성 후 서명을 하는 것이 초기 모델입니다. 하지만, 이러한 방식은 개인키를 재조립할 때 단일 지점 장애(Single Point of Failure)가 발생하는 문제가 존재하거나, 키 분배 시 신뢰 기관이 필요한 단점이 있었습니다. 최근 들어 분산 키 분배(Ditstributed Key Generation)와 서명 알고리즘(Sign Algorithm)을 통해 이를 해결하는 방법들이 등장했고, 많은 커스터디 서비스에서 활용되고 있음을 볼 수 있습니다.

여기서는 간단하게 A, B, C 세 명의 구성원이 서명을 생성하는 개인키sk의 분할된 조각인 a, b, c를 각각 가지고 있는 경우를 예로 들어 보겠습니다. 원래는 (a,b), (b,c), (c,a) 값이 있어야 개인키 sk를 구성하여 서명을 생성할 수 있는 방식이었습니다. 즉, sk값이 언젠가 서명을 생성하는 주체에게 드러나게 되어있는 방식이었습니다. 커스터디 서비스에서 활용되는 방식은 A, B, C가 가지고 있는 값을 암호화 한 상태의 Enc(a), Enc(b), Enc(c) 값을 통해서 결합함으로써 (Enc(a), Enc(b)), (Enc(b), Enc(c)), (Enc(c), Enc(a))의 조합으로 2-of-3 Signature를 생성할 수 있습니다. 이렇게 되면 개인키 sk 자체가 드러나지 않고 제출된 값만으로 유효한 서명을 생성하기 때문에 단일 지점 장애를 없앨 수 있습니다. (자세한 내용은 기술블로그를 참고해주세요.)

보안 토큰(USB) 활용 시나리오

앞서 설명한 TSS는 2-of-3의 경우에 해당합니다. 내 자산에 대한 지분을 3개씩이나 분할해서 관리할 필요가 있을까요? 3개를 어디에 보관하는게 가장 바람직할까요? 먼저, 첫 번째 지분은 당연히 자산의 소유주가 가지고 있어야 합니다. 그리고 두 번째 지분은 커스터디 서비스에 보관합니다. 이렇게 분할 보관함으로써 내 스마트폰이나 PC 심지어 커스터디 서비스가 해킹되거나 폐지될 경우에도 자산을 잃지 않을 수 있습니다.

하지만 위 시나리오 대로라면 항상 커스터디 서비스와 연결이 되어 있어야만 거래가 가능한 단점이 존재합니다. 그렇다고 내가 가진 PC나 스마트폰에 두 개의 지분을 보관하는 것은 더 큰 위험을 초래합니다. 한 번의 해킹이나 도난 및 분실로 인해 지분을 잃게 될 수 있기 때문입니다. 따라서 오프라인과 온라인을 변경하면서 커스터디와 무관하게 거래할 수 있도록 제3의 장치가 필요합니다. USB 같은 장비가 대표적이라고 할 수 있겠네요. USB 형태의 보안 토큰 같은 경우 물리적으로도 인터넷과 분리된 환경으로써 해킹으로부터 안전하며, PC에서 활용하기에 편리합니다. 또 휴대하기에 편리한 장점과 이미 많은 사람들이 익숙하게 사용하고 있는 것이라는 점에서 좋은 대안이 될 수 있습니다.

커스터디 서비스와 보안 토큰을 활용한 Threshold Signature Scheme

보안 토큰과 PC, 커스터디를 이용한 시나리오를 다음과 같이 생각해볼 수 있습니다.

자산의 이동(암호 화폐 송금) 시 : 사용자는 거래를 위해 PC에 USB를 연결하여 서명하고 트랜잭션을 내보낼 수 있습니다. 거래가 끝나면 USB 연결을 해제하여 오프라인 상태로 유지합니다. 해커는 PC의 침입에 성공하여 지분을 탈취하여도 서명이 불가능합니다.

마찬가지로 커스터디 서비스가 해킹되어도 자산이 위협받을 문제가 없습니다. 이 말은 곧 커스터디 업체 또한 지분이 하나밖에 없으므로 악용이 불가능함을 의미합니다. 즉, 유효한 거래는 USB를 가지고 있는 사용자만이 가능합니다.

키 분실 후 복구 : 커스터디에 재난이 발생하거나, 스마트 폰에 보관된 하나의 키를 잃어버렸을 경우 키를 복구 하지 못한다면 소유한 자산을 모두 잃는 것과 마찬가지 입니다. 따라서 키를 복구하는 메커니즘은 필수적입니다. 만약 PC에 보관한 지분이 실수로 지워졌을 경우에, USB와 커스터디의 지분을 이용하여 PC에 보관할 지분을 재할당 할 수 있습니다.

마치며..

본 글에서는 커스터디 서비스에서 사용되는 TSS와 보안 토큰을 활용한 시나리오를 설명하였습니다. 암호 화폐 산업이 증가할수록 사용자와 가장 가까이에 접해있는 지갑 업체 또한 점차 기술적으로 성숙해지고 있습니다. 초기 웹에서 활용되는 지갑에서부터 콜드월렛과 핫월렛으로 성장했고, 서명 체계가 발전하면서 TSS를 활용한 지갑 서비스 또한 출시되었습니다. 디센트를 개발하고 있는 아이오트러스트는 한 단계 더 나아가 TSS를 활용하는 커스터디 서비스에 편리한 USB 타입의 보안 토큰을 아톰릭스랩과 함께 출시할 계획을 가지고 있습니다. 관심 있으신 분들은 이 글을 통해 논의를 시작했으면 좋겠습니다.

디센트 채널 링크

공식 웹사이트 : https://dcentwallet.com/

미디엄 : https://medium.com/@dcent

트위터 : https://twitter.com/DCENTwallets

페이스북 : https://www.facebook.com/dcentwallet

유튜브 : https://www.youtube.com/channel/UCKnYqiM3g3iaaAKcRZf-kbA

--

--