기본 콘텐츠로 건너뛰기

라벨이 r1cs인 게시물 표시

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)로 표현 다음으로,...

ZKP-1. 초보자를 위한 Circom 언어 가이드

Circom은 영지식 증명에 사용되는 '산술 회로'를 설계하기 위한 언어입니다. 이 회로를 통해 증명하고 싶은 논리나 규칙을 코드로 표현할 수 있습니다. 조금 어렵게 들릴 수 있지만, "어떤 비밀 정보(private input)를 공개하지 않으면서, 내가 그 비밀 정보를 알고 있다는 사실을 증명하는 프로그램"을 만드는 언어라고 생각하면 쉽습니다. 1. 핵심 개념: 회로, 신호, 제약 조건 Circom 코드는 3가지 핵심 요소로 이루어집니다. 회로 (Circuit) Circom의 가장 기본 단위입니다. 우리는 템플릿(template)이라는 키워드를 사용해서 회로를 정의합니다. 마치 다른 언어의 함수나 클래스처럼, 재사용 가능한 로직의 묶음이라고 생각할 수 있습니다. 신호 (Signal) 회로의 입력(input)과 출력(output), 그리고 그 사이에서 계산되는 중간값들을 신호라고 부릅니다. 신호는 회로를 통해 흐르는 데이터입니다. input: 회로에 입력되는 신호입니다. public input: 증명을 검증하는 사람에게도 공개되는 입력값입니다. (예: 문제) private input: 증명하는 사람만 알고 있는 비밀 입력값입니다. (예: 문제의 해답) output: 회로의 계산 결과로 나오는 신호입니다. 보통 public으로 간주되어 공개됩니다. var: 회로 내부에서만 사용되는 중간 신호입니다. 일반 프로그래밍 언어의 변수와 달리, Circom의 모든 신호(var 포함)는 최종적으로 제약 조건 시스템의 일부가 되어 증명 과정에 영향을 줍니다. 제약 조건 (Constraint) Circom의 심장과도 같은 가장 중요한 개념입니다. 제약 조건은 신호들 사이에 반드시 성립해야 하는 수학적 관계(방정식)를 정의합니다. 증명(proof)을 생성한다는 것은, 이 모든 제약 조건을 만족하는 신호값들을 찾았다는 것을 의미합니다. A === B: A와 B의 값이 반드시 같아야 한다는 제약 조건을 추가합니다. 이 연산자는 두 신호가 ...