zkSNARK는 검증 가능한 추론에 특히 잘 맞는 강력한 암호학적 증명 방식입니다. 이 zkSNARK 기술의 연구 진척 상황을 공유합니다.
Roy Rinberg (Anthropic), Alex Allain (Anthropic); Alessandro Chiesa (EPFL, StarkWare), Miranda Christ (MIT, RESI), Rahul Dalal (Anthropic STEM Fellows Program, Succinct), Giacomo Fenzi (EPFL), Ben Mayer (Anthropic Fellows Program, MIT), Guy Weissenberg (EPFL)
친구를 직접 만나면 그 사람이 진짜 본인인지 확인할 방법이 많습니다. 얼굴을 보고, 목소리를 듣고, 악수를 나눌 수 있으니까요. 하지만 AI 모델과 대화할 때는 이런 방법이 거의 없습니다. 지금은 사용자가 모델에 질의해도, 응답이 개발사가 말한 바로 그 모델에서 나왔는지 확인할 수 없습니다. 비용 절감을 위해 라우팅 서비스가 몰래 다른 모델로 바꿔치기했을 수도 있고, 토큰 스트림을 조작한 공격자가 끼어들었을 수도 있습니다. 응답 품질이 높더라도 출력만 보고 판단하는 것은 믿을 만하지 않습니다. 추론에 대한 암호학적 증명은 이 문제를 해결합니다. 모델 제공자가 특정 모델에 커밋(commit)한 뒤, 각 응답이 그 모델에서 나왔음을 증명하는 방식입니다. 이런 증명은 소비자 제품부터 내부 보안까지 다양하게 활용될 수 있고, AI 개발 속도 조절(pacing) 요건의 준수 여부를 검증하는 도구 모음의 일부가 될 수도 있습니다.
저희는 "zkSNARK"라는 강력한 암호학적 증명 방식에서 진전을 이루었습니다. zkSNARK는 은닉성과 효율성이 뛰어나 검증 가능한 추론에 특히 잘 맞습니다. 이 글에서는 FlashProve라는 시스템을 중심으로 그 진전을 공유합니다. 기술적 내용을 간단히 요약하면 다음과 같습니다.
오늘 다섯 가지 결과물을 공개합니다.
코드, Lean 증명, 문서는 Apache 2.0 라이선스로 공개합니다.1 이 글은 완성된 연구 로드맵이 아니라 중간 진행 상황을 공유하려는 것입니다. 다른 연구자들이 우리가 한 작업을 살펴보고, 가져다 쓰고, 더 발전시키기를 바라는 마음으로 공개합니다.
지금은 사용자가 AI 모델에 요청을 보내도, 선택한 모델이 실제로 응답을 생성했는지 확실히 알 방법이 없습니다. 일상적인 용도에서는 사용자가 대체로 출력 자체에 관심이 있을 뿐 어떤 모델이 만들었는지까지 따지지 않으므로, 그다지 급한 문제가 아닙니다. 하지만 이런 보증이 유용한 경우가 몇 가지 있습니다. 예컨대 출시 전후에 AI 모델을 테스트하는 독립 평가자는 자신이 평가하는 모델이 실제로 서비스되는 모델과 같다는 점을 알아야 합니다. 서드파티 라우팅 서비스를 통해 모델을 쓰는 고객은 토큰이 비용을 지불한 모델에서 나왔다는 확신을 원합니다. 또 공격자가 특정 모델인 척하며 토큰 스트림을 변조하더라도, 사용자는 출력만으로는 이를 알아낼 수 없습니다.
그런데 모델 응답을 검증할 수 있게 만드는 일은 쉽지 않습니다. 최첨단 모델 대부분은 가중치를 공개하지 않습니다. 가중치에 접근할 수 있다 해도, 특정 응답이 그 가중치를 가진 모델에서 나왔는지 확인하려면 모델을 직접 돌려야 하는데, 이는 일반 사용자(심지어 평가자)가 감당할 수 있는 수준을 훨씬 넘는 연산 자원을 요구합니다.
검증 가능한 추론(provable inference, PI)의 목표는 연산 자원이 제한적이고 가중치 정보도 전혀 없는 사용자가 응답이 요청한 모델에서 나왔는지 검증할 수 있게 하는 것입니다. PI는 AI 제공자에 대한 고객 신뢰를 높이려는 취지에서 출발했습니다. 또 독립 평가자에게 보증을 제공하고, 제공자가 특정 약속과 법적 의무를 지키고 있음을 입증하는 데도 쓸 수 있어서, AI 개발 속도 조절과 AI 규제에도 의미가 있습니다.
PI를 구현하는 방법 중 하나는 영지식 간결 논증(zero-knowledge succinct argument)이라는 암호학적 대상을 쓰는 것입니다. 모델 제공자가 응답과 함께 짧은 증명(예: 수 MB)을 보내면, 사용자가 이를 빠르게(이상적으로는 CPU에서 몇 초 안에) 검증합니다. 응답이 지정한 모델과 다르면 사용자의 검증은 실패합니다. 중요한 점은 암호 기법 덕분에 증명이 모델 가중치에 대해 아무것도 드러내지 않는다는 것입니다.
오늘 저희는 FlashProve를 공개합니다. FlashProve는 성능을 갖춘 검증 가능한 추론의 오픈소스 프로토타입입니다. 4,000억 파라미터 mixture-of-experts 모델(Llama 4 Maverick, 4비트 양자화)에서 H100 GPU 한 대로 초당 100토큰 넘게 증명을 생성할 수 있고, 1,024토큰 요청 하나당 증명 크기는 약 19MB입니다. 이는 대표적인 오픈소스 라이브러리인 vLLM이 같은 길이의 프롬프트를 처리하는 데 드는 GPU 시간의 약 70~95배입니다.
이번 공개에는 실행 가능한 코드, Lean 형식화, 프로토콜의 기술적 설명이 포함됩니다. 목표는 두 가지입니다. (i) 검증 가능한 추론의 개발을 앞당기고 쉽게 만드는 것, (ii) 영지식 간결 논증이 검증 가능한 추론에 실용적임을 보이는 것입니다.
이번 진전은 보안, AI 개발 속도 조절, AI 고객에 대한 무결성 보장, 감사자와 규제 당국을 위한 도구 마련 등에 의미 있는 영향을 줄 것으로 기대합니다.
인공지능이 발전해 디지털 인프라와 경제에서 차지하는 비중이 커지면서, AI 제공자가 답해야 할 신뢰 문제가 생기고 있습니다. 이런 문제를 해결하려면 검증 가능한 추론(PI) 도구를 활용하는 것이 도움이 됩니다.
PI 도구에는 하드웨어 방식, 소프트웨어 방식, 그리고 둘을 결합한 방식이 있습니다. 여기서는 소프트웨어만 쓰는 방식, 즉 "zkSNARK"(zero-knowledge succinct argument of knowledge)라는 암호학적 도구에 초점을 맞춥니다. 쉽게 말해 zkSNARK는 증명자가 짧은 "증명서"를 통해 검증자에게 특정 연산이 올바르게 수행되었음을 납득시키는 시스템입니다. 핵심은 이 증명서가 영지식이라서 연산이 올바르다는 사실에서 따라 나오는 것 외에는 어떤 정보도 드러내지 않고, 간결해서 증명 대상 연산을 직접 수행하는 것보다 검증이 기하급수적으로 빠르다는 점입니다.
아래에서는 몇 가지 문제와, zkSNARK가 이를 어떻게 해결하는지 살펴봅니다.
AI 개발을 규제하고 속도를 조절하자는 제안 중에는 하드웨어와 그 사용 방식을 모니터링하는 방안이 있습니다. 예를 들어 제공자가 강력한 신규 모델을 학습하는 데 쓰지 않고 하드웨어를 추론에 투입하도록 의무화할 수 있습니다. 제공자는 더 저렴한 모델을 서비스하거나 컴퓨팅을 예상 밖의 방식으로 사용해 학습에 쓸 자원을 빼돌리는 식으로 속임수를 쓸 수 있습니다. 규제 당국은 하드웨어가 추론에 쓰이고 있음을 어떻게 믿을 수 있게 확인할 수 있을까요?
zkSNARK의 도움: 규제 당국은 제공자에게 특정 기간에 처리한 추론 요청에 대한 증명서를 요구할 수 있습니다. 증명서는 해당 요청이 주장한 모델로 생성되었음을 보여야 합니다. 악의적인 제공자는 하드웨어가 실제로 올바른 모델을 서비스하고 있지 않은 한 이 요구를 충족할 수 없습니다. zkSNARK를 사용하면 규제 당국은 제공자가 갖춘 정교한 하드웨어 환경 없이도 제공자의 주장이 유효한지 확인할 수 있고, 제공자는 독점 모델 정보가 규제 당국에 노출되지 않는다는 보장을 얻습니다.2 다만 이 방식으로 하드웨어가 추론을 수행하고 있다는 점은 확인되지만, 예를 들어 뒤에서 몰래 학습을 하고 있지는 않다는 점까지 입증되지는 않습니다.
AI 모델의 가치가 커질수록 모델을 구동하는 서버는 주요 표적이 됩니다. 공격자나 통제를 벗어난 에이전트가 추론 서버를 장악해 가중치를 빼내거나 사용자에게 악의적인 응답(예: 사용자 컴퓨터에 악성코드 전달)을 보낼 수 있고, 이 모든 일을 정상 응답 속에 숨어서 할 수 있습니다. 적대자가 꼭 외부에 있는 것도 아닙니다. 모델이 스스로를 개선하고 배포할 수 있게 되면, 더 고성능인 모델이 승인된 모델 대신 실행되면서 약한 모델인 척해 자신에게 적용될 분류기와 모니터링을 피할 수도 있습니다. 두 경우 모두 질문은 같습니다. 회사는 자사 서버에서 어떤 가중치가 실제로 실행되고 있는지 어떻게 확신할 수 있을까요? Anthropic은 Frontier Safety Roadmap에서 추론 트래픽을 검증하는 프로토타입을 만들겠다는 공개 목표를 세웠습니다. "2026년 9월 30일까지 검증 가능한 추론의 프로토타입을 개발할 것입니다. 검증 가능한 추론은 AI 모델의 출력을 특정 가중치 집합에서 나온 것으로 귀속시킬 수 있도록, 신뢰할 수 있고 증명 가능한 방식으로 '서명'하는 기술입니다." RSP 업데이트에서 밝혔듯이, 이 목표는 별개이지만 관련된 프로젝트로 달성했습니다. 그 프로젝트는 추론 트래픽에 서명하고 신뢰할 수 있는 서버에서 추론을 다시 계산하는 방식입니다. 이 글의 연구는 같은 목표를 다른 방법으로 추구합니다.3
zkSNARK의 도움: 제공자는 서버가 모든 응답마다 유효한 zkSNARK를 내놓도록 요구할 수 있습니다. 증명은 특정 가중치 커밋에 묶여 있어서, 어떤 모델이 응답을 만들었다는 것만이 아니라 커밋된 모델이 만들었다는 것까지 보증합니다. 서버를 장악한 공격자나 다른 모델 행세를 하는 모델은 탐지를 피하려면 예상 가중치에 대한 유효한 증명을 만들어야 하는데, 그럴 수 없습니다. 증명은 내부 정보를 누출하지 않고(영지식) 검증 비용도 낮으므로(간결성) 사용자도 증명을 받을 수 있습니다. 이렇게 하면 공격자가 추론 API로 할 수 있는 일이 제한됩니다.
어떤 대상을 이해하거나 분석하는 데 상당한 노력이 들어갔음을 증명하고 싶을 때가 있습니다. 예를 들어 개발자가 자사 소프트웨어 라이브러리를 최첨단 사이버보안 모델로 취약점 점검했다고 주장하거나, 기업이 사업 계획을 적절한 모델에게 승인받았다고 주장할 수 있습니다. 사용자는 이런 주장을 어떻게 검증할 수 있을까요? 사용자에게는 모델을 직접 돌릴 자원이 없을 수도 있고(혹은 그럴 권한이 없을 수도 있습니다). 채팅 로그를 공개하더라도 절대적인 보증은 되지 않습니다. 개발자가 이론상 로그를 조작해, 최첨단 모델이 아니라 더 저렴한 모델이나 성능을 낮춘 버전으로 생성할 수 있기 때문입니다. 일반적으로, 사용자가 자신이 선택한 모델로 서비스받고 있음을 어떻게 검증할 수 있을까요?
zkSNARK의 도움: 제공자는 각 응답에, 주어진 입력에 대해 주장한 모델이 그 출력을 만들었음을 증명하는 zkSNARK를 덧붙일 수 있습니다. 간결성 덕분에 사용자는 특수 하드웨어 없이도 증명서를 빠르게 확인할 수 있고, 영지식 덕분에 제공자는 사용자가 독점 가중치에 대해 아무것도 알아내지 못한다고 확신할 수 있습니다. 이는 어떤 모델이 응답을 생성했는지 검증하는 기존 방식을 보완합니다.
예를 들어 익스플로잇이 수시로 발견되는 환경에서는, 모델 제공자가 새 코드를 배포하기 전에 코드 개발자에게 실패 증명(Proof-of-Failure)을 제공할 수 있습니다. 특정 모델에 최소 X개의 토큰을 썼지만 특정 결과를 얻지 못했다는 증명입니다(예: 이 모델이 최소 100만 토큰을 들여 시도했으나 특정 패치에서 버그를 하나도 찾지 못했음).
규제는 제공자가 사이버보안이나 안전 측면에서 위험하다고 판단된 모델이 아니라 안전하다고 승인된 모델만 서비스하도록 요구할 수 있습니다. 위험한 모델이 경쟁사보다 성능이 좋거나 서비스 비용이 낮을 수 있어서, 제공자에게는 이를 우회할 유인이 생길 수 있습니다. 규제 당국은 승인된 모델만 서비스되고 있음을 어떻게 보장할 수 있을까요?
zkSNARK의 도움: 규제 당국은 제공자가 응답에 zkSNARK를 첨부하도록 요구해 승인된 모델의 사용을 강제할 수 있습니다. 증명은 각 요청을 사용된 모델에 묶어 두므로, 제공자가 승인되지 않은 모델을 쓰면 검증을 통과하지 못합니다. 규제 당국은 간결성 덕분에 요청마다 다시 실행하지 않고도 가볍게 이를 확인할 수 있습니다.
신뢰 하드웨어 기반 PI에 대한 참고. 기존 연구는 PI를 구현하기 위해 신뢰 실행 환경(trusted execution environment)에 초점을 맞추는 경우가 많았습니다. 이는 하드웨어 기반 솔루션으로, 제조사가 변조 방지 하드웨어를 만든다는 전제 위에서 프라이버시와 증명(attestation)을 제공합니다. 이 연구에서는 보안과 프라이버시가 계산 문제의 난해성에 기반하는 소프트웨어 전용 암호학적 솔루션에 집중합니다. 하드웨어, 운영체제 등 환경이 침해되더라도, 적대자는 계산적으로 풀 수 없는 문제를 깨지 않는 한 유효하지 않은 증명을 만들 수 없습니다. 신뢰 하드웨어와 암호학은 보장 수준과 트레이드오프가 서로 다른 상호 보완적 접근입니다. 앞서 언급한 신뢰 문제를 해결하는 데는 둘 다 역할을 할 것입니다.
FlashProve는 대형 Mixture-of-Experts(MoE) 언어 모델의 검증 가능한 추론을 위한 시스템입니다. 자세한 내용은 기술 보고서에 있으며, 여기서는 시스템의 개요만 설명합니다.
FlashProve에는 모델 제공자(증명자)와 사용자(검증자) 두 주체가 있으며, 두 단계로 나뉩니다.
커밋된 모델을 실행하면 이 출력 토큰이 생성된다.
커밋, 프롬프트, 응답만 있으면 누구나 가중치 없이, 제한된 연산 능력으로 이를 검증할 수 있습니다. 그러면 커밋된 가중치로 이 프롬프트를 실행했을 때 정확히 이 토큰이 나온다는 사실을 확신할 수 있습니다.
증명 파일은 다음과 같은 "완전성(completeness)"과 "건전성(soundness)" 성질을 만족합니다.
완전성과 건전성만으로는 연산 능력이 강력하고 모델 가중치를 아는 검증자가 달성할 수 있습니다(프롬프트에 모델을 실행해 결과가 응답과 일치하는지 확인하면 됩니다). 다음 두 성질이 이 시스템을 자명하지 않게 만듭니다.
저희는 공개된 4비트 가중치를 사용해 Llama 4 Maverick(4,000억 파라미터 mixture of experts, 토큰당 약 170억 파라미터 사용)에서 프로토콜 구현을 측정했습니다. 검증자의 요청 하나는 1,024토큰 창이며, 증명 하나는 토큰 하나를 검사합니다. 증명자는 H100 한 대와 CPU 코어 24개를 갖춘 서버에서, 검증자는 CPU에서 실행합니다.
일반 추론과의 비교: 널리 쓰이는 추론 엔진인 vLLM으로 같은 모델의 FP8 릴리스를 H100 8대에서 실행해 비교했습니다. GPU 한 대당 기준으로, 요청 24개 배치를 증명하는 데는 vLLM이 같은 요청 24개를 한꺼번에 처리하는 시간의 약 72배(실행마다 66~77배)가 걸렸고, vLLM을 우리가 시도한 가장 높은 부하로 돌렸을 때와 비교하면 약 94배가 걸렸습니다.
시스템 내부. FlashProve의 기반 메커니즘은 P2P 시스템(예: 이더리움 같은 블록체인의 L2 네트워크인 Starknet이나 Mantle)에 배포된 것과 같은 종류의 zkSNARK입니다. 이 zkSNARK는 검증된 방식에 따라 만들었습니다. 정보 이론적 대상인 인터랙티브 오라클 증명(interactive oracle proof, IOP)을 해시 함수에 기반해 암호학적 증명으로 컴파일하며, 양자 컴퓨터에 대한 보안(post-quantum security)까지 제공합니다. 이 IOP는 선형 제약을 갖는 코드 근접성 검사와 룩업 논증 같은 도구로 구성한 최신 구성 요소를 조합해 만들었으며, 이 도구들은 부호 이론과 계산 복잡도 이론의 기법에 기반합니다. 이런 요소들을 추론 전용 IOP로 결합하는 일은 매우 섬세한 작업입니다. 구성 방식에 대한 자세한 내용은 기술 보고서에 있습니다.
FlashProve는 저희가 내린 아키텍처 결정의 덕을 보고 있으며, 이는 기술 보고서에서 자세히 다룹니다. 여기서는 몇 가지만 소개합니다.
증명 메커니즘을 추론 서버에 통합할 때는 선택지가 있습니다. 인라인 증명(추론과 동시에 증명)과 사후 증명(일부 토큰에 대해 사후에 증명)입니다. 저희 시스템은 후자를 따릅니다. 인라인 방식은 매우 빠를 것으로 기대되지만 효율을 위해 보안을 희생할 수 있습니다. 반면 사후 방식은 더 느려도 되므로 그런 트레이드오프를 피할 수 있습니다. 한편 사후 증명에는 재계산에 따른 복잡성, 트래픽에 대한 보증을 얻기까지의 지연, 본질적인 "비결정성"이라는 한계가 있습니다. 사후 증명을 택한 동기와 그 영향은 기술 보고서에서 자세히 다룹니다.
암호 코드는 깨지기 쉽고 오류가 나기 쉽기로 악명이 높습니다. 그렇다면 사용자는 오늘 공개하는 코드를 어떻게 신뢰할 수 있을까요?
답은 형식 검증입니다. 저희는 Lean 증명 보조기로 프로토콜과 원하는 보안 성질을 명세했습니다. 이 성질들을 기계가 검증할 수 있는 형태로 증명했고, (컴파일러 오류를 제외하면) 정확성이 보장됩니다. 최상위 성질은 세 가지입니다.
이 성질들은 이른바 랜덤 오라클 모델에서 서술됩니다. 이는 해시 함수에 의존하는 암호 프로토콜을 분석하는 정보 이론적 방법입니다.
형식 검증으로도 두 가지 신뢰 공백이 남습니다. 첫째, 형식 명제가 의도와 일치하는지 감사해야 합니다. 이 작업은 수작업으로 해야 하지만(증명을 감사하는 것보다는 훨씬 부담이 적습니다), 이를 돕기 위해 인터랙티브 시각화 도구를 제공합니다.
둘째, 실행 가능한 코드가 보안 성질이 증명된, 형식적으로 정의된 프로토콜과 일치하는지 감사해야 합니다. 이를 가장 잘 돕는 방법은 성질마다 다릅니다. 건전성은 검증자에만, 영지식은 증명자에만 달려 있고, 완전성은 둘의 상호작용에 달려 있기 때문입니다.
검증 가능한 추론은 흔히 "zkML"이라 부르는 일련의 연구가 추구해 온 목표입니다. 초기 연구로 SafetyNets(2017)는 합성곱 레이어 두 개짜리 MNIST CNN과 작은 완전 연결 음성 모델을 검증했습니다. zkCNN(2021)은 VGG-16(1,500만 파라미터)까지 도달해 증명당 88.3초가 걸렸고, Kang 등(2022)은 전체 해상도 ImageNet에서 MobileNet v2를 증명했습니다.
이어서 트랜스포머 증명이 나왔습니다. ZKML의 GPT-2는 1억 1,700만 파라미터에서 토큰당 약 159초(≈0.006 tok/s)가 걸렸고, Modulus Labs의 15억 파라미터 GPT-2 XL은 90시간 넘게 걸렸습니다. 성능은 점차 개선되었습니다. zkLLM(2024)은 2,048토큰 입력에 대해 LLaMA-2-13B를 GPU에서 약 15분에 증명했는데, 새 토큰당으로 보면 ≈0.001 tok/s, 배치 기준으로는 약 2.5 tok/s입니다. 2025년에는 zkGPT가 GPT-2를 21.8초(≈0.05 tok/s)로 줄였고, zkPyTorch는 Llama-3 8B를 CPU 코어 하나에서 토큰당 약 150초(≈0.007 tok/s)에 증명했으며, ZKTorch는 GPT-J(60억)를 약 20분(≈0.001 tok/s)에 증명했습니다. VerInf는 저희가 증명한 것과 같은 4,000억 파라미터 MoE 모델인 Llama 4 Maverick을 ≈0.02 tok/s로 증명했습니다. 현재 동료 심사를 거친 최고 수준인 DeepProve는 생성된 시퀀스 전체를 한 번의 순전파로 증명합니다. 한 대의 머신에서 GPT-2는 약 2.9 tok/s, Gemma 3는 1.4 tok/s에 도달하고, 분산 환경에서는 31 tok/s에 이릅니다.
최근에는 상용 쪽 성과도 인상적인 수치에 도달했습니다. Attestable은 H100 한 대에서 Gemma 4 31B를 53~77 tok/s로 증명했습니다. 이 글을 쓰는 시점까지 Attestable은 이에 해당하는 오픈소스 라이브러리를 공개하지 않았습니다.
이 수치들은 지난 몇 년간 검증 가능한 추론이 가파르게 발전했음을 보여 줍니다. 영지식으로 무엇을 증명할 수 있는지에 대한 우리의 사전 믿음도 고쳐야 합니다.
이 진전은 더 많은 모델과 아키텍처로 확장될 수 있다고 믿습니다. 그러면 네이티브 연산 대비 오버헤드가 약 두 자릿수 배(저희 측정에서는 약 70~95배)에 그치는, 유연하고 강력한 도구가 될 것입니다. 이는 기존에 예상하던 것보다 훨씬 낮은 수준입니다.
이번 공개는 연구용 프로토타입이며 다음과 같은 기술적 한계가 있습니다.