최근 블로그가 뜸했는데..지갑을 개발하는 중이다.
기존 지갑 개발하고 있는 팀에 합류를 하게 되어 새로운 기술을 많이 접하고 있는 요즘이다.
크게 총 두가지의 개념을 지갑을 통해 접하고 있으며 첫번째 개념은 MPC 두번째 개념은 계정추상화 AA이다.
이번 포스팅에서는 MPC에 대한 전반적인 것을 살펴보고 다음 포스팅에서는 MPC를 활용하여 구축한 lit protocol에 대해 알아보고자 한다.
MPC 다자간 연산 (Multi-party computation)
여러 당사자가 개별입력을 공개하지 않고 결합된 데이터를 사용하여 연산을 수행 할수있도록 하는 암호화 도구이다.
이 말을 쉽게 풀어 말하자면!
설날 새뱃돈을 받은 친척들끼리 저녁 밥을 먹으러 갔을 때 새뱃돈을 가장 많이 받은 친척이 저녁 밥을 사기로 해보자
이때 서로가 받은 새뱃돈을 공개하지 않고 가장 많이 받은 친척을 골라내는 방식을 MPC 즉, 다자간 연산이라고 한다.
MPC 사용 사례
비밀 경매 : 경매 참가자들이 동시에 제출한 각 가격을 완전히 비공개 상태로 유지하고 낙찰 받을 참가자를 선택 할수 있다.
개인정보 관련된 연구 : 개인의 민감한 개인 정보를 연구자에게 공유하지 않고 개인 데이터를 안전하게 모아 연구를 진행 할 수 있다.
TSS vs SSS
TSS (Threshold Share Scheme)
한 사람이 민감한 정보(개인키)를 완전히 제어할 수없도록 민감한 정보(개인키)를 만들기 위한 독립적으로 보유한 Share를 만들고 이 Share를 통해 민감한 정보(개인키)를 생성해내는 암호화 체계이다.
SSS (Shamir Secret Sharing)
민감한 정보(개인키)를 부분 즉, 조각으로 나누고 민감한 정보(개인키)가 필요할 때 단일 시스템이 조각을 재구성 하여 사용하는 암호화 체계이다.
TSS vs SSS
두 방식의 차이는 민감한 정보 즉, 개인키를 재구성 할 때 차이나게 된다. SSS 같은 경우 단일 시스템이라는 단일 실패 지점이 존재하게 된다.
개인키와 MPC
지갑의 UX를 개선하기 위해 많은 노력이 이루어지고 있고 이중 개인키를 관리하는 문제를 풀기 위해 다양한 기술을 언급하고 있다. 지금 까지 살펴본 MPC는 이러한 문제를 풀기 위한 가장 유력한 후보로 떠오르고 있다.
개인키를 관리하는 문제라는 것은 정확하게 어떤 것을 의미하는 것일까?
바로 ‘단일실패지점’이 이러한 문제의 핵심이다. 우리는 개인키를 잃어버리거나 해킹을 당했을 때 모든 통제권을 잃어버리게 된다. MPC는 다수가 하나의 개인키를 나누어 보관하게 도와주고 한명의 개인키 정보를 탈취 당했을 경우 다른 사람들의 데이터를 모두 알지 않는한 통제권을 넘기지 않기 때문에 단일실패지점이 사라지게 된다.
그렇다면 개인키는 MPC를 통해 어떤 방식으로 통제될까?
위에서 살펴본 SSS는 단일 시스템을 통해 개인키가 재구성되기 때문에 우리가 MPC로 풀고자 하는 단일실패지점이 그대로 남아있게 된다.
그렇기에 SSS가 아닌 TSS를 보통 사용하여 MPC를 구현한다.
TSS를 활용한 MPC 개인키 관리 솔루션은 다음과 같다.
한 사람이 개인키를 완전히 제어할 수없도록 개인키를 만들기 위한 독립적으로 보유한 Share를 만들고 이 Share를 통해 개인키를 생성해낸다.
개인키를 생성하기 위한 이러한 Share는 MPC의 프로토콜을 실행하는 노드간에 분산된다. 즉, 개인키는 존재 하지 않고 이를 제어하는 분산 Share만이 노드에 존재하게 된다.
즉, 이러한 방식은 분산화 된 노드가 Share를 통해 개인키를 생성하고 트랜잭션에 대한 서명을 생성 할수 있다.
이처럼 서명이 필요한 트랜잭션이 있을 경우 MPC 프로세스가 발동되고 각 노드가 분산된 쉐어만을 가지고 트랜잭션에 서명을 진행하게 된다.
결과적으로 단일실패지점은 없애면서 전통적인 개인키 서명 방식과 같은 효과를 누릴 수있다.
중앙화 MPC와 탈중앙화 MPC
노드의 중앙화 여부에 따라 중앙화 MPC와 탈중앙화 MPC로 나뉘게 되는데 중앙화 MPC는 오프체인 데이터 베이스에 중앙화 기관이 키와 관련된 정보를 보관하고 탈중앙화 MPC는 네트워크 위의 노드들이 키를 나눠서 보관한다.
다음 포스팅에서는 TSS를 활용한 탈중앙 MPC 프로토콜인 lit-protocol을 살펴보고자 한다!
'⛓️ Web3' 카테고리의 다른 글
Azuki Bobu의 ERC 6551 (0) | 2023.12.22 |
---|---|
Acount Abstraction (1) | 2023.12.19 |
솔리디티 문해력 특강_5강 (1) | 2023.09.19 |
솔리디티 문해력 특강_4강 (0) | 2023.09.17 |
마스터링 이더리움_Ch.4 암호학 (0) | 2023.09.15 |