<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Jinwoo Lee on Medium]]></title>
        <description><![CDATA[Stories by Jinwoo Lee on Medium]]></description>
        <link>https://medium.com/@jinwoo0454?source=rss-3f566d05ae86------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*tIu76FoYnqQDAxqqNi6RgA.png</url>
            <title>Stories by Jinwoo Lee on Medium</title>
            <link>https://medium.com/@jinwoo0454?source=rss-3f566d05ae86------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 15 May 2026 15:45:35 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@jinwoo0454/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[ECDHE 및 Commit-Reveal Scheme]]></title>
            <link>https://medium.com/postech-dao/ecdhe-%EB%B0%8F-commit-reveal-scheme-e0f5b60265dd?source=rss-3f566d05ae86------2</link>
            <guid isPermaLink="false">https://medium.com/p/e0f5b60265dd</guid>
            <category><![CDATA[ecdh]]></category>
            <category><![CDATA[crypto]]></category>
            <category><![CDATA[commit-reveal]]></category>
            <dc:creator><![CDATA[Jinwoo Lee]]></dc:creator>
            <pubDate>Sun, 20 Jul 2025 15:56:30 GMT</pubDate>
            <atom:updated>2025-07-20T15:56:30.208Z</atom:updated>
            <content:encoded><![CDATA[<h3>Intro</h3><p>분산 애플리케이션과 현대 웹 보안 환경에서, 두 당사자가 비밀 통신 채널을 확립하는 것은 매우 중요합니다. 타원곡선 디피-헬만 세션 키 교환(Elliptic Curve Diffie–Hellman Ephemeral, ECDHE)은 신뢰할 수 없는 네트워크 상에서도 shared secret을 생성할 수 있는 프로토콜로, TLS(HTTPS)나 VPN과 같은 산업 표준에 널리 활용됩니다. 여기에 commit-reveal scheme을 결합하면, 투표 시스템이나 예측 시장, Web3Auth와 같은 서비스에서 변경 방지성과 은닉성을 동시에 갖춘 값(commitment)을 구현할 수 있습니다.</p><p>이 글에서는 다음을 다룹니다:</p><ol><li>ECDHE의 핵심 원리와 대칭 암호화 키 도출 과정</li><li>Commite-Reveal Scheme의 동작 메커니즘</li><li>Web3Auth가 ECDHE와 커밋-리빌을 이용해 민감한 자격 증명(oauth_token)을 안전하게 전송하는 방법</li><li>Commit-Reveal과 인증서 기반 서명을 통한 MITM(중간자) 공격 방어 기법</li></ol><h3>1. Elliptic Curve Diffie-Hellman Ephemeral Key Exchange(ECDHE)</h3><h3>1.1 Core Concept</h3><p>ECDHE는 앨리스(Alice)와 밥(Bob)이 각각 ephemeral key pair를 생성한 뒤, 공개키를 교환하여 공유 비밀(shared secret)을 계산하는 방식입니다. 이 공유 비밀은 이후 세션 동안 대칭 암호화 키로 사용됩니다.</p><ul><li><strong>Ephemeral</strong>: 매 세션마다 새로운 키 쌍을 생성하므로, 장기 키가 유출되더라도 과거 세션의 보안은 유지(forward secrecy)됩니다.</li></ul><h3>1.2 Public parameters</h3><ol><li><strong>타원곡선 E</strong> (예: Curve25519)</li><li><strong>기준점 G</strong> (base point)</li><li><strong>Finite Field의 소수 p</strong></li><li><strong>키 도출 함수(KDF, 예: HKDF)</strong></li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hBx6IdTtBj_BtYFlubFa8g.png" /><figcaption>Reference: <a href="https://www.oreilly.com/library/view/ssl-complete-guide/9781839211508/video5_19.html">https://www.oreilly.com/library/view/ssl-complete-guide/9781839211508/video5_19.html</a></figcaption></figure><h3>1.3 Key-gen</h3><ul><li><strong>Alice</strong></li><li>비밀키: 무작위 스칼라 <em>a</em></li><li>공개키: <em>A</em> = a × G</li><li><strong>밥(Bob)</strong></li><li>비밀키: 무작위 스칼라 <em>b</em></li><li>공개키: <em>B</em> = b × G</li></ul><p>각각 자신의 비밀키는 비공개로 보관하고, 공개키만 교환합니다.</p><h3>1.4 Shared Secret</h3><ol><li>Alice: <em>S</em> = a × B = a × (b × G) = ab × G</li><li>Bob: <em>S</em> = b × A = b × (a × G) = ab × G</li></ol><p>두 당사자는 동일한 점 S를 얻게 됩니다. 이 값을 HKDF에 입력해 AES-GCM이나 ChaCha20-Poly1305에 필요한 256비트 대칭 키를 도출합니다.</p><h3>2. Commit-Reveal Scheme</h3><p>Commit-Reveal은 먼저 값을 숨긴 상태로 커밋(commit)하고, 이후 원본 값을 공개(reveal)하여 무결성을 검증하는 두 단계 방식입니다.</p><h3>2.1 Commit</h3><pre>commitment = Hash(value || nonce)</pre><ul><li><strong>value</strong>: 숨기고 싶은 값 (예: 투표 선택, 난수 시드, oauth_token 등)</li><li><strong>nonce</strong>: 임의의 랜덤값 (동일 value에 대해 다른 commitment 생성)</li></ul><p>커밋 단계에서는 commitment만 공개하므로, 실제 값은 보호되며 이후 변경이 불가능(binding)합니다.</p><h3>2.2 Reveal</h3><ol><li><strong>value</strong>와 <strong>nonce</strong>를 공개(reveal)</li><li>검증자(verifier)는 다시 Hash(value || nonce)를 계산해, 최초 커밋한 commitment와 일치하는지 검사합니다.</li></ol><p><strong>응용 사례</strong>: 투표 시스템, 공정한 난수 생성, 민감 데이터(토큰) 안전 전송 등</p><h3>3. Web3Auth 통합: ECDHE + Commit-Reveal</h3><p>Web3Auth는 다수의 위원회(committee)에게 신뢰를 분산시키는 구조를 갖습니다. 사용자의 Google OAuth token을 안전하게 위원회에 전달하기 위해, 매 세션마다 ECDHE로 세션 키를 생성하고 Commit-Reveal을 적용합니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/896/0*cPzLcrg255ctry5k.jpg" /><figcaption>Reference: <a href="https://www.gate.com/learn/articles/what-is-a-commit-reveal-scheme-in-blockchain/862">https://www.gate.com/learn/articles/what-is-a-commit-reveal-scheme-in-blockchain/862</a></figcaption></figure><h3>3.1 Initial Setup</h3><ul><li><strong>사용자(Web3Auth SDK)</strong>: 세션마다 ephemeral keypair(<em>sk_a</em>, <em>pk_a</em>) 생성</li><li><strong>위원회 멤버</strong>: keypair (<em>sk_b</em>, <em>pk_b</em>) 및 public key에 대한 디지털 서명 보유</li></ul><h3>3.2 Commit(User → Committe)</h3><ol><li>사용자는 h_id = Hash(id_token)과 pk_a를 위원회에 전송</li><li>위원회는 S = sk_b × pk_a로 공유 비밀을 계산하고, HKDF를 통해 대칭 키 K를 도출</li><li>h_id에 대한 커밋을 레지스트리에 기록하여, 동일 토큰 반복 제출 방지</li></ol><blockquote><strong><em>보안 장점</em></strong><em>: 커밋 단계에서는 토큰 해시만 공개되므로, id_token 실질 값은 보호됩니다.</em></blockquote><h3>3.3 Reveal (User → Committee)</h3><ol><li>사용자는 S = sk_a × pk_b로 동일한 K를 도출</li><li>AES-GCM을 사용해 id_token을 enc(oauth_token)으로 암호화</li><li>{enc(oauth_token), pk_a}를 위원회에 전송</li></ol><p>위원회는 K로 복호화 후 토큰을 검증하고, 검증이 완료되면 자체 액세스 토큰을 사용자에게 발급합니다.</p><h3>4. Man In The Middle Attack(MITM)</h3><p>중간자 공격자는 공개키를 가로채 변조해, 양측 통신을 감청하여 암호화된 메시지를 알아낼 수 있습니다.</p><h3>4.1 Core Concept</h3><ul><li><strong>Mallory</strong>가 pk_a 대신 자신의 pk_m을 전달하면,</li><li>Bob은 K_b = sk_b × pk_m을 계산</li><li>Mallory는 K_m = sk_m × pk_b를 계산</li><li>Mallory는 밥의 메시지를 복호화 후 다시 암호화해 앨리스로 전달</li></ul><p><strong>방어 기법</strong>:</p><ol><li><strong>인증서와 디지털 서명</strong>: 위원회 공개키(pk_b)에 대한 CA 서명을 검증</li><li><strong>사전 공유된 공개키</strong>: 오프라인 경로로 신뢰된 공개키 배포</li></ol><p>이렇게 ECDHE, Commit-Reveal, 인증서 또는 서명을 조합하면 기밀성과 무결성을 모두 확보할 수 있습니다.</p><h3>Conclusion</h3><ul><li><strong>ECDHE</strong>: forward secrecy 제공</li><li>Commit-Reveal Scheme: 값 은닉 및 변경 방지</li><li><strong>인증서 or 서명</strong>: MITM 공격 방어</li></ul><p>이 세 가지 기술을 적절히 결합하면, 다양한 분산 애플리케이션에서 안전하게 인증 데이터를 교환할 수 있습니다.</p><h3>References</h3><p>Web3Auth Docs: <a href="https://web3auth.io/docs">https://web3auth.io/docs</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e0f5b60265dd" width="1" height="1" alt=""><hr><p><a href="https://medium.com/postech-dao/ecdhe-%EB%B0%8F-commit-reveal-scheme-e0f5b60265dd">ECDHE 및 Commit-Reveal Scheme</a> was originally published in <a href="https://medium.com/postech-dao">POSTECH DAO</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>