Implementation · Cryptographic & computational
zkLLM
zkLLM is a GPU-accelerated zero-knowledge proof system that proves a large language model's output came from committed weights without revealing those weights.
Also called zkLLM-CCS2024
Summary
zkLLM is an academic zero-knowledge proof system for large language models, published at ACM CCS 2024. It lets a model's owner prove that its committed model computed an output, without revealing the weights. The verifier supplies the prompt and sees the output. On one NVIDIA A100 GPU, zkLLM proved one 2,048-token forward pass of LLaMa-2-13B in about 13 minutes. The 188 kB proof verifies in about four seconds. The code is public and passed the conference's artifact evaluation. The main obstacles to real use are cost and engineering maturity. Its authors state the code is unaudited, not ready for industrial use and no longer maintained. For verification, the main weakness is that it proves a fixed-point approximation of a model whose architecture must be public. Its zero-knowledge guarantee also assumes a verifier that follows the protocol.
R2. Public, artifact-evaluated code proves 13-billion-parameter models in peer-reviewed tests, but its authors say it is unaudited and not ready for production.
Rubric assessment
- R1 met: the paper states the claim, the threat model and the security theorems 1.
- R2 met: the code is public, tagged and archived on Zenodo. It received the CCS 2024 badges "Artifacts Available" and "Artifacts Evaluated--Functional" 2. The published end-to-end results use 13-billion-parameter models on a data-centre GPU 1. The stated adversary is a cheating polynomial-time prover 1.
- R3 not met. The README says the code "has NOT undergone security auditing and is NOT ready for industrial applications", and that it is no longer maintained 2. As of September 2026 no third party is known to rely on it, and no independent security evaluation or reproduction of its results has been published.
- A production-grade implementation, with prover and verifier separated and non-interactive proofs, or reliance by a third party for a verification decision.
- An independent public security evaluation (audit, red-team or third-party peer-reviewed analysis).
What it is
zkLLM is a system for zero-knowledge proofs of inference on large language models. Researchers at the University of Waterloo published it at ACM CCS 2024 1 2. Its authors call it "the inaugural specialized zero-knowledge proof tailored for LLMs" 1.
The setting has two parties 1:
- The prover, such as an AI company, owns a model with a publicly known structure and treats the weights as intellectual property.
- The verifier, such as a regulator, submits a prompt and asks for proof that the output returned is correct for that prompt and the confidential model.
The CUDA implementation is public under an MIT license 2. A tagged release, archived on Zenodo, received artifact-evaluation badges 2.
How it works
The weights are committed once, using Hyrax commitments over the BLS12-381 curve 1. For each prompt, the prover shows that the model's tensor operations were computed correctly, using sumcheck-based arguments 1.
Two new components handle the hard parts of a transformer:
- tlookup is a parallel lookup argument for non-arithmetic tensor operations. The authors state it adds no asymptotic overhead in memory or running time 1.
- zkAttn is a proof for softmax attention. It splits the exponential into segments, each checked by lookups 1.
All values are scaled by 2^16 and rounded into a finite field 1.
The public code works through a LLaMa-2 model one layer at a time:
- Generate public parameters.
- Commit the weights.
- Run the proofs for normalisation, attention and feed-forward components 2.
It supports LLaMa-2 models of 7 and 13 billion parameters 2.
Evidence
- Setup. The paper reports results on one NVIDIA A100 GPU with 40 GB of memory, 12 CPU cores and 124.5 GB of system memory 1. The models were OPT (125M to 13B) and LLaMa-2 (7B and 13B), run on 2,048-token samples from C4 1.
- LLaMa-2-13B. Proving took 803 seconds and produced a 188 kB proof that verified in 3.95 seconds, using 23.1 GB of memory; the one-time weight commitment took 986 seconds 1.
- Accuracy. Perplexity changed little: for LLaMa-2-13B it moved from 6.520 to 6.528 1.
- Comparison. The authors compare zkLLM with an earlier system, zkML, on the same hardware 1. zkML ran out of memory beyond the size of GPT-2 (1.5 billion parameters), so its times for larger models are the authors' estimates 1.
- Artifact evaluation. The artifact received the CCS 2024 badges "Artifacts Available" and "Artifacts Evaluated--Functional" 2.
- Use by others. A verification system design for AI agreements uses zkLLM's figure of 803 seconds per 2,048-token forward pass on an A100 to judge ZKP overheads 3.
Limitations
Code maturity. The README states the code "has NOT undergone security auditing and is NOT ready for industrial applications" 2. It also names these gaps:
- prover and verifier run side by side;
- intermediate files are not meant as verifier inputs;
- an industrial deployment would need to separate the two parties and apply Fiat–Shamir 2.
Maintenance. The repository was archived in July 2025 2. The author states the project is no longer actively maintained 2.
Assumptions. The paper assumes a publicly known model structure 1. Its zero-knowledge guarantee is stated for a semi-honest verifier, which "accurately reports the outcome of the proof verification" but tries to learn the hidden parameters 1.
Scope. Proofs cover inference only 1. The authors write that extending zero-knowledge proofs to training LLMs "may pose insurmountable challenges" 1.
Attacks. As of September 2026 no attack on the soundness of zkLLM's proofs has been published. Its security rests on the paper's soundness and zero-knowledge theorems 1. An independent analysis, whose setting follows deployments such as zkLLM, shows that valid proofs do not bind the computation spent, so a much smaller model can pass as the declared one 4. Its authors demonstrated this with another system, zkGPT, on a small transformer 4. See Zero-knowledge proofs of inference.
Known flaws
Published flaws, with their severity, kind and status. How flaws are rated.
Reference code is interactive and runs prover and verifier together
The README states that prover and verifier work "are implemented side-by-side", and that intermediate values written to files are for the prover's reference only. It says an industrial deployment would need to separate the two and apply Fiat–Shamir to make proofs non-interactive 2. The released code gives a verifier no standalone check.
Blockers
Proving takes about 12 to 13 minutes of A100 time per 2,048-token forward pass at 13B parameters, plus a one-time weight commitment of 16 to 21 minutes.
The repository was archived on 10 July 2025 and the author states there is no plan for upgrades or maintenance.
No security audit of the code has been carried out.
Technical detail
Show technical detail
The design has four parts 1:
- tlookup is a parallel lookup argument for non-arithmetic tensor operations. The authors state it adds no asymptotic overhead in memory or running time (§4).
- zkAttn proves softmax attention by splitting the exponentiation into K segments, each checked with tlookup (§5).
- The commitments use Hyrax, a Pedersen variant, over BLS12-381 under discrete-log hardness (§3).
- Tensors are scaled by 2^16 and rounded into the field. The resulting total L1 error on the output is about 10^-2 (§7–8).
The paper's security analysis is in §7.2 1:
- Theorems 7.2 and 7.3 give tlookup a completeness error of O(N/|F|). They show that a cheating probabilistic polynomial-time prover succeeds only with negligible probability. The rest of the protocol applies the sumcheck protocol and proofs of opening for committed tensors.
- Theorem 7.4 covers zero knowledge. It states that a simulator with only oracle access to the output produces a view indistinguishable from the real one. The theorem assumes zero-knowledge variants of sumcheck and Pedersen commitments. The threat model assumes a semi-honest verifier (§3.6).
Table 1 reports these costs on an A100 40 GB GPU at sequence length 2,048 1:
- OPT-13B took 1,270 s to commit and 713 s to prove. The proof was 160 kB, verified in 3.71 s and used 22.9 GB of memory.
- LLaMa-2-13B took 986 s to commit and 803 s to prove. The proof was 188 kB, verified in 3.95 s and used 23.1 GB of memory.
The public code covers LLaMa-2 7B and 13B, runs prover and verifier side by side, and is interactive 2.
Sources
- AH. Sun et al. (2024). zkLLM: Zero Knowledge Proofs for Large Language Models. 2024 ACM SIGSAC Conference on Computer and Communications Security (CCS 2024). Source recordSupports: design, threat model, security theorems, overheads, accuracy, comparison with zkML · abstract; §3.6; §4; §5; §7; §8 Table 1 and Fig. 4; §9
- BH. Sun (2024). zkllm-ccs2024: code for zkLLM: Zero Knowledge Proofs for Large Language Models. GitHub; archived on Zenodo. Source recordSupports: public code, artifact badges, supported models, README caveats, archive status · README; Zenodo record 13621754
- BN. Cankaya (2026). A System Overview for Near-Term, Low-Trust AI Compute Verification. Machine Intelligence Research Institute. Source recordSupports: use of zkLLM's figures in a verification system design · §5.2.4, pp. 59–60
- BC. Gong et al. (2026). Hollow-LLM Attack: Computationally Trivial Weights in Zero-Knowledge Verification of LLM Inference. arXiv. Source recordSupports: independent Hollow-LLM analysis: valid proofs in zkLLM-style deployments do not bind computational effort; demonstrated with zkGPT · Abstract; threat model; §V