Firmando Digitalmente Con Tu DNIe
Firmando Digitalmente Con Tu DNIe
Firmando Digitalmente Con Tu DNIe
Ricardo Borillo
[email protected]
Yo
jXAdES
@firma
ndice
Firma digital Estndares en criptografa Firma digital en Java Formatos de firma DNIe: Caractersticas y estndares Firma digital con DNIe Herramientas y libreras disponibles
Firma digital
Criptografa
simtrica vs asimtrica
<<<<
Certificate: Data: Version: 3 (0x2) Serial Number: 10:8f:d9:83:3a:fe:b0:e9 Signature Algorithm: sha1WithRSAEncryption Issuer: CN=ACCV-CA2, OU=PKIGVA, O=Generalitat Valenciana, C=ES Validity Not Before: Apr Not After : Apr 8 09:38:53 2008 GMT 8 09:48:53 2011 GMT
Subject: CN=RICARDO BORILLO DOMENECH - NIF:52945813C/serialNumber=52945813C, GN=RICARDO, SN=BORILLO DOMENECH, OU=Ciudadanos, O=Generalitat Valenciana, C=ES Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (1024 bit) Modulus: 00:8c:d5:cd:01:b6:f1:a1:76:e6:af:eb:6a:91:e6: Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Key Usage: critical Key Encipherment, Data Encipherment X509v3 Subject Alternative Name: email:[email protected], DirName:/CN=Ricardo|Borillo| Dom\xC3\xA9nech/UID=52945813C X509v3 CRL Distribution Points: Full Name: URI:http://www.accv.es/gestcert/ciudadanos.crl Authority Information Access: OCSP - URI:http://ocsp.pki.gva.es Signature Algorithm: sha1WithRSAEncryption
Firma digital
Proceso de firma:
Firma digital
Proceso de verificacin de la firma:
Estndares en criptografa
PKCS#
Public Key Criytography Standard: Laboratorios RSA para criptografa de clave pblica
Estndares en criptografa
PKCS#1: Define el formato del cifrado RSA. PKCS#3: Estndar de intercambio de claves Diffie-Hellman. PKCS#5: Estndar de cifrado basado en contraseas. PKCS#7: Sintaxis del mensaje criptogrfico (CMS). PKCS#8: Sintaxis de la informacin de clave privada PKCS#9: Tipos de atributos seleccionados PKCS#10: Estndar de solicitud de certificacin (CSR). PKCS#11: Interfaz de dispositivo criptogrfico ("Cryptographic Token Interface" o cryptoki, HSM). PKCS#12: Sintaxis de intercambio de informacin personal. PKCS#13: Criptografa de curva elptica (en desarrollo). PKCS#14: Generacin de nmero pseudo-aleatorios (en desarrollo). PKCS#15: Estndar de formato de informacin de dispositivo criptogrfico (DNIe).
PKCS#11
Implementacin de un subconjunto del JDK Security API Es un interfaz a otras clases que implementan la funcionalidad deseada
SunPCSC
SunJGSS
SunPKCS11
SUN SunJSSE SunRsaSign
SunSASL SunJCE
XMLDSig
SunMSCAPI
SunPCSC
SunJGSS
SunPKCS11
SUN SunJSSE SunRsaSign
c n SunMSCAPI u o
XMLDSig
a C y
SunSASL
le t s
SunJCE
KeyStore:
Acceso a certificados y claves
Certificados
Certificate certificate = keyStore.getCertificate(alias);
Claves
PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, null);
y verificarlas:
Signature signature = Signature.getInstance("SHA1withRSA"); signature.initVerify(certificate); signature.update(data); signature.verify(signatureValue);
Formatos de firma
Formatos de firma
Firma "en bruto", PKCS#1 o RSA bsica.
Formatos de firma
Firma XML:
W3C XML Signature ETSI XAdES: XML Advanced Electronic Signatures OpenDocument. JAR + XML Signature
Usos:
Formatos de firma
Formatos de firma
Formatos de firma
Formatos de firma
Formatos de firma
CMS:
Los datos de filiacin del ciudadano Los datos biomtricos (modelo dactilar, foto y firma manuscrita) Los dos pares de claves RSA con sus respectivos certificados.
Nombre comercial: ST19WL34 Sistema operativo: DNIe v1.1 Capacidad de memoria: 32Kb
ISO 7816-4: Organizacin, la seguridad y los comandos para el intercambio de informacin ISO 7816-8: Comandos para operaciones de seguridad
Zona pblica. Certificado AC intermedia, Claves DiffieHellman y Certificado x509v3 de componente. Zona privada. Accesible con PIN: Certificado de Firma y de Identificacin. Zona de seguridad. Accesible en lectura por el titular en los Puestos de Actualizacin del DNIe (PAD): Datos de filiacin del ciudadano, foto y firma. Zona lgica inaccesible. Claves RSA privadas y el modelo de la impresin dactilar. Slo a travs del SO del chip.
Problemas:
Windows. Peticin reiterada del PIN. Linux. Integracin con opensc. MacOSX. Problemas de instalacin.
Anclado en distribuciones antiguas de linux. Sin actualizaciones Slo funciona con versiones fijas de opensc. No se libera el cdigo fuente. Problemas de licencia.
Anclado en distribuciones antiguas de linux. Slo funciona con versiones fijas de opensc. No se libera el cdigo fuente. Problemas de licencia.
sudo apt-get install build-essential pkg-config autoconf automake docbookxsl subversion pcscd libpcsclite-dev pcsc-tools libreadline6 libreadline-dev libopenct-dev openssl libssl-dev libtool libltdl-dev libccid svn checkout https://svn.forge.morfeo-project.org/opendnie/opensc-opendnie/trunk cd trunk; ./bootstrap; ./configure make; sudo make install
Comprobaciones varias:
opensc-explorer. Acceso interactivo a una smart card. sudo dnie-tool -av. Muestra informacin de un DNIe. pcsc_scan. Comprueba el lector e identifica la tarjeta. pkcs15-tool -L. Manipulacin de estructuras de datos PKCS#15.
Binarios:
http://www.kounch.com/download/opendnie/
Uso de javax.smartcardio Autor: Luis Fernando Pardo http://es.linkedin.com/in/lfern Pgina principal + Putty DNIe: http://puttydnie.es/puttydnie/dnie-provider Cdigo fuente: https://github.com/lfern/dnieprov
https://github.com/borillo/codemotion-dnie
Formatos:
PKCS#1 CMS/PKCS#7 XML Signature XAdES-X-L Facturae PDF con firma visible OpenOffice
Funcionalidades:
Formatos:
Funcionalidades:
Formatos:
Funcionalidades:
Formatos:
XAdES-A Gran soporte Smart Card Referencia de cdigo Muchos mdulos DSS
Preguntas?