Skip to content

Latest commit

 

History

History
106 lines (64 loc) · 4.6 KB

File metadata and controls

106 lines (64 loc) · 4.6 KB

AnonAr

AnonAr is a zero-knowledge protocol that allows DNI's holders to prove their identity in a privacy preserving way.

DNI = Documento Nacional de Identidad (Argentina's ID issued by ReNaPer )

Motivation

As an Argentinian PSE Core Program student and after diving around projects like zkEmail, OpenPassport and mainly Anon Aadhaar, I've found an opportunity to create value and impact in the web3 ecosystem.

Project description

By using programmable cryptography techniques we can leverage the uses of "DNI Digital" by creating a SDK toolkit where developers can implement it in their apps and enable users to generate a zero-knowledge proof of their identities.

"DNI Digital" is a digital ID considered equally valid as the physical national ID card (except for voting and travelling) delivered by ReNaPer. To possess this document it's required to go into a validation process including biometrics. Instructions here.

The digital DNI is accessed throught the application Mi Argentina that have a QR code containing a JSON Web Token signed using RS256 algorithm (RSA with SHA-256).

The digital ID could be validated offline with the application ValidAR.

How it works

The prover upload the QR code generated in the app Mi Argentina: Mis Documentos->DNI->Ver DNI Digital->Pin->Verifica código QR.

From this QR, which is a JWT, it parse the signed data and verifies it with the pubkey. See this test example

The circuit will generate the proof that can be use in an App or a Smart Contract to convince the verifier that the prover has a valid argentinian ID. It's important to mention that all the information included in the JWT never leaves the prover's browser.

Specification

  • Extract data from QR code and parse it
  • Verify the RSA signature of the hashed data
  • Verify it's signed by ReNaPer using the public key
  • Extract fields from signed data
  • Generate the proofs (e.g. Proof of Personhood)

Inputs

  • Signature (private)
  • Signed Data (private)
  • Public Key (public)
  • signalHash (public)

Outputs

  • userNullifier
  • identityNullifier
  • timestamp
  • pubKeyHash
  • signalHash

Law

As declared in the "Art. 4" of the "Decreto 744/2019":

"ARTÍCULO 4º.- Establécese que la credencial virtual del Documento Nacional de Identidad para dispositivos móviles inteligentes será considerada a todos los efectos Documento Nacional de Identidad, teniendo pleno valor identificatorio en todos los actos públicos y privados en los términos de la Ley Nº 17.671 y sus modificatorias."

Translation:

"Article 4.- Stay that the virtual credential of the National Identity Document for smart mobile devices will be considered for all purposes National Identity Document, having full identifying value in all public and private acts in the terms of Law No. 17.671 and its amendments."

Potential use cases

  • Funding / voting
  • Anon checkin
  • Ticketing (Devconnect Buenos Aires 2025???)
  • Proof of Personhood / Proof of Age
  • Gitcoin Passport
  • Wallet recovery?
  • ReProCann (Registro del Programa Cannabis)
  • HumanX - ZK Social Media

Possible challenges

I've found ReNaPer's publicKey by doing reverse engineering of the ValidAR App but couldn't find a public site where the it's published by the goverment. This could be an issue since the verifier will need to validate the origin of this key.

Goal of the project

To build a MVP allowing users to generate a valid proof.

Mentors

Resources