# 커밋먼트 스킴 (Commitment Scheme)

커밋먼트 스킴(Commitment Scheme)은 어떤 값을 숨긴 채 먼저 '확정'해 두고, 나중에 그 값을 공개(open)해 확인시키는 암호 기법입니다. 공개 전에는 내용을 알 수 없어야 하고(은닉성, hiding), 일단 확정한 뒤에는 다른 값으로 바꿀 수 없어야(구속성, binding) 합니다. 영지식 증명, 전자 경매, 블록체인 프로토콜의 기본 부품입니다.

## 자세히 알아보기

커밋먼트는 두 단계로 이루어집니다. ① 커밋 단계: 값 m과 무작위 값 r로 c = Commit(m, r)을 계산해 상대에게 보냅니다. ② 공개 단계: 나중에 (m, r)을 공개하고, 상대는 Commit(m, r)이 c와 같은지 확인합니다. 가장 단순한 구현은 해시 커밋먼트 c = H(m ‖ r)입니다. r이 없으면 '예/아니오'처럼 후보가 적은 값은 전수 대입으로 쉽게 알아낼 수 있으므로, 충분히 긴 무작위 값이 필수입니다.

은닉성과 구속성은 동시에 '완전(무조건적)'일 수 없습니다. 페더슨 커밋먼트는 완전 은닉·계산적 구속이고, 해시 커밋먼트는 계산적 은닉·(충돌 저항 가정하의) 계산적 구속입니다. 용도에 따라 어느 쪽을 무조건적으로 보장할지 선택합니다.

고급 형태로는 여러 값을 한 번에 커밋하고 일부만 여는 벡터 커밋먼트(머클 트리가 대표적), 다항식을 커밋하고 특정 점의 값만 여는 다항식 커밋먼트(KZG, FRI, IPA)가 있습니다. 이들은 현대 SNARK·STARK의 핵심 구성 요소입니다.

커밋-공개 방식은 봉인 입찰 경매에도 쓰입니다. 입찰자는 먼저 입찰가의 커밋먼트만 제출하고 마감 후 일제히 공개하므로, 다른 사람의 입찰가를 보고 금액을 조정할 수 없습니다. 영지식 증명에서도 증명자가 먼저 중간값을 커밋하고, 검증자의 도전값을 받은 뒤 일부를 여는 구조가 반복됩니다.

## 블록체인·암호화폐에서는

블록 헤더의 머클 루트는 블록 안 모든 트랜잭션에 대한 커밋먼트로, SPV 지갑이 트랜잭션 포함 여부를 확인하는 근거입니다. Ethereum의 ENS 도메인 등록은 '커밋-공개(commit-reveal)' 절차를 써서 다른 사람이 원하는 이름을 보고 먼저 가로채는 프런트러닝을 막습니다. EIP-4844 블롭은 KZG 커밋먼트로, Monero의 금액은 페더슨 커밋먼트로 표현됩니다.

## 쉽게 말하면

답을 적은 쪽지를 봉인된 상자에 넣어 먼저 맡겨 두는 것입니다. 상자를 열기 전에는 아무도 답을 모르고, 맡긴 사람도 나중에 답을 바꿀 수 없습니다.

## 예시

가위바위보를 온라인으로 공정하게 하려면, 각자 H(선택 ‖ 무작위 값)을 먼저 공개한 뒤 둘 다 받았을 때 선택과 무작위 값을 공개합니다.

---
출처: https://achivx.kr/glossary/commitment-scheme-%EC%BB%A4%EB%B0%8B%EB%A8%BC%ED%8A%B8-%EC%8A%A4%ED%82%B4/ · ACHIVX 용어 사전 · 수정일 2026-10-20
