기본 콘텐츠로 건너뛰기

라벨이 qap인 게시물 표시

ZKP-4. 영지식 증명: 계산을 다항식 문제로 변환하기

영지식 증명(Zero-Knowledge Proof)의 핵심은 '무언가를 안다’는 사실을, 그 ‘무엇’ 자체는 공개하지 않고 증명하는 것입니다. 이를 실현하기 위해 암호학자들은 아주 독창적인 방법을 고안했습니다. 바로 컴퓨터가 수행하는 복잡한 '계산’을, 간결하고 강력한 '다항식의 관계’로 번역 하는 것입니다. 이 번역 과정만 이해하면 영지식 증명의 가장 중요한 원리를 파악할 수 있습니다. 이 문서에서는 간단한 예제를 통해 그 과정을 단계별로 살펴보겠습니다. 우리가 증명하려는 계산은 x³ + x + 5 = 35 입니다. 증명자(Prover)는 이 방정식의 해인 x=3 이라는 비밀값을 알고 있음을 검증자(Verifier)에게 증명하고자 합니다. 1단계: 계산의 평탄화 (Flattening) - 산술 회로로 변환 가장 먼저, 복잡한 계산식을 기본적인 산술 연산(덧셈, 뺄셈, 곱셈)의 연속으로 분해하여 산술 회로(Arithmetic Circuit)로 만듭니다. 각 연산은 하나의 '게이트(gate)'가 됩니다. 이 과정은 컴퓨터가 이해하는 복잡한 로직을 영지식 증명 시스템이 처리할 수 있는 표준화된 형식으로 바꾸는 첫 단계입니다. x³ + x + 5 식은 다음과 같이 분해할 수 있습니다. sym_1 = x * x (x²) sym_2 = sym_1 * x (x³) sym_3 = sym_2 + x (x³ + x) ~out = sym_3 + 5 (x³ + x + 5) 이제 x=3 이라는 비밀값을 각 단계에 대입하여 중간 결과값을 계산합니다. x = 3 sym_1 = 3 * 3 = 9 sym_2 = 9 * 3 = 27 sym_3 = 27 + 3 = 30 ~out = 30 + 5 = 35 이 산술 회로는 계산의 흐름을 명확하게 보여주는 청사진 역할을 합니다. 위 다이어그램은 각 변수가 게이트를 통해 어떻게 연결되고 변환되는지 시각적으로 보여줍니다. 2단계: R1CS(Rank-1 Constraint System)로 표현 다음으로,...