임계치 서명 설명

공유
Copied to clipboard!
임계치 서명 설명
아티클 듣기
00:00 / 00:00

 저자: Omer Shlomovits, ZenGo.

임계치 서명 체계(TSS)는 분산화된 키 생성 및 서명을 위한 암호학의 원시입니다. 블록체인 클라이언트에서 TSS를 사용하는 것은 특별히 보안 측면에서 많은 이점을 제공할 수 있는 새로운 패러다임입니다. 보다 넓은 의미에서 TSS는 키 관리 시스템 설계에 영향을 끼칠 수 있으며 (암호화폐 지갑처럼) DeFi 사용 사례와 같은 자체 지원을 이끌어낼 수 있습니다. 그렇지만 TSS는 여전히 새로운 기술이기 때문에, 위험과 한계도 고려해야 합니다.

해당 아티클에서는 TSS란 무엇이며, 블록체인 영역에 어떠한 잠재적 이점들을 가져다 줄 수 있는지, 블록체인 클라이언트에 어떻게 구현될 수 있는지, Shamir 비밀 정보 분산, 다중 서명과 어떻게 다른지, 분산화된 키 관리에 TSS를 사용하는 다양한 방법들은 무엇인지와 더불어 마지막으로 위험 요소와 한계에 대해 논의할 것입니다.

암호 방식의 힘

TSS를 이해하려면 암호 방식에 대한 기본적인 지식이 필요합니다. 1970년대 이후, 점점 더 많은 인터넷 시스템(TLS와 PGP과 같은)이 비대칭 암호 방식을 채택했는데, 이를 공개 키 암호 방식(PKC)이라고도 합니다. PKC는 공개 키와 개인 키, 두 가지 키를 사용합니다. 공개 키는 감춰진 사항이 아니며 공개될 수 있고 누구나 이를 사용할 수 있으나, 개인 키는 시스템 보안을 나타내는 비밀 정보의 일부입니다.

암호화와 디지털 서명은 PKC의 가장 일반적인 두 가지 사용 사례입니다. 암호화와 디지털 서명 체계는 세 가지 알고리즘 집합에 기반합니다. 첫째, 개인 및 공용 키 쌍 생성, 둘째, 암호문/서명 생성, 셋째, 해독/검증입니다. 디지털 서명에서 고유한 서명을 생성하기 위해 서명 알고리즘은 소유자만 알고 있는 개인 키를 필요로 합니다. 해당 서명은 지정된 메시지에 첨부되며 공개 키를 보유하고 있는 자는 누구나 진위성과 정확성을 확인할 수 있습니다.


블록체인

의심의 여지 없이 블록체인은 매우 강력한 기술입니다. 블록체인은 사건들을 정리하고 기록하는 합의 계층을 제공합니다. 이러한 기반 구조는 사용자가 탈중앙화된 경제와 정부까지도 구성할 수 있는 잠재적인 능력을 제공합니다. 놀랍게도 기본적인 블록체인을 실행하기 위해 필요한 암호 방식은 단지 디지털 서명에만 기반할 수 있습니다. 이러한 블록체인의 맥락에서, 개인 키는 신원을 나타내는 반면, 서명은 신원에 의해 수행되는 공개적 진술 또는 주장입니다. 블록체인은 일련의 규칙을 따라 진술을 정렬하고 검증하며, 무엇보다도 서명이 위조될 수 없고 정확한지 확인합니다.

블록체인에서 활용되는 보다 고전적인 암호 방식과는 달리, 현대의 암호 방식에는 영지식 증명, 동형 암호화, 다자간 연산과 같은 몇 가지 놀라운 것들이 포함되어 있습니다. 지난 10여년 동안 목격했던 것처럼 최근의 성과와 그 이상으로 블록체인 리서치는 얌호 방식을 적용하는 데 상당한 영향을 미쳤습니다. 

본 아티클에서는 하나의 성과라할 수 있는 효율적이고 안전한 임계치 서명(TSS)을 중점적으로 다룰 것입니다.


MPC와 임계치 서명 방식(TSS)

다자간 연산(MPC, Multi-party computation)은 Andrew C. Yao에 의해 40여년 전에 시작된 암호 방식의 한 분야입니다. MPC에서는 일련의 당사자들이 서로를 신뢰하지 않고도 입력값을 비공개로 유지하는 동시에 입력값에 대한 함수 연산을 공동으로 시도합니다. 

일례로, 한 회사의 직원들은 자신의 실제 급여를 밝히지 않고, 누가 가장 많은 급여를 받는지 알고 싶어할 수 있습니다. 여기서 개인 입력값은 급여이며 출력값은 가장 많은 급여를 직원의 이름이 됩니다. MPC를 통해 해당 연산을 수행하면, 연산 과정 동안 단 하나의 급여 정보를 유출하지 않고 출력값을 얻을 수 있습니다. 

MPC의 두 가지 주요 특성은 정확성과 프라이버시입니다.

  • 정확성: 알고리즘을 따라 생성되는 결과물은 정확합니다(예상대로).

  • 프라이버시: 당사자가 보유한 비밀 입력값 데이터는 다른 당사자에게 유출되지 않습니다.

우리는 분산화된 방식으로 디지털 서명을 연산하는 데 MPC를 사용할 것입니다. 위의 속성들이 어떻게 서명에 적용될 수 있는지 알아봅시다. 앞서 말했듯 서명에는 세 가지 단계가 있습니다.

  • 키 생성: 첫 번째 단계는 가장 복잡한 단계이기도 합니다. 우리는 공개되고 향후 서명을 검증하는 데 사용될 키를 생성해야 합니다. 또한 각 당사자 별로 개인 비밀 정보도 생성해야 하는데, 이를 비밀 정보 일부(secret share)라 부르도록 하겠습니다. 정확성과 프라이버시 측면에서 해당 함수는 모든 당사자에게 동일한 공개 키를 출력할 것이며, (1) 프라이버시: 당사자들 사이에 비밀 정보 일부 데이터가 유출되지 않으며, (2) 정확성: 공개 키는 비밀 정보 일부들의 함수라는 서로 다른 비밀 정보 일부를 출력할 것입니다.

  • 서명: 해당 단계에는 서명 생성 함수가 포함됩니다. 각 당사자의 입력값은 이전 단계(분산화된 키 생성)의 결과물로 생성된 비밀 정보 일부가 될 것입니다. 또한 모두에게 알려진 공개 입력값도 있으며, 이는 서명할 메시지입니다. 출력값은 디지털 서명이 되며, 프라이버시 특성은 연산 과정 중에 비밀 정보 일부가 유출되지 않도록 합니다.

  • 검증: 검증 알고리즘은 대표적인 설정 그대로 유지됩니다. 단일 키 서명과 호환되기 위해서는 공용 키에 대한 지식을 갖고 있는 모두가 서명을 검증하고 승인할 수 있어야 합니다. 이는 정확히 블록체인 검증 노드가 하는 역할입니다.

임계치 서명 체계(TSS)는 이러한 분산화된 키 생성(DKG) 구성과 분산화된 임계치 서명 체계의 분산화된 서명에 우리가 부여한 이름입니다.


블록체인과 TSS의 결합

블록체인에서 TSS를 사용하는 자연스러운 방법은 블록체인 클라이언트 변경하는 것으로 TSS를 사용해 키와 서명을 생성하는 것입니다. 여기서 우리는 블록체인 클라이언트란 용어를 풀 노드에 의해 실행되는 일련의 명령들을 의미하는 것으로 사용합니다. 실제로 TSS 기술을 사용하면 모든 개인 키 관련 명령을 분산화된 연산으로 대체할 수 있습니다.

보다 자세한 설명을 위해 기존의 블록체인 설계에서 새 주소를 만드는 방법은 간단하게 기술하도록 하겠습니다. 간단히 말하자면, 개인 키를 생성한 다음 개인 키에서 공용 키를 연산하여 새 주소를 만들 수 있습니다. 최종적으로 공개 주소는 공개 키로부터 도출됩니다.

TSS를 사용하면 n명의 당사자가 공용 키를 공동으로 연산하고, 각 당사자는 개인 키의 비밀 정보 일부를 보유하고 있습니다(각 정보의 일부는 다른 당사자에게 공개되지 않음). 기존 시스템과 동일한 방식으로 공용 키로부터 공용 주소를 도출할 수 있으므로, 블록체인은 주소가 생성되는 방식에 영향을 미치지 않습니다. 이는 각 당사자가 개인 키의 한 부분만을 보유하고 있기 때문에, 개인 키가 더는 단일 장애점이 아니라는 장점이 있습니다.

트랜잭션에 서명을 할 때도 마찬가지입니다. 이 경우 한 당사자가 개인 키를 사용해 서명하는 대신, 다수의 당사자 사이에서 생성된 분산화된 서명을 생성할 수 있습니다. 따라서 각 당사자가 충분히 정직하게 행동하고 있는 한 유효한 서명을 생성할 수 있습니다. 우리는 다시 지역 연산(단일 장애점)에서 상호작용하는 것으로 전환했습니다.

분산화된 키 생성이 다양한 유형의 접근 구조를 허용하는 방식으로 이뤄질 수 있다는 점은 중요합니다. 일반적인 “t out of n” 설정은 보안을 손상시키지 않고 개인 키 관련 작업에서 최대 t의 임의의 실패를 극복할 수 있습니다.


TSS vs. 다중서명

일부 블록체인은 기본 또는 프로그래밍 가능한 소프트웨어의 일부로 TSS 기능을 제공합니다. 우리는 이러한 기능을 다중서명이라 부릅니다. 차이를 더 잘 이해하기 위해, 다중서명을 블록체인 애플리케이션 레이어의 TSS라 볼 수도 있습니다.

달리 말하자면, 다중서명과 TSS는 모두 본질적으로 비슷한 목표를 달성하기 위한 것이지만, TSS는 오프체인 암호 방식을 사용하는 반면, 다중서명은 온체인에서 진행됩니다. 그러나 블록체인은 다중서명을 인코딩할 수 있는 방법을 필요로 하며, 이는 접근 구조(서명자 수)가 블록체인 상에 노출되기 때문에 개인 정보가 노출될 수 있습니다. 다중서명 트랜잭션 비용이 더 높기도 한데 이는 서로 다른 서명자에 대한 정보도 블록체인에서 전달되어야 하기 때문입니다.

TSS에서는 서명자의 세부 정부가 지속적인 트랜잭션 안에 모아져 비용을 절감시키고 프라이버시를 유지합니다. 반면, 다중서명은 비상호적일 수 있으며, 이는 서로 다른 서명자 간에 복잡한 통신 레이어를 실행하는 문제를 줄일 수 있습니다.

주된 차이점은 다중서명은 블록체인별로 다르기 때문에 모든 블록체인마다 재구현되어야 하며, 경우에 따라 전혀 지원되지 않는다는 것입니다. 반면, TSS는 순전히 암호 방식에 기초하고 있기 때문에 언제나 지원이 가능합니다. 일러스트레이션과 함께 차이점을 훌륭하게 설명한 아티클은 여기에서 찾아보실 수 있습니다.


TSS vs. Shamir 비밀 정보 분산 체계

Shamir 비밀 정보 분산 체계(SSSS, Shamir secret sharing scheme)를 통해 개인 키를 사용하지 않는 동안 이를 여러 위치에 분산화된 방식으로 저장할 수 있습니다. SSSS와 TSS에는 두 가지 차이점이 있습니다.

  • 키 생성: SSSS에서는 “딜러"라고 하는 단일 주체가 개인 키 비밀 정보 일부 생성을 담당합니다. 이는 키 생성 시 개인 키가 단일 위치에서 생성되고 딜러에 의해서 다른 위치로 배포됨을 의미합니다. TSS에서는 역할이 분산되어 있으므로 딜러가 존재하지 않으며, 전체 개인 키가 절대로 단일한 위치에 있는 경우가 없습니다.

  • 서명: SSSS에서는 서명을 위해 각 당사자가 전체 개인 키를 재구성해야 하며, 이는 서명이 요구될 때마다 단일 장애점으로 이어집니다. TSS에서 서명은 비밀 정보 일부를 전혀 재구성하지 않고 분산화된 방식으로 서명이 이뤄집니다.

보시다시피 TSS에서는 개인 키(시스템의 보안을 나타냄)가 단일한 위치에 있는 경우가 절대로 없습니다.


임계치 지갑

TSS 기술을 기반으로 한 지갑은 기존의 암호화폐 지갑과는 조금 다릅니다. 일반적으로 기존의 지갑은 시드 구문을 생성해 결정적으로 지갑 주소를 도출하는 데 사용합니다. 이후 사용자는 이러한 위계적 결정 구조를 사용해 1) 지갑 공용 주소에 상응하는 개인 키에 접근하고 이를 통해 트랜잭션에 서명할 수 있으며, 2) 시드 구문을 통해 모든 지갑 키를 복구할 수 있습니다.

임계치 지갑에서는 상황이 보다 복잡합니다. 위계적 결정 구조를 생성할 수 있지만 분산화된 방식인 MPC 프로토콜을 통한 연산을 거쳐야 합니다. 당사자들은 어떤 키가 다음으로 사용될 것인지 공동으로 결정해야 합니다. 즉, 각 당사자는 각자의 시드 구문을 보유하게 됩니다. 시드 구문은 개별적으로 생성되며 결코 조합되지 않기 때문에, 한 당사자가 자신의 시드에서 개인 키를 추출할 수 없습니다.

TSS 기반 지갑은 훌륭한 보안 기능을 갖고 있으며 상응하는 공용 키와 블록체인 주소를 변경하지 않고도 개인 키를 순환시킬 수 있습니다. 개인 키 순환은 사전 비밀 공유라고도 알려져 있는데, 이는 또 다른 MPC 프로토콜로 비밀 정보 일부를 입력값으로 하여 일련의 새로운 비밀 정보 일부를 출력하는 것입니다. 이전 비밀 정보 일부는 삭제될 수 있으며, 새롭게 생성된 것은 동일한 방식으로 사용할 수 있습니다.

해당 구조는 보안에 시간이라는 차원을 추가하므로, 공격자가 임계치 지갑을 공격하기 위해서는 동시에 여러 위치에 있어야 함을 의미합니다. 비밀 정보 공유 전후로 순환을 결합시키면 공격자가 서명을 위조하는 것을 막을 수 있습니다.

이러한 유형의 지갑의 단점은 시드 구문이 없어 단일 키 지갑 시스템과 호환되지 않는다는 것입니다. 따라서 어떤 당사자가 비밀 정보 일부를 보유할지 고려하는 것이 중요합니다.

몇 가지 가능한 아키텍처들이 있습니다.

  • 아웃소싱 TSS: 사용자는 서버 "n"이 연산을 대신 진행하도록 허용합니다. 자산의 소유자가 아니라 인센티브를 제공받고 보안 레이어를 제공하는 서비스 공급업체에 키 생성, 관리, 서명을 효과적으로 아웃소싱합니다.

  • 다수의 장치 사용: 사용자는 소유한 장치 간에 TSS를 진행합니다. 예를 들어, 한 당사자는 일부 IoT 기기, 다른 당사자는 모바일 기기, 또 다른 당사자는 노트북 등이 됩니다.

  • 하이브리드: TSS는 외부 서비스 공급자에 의해 제어되는 당사자와 사용자 소유 기기의 당사자들을 통해 진행됩니다.

첫 번째 방법은 사용자 클라이언트 측이 복잡한 TSS 연산을 하지 않아도 되게 합니다. 반면 서비스 제공자가 사용자의 자산을 훔치거나 이에 공모(서비스 공급자가 동시에 공격받지 않는다고 충분히 가정할 수 있지만 실제로는 그럴 수 있음)할 수 있습니다.

두 번째 방법은 사용자에게 완전한 통제권을 부여하지만 여러 장치가 온라인 상태에서 TSS 연산에 참여해야 하기 때문에 트랜잭션을 수행하는 것이 번거롭습니다.

세 번째 방법은 사용자의 승인 없이는 트랜잭션을 수행할 수 없게 하면서도, 사용자가 쉽고 빠르게 트랜잭션을 수행할 수 있게 하기 때문에 가장 좋은 방법으로 간주됩니다.


TSS와 스마트 콘트랙트

연구자들은 수년간 디지털 서명의 다양한 용도들을 발견했으며 무척 특별한 것도 많았습니다. 앞서 언급한 것처럼 TSS는 보안을 크게 향상시킬 수 있는 암호 방식의 원시입니다. 우리는 블록체인의 많은 기능들이 TSS 기반 암호 방식으로 대체될 수 있다고 말할 수 있습니다. 탈중앙화된 애플리케이션, 레이어 2 스케일링 솔루션, 아토믹 스와프, 믹싱(mixing), 상속(Inheritance) 등을 TSS 프레임워크 위에 구축할 수 있습니다. 이를 통해 비용이 많이 들고 위험 부담이 큰 온체인 스마트 콘트랙트 운영 방식을 보다 저렴하고 신뢰할 수 있는 것으로 대체할 수 있습니다.

몇 가지 구체적인 예를 들자면, Multi-Hop Locks는 두 당사자 서명을 영리하게 활용하며, 보다 안전하고 사적인 지불 채널 네트워크를 갖춘 비트코인 라이트닝 네트워크의 대안으로 활용될 수 있습니다. ShareLock는 단일 임계치 서명 검증을 기반으로 한 가장 저렴한 이더리움의 온체인 믹싱 솔루션입니다.


위험 요소

지난 몇 년 간 많은 곳에서 TSS이 구현되었습니다. 하지만 이는 비교적 새로운 기술로서, 여전히 한계점과 우려 사항들이 존재합니다. 기존의 공개 키 암호 방식과 비교할 때, TSS 프로토콜은 매우 복잡할 수 있으며 “실전에서 테스트"되지 않았습니다. 일반적으로 TSS는 간단한 디지털 서명에 비해 부가적이고, 취약한 암호학적 가정을 필요로 합니다. 그 결과 종래의 구성에서는 존재하지 않았던 암호학적 공격 방식들이 발견되고 있습니다(2019 Breaking Bitcoin Conference 프레젠테이션 참조). 보안 엔지니어 및 응용 암호화 기술자가 여러분의 시스템에 TSS를 안전하게 적용하는 데 도움이 될 수 있을 것입니다.


마치며

본 아티클에서는 블록체인 사용 방식을 크게 변화시킬 수 있는 대단히 흥미로운 암호학의 원시인 임계치 서명 체계(TSS)의 기본을 소개 했습니다.

해당 아티클은 바이낸스 체인과 비트코인에서 사용될 수 있는 임계치 ECDSA에 대해서는 논의하지 않았으며, 관심이 있으시다면 다음의 논문들을 참조하실 수 있습니다. 또한 일부 TSS 구현을 실험해보고자 하는 경우 여기에서 두 당사자(two-party) 바이낸스 체인 지갑 또는 ZenGo 지갑 코드를 보실 수 있으며, 이는 비관리형 두 당사자 바이낸스 체인 지갑을 제공하기 위해 하이브리드 방식을 사용했습니다.


추가적인 참고자료

Loading