MPC 스터디 공유

  • 주형 영찬 회문 창영
  • 3주간 진행
  • 각자 알고리즘 논문 조사

각 솔루션별 mpc 알고리즘

  • fordefi - DKLs 23
  • Fireblocks - MPC CMP(-> MPC BAM)
  • ZenGo - Lindell18
  • Coinbase Wallet - DKLs18, FROST
  • Binance Custody - GG19
  • 레퍼런스 1, 2, 3

각 솔루션별 mpc 알고리즘(스터디원)

  • fordefi - DKLs 23
  • Fireblocks - MPC CMP(-> MPC BAM) (창영)
  • ZenGo - Lindell18 (주형)
  • Coinbase Wallet - DKLs18 (주형), FROST (영찬)
  • Binance Custody - GG19 (회문)
  • 레퍼런스 1, 2, 3

시작 전 공유

  • 빠르게 수식을 살펴봅니다.
  • 질문은 나중에 모아서 받을게요.
  • 적당히 내용을 축약해서 설명하겠습니다.

발단 > 전개 > 위기 > 절정 > 결말

  • 발단: 기본 개념 (비밀키, 공개키, 타원곡선)
  • 전개: 기초 기술 (디피-헬만, Schnorr/ECDSA 서명)
  • 위기: ECDSA MPC 어려움 (곱셈 연산의 어려움)
  • 절정: 실제 프로토콜 (DKLs18, OT)
  • 결말: 요약 및 질의응답

발단. 비밀키와 공개키

  • 비밀키: 소유자만 아는 정보
  • 공개키: 모두에게 공개하는 정보
  • 보통 비밀키 알면 공개키 생성 가능

발단. 비밀키와 공개키

  • 비밀키로 서명 생성
  • 공개키로 서명 검증
  • 서명: 비밀키 소유자가 인정한 사실. 위조 불가

발단. 비밀키와 공개키, 그리고 지갑

  • 지갑 주소 = 공개키 or
  • 비밀키로 트랜잭션을 서명할 수 있음
  • 트랜잭션 = 자산 소유자 alice가 bob에게 1eth 보냄

발단. MPC TSS

  • MPC = Multi Parti Computation
  • 여러 참여자가 자신의 비밀 정보를 숨기면서 함께 결과물 만들기

발단. MPC TSS

  • MPC = Multi Parti Computation
  • 여러 참여자가 자신의 비밀 정보를 숨기면서 함께 결과물 만들기
  • TSS = Threshold Signature Scheme
  • 여러 참여자가 협력하여 함께 하나의 서명을 만드는 방법

발단. MPC TSS

  • MPC = Multi Parti Computation
  • 여러 참여자가 자신의 비밀 정보를 숨기면서 함께 결과물 만들기
  • TSS = Threshold Signature Scheme
  • 여러 참여자가 협력하여 함께 하나의 서명을 만드는 방법
  • MPC가 더 넓은 개념. TSS는 사실상 항상 MPC

발단. MPC TSS

  • MPC = Multi Parti Computation
  • TSS = Threshold Signature Scheme
  • MPC TSS = 여러 참여자가 함께 하나의 서명을 만드는 방법.
  • 5명중 3명이 승인했을 때만 지갑 서명을 만들 수 있게 하기
  • 키 조각을 여러 인프라에 나누어놓고, 모든 인프라가 해킹당해야지만 키가 해킹당하는 상황 만들기

발단. elliptic curve

elliptic curve from https://masteringethereum.xyz/chapter_4.html

발단. elliptic curve에서 점의 덧셈

elliptic curve add from https://masteringethereum.xyz/chapter_4.html

발단. elliptic curve에서 점의 상수 곱

  • 임의의 점 G
  • 이제 임의의 에 대해 구할 수 있음

발단. elliptic curve 위의 비밀키와 공개키

  • 비밀키는 임의의 상수
  • 공개키
  • G는 커브마다 다르게 정해진 점
  • 오늘 발표에서 앞으로 대문사 알파벳 하나가 나오면 항상 curve 위의 점
  • 예) , , ,

발단 요약

  • 비밀키(): 나만 아는 숫자 (상수)
  • 공개키(): 타원곡선 위의 점
  • 타원곡선: 점의 덧셈과 상수 곱 연산이 정의된 곡선
  • 서명: 비밀키를 이용해 생성, 공개키로 검증
  • 지갑: 공개키로부터 생성된 주소
  • MPC TSS: 여러 명이 비밀키 조각을 나누어 갖고 협력하여 하나의 서명을 생성하는 기술

전개. elliptic 디피 헬만 키교환

diffie-hellman

  • alice 가 a 와 생성
  • bob 이 b와 생성
  • alicebob 이 서로 A와 B 공유
  • alice 는 B 를 받아서 생성
  • bob 은 A를 받아서 생성
  • 둘은 둘만 아는 공유 정보() 생성

전개. schnorr 서명

  • eddsa도 schnorr의 일종
  • 비밀키 공개키
  • 랜덤한 고르기

전개. schnorr 서명

  • eddsa도 schnorr의 일종
  • 비밀키 공개키
  • 랜덤한 고르기
  • 대충

전개. schnorr 대충 이해하기

  • k = 랜덤값, x = 비밀키
  • 를 공개.
  • 서명 =
    • x와 k를 아는 사람만 만들 수 있음.

전개. ecdsa 서명

  • 비밀키 공개키
  • 랜덤한 생성

전개. ecdsa 서명

  • 비밀키 공개키
  • 랜덤한 생성
  • 대충

전개. ecdsa 서명 대충 이해

  • ,
  • ,
  • 이 x 에 곱해지는 거 기억해주세요.

전개 요약

  • Diffie Hellman 키교환 =
  • Schnorr 서명 =
  • ECDSA 서명=

위기. schnorr는 서명의 덧셈이 가능

  • 는 공개된 값
  • 서명을 더하는 것 만으로도 2 of 2 TSS를 구현할 수 있음

위기. ECDSA는 덧셈이 불가능

  • 를 구할 방법이 없음.

절정. DKLs18

  • 이제 Alice와 Bob이 서로의 비밀 정보를 노출시키지 않고 서로 곱하는 방법만 있으면 해결

절정. OT(oblivious transfer)

  • alice 를 생성
  • bob 은 둘 중 하나를 고름. 이를 라고 함
  • alicebob 이 무얼 가져갔는지 모름
  • bob 은 자신이 갖지 못한 것이 무엇인지 모름

절정. OT 변형

임의의 값 와 0또는 1인 값 를 곱하는 걸 OT로 진행

  • alice: 랜덤한 생성
  • alice: ,
  • bob 에 따라 선택
    • if then
    • if then
  • 서로 자신이 가진 를 숨기고 이들의 곱을 구함

절정. OT 사용해서 임의의 수 곱셈

절정. OT 사용해서 임의의 수 곱셈

  • 비트 하나의 곱을 n번 해서 더하면 n비트의 곱

절정. Elliptic Curve를 활용한 OT 예시 - 1

  • Alice가 를 만들고 를 Bob에게 전달
  • Bob이 랜덤으로 , 생성. Alice에게 전달
  • Alice는 계산.
  • 여기까지 Diffie hellma의 변종. 혹은 둘 중 하나가

절정. Elliptic Curve를 활용한 OT 예시 - 2

  • Alice가 을 계산하여 Bob에게 전달
  • Bob은 를 복호화해서 를 얻음
  • 정리
    • Alice는 을 생성함
    • Bob은 하나만 알게됨
    • Alice는 Bob이 뭘 가졌는지 모름.

결말. DKLs18 요약

  • ECDSA 서명을 하기 위해서 곱셈을 MPC로 해야함
  • OT 기반 곱셈으로 이를 해결.

결말. DKLs18 vs DKLs23

  • 같은 사람들이 만들었지만 좀 다름
  • t of n 지원
  • 통신을 3라운드만 하면 되게 바꿈.
  • 서명 전에 미리 준비하게 만듬.