ZKPs
블록 체인
![]()
- 한 당사자가 다른 당사자에게 특정 지식을 가지고 있음을 증명하되, 그 지식 자체는 절대 공개하지 않는 수학적 방법
종류
- 상호작용형 영지식 증명:
- ZKP의 초기 형태.
- 증명자와 검증자 사이에 여러 라운드의 상호작용이 필요.
- 증명자는 단순히 증거 하나를 제시하는 것이 아니라, 검증자가 제시하는 일련의 도전에 참여하고 이에 대한 응답을 제공.
- 단점:
- 시간 소모적
- 블록체인에 비실용적: 분산 시스템에서 서로 다른 라운드에 걸쳐 상호작용형 증명의 상태를 유지하는 것은 복잡함.
- 검증자 종속적: 상호작용 과정을 통해 생성된 증명은 일반적으로 그 상호작용에 참여한 특정 검증자만 납득시킬 수 있음. 다른 사람에게 증명하려면 다시 해야 함
- 비상호작용형 영지식 증명:
- 단 한 번의 통신 라운드만 필요로 함.
- 종류:
- SNARKs: 증명하려는 진술의 복잡성과 관계없이 증명의 크기가 매우 작고 검증 속도가 빠름.
- STARKs: 일부 SNARK의 잠재적 취약점인 trusted setup 단계가 필요 없음
- Bulletproofs: 신뢰 설정이 필요 없으며, 범위 증명에 효율적임
용어
- 주장, 진술: 어떤 것이 사실이라는 단언
- 비공개 입력: 증명자가 알고 있지만 검증자에게 공개하지 않는 정보
- 공개 입력: 증명자와 검증자 모두가 알고 있는 정보
- 제약조건: 주장이 유효한 것으로 간주되기 위해 반드시 충족되어야 하는 수학적 조건이나 방정식. 제약 조건이 표현되는 방식은 R1CS나 Plonkish 시스템과 같이 사용되는 특정 ZKP 제약 시스템에 따라 다름
- 회로: 제약 조건들의 집합
- 위트니스: 증명자가 자신의 주장이나 진술이 참이며 정의된 모든 제약 조건을 충족함을 보여줄 수 있게 하는 비밀 값들의 집합
신뢰 설정
- 어떤 암호화 프로토콜이 실행될 때마다 사용되어야 하는 데이터를 생성하기 위해 단 한 번 수행되는 절차
- 비밀 값 생성: 한 명 이상의 참가자가 비밀 무작위 값을 생성
- 암호학적 데이터로 변환: 이 비밀 값은 공개 암호학적 매개변수 세트를 생성하는 수학적 과정의 입력값으로 사용됨.
- 비밀의 되돌릴 수 없는 폐기: 공개 암호학적 매개변수가 생성되면, 원래의 비밀 값은 반드시 완전하고 복구 불가능하게 파기되어야 함.
- 증명 생성: 파기된 비밀로부터 생성된 공개 암호학적 데이터는 증명자가 자신의 진술에 대한 영지식 증명을 구성하는 데 사용됨