Three identity artifacts on a dark surface: a chrome sphere with a lens, an open biometric passport with visible antenna coil, and a chip card.

World ID, zkPassport, EUDI: Proving the Human

Orb biometrics, NFC chips, and state wallets anchor personhood differently. Each breaks differently, and agent delegation inherits the break.

18 min read
Share X LinkedIn

cover

Introduction

An autonomous agent can hold a private key, sign a transaction, and settle a payment without a person in the loop. That part is solved. What is not solved is the claim a counterparty actually needs before it extends credit, grants a rate limit, or counts a vote: that a distinct, accountable human stands behind this agent, and that the same human is not also behind the ten thousand other agents hitting the same endpoint.

Key custody scales for free. Personhood does not. Every credential that asserts uniqueness has to be rooted in something that is genuinely hard to duplicate, and every candidate root is a physical or institutional artifact rather than a cryptographic one. Three of them are being built out simultaneously, and they disagree about what that artifact should be.

World reports nearly 18 million people verified as unique humans through its Orb hardware across 160 countries, and has shipped a protocol upgrade it calls full-stack proof of human: a dedicated credential-management app, an open-sourced SDK, and nullifier generation moved onto TACEO’s distributed OPRF network. ZKPassport takes the opposite view of where trust should sit, reading the NFC chip in an ICAO 9303 passport or national ID and generating zero-knowledge proofs about it entirely on the user’s phone. The European Union has legislated a third answer, requiring member states to offer citizens a digital identity wallet, with the target commonly cited as December 2026, while its own technical working group has not settled which zero-knowledge construction the wallet should use.

These are not three implementations of one design. They are three different bets about which institution is least likely to betray the user, and each bet fails in a distinct way. One serious caveat on sourcing before going further: reporting on World’s agent-payment tie-up with Coinbase and Cloudflare over x402 appeared around March 2026, but we could not retrieve the article, and every specific about that integration in what follows is flagged as unverified rather than treated as established.

The triangle every personhood credential is stuck inside

A proof of personhood system has to deliver three properties, and they pull against each other.

Uniqueness means a service can tell that two registrations come from the same person and reject the second. The standard construction is a nullifier: a pseudorandom value derived deterministically from the user’s identity secret and a scope identifier, usually the verifying application’s domain. Same person, same app, same nullifier. The verifier stores the value, sees it again, and rejects the duplicate without ever learning who the person is.

Unlinkability means two services that compare notes cannot tell they are looking at the same person. This holds only if the nullifier function is unpredictable outside its scope, so the nullifier for app A reveals nothing about the nullifier for app B. It also has a second, harder form: the entity that issued the credential should not be able to recognize its own users in the wild. Third-party unlinkability and issuer unlinkability are separate properties, and systems routinely deliver the first while quietly failing the second.

Recoverability is the one people underestimate. If the credential is nothing but a private key, losing the phone means losing the personhood, and re-registering has to be indistinguishable from a sybil attempt. So the anchor must be something the user can re-present: an iris, a passport, a government registry entry. That requirement is precisely what makes the anchor a physical or institutional object, and it is why the interesting questions about these systems are questions about hardware supply chains and issuing authorities rather than about elliptic curves.

The three properties constrain each other. A deterministic function of a biometric gives uniqueness and recoverability but hands correlation power to whoever computes it. A one-time-use nullifier gives strong unlinkability but removes the stable handle a verifier would need to revoke a bad actor. State issuance gives the strongest recoverability of all and the weakest issuer unlinkability. Everything below is a variation on how to sit inside that triangle.

The Orb as a uniqueness oracle

img1

World’s approach treats uniqueness as a measurement problem. The Orb photographs the user’s eyes and face, derives a code from those images, transmits the code and photos to the user’s own device, and then, per World’s description of the flow, deletes them from the hardware. The device splits the code into fragments and sends them to a set of AMPC nodes, which jointly determine whether this human has been enrolled before. The deduplication happens over secret-shared data, so no single node holds a biometric template it could match against an external database.

That architecture answers the objection people reach for first, which is that a company is building a global iris database. It does not answer the objection that matters more. The user cannot observe whether deletion occurred. Everything from the moment the shutter fires to the moment the code lands on the phone happens inside a sealed device the user did not build, cannot inspect, and is standing in front of for perhaps thirty seconds. A modified or counterfeit Orb that retains images before deletion would look identical to a compliant one from where the user is standing. World’s own announcement is a company blog rather than an independent audit, and the source material we have contains no third-party security review of the AMPC deduplication system, the nullifier derivation, or the hardware attestation chain.

The 4.0 upgrade shifts something real, though. Nullifier generation moves to TACEO’s OPRF Network, a distributed private execution layer where multiple independent nodes jointly produce the proof so that no single party controls proof generation. World describes the resulting property as oblivious pseudonymous recognition. Combined with the move to one-time-use nullifiers, this changes the shape of the trust question. It is no longer “does World hold a value that links my sessions.” It is “can a threshold of OPRF nodes collude to recompute one.” Those are genuinely different assumptions, and the second is better. But the number that determines how much better, the honest-node threshold and the composition of the node set, does not appear in the material we have. Until it does, the decentralization claim is directional rather than quantified.

One-time-use nullifiers also imply something about where state lives. If the value a verifier receives is fresh on every presentation, the verifier cannot detect a duplicate by comparing against values it has already seen. Duplicate detection has to be delegated to a layer that can recognize a returning user without learning who they are, which is what the oblivious recognition framing suggests the OPRF network is doing. That is an inference from the described architecture rather than a documented mechanism, and it matters, because it means the OPRF network is not merely a proof generator. It is a liveness dependency. If it stops, recognition stops.

Open-sourcing the SDK so that any application can act as a World ID authenticator broadens the integration surface and lets developers audit the client. It leaves the Orb firmware and the node set where they were. The part of the stack that was least contested is now the part that is most inspectable.

The agent-facing piece, AgentKit, is positioned as the mechanism that proves a unique verified human stands behind an AI agent. World asserts the capability. The material we have does not explain the cryptographic binding, and we return to why that gap is the important one below.

Reading the chip instead of the eye

img2

ZKPassport relocates the anchor to a document a government already issued. The user taps their phone against an ICAO 9303 compliant passport, national ID, or residence permit, the app reads the NFC chip, and Noir circuits generate zero-knowledge proofs on the device itself. Nothing leaves the phone except the proof and whatever the user explicitly chose to disclose. Prove age above a threshold without revealing a birthdate; prove nationality without revealing a name.

The identifier construction is where the design gets interesting. ZKPassport derives a unique identifier by hashing chip data together with the verifying domain and a scope value using Poseidon2. The result is stable per service and different across services, which gives third-party unlinkability by construction. It does not give issuer unlinkability, and the project’s own FAQ says so. A government that retained a record of the data it signed into a given chip, and that knows the domain and scope, which are public, can recompute the identifier and match it to a named citizen. In the default configuration, presentations are unlinkable to everyone except the party best positioned to abuse the linkage.

The documented fix is a salted identifier mode built on a verifiable OPRF, which injects a secret the issuer never sees into the derivation. It works. It is also presented as an option, which pushes the most consequential privacy decision in the system onto whichever integrator is wiring up the flow. Whether production deployments default to salted or unsalted identifiers is not something we could determine, and it is the difference between a credential that resists state correlation and one that does not.

There is a second dependency sitting underneath the cryptography. A signed chip data set proves a national authority attested to those attributes; it does not prove the person presenting it is the person the document describes. ZKPassport’s answer is Private Facematch, a multi-angle selfie compared locally against the photograph stored in the chip. To run, it requires device attestation through Google Play Integrity or Apple App Attestation, and it refuses to execute on rooted devices, jailbroken devices, GrapheneOS, or devices with unsupported signature schemes. The proof system is trust-minimizing. The check that binds a living face to the document is outsourced to two platform vendors, and the users most likely to care about self-sovereignty are precisely the ones locked out of it.

The same tension appears in the app’s footprint. It exceeds 400MB, of which 128MB is an Aztec trusted-setup structured reference string supporting circuits up to a 2^21 subgroup size and 180MB is local machine-learning models for face matching. The SRS ties zkPassport’s soundness to Aztec’s ceremony. The topic brief describes zkPassport as having been acquired by Aztec and its proving system as UltraHonk; neither detail appears in the documentation we retrieved, so both should be treated as unconfirmed.

The unresolved question is chip replay. If an adversary obtains a copy of the signed data from someone else’s chip, whether by cloning or by extracting it during a legitimate read, they hold everything the circuit consumes. Nothing in the documentation we have specifies whether zkPassport requires the chip to demonstrate liveness through the document’s own authentication protocols, or whether Facematch is intended to carry that load on its own. If it is the latter, then the anti-impersonation property of the entire system rests on the platform-attested face check, which brings the analysis back to Google and Apple.

Brussels has not decided what unlinkability means

img3

The EU has legislated the wallet and left the cryptography open. Member states are expected to offer citizens an EUDI Wallet by the end of 2026, a date we take from the topic brief rather than from the technical sources we fetched. Meanwhile, the Architecture and Reference Framework working group opened a discussion thread on zero-knowledge proof integration in February 2025, and that thread shows contributors arguing about definitions rather than converging on a scheme.

The substantive split is between BBS+ and general-purpose SNARK or STARK constructions. Part of the thread is taxonomic: whether BBS+ counts as a genuine non-interactive zero-knowledge proof system at all. The clarifying answer offered in the discussion is that BBS+ is a signature scheme that admits an efficient Schnorr-type proof of knowledge of a signature over a set of attributes, made non-interactive through Fiat-Shamir, which is a different object from a SNARK circuit proving statements about a conventional signature such as ECDSA. One contributor observes that in the EUDI context, “ZKP” is often used colloquially to mean the former. Standardization of BBS+ is being pursued through the IETF, referencing the Tessaro-Zhu work as its basis.

The taxonomy is not the interesting part. The deployment consequences are. BBS+ requires the issuer to sign credentials in BBS+ format, which means every ministry, registry, and accredited issuer across the union adopts new cryptography before any citizen gets an unlinkable presentation. A SNARK approach lets issuers keep signing with the algorithms they already have and pushes all the work onto the wallet, at proving costs that are orders of magnitude higher.

Then there is the hardware. The ARF ties ZKP integration to the wallet’s secure cryptographic device and application, the WSCD and WSCA. If the credential key must remain inside a certified secure element, the proof either runs inside that element or is split so that the element performs one small operation while the host handles the rest. Certified secure elements do not run SNARK provers. They can perform a Schnorr-style response. The certification regime, in other words, exerts pressure toward BBS+ independently of any privacy argument, which means the unlinkability property European citizens end up with may be determined by what fits in a smartcard rather than by what the working group concluded about surveillance risk.

The thread also spends time establishing that zero-knowledge proofs have a negligible but nonzero soundness error, on the order of 2^-100. That is a standard cryptographic convention and not a EUDI-specific weakness. That it needed establishing in a working-group thread is a reasonable read on where the process stood in early 2025 relative to a 2026 delivery date. We found no evidence in the fetched material of a final decision either way, and treating the scheme choice as settled would be wrong.

Blast radius, not probability

img4

The useful comparison is not which system is hardest to break. It is what happens after a break: how many credentials are affected, whether anyone notices, and who has the authority to fix it.

World IDzkPassportEUDI Wallet
AnchorOrb hardware plus iris uniquenessICAO 9303 chip signed by a national authorityState credential issuance into a certified wallet
Forgery requiresCompromising Orb hardware or defeating AMPC deduplicationA signed chip data set, plus defeating the face checkIssuer compromise or credential-key extraction
Issuer-side correlationDepends on OPRF node collusion threshold, undisclosedPossible by default, prevented only in optional salted modeDepends on unresolved scheme choice
Compromise partitioned byIndividual Orb unit, under one operatorIssuing countryMember state, but adoption is mandated
Who can remediateTools for Humanity, unilaterallyThe issuing state, on its own timelineThe issuing state
Failure visibilityDetectable if attestation logs are keptDetectable when forged documents surfaceCorrelation is silent

Read down the partitioning row and a real difference appears. A zkPassport compromise is naturally bounded by issuing authority. If one country’s document-signing infrastructure leaks, every credential from that country becomes suspect and verifiers can blocklist by issuer while the rest of the world keeps working. No single event invalidates the anchor globally, because the anchor was never global. The cost of that resilience is that the protocol has no remediation authority at all. It waits for a state to rotate keys.

World’s partitioning is finer in one sense and coarser in another. A compromised Orb affects the cohort it enrolled, which is bounded and, in principle, addressable: invalidate that device’s verifications and re-scan those users. One operator controls the entire pipeline and can act without waiting for anyone. The coarser failure is a break in the uniqueness function itself, meaning a technique that produces two accepted enrollments from one person. Revocation does not help there, because there is no bad device to revoke, and the operator would be remediating the property the whole system exists to provide.

The EUDI model degrades least gracefully, for a reason that has nothing to do with cryptographic strength. Its dominant failure mode is not forgery but correlation, and correlation leaves no trace. A user whose presentations are being linked by the issuer observes exactly what a user with perfect unlinkability observes. There is no anomaly to detect, no forged document to surface, no remediation to demand, and because wallet provision is mandated rather than chosen, there is no competitive exit. The system that has the strongest recoverability, because the state can always re-issue, has the weakest capacity to reveal its own failure.

Coverage cuts the other way and should temper any conclusion. The document model only serves people holding modern electronic identity documents, and the device-attestation requirement narrows that further. Orb verification reaches populations that no passport-based scheme can, which is part of why the reported 18 million spans 160 countries. Graceful degradation is a property of an anchor that someone can actually reach.

Where the guarantee gets spent

img5

Whichever anchor a system uses, the guarantee is consumed at the moment a human delegates to agents, and that is where the sourcing thins out most. World positions World ID plus AgentKit as the mechanism binding an agent to a verified human. Nothing in the material we retrieved describes how that binding is constructed, whether a cap on agents per human is enforced, or how per-agent accountability is maintained. The gap matters because the design space contains only bad corners and one narrow path between them.

If the agent presents the same scope-bound nullifier as its principal, then a service sees one identity per human per scope. Uniqueness transfers perfectly and multi-agent operation dies, because the service cannot tell two of the principal’s agents apart and cannot rate-limit them independently.

If the agent instead presents a fresh unlinkable value attesting only that some verified human backs it, agents become unbounded. The proof of personhood has been converted into a proof that at least one human exists somewhere upstream, which is not a scarce claim. Every property the Orb or the passport chip established is spent at the first delegation.

The path between them is a capped derivation: the agent’s nullifier is a function of the human’s identity secret, the service scope, and an index, with the circuit proving that the index falls below some bound without revealing it. That requires stateful duplicate detection across the tuple of human, scope, and index, which is exactly the kind of oblivious recognition an OPRF network could supply. It is a coherent design. We have no evidence it is the implemented one.

Two further tensions survive even the capped design. First, uniqueness only becomes a usable defense if verifiers denominate their limits in humans rather than agents, and to enforce a per-human budget across several agents, a verifier must be able to group those agents by principal within its own scope. That is a deliberate reduction in unlinkability, adopted as the price of accountability, and it should be an explicit protocol decision rather than an emergent one.

Second, revocation fights one-time-use nullifiers directly. Blocking a misbehaving agent requires a stable handle to block, and a value that is fresh on every presentation offers none. Either the revocation authority sits inside the recognition layer, which concentrates power in the OPRF network, or verifiers keep their own linkable per-scope state, which erodes the privacy the fresh values were introduced to protect. The unlinkability upgrade and the accountability requirement are pulling on the same rope.

What would settle these questions

The specific disclosures that would change the analysis are narrow and identifiable. For World: the honest-node threshold and membership of the TACEO OPRF network, an independent audit of the AMPC deduplication and nullifier derivation rather than a company blog post, and a statement of what happens to recognition and recovery if TACEO discontinues service. The open-sourced SDK is a real improvement to the auditable surface and does not touch any of these three.

For zkPassport: whether the salted vOPRF identifier is the default in production integrations or an opt-in that most deployments skip, and whether the protocol requires chip liveness or leaves impersonation resistance entirely to a face check gated by Google and Apple attestation. Aztec’s acquisition, if the reporting is accurate, concentrates the proving stack, the SRS, and the application under one roof, which matters for what it does to circuit auditability by parties who do not work for Aztec.

For the EU: whether the ARF working group resolved the BBS+ question after February 2025, and if so, whether the resolution followed from an unlinkability analysis or from what a certified secure cryptographic device can execute. The second would mean member states shipped a privacy property chosen by hardware constraint, to hundreds of millions of people, on a statutory deadline.

The reason these three sets of questions are worth tracking together is that agent payment rails will not wait for any of them. Settlement infrastructure is being built now against personhood credentials whose failure modes are documented mainly by the vendors that built them, and the first serious test will not be a cryptographic break. It will be a verifier discovering that its per-human rate limit was, all along, a per-agent rate limit.

References

Read next

Follow the next market structure breakdown

New Steadyrain research is published several times a week across DeFi risk, BTCFi, stablecoins, and RWA.