
커밋먼트는 암호학에서 사용되는 중요한 개념으로, 특정 값이나 메시지에 '잠금'을 걸어 상대방에게 전달하고, 필요할 때만 그 내용을 공개할 수 있게 해주는 원시 요소(primitive)이다.
정의: 송신자가 메시지 m을 잠긴 상태로 수신자에게 보내면, 수신자는 상자 안의 내용을 알 수 없다. 송신자만이 나중에 '열쇠(opening information)'를 제공하여 메시지를 공개할 수 있다.
활용 예시 하나를 살펴보면, 이전에 보았던 Schnorr Signature에서 Prover는 무작위 r을 사용하여 을 미리 commit해 둔다. 이 과정을 통해 증명자는 챌린지-응답 단계에서 메시지가 변조되지 않았음을 보장한다. 이는 특정 값을 고정해두고, 그 다음 challenge-response 과정을 통해 특정 값을 자신이 알고 있음을 증명하는 것이다.
Commitment는 영지식 증명, 디지털 서명, 검증 가능한 비밀 공유를 통한 MPC(다자간 연산) 등 다양한 암호화 프로토콜에서 중요한 역할을 한다. 특히 영지식 증명에서는 다음의 두 가지 목적으로 사용된다.
선택형 증명(Cut-and-Choose): 증명자가 여러 증명 후보에 커밋하고, 검증자가 이 중 일부를 선택하여 검증하도록 함으로써 효율성을 높인다.
병렬화: 검증자가 자신의 선택 사항을 커밋먼트로 미리 명시하여, 증명자에게 추가 정보를 노출하지 않고도 증명 과정을 병렬로 진행할 수 있게 한다.
일반적으로 커밋먼트는 세 단계로 이루어진다.
셋업(Setup): 증명자와 검증자가 공통 시스템 매개변수에 합의한다.
커밋(Commit): 증명자는 메시지 m과 무작위 값 r을 이용해 커밋먼트 c를 계산한 후 검증자에게 보낸다.
오픈/검증(Open/Verify): 증명자가 을 공개하면, 검증자는 이를 받아 커밋먼트 c가 올바른지 확인한다.
(보통 셋업을 제외하고, 커밋과 오픈/검증의 두 단계로 한다.)
커밋먼트 스킴은 아래와 같은 2가지 특성을 지닌다.
은닉성(hiding) 또는 기밀성(confidentiality): open되기 전, 공격자가 커밋먼트 c를 보더라도 커밋 값에 대한 어떠한 정보도 알 수 없어야 한다. 즉, 공개 전에 m을 추측할 수 없어야 한다.
결속성(binding): 당사자가 커밋 후 m을 다른 값으로 변경할 수 없다.
그림은 Pederson Commitments의 과정을 보여준다.
출처 : Formalising Σ-Protocols and Commitment Schemes Using CryptHOL
Pedersen Commitments은 이산 로그 문제(DLP)의 난이도에 기반한 간단하면서도 강력한 커밋먼트 스킴이다.
매개변수 설정
커밋(Commit) 과정
오픈(Open) 과정
결속성 (Computational Binding):
만약 송신자가 s와 다른 값 에 대해 동일한 커밋먼트 c를 만들 수 있다면, 즉 이 성립한다면, 이는 를 계산하는 것과 동등해진다.
결국 이산 로그 문제를 푸는 것과 같으므로, 페더슨 커밋먼트는 계산적 결속성을 가진다.
은닉성 (Perfect/Statistical Hiding):
랜덤 값 t는 에서 균등하게 샘플링된다. 커밋먼트 에서 는 G의 균등한 랜덤 원소와 같다. 따라서 어떤 와 에 대해서도 적절한 와 를 선택하면 동일한 c를 만들 수 있다. 즉, 커밋먼트 c만으로는 s에 대한 어떠한 정보도 얻을 수 없다.(영지식 증명의 zero-knowledge(영지식성)과 유사한 개념) 따라서 페더슨 커밋먼트는 완전 은닉성을 가진다.
Pedersen Commitments가 가지는 특이한 속성에 대해 알아보자. Pedersen Commitments는 두 커밋먼트를 곱하면 커밋된 값들의 합에 대한 새로운 커밋먼트가 되는 특별한 성질을 가지고 있다.
이러한 특성 덕분에, 커밋된 값들을 공개하기 전에 다양한 연산을 수행할 수 있어 영지식 증명 등에서 매우 유용하게 활용된다.
페더슨 커밋먼트는 몇 가지 증명 프로토콜과 함께 사용될 수 있다.
비밀의 지식 증명(Proof of Knowledge of a Secret)
커밋먼트 가 주어졌을 때, A는 x와 y 중 어느 것도 공개하지 않고 B에게 자신이 x와 y를 알고 있다는 것을 증명할 수 있다. 이는 페더슨 커밋먼트의 덧셈 속성이 악용되는 것을 방지하는 데 유용한 프로토콜이다.
이는 B를 속이기 위해서는 A가 이산 로그 문제를 풀어야 한다는 것을 의미하므로 안전하다.
동일 메시지 증명(Equal Opening)
같은 생성자 집합을 사용하여 비밀 에 대한 두 커밋먼트
A는 과 모두 같은 값 에 커밋했다는 것을 증명할 수 있다.
페더슨이 제시한 가장 간단한 방법은 A가 를 Bob에게 공개하는 것이다. 이는 아래 식으로 인해 만족한다.