Skip to main content

No project description provided

Project description

Herramientas DNIe Peru

English

Peru DNIe es una aplicación de línea de comandos diseñada para facilitar las operaciones criptográficas utilizando el Documento Nacional de Identidad electrónico peruano (DNI) versión 2.

Antes de comenzar

Esta aplicación es actualmente compatible solo con distribuciones Linux. Para usar tu DNIe, necesitarás un lector de SmartCard o NFC USB. La mayoría de los lectores disponibles en AliExpress son compatibles. He usado con éxito el lector ZoweeTek y lector ACR122U.

Para instalar este paquete, ejecuta:

pip install git+https://github.com/edeustua/peru-dnie.git

Esto debería instalar peru-dnie junto con sus dependencias: attrs, pyscard y rich.

Extrayendo tu Certificado de Firma Pública x509

El certificado público x509 contiene tu clave pública RSA, firmada por Reniec. Esta clave verifica tu identidad y se utiliza para autenticar tus firmas digitales.

Para extraer el certificado público de tu DNIe v2, asegúrate de que tu DNIe esté insertado en el lector y ejecuta:

peru_dnie extract signature mi_certificado_de_firma.crt

Este comando genera un archivo llamado mi_certificado_de_firma.crt, que contiene tu certificado x509 y clave pública.

Para ver el contenido del archivo, utiliza el siguiente comando openssl:

openssl x509 -in mi_certificado_de_firma.crt -noout -text

Deberías ver una salida similar a esta:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            36:e9:0e:66:7f:9c:ff:ee:db:5b:eb:44:7e:33:87:77:15:b5:a3:09
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=PE, O=Registro Nacional de Identificación y Estado Civil, CN=ECEP-RENIEC CA Class 2 II
        Validity
            Not Before: Dec 13 14:11:52 2023 GMT
            Not After : Dec 12 14:11:52 2027 GMT
        Subject: C=PE, ST=Lima-Lima, L=San Bartolo, OU=EREP_PN_RENIEC_26468450, SN=DEUSTUA STAHR, GN=JORGE EMILIANO, serialNumber=PNOPE-********, CN=DEUSTUA STAHR JORGE EMILIANO FIR ******** hard

...

Para extraer la clave pública del certificado, ejecuta:

openssl x509 -pubkey -noout -in mi_certificado_de_firma.crt > mi_llave_publica.pem

Necesitaremos esto para verificar nuestra firma en el siguiente paso.

Firmando un archivo con tu DNIe

NOTA: Firmar un archivo tiene carácter legalmente vinculante. Asegúrate de estar de acuerdo con el contenido antes de firmar.

Para demostración, vamos a firmar un archivo llamado declaracion.txt, que contiene la siguiente declaración:

declaracion.txt con el siguiente contenido:

Por la presente, declaro que este software es de código abierto.
peru_dnie sign declaracion.txt declaracion.txt.firma

DNIe V2 encontrado
Por favor, introduce tu PIN:

Introduce el PIN que configuraste con tu DNIe. El comando produce un archivo llamado declaracion.txt.sig, sirviendo como evidencia de tu firma en declaracion.txt.

Para verificar tu firma, puedes ejecutar este comando openssl:

openssl dgst -sha256 -verify mi_llave_publica.pem -signature declaracion.txt.firma declaracion.txt

Peru DNIe tools

Peru DNIe is a CLI application designed to facilitate cryptographic operations using the Peruvian electronic National Identity Document (DNI) version 2.

Getting started

This application is currently compatible only with Linux distributions. To use your DNIe, you will need a USB SmartCard or NFC reader. Most readers available on AliExpress are compatible. I have successfully used the ZoweeTek and ACR122U successfully.

To install this package, run:

pip install git+https://github.com/edeustua/peru-dnie.git

This should install peru-dnie along with its dependencies: attrs, pyscard and rich.

Extracting Your Public x509 Signing Certificate

The public x509 certificate contains your public RSA key, signed by Reniec. This key verifies your identity and is used to authenticate your digital signatures.

To extract the public certificate from your DNIe v2, ensure your DNIe is inserted into the reader and run:

peru_dnie extract signature my_signing_certificate.crt

This command generates a file named my_signing_certificate.crt, containing your x509 certificate and public key.

To view the file contents, use the following openssl command:

openssl x509 -in my_signing_certificate.crt -noout -text

You should see output similar to this:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            36:e9:0e:66:7f:9c:ff:ee:db:5b:eb:44:7e:33:87:77:15:b5:a3:09
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=PE, O=Registro Nacional de Identificación y Estado Civil, CN=ECEP-RENIEC CA Class 2 II
        Validity
            Not Before: Dec 13 14:11:52 2023 GMT
            Not After : Dec 12 14:11:52 2027 GMT
        Subject: C=PE, ST=Lima-Lima, L=San Bartolo, OU=EREP_PN_RENIEC_26468450, SN=DEUSTUA STAHR, GN=JORGE EMILIANO, serialNumber=PNOPE-********, CN=DEUSTUA STAHR JORGE EMILIANO FIR ******** hard

...

To extract the public key from the certificate, execute:

openssl x509 -pubkey -noout -in my_signing_certificate.crt > my_signing_pubkey.pem

We will need this to verify our signature in the next step.

Signing a file with your DNIe

NOTE: Signing a file is legally binding. Ensure you agree with the contents before signing.

For demonstration, let's sign a file named statement.txt, which contains the following declaration: statement.txt with the follwing content:

Hereby, I state that this software is open source.

Execute the following command to generate a digital signature:

peru_dnie sign statement.txt statement.txt.sig

DNIe V2 encontrado
Por favor, introduce tu PIN:

Enter the PIN you set up with your DNIe. The command produces a file named statement.txt.sig, serving as evidence of your signature on statement.txt.

To verify your signature, you can run this openssl command:

openssl dgst -sha256 -verify my_signing_pubkey.pem -signature statement.txt.sig statement.txt

Sources

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

peru_dnie-0.0.2.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

peru_dnie-0.0.2-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file peru_dnie-0.0.2.tar.gz.

File metadata

  • Download URL: peru_dnie-0.0.2.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for peru_dnie-0.0.2.tar.gz
Algorithm Hash digest
SHA256 6ed2effb394617b10d390d97a95aba9c99ff27067c6f4dce6b0f83b2995f2ff9
MD5 4d33a7f71a64f266128db25cfa85c067
BLAKE2b-256 d95c0bee39e2587dcdb1c1262ca65fa5d6e82295ff3738af218b062aea3dbcda

See more details on using hashes here.

File details

Details for the file peru_dnie-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: peru_dnie-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 15.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for peru_dnie-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b545032156bfa7819931058c24317e37fce5cbf3924296273db51647e34c8296
MD5 6610d757f801d2681bf5dc4c52d50361
BLAKE2b-256 866c0f7f805e718a9d87dd38cda7ee1b7e076ad4353b7a3aff1c4fce97470a5f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page