Cointime

Download App
iOS & Android

Zero-knowledge proofs of identity using electronic passports

From ethresearch by turboblitz

Many applications need to verify their user’s identity online, whether it is nationality, age, or simply uniqueness. Today, this is hard. They are stuck between shady heuristics like tracking IP addresses and technologies like Worldcoin that need to deploy their infrastructure widely.

Fortunately, UN countries in association with the International Civil Aviation Organization have built a great tool for us to piggyback on: electronic passports. They are issued by more than 172 countries and include an NFC chip with a signature of the person’s information, including name, date of birth, nationality and gender. Issuing countries make their public keys accessible in online registries, enabling the verification of signatures.

A circuit for passport verification

For someone to prove their identity using a passport, they will have to do two things. First, read the content of their passport’s chip. This can be done easily with any NFC-enabled phone. Then, show a verifier that their passport has been correctly signed. Instead of sending all of their personal data for the verification to happen, they can generate a zero-knowledge proof that redacts some of their inputs.

Our circuit will have to checks two things:

  • The disclosed attributes have been signed correctly
  • The corresponding public key is part of the public key registry of UN countries

A simple circuit compliant with the electronic passport specs would look something like this:

B1_4A2ZxC.png2483×1669 96.6 KB

Here is roughly what happens:

  • Each datagroup stored in the passport contains some of the person’s information. The datagroups we are most interested in are the first one (nationality, age, etc) and the second one (photo). The circuit takes them as inputs along with the signing public key.
  • Datagroups are hashed, concatenated and hashed again.
  • The final result is formatted, hashed and signed by the country authority. We can use the public key to check this signature.

This makes the following attributes disclosable: name, passport number, nationality, issuing state, date of birth, gender, expiry date, photo.Some countries also provide additional data like place of birth, address, phone number, profession and a person to notify. Biometrics like fingerprint and iris are sometimes included but can’t be retrieved, as they require a special access key.

In practice, we want our circuit to have a few other features:

  • Instead of passing the country’s public key directly, we want the user to prove that the public key that signed their passport is part of the registry published by the ICAO. This can be done by passing a merkle proof of inclusion and having only the merkle root as a public input.
  • To allow for selective disclosure of any attribute, we pass a bitmap as a public input that will redact some of the attributes.
  • We want specific modules for age disclosure and nationality list inclusion. A range check can guarantee someone is above a certain age without disclosing the precise age, and an inclusion check can be done over a set of countries to prove someone is or is not a citizen of any country in a list.
  • For applications like minting an SBT or voting, we want to check that the passport is not expired. This can be done by passing the current date and doing a range check over the date in the circuit. We can then check that the current date is correct using the block timestamp in a smart contract or server-side in offchain verification.
  • For applications that need sybil-resistance, we want to store a nullifier that prevents using the same passport twice. The simplest approach involves storing a hash of the government’s signature, though this does not render the individual anonymous from the government’s perspective. There are other approaches, see here 1 for a discussion of the tradeoffs.

A map of a more complete circuit can be found here 3.

One of the challenges is the number of signature algorithms used. Most countries use common ones like RSA with SHA256, but the ICAO specifications are quite permissive and some countries chose to use hash functions like SHA512 or unusual padding formats. We currently support the most common one and we are working on adding support for more.

Applications

Applications roughly fall into three categories: proof of humanity, selective disclosure and authentication.

Proof of humanity can be used in general for sybil resistance. This includes voting, fair airdrops, quadratic funding and helping social media fight bots. If passports can’t be construed as a general solution today, they can be integrated into wider systems like Gitcoin Passport or Zupass.

Selective disclosure has applications like privacy preserving age check. Some countries restrict buying alcohol, drugs or entering casinos for minors, and zk could help bringing better privacy to those controls.

Another example of selective disclosure is proving one is not a citizen of any country in a set of forbidden countries. This could help creating an intermediate level of compliance between KYC-gated traditional finance and fully permissionless DeFi.

Using passport signatures for authentication, one can build a ERC-4337 recovery module that asks for a proof from a specific passport as one of the conditions for recovery. Some passports also support Active Authentication, meaning they have their own private key and the ability to sign data. This would make them suitable for direct transaction signing, either for small transactions or in a multisig setup with other signers.

Limitations

The most obvious limitations of using passport signatures are the following:

  • The passport does not do any kind of biometric check when the chip is read. Therefore there is no straightforward way to know if the passport has not been borrowed or stolen.
  • Most of the world population does not have a passport. Even in the US, only around 50% of the population owns a passport.
  • Issuing authorities can create an arbitrary number of passports and cheat in systems that require passports for sybil resistance.
  • Passports can be lost or revoked. Some countries allow citizen to keep their previous passport when they are issued a new one. Some people have dual citizenship. All those cases are hard to mitigate, as the signatures stay valid.

Those limitations are all quite fundamental to the way passports work today. They can be addressed by aggregating attestations from multiple sources, which will be covered in a future post.

Current state

Proof of Passport is fully open source 12, from mobile app to circuits. If you are interested in contributing, please check open issues 1.

While performance would have been a bottleneck a few years ago, work from teams like Polygon ID, arkworks and mopro have made client-side proving on smartphones quite fast. Generating a proof with the current circuit takes ~4 seconds on a recent iPhone.

We are currently focused on shipping the mobile app for the first integrations. It allows users to mint an Soulbound Token disclosing only specific attributes they chose, or none at all other than the validity of their passport. Contact us to try out the beta release.

Thanks to Rémi 2, Andy 1, Aayush 1, Youssef 2 and Vivek 1 for contributing ideas and helping build this technology!

Comments

All Comments

Recommended for you

  • Comprehensive Upgrade of Digital Renminbi Infrastructure Service System

    On October 21, the Digital Renminbi Operations Management Center announced the digital renminbi infrastructure service system, introducing two core achievements: the Central Bank Digital Currency System (DCEPS) and the Digital Renminbi Smart Contract Ecological Service Framework (e-CNY SMART Contract). (Xinhua News Agency)

  • Korean Stocks Rise Over 3%, SK Hynix and Samsung Electronics Up About 6%

    On October 21, the Korea Composite Stock Price Index rose again, with an increase of 3.41%. SK Hynix and Samsung Electronics both climbed about 6%, while Samsung Electro-Mechanics rose over 2% and LG Electronics increased by more than 1%.

  • CATL (03750.HK) Falls Over 8%, Stock Price at HKD 378

    CATL (03750.HK) has fallen over 8%, with the stock price currently at HKD 378, marking a new low since July 2025. The market capitalization has decreased to HKD 1.74 trillion.

  • Spot Gold Falls Below $4,110/Ounce, Down 0.37% for the Day

    Spot gold has fallen below $4,110 per ounce, down 0.37% for the day.

  • NVIDIA Announces Investment in Four German Startups Focused on Robotics, Healthcare, and Satellites

    On October 21, Sifted reported that NVIDIA announced plans to invest in four German startups as part of its nearly $10 billion European investment initiative, which targets businesses, universities, and research institutions across Europe. The four companies are: Agile Robots, which develops AI robots for manufacturing, logistics, and healthcare scenarios; Avelios Medical, which creates AI hospital management software; Mirelo, which develops AI models for video and audio generation; and Reflex Aerospace, which designs and manufactures satellites. NVIDIA did not disclose the specific investment amounts for this initiative. The announcement was made at the German Investment Summit held in Berlin on Monday. On the same day, the German government and NVIDIA signed a joint letter of intent to collaboratively advance the development of AI models for industrial applications, and NVIDIA will also expand its cooperation with the German federal government and the Industry 4.0 platform. NVIDIA CEO Jensen Huang stated that Germany has a strong foundation in manufacturing, mathematics, and research, and that AI will enhance rather than replace Germany's industrial capabilities. The week prior, Huang also announced investments in four French startups.

  • South Korea's Exports Surge 105.4% Year-on-Year in First 20 Days of October, Driven by AI Boom in Semiconductors

    On October 21, as global demand for AI continues to soar, South Korea's exports maintained strong growth in early October, with semiconductor shipments being the main driver. Data released by the South Korean Customs on Wednesday showed that after adjusting for working days, exports in the first 20 days of October increased by 65.9% year-on-year, down from a 89.8% increase in the same period in September. Unadjusted for working days, exports grew by 105.4% year-on-year, while imports rose by 42.8%, resulting in a trade surplus of $14.5 billion. In the first 20 days of October this year, South Korea's total exports reached $61.6 billion, continuing the strong momentum from previous months. In September, South Korea's exports amounted to $71.4 billion.

  • Former OpenAI Executive Raises $230 Million for Arda, Valued at $1.5 Billion

    On October 20, CNBC reported that former OpenAI executive Bob McGrew has quietly founded AI manufacturing software startup Arda, completing a $230 million funding round that values the company at $1.5 billion. The round was led by Altimeter Capital, with participation from Accel and Khosla Ventures, and was spearheaded by Apoorv Agrawal of Altimeter. Arda is developing AI assistants for the manufacturing industry, with its models already deployed in collaboration with defense technology company Anduril. McGrew described the product as a user interface and agent for manufacturing engineers, functioning similarly to Claude or Cursor for programmers. He previously served as the head of product and engineering at Palantir for over a decade and has also worked at PayPal. The company states that its software combines proprietary models, open-source models, and some cutting-edge models, with robotics as part of its future roadmap. Investors noted that the global manufacturing industry is approximately $16 trillion in size, with the U.S. market accounting for about $3 trillion.

  • Strive's SATS Preferred Shares Complete $630 Million IPO on Nasdaq

    On October 20, Strive's new preferred shares $SATS completed its IPO, raising $630 million and listing on Nasdaq. The funds raised will be used to increase Bitcoin holdings and acquire cash-generating income-producing assets. SATS is a perpetual cumulative preferred stock with a fixed annual dividend rate of 15%, distributing dividends daily on trading days; the first dividend payment date is set for November 9, 2026, with the record date on November 6. In terms of liquidation preference, SATS ranks below the previously issued SATA and above the common stock ASST.

  • Reuters: ByteDance, Alibaba, and Tencent Order Over $35 Billion in Nvidia Chips

    According to a Reuters report on October 20, ByteDance, Alibaba, and Tencent have collectively ordered over 3 million RTX PRO 5500 workstation graphics cards from Nvidia, with each card priced at approximately $11,400, bringing the total order value to over $35 billion. This chip complies with U.S. export control requirements for China and is designed for AI inference and graphics rendering, rather than high-end data center training chips like the B300 or H200. Sources indicate that domestic demand has exceeded 6 million units, but Nvidia's global production capacity is limited to only 3 million units by 2027, meaning manufacturers may receive only 5%-10% of their requested share, and Nvidia cannot guarantee full delivery. Despite ongoing efforts to promote domestic chip alternatives, this large order reflects the continued demand from domestic companies for Nvidia's CUDA ecosystem and computing power. ByteDance, Alibaba, Tencent, Nvidia, and relevant regulatory agencies have not yet commented on Reuters' report.

  • JPMorgan Includes BTC in Long-Term Capital Assumption Report, Predicts It Will Be the Best Performing Asset Over the Next Decade

    On October 20, JPMorgan included Bitcoin (BTC) in its latest long-term capital assumption report for the first time. The report, which outlines long-term capital assumptions for 2027, explores the predicted range of BTC returns. JPMorgan forecasts the 10-year annualized returns for Bitcoin under baseline, bullish, and bearish scenarios to be 10.0%, -11.2%, and 16.6%, respectively. Due to Bitcoin's historically unstable correlation with other assets and its extremely high volatility, JPMorgan did not include Bitcoin in the main covariance matrix but instead incorporated it into a simplified independent version. The matrix data shows that Bitcoin's 10-year annualized return baseline is a compound return rate of 10.0%, an arithmetic return rate of 20.9%, and an annualized volatility of 55.0%. BTC is projected to outperform core dollar assets such as cash, diversified bonds, and large-cap stocks, making it the best-performing asset over the next decade.