해당 아티클에서는 TSS란 무엇이며, 블록체인 영역에 어떠한 잠재적 이점들을 가져다 줄 수 있는지, 블록체인 클라이언트에 어떻게 구현될 수 있는지, Shamir 비밀 정보 분산, 다중 서명과 어떻게 다른지, 분산화된 키 관리에 TSS를 사용하는 다양한 방법들은 무엇인지와 더불어 마지막으로 위험 요소와 한계에 대해 논의할 것입니다.
암호 방식의 힘
블록체인
본 아티클에서는 하나의 성과라할 수 있는 효율적이고 안전한 임계치 서명(TSS)을 중점적으로 다룰 것입니다.
MPC와 임계치 서명 방식(TSS)
다자간 연산(MPC, Multi-party computation)은 Andrew C. Yao에 의해 40여년 전에 시작된 암호 방식의 한 분야입니다. MPC에서는 일련의 당사자들이 서로를 신뢰하지 않고도 입력값을 비공개로 유지하는 동시에 입력값에 대한 함수 연산을 공동으로 시도합니다.
일례로, 한 회사의 직원들은 자신의 실제 급여를 밝히지 않고, 누가 가장 많은 급여를 받는지 알고 싶어할 수 있습니다. 여기서 개인 입력값은 급여이며 출력값은 가장 많은 급여를 직원의 이름이 됩니다. MPC를 통해 해당 연산을 수행하면, 연산 과정 동안 단 하나의 급여 정보를 유출하지 않고 출력값을 얻을 수 있습니다.
MPC의 두 가지 주요 특성은 정확성과 프라이버시입니다.
정확성: 알고리즘을 따라 생성되는 결과물은 정확합니다(예상대로).
프라이버시: 당사자가 보유한 비밀 입력값 데이터는 다른 당사자에게 유출되지 않습니다.
우리는 분산화된 방식으로 디지털 서명을 연산하는 데 MPC를 사용할 것입니다. 위의 속성들이 어떻게 서명에 적용될 수 있는지 알아봅시다. 앞서 말했듯 서명에는 세 가지 단계가 있습니다.
키 생성: 첫 번째 단계는 가장 복잡한 단계이기도 합니다. 우리는 공개되고 향후 서명을 검증하는 데 사용될 키를 생성해야 합니다. 또한 각 당사자 별로 개인 비밀 정보도 생성해야 하는데, 이를 비밀 정보 일부(secret share)라 부르도록 하겠습니다. 정확성과 프라이버시 측면에서 해당 함수는 모든 당사자에게 동일한 공개 키를 출력할 것이며, (1) 프라이버시: 당사자들 사이에 비밀 정보 일부 데이터가 유출되지 않으며, (2) 정확성: 공개 키는 비밀 정보 일부들의 함수라는 서로 다른 비밀 정보 일부를 출력할 것입니다.
서명: 해당 단계에는 서명 생성 함수가 포함됩니다. 각 당사자의 입력값은 이전 단계(분산화된 키 생성)의 결과물로 생성된 비밀 정보 일부가 될 것입니다. 또한 모두에게 알려진 공개 입력값도 있으며, 이는 서명할 메시지입니다. 출력값은 디지털 서명이 되며, 프라이버시 특성은 연산 과정 중에 비밀 정보 일부가 유출되지 않도록 합니다.
- 검증: 검증 알고리즘은 대표적인 설정 그대로 유지됩니다. 단일 키 서명과 호환되기 위해서는 공용 키에 대한 지식을 갖고 있는 모두가 서명을 검증하고 승인할 수 있어야 합니다. 이는 정확히 블록체인 검증 노드가 하는 역할입니다.
임계치 서명 체계(TSS)는 이러한 분산화된 키 생성(DKG) 구성과 분산화된 임계치 서명 체계의 분산화된 서명에 우리가 부여한 이름입니다.
블록체인과 TSS의 결합
보다 자세한 설명을 위해 기존의 블록체인 설계에서 새 주소를 만드는 방법은 간단하게 기술하도록 하겠습니다. 간단히 말하자면, 개인 키를 생성한 다음 개인 키에서 공용 키를 연산하여 새 주소를 만들 수 있습니다. 최종적으로 공개 주소는 공개 키로부터 도출됩니다.
TSS를 사용하면 n명의 당사자가 공용 키를 공동으로 연산하고, 각 당사자는 개인 키의 비밀 정보 일부를 보유하고 있습니다(각 정보의 일부는 다른 당사자에게 공개되지 않음). 기존 시스템과 동일한 방식으로 공용 키로부터 공용 주소를 도출할 수 있으므로, 블록체인은 주소가 생성되는 방식에 영향을 미치지 않습니다. 이는 각 당사자가 개인 키의 한 부분만을 보유하고 있기 때문에, 개인 키가 더는 단일 장애점이 아니라는 장점이 있습니다.
트랜잭션에 서명을 할 때도 마찬가지입니다. 이 경우 한 당사자가 개인 키를 사용해 서명하는 대신, 다수의 당사자 사이에서 생성된 분산화된 서명을 생성할 수 있습니다. 따라서 각 당사자가 충분히 정직하게 행동하고 있는 한 유효한 서명을 생성할 수 있습니다. 우리는 다시 지역 연산(단일 장애점)에서 상호작용하는 것으로 전환했습니다.
분산화된 키 생성이 다양한 유형의 접근 구조를 허용하는 방식으로 이뤄질 수 있다는 점은 중요합니다. 일반적인 “t out of n” 설정은 보안을 손상시키지 않고 개인 키 관련 작업에서 최대 t의 임의의 실패를 극복할 수 있습니다.
TSS vs. 다중서명
달리 말하자면, 다중서명과 TSS는 모두 본질적으로 비슷한 목표를 달성하기 위한 것이지만, TSS는 오프체인 암호 방식을 사용하는 반면, 다중서명은 온체인에서 진행됩니다. 그러나 블록체인은 다중서명을 인코딩할 수 있는 방법을 필요로 하며, 이는 접근 구조(서명자 수)가 블록체인 상에 노출되기 때문에 개인 정보가 노출될 수 있습니다. 다중서명 트랜잭션 비용이 더 높기도 한데 이는 서로 다른 서명자에 대한 정보도 블록체인에서 전달되어야 하기 때문입니다.
TSS에서는 서명자의 세부 정부가 지속적인 트랜잭션 안에 모아져 비용을 절감시키고 프라이버시를 유지합니다. 반면, 다중서명은 비상호적일 수 있으며, 이는 서로 다른 서명자 간에 복잡한 통신 레이어를 실행하는 문제를 줄일 수 있습니다.
TSS vs. Shamir 비밀 정보 분산 체계
Shamir 비밀 정보 분산 체계(SSSS, Shamir secret sharing scheme)를 통해 개인 키를 사용하지 않는 동안 이를 여러 위치에 분산화된 방식으로 저장할 수 있습니다. SSSS와 TSS에는 두 가지 차이점이 있습니다.
키 생성: SSSS에서는 “딜러"라고 하는 단일 주체가 개인 키 비밀 정보 일부 생성을 담당합니다. 이는 키 생성 시 개인 키가 단일 위치에서 생성되고 딜러에 의해서 다른 위치로 배포됨을 의미합니다. TSS에서는 역할이 분산되어 있으므로 딜러가 존재하지 않으며, 전체 개인 키가 절대로 단일한 위치에 있는 경우가 없습니다.
서명: SSSS에서는 서명을 위해 각 당사자가 전체 개인 키를 재구성해야 하며, 이는 서명이 요구될 때마다 단일 장애점으로 이어집니다. TSS에서 서명은 비밀 정보 일부를 전혀 재구성하지 않고 분산화된 방식으로 서명이 이뤄집니다.
보시다시피 TSS에서는 개인 키(시스템의 보안을 나타냄)가 단일한 위치에 있는 경우가 절대로 없습니다.
임계치 지갑
임계치 지갑에서는 상황이 보다 복잡합니다. 위계적 결정 구조를 생성할 수 있지만 분산화된 방식인 MPC 프로토콜을 통한 연산을 거쳐야 합니다. 당사자들은 어떤 키가 다음으로 사용될 것인지 공동으로 결정해야 합니다. 즉, 각 당사자는 각자의 시드 구문을 보유하게 됩니다. 시드 구문은 개별적으로 생성되며 결코 조합되지 않기 때문에, 한 당사자가 자신의 시드에서 개인 키를 추출할 수 없습니다.
TSS 기반 지갑은 훌륭한 보안 기능을 갖고 있으며 상응하는 공용 키와 블록체인 주소를 변경하지 않고도 개인 키를 순환시킬 수 있습니다. 개인 키 순환은 사전 비밀 공유라고도 알려져 있는데, 이는 또 다른 MPC 프로토콜로 비밀 정보 일부를 입력값으로 하여 일련의 새로운 비밀 정보 일부를 출력하는 것입니다. 이전 비밀 정보 일부는 삭제될 수 있으며, 새롭게 생성된 것은 동일한 방식으로 사용할 수 있습니다.
해당 구조는 보안에 시간이라는 차원을 추가하므로, 공격자가 임계치 지갑을 공격하기 위해서는 동시에 여러 위치에 있어야 함을 의미합니다. 비밀 정보 공유 전후로 순환을 결합시키면 공격자가 서명을 위조하는 것을 막을 수 있습니다.
이러한 유형의 지갑의 단점은 시드 구문이 없어 단일 키 지갑 시스템과 호환되지 않는다는 것입니다. 따라서 어떤 당사자가 비밀 정보 일부를 보유할지 고려하는 것이 중요합니다.
몇 가지 가능한 아키텍처들이 있습니다.
아웃소싱 TSS: 사용자는 서버 "n"이 연산을 대신 진행하도록 허용합니다. 자산의 소유자가 아니라 인센티브를 제공받고 보안 레이어를 제공하는 서비스 공급업체에 키 생성, 관리, 서명을 효과적으로 아웃소싱합니다.
다수의 장치 사용: 사용자는 소유한 장치 간에 TSS를 진행합니다. 예를 들어, 한 당사자는 일부 IoT 기기, 다른 당사자는 모바일 기기, 또 다른 당사자는 노트북 등이 됩니다.
하이브리드: TSS는 외부 서비스 공급자에 의해 제어되는 당사자와 사용자 소유 기기의 당사자들을 통해 진행됩니다.
첫 번째 방법은 사용자 클라이언트 측이 복잡한 TSS 연산을 하지 않아도 되게 합니다. 반면 서비스 제공자가 사용자의 자산을 훔치거나 이에 공모(서비스 공급자가 동시에 공격받지 않는다고 충분히 가정할 수 있지만 실제로는 그럴 수 있음)할 수 있습니다.
두 번째 방법은 사용자에게 완전한 통제권을 부여하지만 여러 장치가 온라인 상태에서 TSS 연산에 참여해야 하기 때문에 트랜잭션을 수행하는 것이 번거롭습니다.
세 번째 방법은 사용자의 승인 없이는 트랜잭션을 수행할 수 없게 하면서도, 사용자가 쉽고 빠르게 트랜잭션을 수행할 수 있게 하기 때문에 가장 좋은 방법으로 간주됩니다.
TSS와 스마트 콘트랙트
위험 요소
마치며
본 아티클에서는 블록체인 사용 방식을 크게 변화시킬 수 있는 대단히 흥미로운 암호학의 원시인 임계치 서명 체계(TSS)의 기본을 소개 했습니다.
추가적인 참고자료