ECDHE & Commit-Reveal Scheme

#cryptography #ecdhe #aes-gcm #web3auth #mpc

Original presentation by Jinwoo Lee on Jul 10, 2025

1. ECDHE (Elliptic Curve Diffie-Hellman Ephemeral)

기본적인 컨셉

Alice와 Bob이 각각 Key Pair를 생성하고 키 교환(Key Exchange)을 통해 둘만 아는 (대칭)암호화 키를 만들어 비밀 커뮤니케이션 채널을 만드는 것입니다. VPN이나 HTTPS(TLS)에 활용됩니다.

ECDHE Process

1.1. Initial Setup

Public Parameters:

1.2. Keygen

Alice의 키 생성:

Bob의 키 생성:

1.3. Key Exchange

1.4. Shared Secret 계산

Result: 둘 다 같은 값 SS를 얻습니다!

1.5. 공유 비밀로 대칭키 암호화 키 얻기

대칭키 암호화 관련

KDF (Key Derivation Function)의 역할

1.6. ECDHE란?

Ephemeral (일시적인)


2. Commit-Reveal Scheme 개요

2.1. 커밋(Commit) 단계

commitment = Hash(value || nonce)

2.2. 리빌(Reveal) 단계


3. Web3Auth에서의 활용

기본적인 컨셉

ECDHE로 유저(Web3Auth SDK)와 Committee 사이에 세션 키를 만들고, 이를 통해 Google OAuth Token을 Commit-Reveal Scheme으로 안전하게 Committee에 전달하여 인증합니다.

3.1. Commit

User(SDK) \rightarrow Committee Request

  1. User는 H(id_token)H(\text{id\_token})와 자신의 공개키 pkapk_a를 전송합니다.
  2. Committee는 받으려는 token의 해시값만 알 뿐, 실제 토큰은 알 수 없습니다.
    • 다른 Committee에게 토큰을 유출하거나 악용할 수 없습니다.
  3. User와 Committee는 ECDH를 수행합니다:
    • User 계산: S=ska×pkbS = sk_a \times pk_b
    • Committee 계산: S=skb×pkaS = sk_b \times pk_a
    • 이를 통해 공유 비밀 생성 후 대칭키 암호화 키 KK를 유도합니다.

Committee \rightarrow User Response (추측)

3.2. Reveal

User \rightarrow Committee Request

  1. User는 id_token을 키 KK로 암호화(AES-GCM)하여 전송합니다.
    • Enc(id_token)
  2. 이때 skask_a의 소유를 증명하는 서명 등을 함께 보낼 수 있습니다.

Committee \rightarrow User Response

  1. Committee는 Enc(id_token)KK로 복호화합니다.
  2. 복호화된 id_token을 검증합니다.
  3. 성공 시 Key Share를 발급할 수 있는 access_token을 지급하거나, Key Share를 암호화하여 전송합니다.

4. MITM (Man In The Middle) Attack

기본적인 컨셉

중간자 공격이라고 하며, Mallory(MM)가 Alice(AA)와 Bob(BB) 사이의 패킷을 가로채고, 가짜 공개키를 서로에게 보내 중간에서 메시지를 복호화/변조하는 공격입니다.

4.1. Process

Mallory (MM): 키 페어 skm,pkmsk_m, pk_m 생성.

A \rightarrow M \leftrightarrow B

  1. Alice는 Bob에게 pkapk_a를 보내려 하지만, Mallory가 가로채고 자신의 pkmpk_m을 Bob에게 보냅니다.
  2. Bob은 이를 Alice의 키로 착각하고 Shared Secret을 계산합니다.
    • Bob 계산: Sb=skb×pkmS_b = sk_b \times pk_m
  3. Bob이 메시지를 SbS_b로 암호화하여 보냅니다.
  4. Mallory는 SbS_b를 계산할 수 있습니다 (skm×pkbsk_m \times pk_b).
  5. Mallory는 메시지를 복호화(감청)합니다.

B \rightarrow M \leftrightarrow A

4.2. 방어 방법 (Prevention)

  1. 인증서 (Certificates): 신뢰할 수 있는 인증 기관(CA)이 서명한 인증서를 통해 공개키의 주인이 누구인지 검증합니다.
  2. 사전 검증: 공개키를 사전에 안전한 채널로 공유하거나, 디지털 서명을 통해 개인키 소유를 검증합니다.