검증 가능한 랜덤 함수 (Verifiable Random Function, VRF)

암호학수정일

검증 가능한 랜덤 함수(VRF, Verifiable Random Function)는 개인 키 소유자만 계산할 수 있는 '난수처럼 보이는' 출력과, 그 출력이 올바르게 계산되었다는 증명을 함께 만드는 함수입니다. 누구나 공개 키로 증명을 검증할 수 있어, 결과가 조작되지 않았음을 확인할 수 있습니다. 1999년 실비오 미칼리(Silvio Micali), 마이클 라빈(Michael Rabin), 살릴 바단(Salil Vadhan)이 제안했고, 2023년 8월 IRTF CFRG의 RFC 9381(정보성 문서)로 규격화되었습니다.

자세히 알아보기

VRF의 핵심 연산은 두 가지입니다. ① 평가: 개인 키 sk와 입력 x로 출력 y와 증명 π를 계산합니다. ② 검증: 공개 키 pk, x, y, π로 y가 올바른지 확인합니다. 성질로는 먼저 출력이 개인 키를 모르는 사람에게 무작위와 구별되지 않아야 하고(의사난수성), 또 하나의 핵심이 '유일성'입니다. 같은 키와 입력에 대해 유효한 출력은 단 하나뿐이므로, 키 소유자라도 마음에 드는 결과가 나올 때까지 다시 뽑을 수 없습니다.

RFC 9381은 RSA 기반 VRF와 타원곡선 기반 ECVRF(P-256, edwards25519 곡선)를 정의합니다. 안전성은 랜덤 오라클 모델에서 증명됩니다. 키 소유자가 입력을 고를 수 있는 구조라면 유일성만으로는 공정성이 보장되지 않으므로, 입력은 이전 블록 값처럼 미리 정해진 값을 써야 합니다.

RFC 9381은 VRF를 '공개 키 버전의 키 해시'라고 설명합니다. HMAC 같은 키 해시는 키를 가진 사람만 계산하고 검증할 수 있지만, VRF는 계산은 키 소유자만 하고 검증은 공개 키로 누구나 할 수 있다는 점이 다릅니다.

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

블록체인은 결정적인 시스템이라 공정한 난수를 얻기 어렵습니다. 블록 해시나 타임스탬프는 블록 생산자가 어느 정도 조작할 수 있습니다. Algorand는 VRF로 블록 제안자와 위원회를 비밀리에 뽑는 '암호학적 추첨'을 하고, Cardano의 Ouroboros Praos는 VRF로 각 슬롯의 리더 자격을 결정합니다. Chainlink VRF는 스마트 컨트랙트에 난수와 증명을 함께 전달해 NFT 배분, 게임, 추첨의 결과를 누구나 검증할 수 있게 합니다.

쉽게 말하면

추첨 기계를 돌린 사람만 결과를 뽑을 수 있지만, 기계에 붙은 봉인 덕분에 누구나 '조작 없이 한 번만 돌렸다'는 것을 확인할 수 있는 추첨 방식입니다.

예시

Algorand에서 각 계정은 라운드 시드를 입력으로 VRF를 계산하고, 그 출력에 따라 보유 지분에 비례하는 확률로 위원회 선정 여부가 정해집니다. 선정된 계정만 결과와 증명을 공개하므로, 공격자는 누가 뽑힐지 미리 알 수 없어 표적 공격이 어렵습니다.

이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.