Vitalik이 MPC에 대해 편향된 평가: MPC 지갑 키는 과연 철회할 수 있을까?
저자: Kane Wang, Safeheron 파트너 & 기술 VP
최근 이더리움 창립자 비탈릭은 MPC 지갑과 스마트 계약 지갑의 장단점에 대한 의견을 표현했습니다. 아래 그림을 참조하세요:
비탈릭은 MPC 기반 EOA 지갑이 근본적인 결함이 있다고 생각하며, 키를 철회할 수 없기 때문에 재분할(re-sharing)로도 이 문제를 해결할 수 없다고 주장했습니다. 재분할 후에도 이전의 분할 소유자는 여전히 개인 키를 복구할 수 있으므로 스마트 계약 지갑이 유일한 선택이라고 합니다.
이로 인해 커뮤니티에서는 MPC 지갑과 스마트 계약 지갑에 대한 격렬한 논의가 다시 일어났습니다. 글을 작성하기 전까지 몇몇 친구들이 비탈릭의 MPC에 대한 부정적인 평가에 대한 제 의견을 물어보기도 했습니다. 개인적으로 이 문제의 논의는 결국 입장 논쟁으로 변모했으며, 통일된 응용 시나리오와 비즈니스 시나리오 전제가 없는 논의는 옳고 그름이 없습니다.
서로 긴장 상태로 가기보다는 이번 논쟁의 핵심을 먼저 정리하는 것이 좋습니다: 비탈릭이 지적한 revoke keys란 무엇이며, 어떤 상황에 적용될 수 있을까요? MPC 지갑의 개인 키 분할 관리 메커니즘과 스마트 계약 지갑의 개인 키 관리 메커니즘은 어떤 차이가 있을까요?
(1) 개인 키 철회(revoke keys) 작업이란
예를 들어, 스마트 계약 지갑을 사용할 때, 지갑 주소가 Address1이라고 가정해 보겠습니다. 사용자 A는 개인 키 SKA를 사용하고, 사용자 B는 SKB를 사용하여 해당 스마트 계약 지갑을 관리합니다. 지갑에서 송금할 때는 사용자 A와 사용자 B가 동시에 권한을 부여해야 합니다.
사용자가 지갑의 관리 권한을 변경하고 싶다면, 예를 들어 원래 사용자 A와 B가 해당 지갑을 관리하고 있었는데, 이제는 지갑 주소를 변경하지 않고 사용자 C와 D로 변경하고 사용자 A와 B의 관리 권한을 철회하고자 할 때, 스마트 계약을 통해 사용자 A와 B의 개인 키 SKA와 SKB에 대한 관리 권한을 철회하고, 해당 관리 권한을 사용자 C와 D가 사용하는 개인 키 SKC와 SKD로 수정할 수 있습니다.
개인 키 SKA와 SKB는 여전히 개인 키로서 서명할 수 있으며, 철회될 수 없습니다. 오히려 스마트 계약의 프로그래밍 특성을 통해 송금 권한을 검증하는 방식을 개인 키 SKA와 SKB에서 SKC와 SKD로 변경합니다. 지갑 사용자의 관점에서 보면, 개인 키 SKA와 SKB가 계약 지갑의 관리 권한을 철회당했다고 볼 수 있습니다.
(2) MPC의 개인 키 분할 재분할 및 개인 키 분할 새로 고침이란
안전한 다자 계산(Secure Multi-Party Computation, MPC/SMPC)은 특정 블록체인과 무관한 오프체인 암호학 기술의 일종입니다. 서명 알고리즘 측면에서 MPC 프로토콜은 t/n 다중 서명을 수행할 수 있습니다. 다자 계산 방식을 통해 개인 키 생성, 사용, 새로 고침, 재분할 등의 과정에서 키의 사용 가능성을 보장하지만, 키는 보이지 않게 됩니다. 따라서 MPC는 EOA를 직접 관리할 수 있으며, 스마트 계약 지갑과 결합하여 자산을 관리할 수 있습니다.
간단히 말해, MPC를 통해 지갑을 관리할 때는 먼저 개인 키 분할을 분산 생성해야 합니다. 예를 들어 2/2의 경우, 양측이 각각 개인 키 분할 KeyShareA와 KeyShareB를 생성하고, 해당 지갑 주소는 Address2입니다.
송금 시 분산 서명을 사용하여 KeyShareA와 KeyShareB를 사용해 서명 프로토콜을 실행하고, 지갑 송금을 승인합니다.
개인 키 분할 새로 고침은 지갑 주소 Address2를 변경하지 않고, 이 그룹의 개인 키 분할 KeyShareA와 KeyShareB가 분산 새로 고침 프로토콜을 거친 후, 개인 키 분할을 보유한 양측이 각각 새로운 개인 키 분할 KeyShareA'와 KeyShareB'를 얻는 것을 의미합니다. 이후 KeyShareA'와 KeyShareB'를 사용하여 지갑 송금을 승인할 수 있습니다. 그러나 KeyShareA와 KeyShareB도 여전히 사용할 수 있습니다.
개인 키 분할 재분할(re-sharing)은 새로 고침과 유사하지만, 새로 고침과 다른 점은 문턱을 수정할 수 있다는 것입니다. 예를 들어 2/2에 해당하는 개인 키 분할 KeyShareA와 KeyShareB가 재분할 프로토콜을 실행한 후, 문턱이 3/3으로 변경됩니다. 양측과 새로운 참여자가 각각 새로운 개인 키 분할 KeyShareA', KeyShareB' 및 KeyShareC'를 얻으며, 새로운 개인 키 분할 그룹은 세 개의 개인 키 분할이 함께 분산 서명 프로토콜을 실행해야 서명할 수 있습니다. 그러나 KeyShareA와 KeyShare_B는 여전히 2/2 문턱으로 사용할 수 있습니다.
주목할 점은 위의 네 과정에서 원래 개인 키는 수학적 의미에서만 존재하며, 모든 과정에서 실제로 나타나지 않으며, 각 당사자는 다른 참여자의 개인 키 분할을 얻을 수 없다는 것입니다.
(3) MPC 지갑이 어떤 상황에서 키를 철회할 수 없는가
먼저 MPC 암호학 프로토콜과 MPC 지갑은 두 가지 개념이라는 점을 명확히 해야 합니다. MPC 지갑은 키 분할 분산 및 문턱 관리 메커니즘 + MPC 암호학 프로토콜을 통해 지갑을 구성합니다. 반면 스마트 계약 지갑은 프로그래밍 가능한 스마트 계약을 사용하여 개인 키 관리 메커니즘 + 서명 알고리즘을 통해 지갑을 구성한다고 이해할 수 있습니다. 또한 스마트 계약에서 사용하는 서명 알고리즘은 단일 개인 키 서명 알고리즘일 수도 있고, MPC 기반의 문턱 서명 알고리즘일 수도 있습니다.
MPC-TSS 프로토콜에 대해, 암호학적 특성으로 인해 두 번째 질문에서 설명한 재분할 및 새로 고침 문제와 같이, 재분할 및 새로 고침 후에도 기존의 개인 키 분할 KeyShareA와 KeyShareB는 여전히 사용할 수 있습니다. MPC 프로토콜 측면에서 각 개인 키 분할 그룹은 철회할 수 없습니다. 이는 첫 번째 질문에서 스마트 계약 지갑의 검증 방식이 개인 키 SKA와 SKB에서 개인 키 SKC와 SKD로 전환된 것과 유사합니다. 암호학적 측면에서 개인 키 SKA와 SKB는 여전히 사용할 수 있으며, 철회할 수 없습니다.
그렇다면 어떤 경우에 MPC 지갑이 키를 철회할 수 없을까요? 예를 들어, MPC 지갑의 문턱이 2/2로 설계되어 있고, 관리 방식이 사용자 A와 사용자 B가 관리하며 각각 KeyShareA와 KeyShareB를 보유하고 있다고 가정해 보겠습니다. 이 지갑의 관리 권한을 변경하려면 MPC 새로 고침/재분할 프로토콜을 통해 사용자 C와 사용자 D가 KeyShareA'와 KeyShareB'를 얻습니다. 새로 고침과 재분할이 이루어졌지만, 사용자 C와 사용자 D가 지갑을 관리할 수 있게 되더라도, 지갑을 사용하는 관점에서 보면 사용자 A와 사용자 B는 여전히 이전의 분할 소유자로서 지갑을 관리할 수 있으며, 즉 이 MPC 지갑은 키를 철회할 수 없습니다.
(4) MPC 지갑이 어떤 상황에서 키를 철회할 수 있는가
개인 지갑 Zengo를 예로 들면, 기본 서명 문턱이 2/2이며, 사용자는 개인 키 분할 KeyShareA를 보유하고 Zengo는 개인 키 분할 KeyShareB를 보유합니다. 고객이 자신의 개인 키 분할 KeyShareA가 도난당했다고 의심하는 경우, 이론적으로 지갑 주소를 변경하지 않고 Zengo와 키 새로 고침을 요청할 수 있습니다. 양측은 각각 KeyShareA'와 KeyShareB'를 얻고, 새로 고침이 성공하면 Zengo는 KeyShareB를 물리적으로 삭제하고 KeyShareB를 사용하여 후속 서명에 참여하는 것을 거부하며, KeyShareB'만 사용하고 사용자는 KeyShareA'를 사용합니다. 지갑 사용자의 관점에서 보면, KeyShareA와 KeyShareB'는 올바른 서명을 계산할 수 없으므로 이 시점에서 공격자가 도난당한 KeyShareA는 이미 철회된 것입니다.
기업 지갑 Safeheron을 예로 들면, 기본 서명 문턱이 3/3이며, 구성원 1이 서명할 때 개인 키 분할은 구성원의 로컬 모바일 장치에 있는 KeyShareA, Safeheron 클라우드의 신뢰할 수 있는 컴퓨팅 환경에 있는 KeyShareB, 신뢰할 수 있는 제3자 클라우드의 신뢰할 수 있는 컴퓨팅 환경에 있는 KeyShareC로 분산됩니다. 구성원 1이 자신의 개인 키 분할 KeyShareA가 도난당했다고 의심하는 경우, 지갑 주소를 변경하지 않고 클라우드와 키 새로 고침을 요청할 수 있습니다. Zengo와 유사한 상황에서 새로 고침이 성공하면 세 당사자는 각각 새로운 개인 키 분할 KeyShareA', KeyShareB' 및 KeyShareC'를 얻고, 클라우드의 신뢰할 수 있는 실행 환경에서 KeyShareB와 KeyShareC를 물리적으로 삭제합니다. 이 시점에서 지갑 사용자의 관점에서 KeyShareA는 철회된 것입니다.
기업이 관리 과정에서 구성원 1을 구성원 2로 변경하여 자산을 공동 관리해야 하는 경우, 이때 클라우드의 신뢰할 수 있는 실행 환경은 구성원 1에 해당하는 두 개의 개인 키 분할 KeyShareB와 KeyShareC를 삭제하고, 구성원 2를 추가한 후 팀 생성자는 구성원 2를 위해 새로운 개인 키 분할 KeyShareA2, KeyShareB2 및 KeyShareC2를 활성화합니다. 구성원 2의 개인 키 분산 방식은 구성원 1과 동일합니다. 이 시점에서 지갑 사용자의 관점에서 구성원 1의 KeyShareA가 철회되고, 구성원 2가 KeyShare_A2를 사용하여 팀 자산 관리에 참여하게 됩니다.
요약
이번 논의의 쟁점이 정리된 후, 비탈릭의 답변을 이해하는 것이 상대적으로 쉬워집니다. 개인적으로 위의 세 번째 질문에서 제시한 상황에서 비탈릭의 의견은 문제가 없지만, 비탈릭의 답변은 편향적입니다. 답변 자체로는 모든 MPC 지갑이 사용 시 키를 철회할 수 없는 것은 아니며, 다양한 MPC 지갑 솔루션도 차이가 있습니다. MPC 지갑과 스마트 계약 지갑이 해결하는 문제의 초점도 다릅니다. MPC 지갑은 다중 체인에서의 일반적인 다중 서명 자산 안전 관리 문제를 해결하는 데 더 중점을 둡니다.
또한, MPC 지갑과 스마트 계약 지갑은 대립 관계가 아니며, 오프체인 MPC와 온체인 스마트 계약 지갑의 장점을 결합하여 앞으로 많은 혁신적인 MPC + 스마트 계약 제품과 솔루션을 볼 수 있을 것이라고 믿습니다.