본문으로 건너뛰기

© 2026 Molayo

Zenn헤드라인2026. 05. 14. 03:34

AI 에이전트 시대에 영지식 증명이 필요한 이유

요약

영지식 증명(ZKP)의 개념과 원리를 설명하고, 이것이 AI 에이전트 시대에 왜 필수적인지 분석합니다. 영지식 증명은 비밀 정보를 공개하지 않고도 그 정보의 진위 여부를 증명하는 기술로, 블록체인에서는 스케일링과 프라이버시 보호를 위해 활용됩니다.

핵심 포인트

  • 영지식 증명은 '답을 보여주지 않고 답이 옳다는 것을 증명하는' 기술이다.
  • 영지식 증명의 3대 조건은 완전성, 건전성, 영지식성이다.
  • 블록체인에서는 ZK Rollup을 통한 스케일링과 ZK Payments를 통한 프라이버시 확보에 사용된다.
  • AI 에이전트 시대에는 익명성이 보장되는 ZK Payments가 결제 표준으로 주목받고 있다.

서론

안녕하세요! 블록체인 × AI Agent로 자율 경제권을 만드는 Komlock lab에서 엔지니어로 일하고 있는 오하라(@brto_0224)입니다.

영지식 증명 (ZKP: Zero-Knowledge Proof), 여러 곳에서 들어보셨죠? ZK Rollup, zk-SNARK, ZK Payments…….

Vitalik이 "AI 에이전트 시대의 결제 표준은 ZK Payments가 될 것이다"라고 말하는 것을 보고, 역시 제대로 이해해 두고 싶다고 생각했습니다. 하지만 막상 찾아보니 저 자신도 "무엇이 영지식(Zero-Knowledge)인가"를 본질적으로 이해하지 못하고 있었던 것 같습니다.

영지식 증명을 엄밀하게 이해하려면 대학원 수준의 수학(타원 곡선, 페어링, 다항식 커밋먼트 등)이 필요합니다. 이 글에서는 거기까지 깊게 들어가지 않고, "영지식 증명이란 무엇인가", "에이전트 시대에 왜 필요한가"를 개념 수준에서 정리하고, 마지막에 간단한 데모로 실제로 증명을 생성 및 검증하는 과정까지 해보겠습니다.

결론을 먼저 말씀드리면

  • 영지식 증명은 "답을 보여주지 않고, 답이 옳다는 것을 증명하는" 기술
  • 블록체인에서는 "스케일링 (Scaling, ZK Rollup)"과 "프라이버시 (Privacy, ZK Payments)"라는 두 축으로 사용됨
  • Groth16 등 많은 zk-SNARK는 증명이 작은 반면 Trusted Setup이 필요함. zk-STARK는 해시 기반이기 때문에 일반적으로 양자 내성 (Quantum Resistance)이 높다고 여겨짐
  • AI 에이전트 시대에는 "누가 결제했는지 알 수 없는 결제"의 중요성이 높아지며, ZK Payments가 유력한 방향성으로 주목받고 있음

예상 독자

  • 영지식 증명을 여러 곳에서 듣지만, 어렴풋하게만 이해하고 있는 사람
  • ZK Rollup / zk-SNARK / zk-STARK의 차이점을 정리하고 싶은 사람
  • AI 에이전트 시대에 왜 영지식 증명이 필요한지 알고 싶은 사람

영지식 증명이란 한마디로

"답을 보여주지 않고, 답을 알고 있다는 것을 증명하는" 기술.

개념 자체는 의외로 오래되었으며, 1985년에 Goldwasser, Micali, Rackoff가 이론을 발표했습니다. 다만 당시에는 "흥미롭지만 실용적으로 쓰기에는 너무 무겁다"는 상태였고, 실용화가 본격적으로 진행된 것은 최근 몇 년 사이입니다. 하드웨어의 진화와 증명 시스템의 효율화가 마침내 따라잡았습니다.

등장인물은 두 명입니다.

  • 증명자 (Prover) — 비밀을 알고 있는 측
  • 검증자 (Verifier) — 비밀은 모르지만, 맞는지 확인하고 싶은 측

증명자는 검증자에게 "나는 이 비밀을 알고 있다"라고 납득시키지만, 비밀 그 자체는 전혀 전달하지 않습니다.

일상의 예: 알리바바의 동굴

영지식 증명을 설명할 때 자주 사용되는 유명한 예시입니다. 1985년에 Quisquater 등이 발표한 논문 「How to Explain Zero-Knowledge Protocols to Your Children」이 원천이며, 수학 지식 없이도 영지식 증명의 3가지 조건(완전성, 건전성, 영지식성)을 모두 설명할 수 있는 비유로서 교과서나 해설 기사에서 널리 인용되고 있습니다.

  • 동굴은 고리 모양이며, 중간에 문(열쇠로 열림)이 있다.
  • 증명자는 "나는 열쇠를 가지고 있다"라고 주장한다.
  • 검증자는 입구에서 기다리고, 증명자는 A 또는 B 중 한 곳으로 들어간다.
  • 검증자가 "A에서 나와라"라고 지시한다.
  • 열쇠를 가지고 있다면, 어느 쪽으로 들어가더라도 문을 통과하여 지정된 쪽으로 나올 수 있다.
  • 이것을 여러 번 반복한다.

열쇠를 가지고 있지 않은 사람이 매번 정답을 맞힐 확률은 $n$번 반복할 경우 $(1/2)^n$입니다. 20번 반복하면 약 100만 분의 1입니다. 검증자는 "이 사람은 확실히 열쇠를 가지고 있다"라고 확신할 수 있지만, 열쇠 자체는 단 한 번도 보지 못했습니다.

조금 더 수학적으로: 이산 로그

고등학교 때 지수와 로그를 배웠을 것입니다.

  • $2^{10} = 1024$ → 쉽게 계산할 수 있음
  • $\log_2(1024) = 10$ → 이것도 쉬움

하지만 소수의 세계 (mod 연산 = 나눗셈의 나머지의 세계)에서는 역산이 극도로 어려워집니다.

mod 연산은 시계를 상상하면 이해하기 쉽습니다. 13시는 12로 나눈 나머지가 1시, 25시는 24로 나눈 나머지가 1시입니다. 숫자가 빙글빙글 순환하는 세계입니다.

g = 5, p = 23 이라고 하자
5^1 mod 23 = 5
5^2 mod 23 = 2
...

"$5^x \text{ mod } 23 = 4$가 되는 $x$는?"이라고 질문을 받는다면 답은 $x=4$이지만, $p$가 거대한 소수(수백 자리)가 되면 현실적인 시간 내에 역산할 수 없습니다.

이것이 바로 「일방향성 (One-wayness)」입니다. 순방향 계산은 간단하지만, 역방향은 효율적으로 풀 수 있는 일반적인 방법이 알려져 있지 않으며, 거대한 파라미터(Parameter) 환경에서는 현실적으로 어렵습니다. 영지식 증명 (Zero-Knowledge Proof)은 이 성질을 이용하여 「$x$를 알고 있다」는 것을 $x$를 보여주지 않고 증명합니다.

영지식 증명의 3가지 조건

정식 영지식 증명은 다음의 3가지 조건을 만족합니다.

1. 완전성 (Completeness)

증명자 (Prover)가 정말로 비밀을 알고 있다면, 검증자 (Verifier)는 반드시 납득한다.

2. 건전성 (Soundness)

증명자가 비밀을 모른다면, 검증자를 속일 수 없다 (극히 낮은 확률을 제외하고).

3. 영지식성 (Zero-Knowledge)

검증자는 「옳다」는 사실 이외에 어떠한 정보도 얻을 수 없다.

블록체인에서의 활용 방식

영지식 증명이 블록체인에서 사용되는 장면은 크게 두 가지입니다.

1. 스케일링 (ZK Rollup)

수천 건의 트랜잭션 (Transaction)을 오프체인 (Off-chain)에서 처리하고, 「전부 올바르게 실행했다」는 증명만을 온체인 (On-chain)에 올립니다.

  • 검증자 (Layer 1)는 증명을 검증하기만 하면 됨 → 가스비 (Gas fee)가 저렴함
  • 증명은 수학적으로 올바름을 보장 → 부정행위가 끼어들 수 없음
  • zkSync Era, StarkNet, Scroll, Polygon 등이 채택

무엇을 생략하고 있는가

Layer 1 상에서 모든 트랜잭션을 재실행하는 것

무엇을 증명하고 있는가

오프체인에서 처리한 상태 전이 (State transition)가 규칙대로 이루어졌다는 것

2. 프라이버시 (ZK Payments)

「A가 B에게 송금했다」는 사실을 숨기면서, 「잔액이 마이너스가 되지 않았다」, 「합계가 변하지 않았다」는 것만을 증명합니다.

  • Zcash — 송금액, 송신자, 수신자를 모두 숨길 수 있음
  • Tornado Cash — 입금과 출금의 연결을 차단함 (※ 규제 있음)
  • ZK Payments (Vitalik의 제안) — 에이전트 결제의 프라이버시

무엇을 숨기고 있는가

누가, 누구에게, 얼마를 보냈는가

무엇을 증명하고 있는가

규칙을 위반하지 않았다는 것 (이중 지불 없음, 잔액 충분)

zk-SNARK vs zk-STARK

영지식 증명의 구현 방식으로서 대표적인 두 가지가 있습니다.

zk-SNARKzk-STARK
정식 명칭Succinct Non-interactive Argument of Knowledge
...

신뢰된 설정 (Trusted Setup) 이란, 처음에 「비밀 파라미터 (Secret parameter)」를 생성하는 의식을 말합니다. 이 비밀이 유출되면 가짜 증명을 만들 수 있기 때문에, 참가자는 파라미터 생성 후에 자신의 입력을 폐기해야 합니다. zk-STARK는 이것이 필요하지 않기 때문에 「투명 (Transparent)」하다고 불립니다.

AI 에이전트 시대에 영지식 증명이 필요한 이유

AI 에이전트 시대의 프라이버시 문제

2026년 5월, Vitalik Buterin은 「AI 에이전트 시대의 결제 표준은 ZK Payments가 될 것이다」라고 발언했습니다.

AI 에이전트가 온체인에서 결제를 수행하는 세상에서는, 에이전트의 행동 패턴이 모두 온체인에 기록됩니다. 월렛 주소 (Wallet address) 자체는 실명이 아니지만, 요청 빈도, 금액, 타이밍을 통해 배후의 사용자를 특정할 수 있게 됩니다.

Vitalik은 이를 해결하기 위해 「ZK API Usage Credits」를 제안하고 있습니다.

  • 사용자가 컨트랙트 (Contract)에 일괄 입금한다
  • 입금으로부터 Usage Credits가 생성된다
  • 에이전트는 Credits를 사용하여 API를 호출한다
  • 각 요청 간의 연결은 영지식 증명으로 차단된다

즉 「돈을 지불했다」는 것은 증명할 수 있지만, 「누가 지불했는지」, 「지난번과 같은 사람인지」는 알 수 없습니다.

스케일링의 비용 절감

ZK의 검증 비용을 낮추는 연구와 구현도 진행되고 있으며, GKR 등의 프로토콜은 검증 효율을 개선하는 기술로서 주목받고 있습니다. 다만, 실제 운용상의 성능은 각 L2의 설계나 데이터 가용성 (Data availability), 증명 생성 비용에도 의존합니다.

영지식 증명은 「올바름의 증명을 작게 요약하는」 기술이므로, Layer 2의 스케일링과 궁합이 좋습니다.

정리: 영지식 증명이 해결하는 2가지 문제

문제영지식 증명 (Zero-Knowledge Proof)의 역할구체적인 예시
확장성 (Scalability)대량의 계산 결과를 작은 증명으로 요약함ZK Rollup
프라이버시 (Privacy)내용을 숨기고 올바름만을 증명함ZK Payments, 연령 인증, 투표

이 두 가지는 서로 다른 문제이지만, 영지식 증명이라는 동일한 기술로 해결할 수 있다는 점이 핵심입니다.

실제로 실행해 보기

개념만으로는 감이 잘 오지 않으므로, 실제로 증명을 생성 및 검증해 보겠습니다. 사용하는 도구는 다음 두 가지입니다.

  • circom — 「무엇을 증명하고 싶은가」를 기술하기 위한 전용 언어. 계산 규칙을 「회로 (arithmetic circuit = 계산을 가산·승산의 조합으로 표현한 것)」로 정의합니다.
  • snarkjs — circom으로 작성한 회로부터 실제로 증명을 생성하거나 검증하는 JavaScript 툴킷입니다.

circom으로 「규칙」을 쓰고, snarkjs로 「증명을 만들고 확인하는」 역할 분담입니다.

무엇을 증명할 것인가

「91의 인수분해를 알고 있다」는 것을 인수 그 자체를 보여주지 않고 증명합니다.

이번에는 구조를 이해하기 위해 91이라는 작은 숫자를 사용했습니다. 본질은 인수분해의 어려움이 아니라, 「비밀 입력 $a, b$를 공개하지 않고 $a \times b = c$라는 제약 조건을 만족함을 증명할 수 있다」는 점입니다.

  • 비밀 (비공개): $a=7, b=13$
  • 공개: $c=91$
  • 증명하고 싶은 것: 「$a \times b = 91$」이 되는 $a$와 $b$를 알고 있음

환경

# circom 2.x (회로 컴파일러)
curl -sL https://github.com/iden3/circom/releases/download/v2.1.9/circom-linux-amd64 -o circom
chmod +x circom
...

회로 작성하기

pragma circom 2.0.0;
template Multiplier() {
signal input a; // 비밀 인수 1
...

signal input은 입력, public [c]는 $c$만 공개, $a$와 $b$는 비공개입니다. <==는 대입과 제약을 동시에 수행하며, ===는 제약만을 수행합니다.

컴파일

# 회로를 컴파일 (build/ 디렉토리에 출력 파일이 생성됨)
mkdir -p build && ./circom multiplier.circom --r1cs --wasm --sym -o build
template instances: 1
non-linear constraints: 1 # 제약은 1개뿐 (a * b = c)
private inputs: 2 # a와 b는 비밀
...

신뢰할 수 있는 설정 (Trusted Setup)

zk-SNARK의 준비 단계입니다. 실제 서비스에서는 다수의 참여자에 의한 세레모니 (Ceremony, 공동 파라미터 생성)를 수행하지만, 데모에서는 혼자서 진행합니다.

# Powers of Tau (공통 파라미터 생성)
snarkjs powersoftau new bn128 10 pot_0000.ptau
# 랜덤 입력을 요구하므로, 적당한 문자열을 입력하고 Enter를 누르세요
...

증명 생성 및 검증

# 입력 생성 (a=7, b=13, c=91)
echo '{"a": "7", "b": "13", "c": "91"}' > input.json
# 증명 생성
...
[INFO] snarkJS: OK!

검증자에게 보이는 것은 public.json ("91"이라는 숫자)과 proof.json (증명 데이터)뿐입니다. $a=7, b=13$이라는 인수는 전혀 유출되지 않았습니다.

잘못된 입력은 거부됨

# a=7, b=14 이면 7*14=98 ≠ 91 이므로...
echo '{"a": "7", "b": "14", "c": "91"}' > input_bad.json
snarkjs groth16 fullprove input_bad.json build/multiplier_js/multiplier.wasm multiplier_final.zkey proof_bad.json public_bad.json
Error: Assert Failed. Error in template Multiplier_0 line: 14

제약 조건을 만족하지 않는 입력으로는 유효한 증명을 생성할 수 없습니다. 즉, a × b = c라는 제약 조건을 만족하지 않는 한, 검증을 통과하는 증명은 만들 수 없습니다. 이것이 건전성 (Soundness)에 대한 직관적인 이해입니다.

온체인 검증 (On-chain Verification)

snarkjs에는 export solidityverifier 명령어가 있어, 온체인에서 증명을 검증하기 위한 Solidity 컨트랙트 (Solidity contract)도 자동으로 생성할 수 있습니다.

요약

  • 영지식 증명 (Zero-Knowledge Proof)은 "답을 보여주지 않고, 답이 옳다는 것을 증명하는" 기술
  • 블록체인에서는 "스케일링 (Scaling)"과 "프라이버시 (Privacy)"라는 두 축으로 사용됨
  • Groth16 등 많은 zk-SNARK는 증명이 작은 반면 Trusted Setup이 필요함. zk-STARK는 해시 기반 (Hash-based)이기 때문에 일반적으로 양자 내성 (Quantum resistance)이 높다고 여겨짐
  • AI 에이전트 시대에는 "누가 결제했는지 알 수 없는 결제"의 중요성이 높아지며, ZK Payments가 유력한 방향성으로 주목받고 있음

영지식 증명을 한마디로 요약하자면,

"무엇을 알고 있는가"가 아니라 "알고 있다는 사실 자체"만을 전달하는 기술.

에이전트가 움직이는 세상에서는 프라이버시는 옵션이 아니라 기본값이 될 것입니다. 영지식 증명은 그 기반 기술로서 정착해 나갈 것입니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0