SlideShare una empresa de Scribd logo
1 de 67
29/11/2015
Tomás García-Merás
tomas.garciameras@atos.net
clawgrip@hotmail.com
Programación y uso de
tarjetas criptográficas
NFC (DNIe, TUI, etc)
con Android
29/11/2015
Conceptos básicos de tarjetas
inteligentes
Programación y uso
de tarjetas
criptográficas NFC
(DNIe, TUI, etc) con
Android
3
Agenda
▶ Tarjetas inteligentes
▶ ISO 7816
▶ PC/SC
▶ ASN.1
▶ PKCS#15
▶ CWA-14890
▶ PACE
4
Tarjetas inteligentes
criptográficas
▶ Chip con capacidad de proceso insertado en
una tarjeta plástica:
– Procesador de uso general con capacidad
de memoria y potencia limitados.
– Coprocesador criptográfico con múltiples
capacidades: 3DES, RSA, AES, EC, etc.
– Velocidad de comunicaciones muy limitada
(típicamente 9.600 en modo serie).
▶ Puede tener otros formatos:
– MicroSD, USB, PCI, software, etc.
5
Tarjetas inteligentes criptográficas
Comunicación con la tarjeta
▶ El interfaz con una tarjeta es muy sencillo, y se basa en la norma ISO 7816-4:
– El IFD envía un comando en forma de octetos binarios (APDU) al chip de la
tarjeta (ICC), y este contesta con otra APDU.
• La tarjeta únicamente enviará datos al IFD como respuesta a un envío
previo de este, nunca inicia las comunicaciones.
▶ Ejemplo:
COMMAND APDU
RESPONSE APDU
ICCIFD
90B8000007
0203CC950536219000
ICCIFD
6
Tarjetas inteligentes criptográficas
Comunicación con la tarjeta – ISO 17816-4
▶ Las APDU están normalizadas en la ISO 7816-4:
– Define un formato unificado para los comandos APDU y las APDU de
respuesta a estos.
• Ciertas tarjetas pueden ignorar esta norma e implementar otras equivalentes (por
ejemplo, las SIM implementan GSM 11.11).
7
Tarjetas inteligentes criptográficas
Comunicación con la tarjeta – ISO 17816-4
▶ Ejemplo de APDU: 00A40000026020
– 00 Clase de APDU (0x00 = APDU estándar)
– A4 Instrucción (0xA4 = Selección del fichero)
– 00 Primer parámetro de la instrucción
– 00 Segundo parámetro de la instrucción
– 02 Longitud del campo de datos (0x02 = dos octetos)
– 60 20 Campo de datos (6020 es el nombre del fichero a seleccionar)
Selección (sin parámetros) del fichero 6020 dentro del directorio actual
▶ A este comando un DNIe contestará: 610E
– 61 Operación correcta, hay respuesta disponibles.
– 0A La respuesta disponible mide 0x0A octetos.
8
Tarjetas inteligentes criptográficas
Comunicación con la tarjeta – ISO 17816-4
▶ Prueba simple:
Nota: Un comando de respuesta correcta termina siempre en 9000 o en 61xx
9
Tarjetas inteligentes criptográficas
Comunicación con la tarjeta – ISO 17816-4
▶ La organización básica de datos dentro de una tarjeta también está normalizada
en la ISO 7816-4:
– MF: Master File, directorio raíz de la tarjeta.
– DF: Dedicated File, equivalente a un directorio.
– EF: Elementary File, equivalente a un fichero.
Cada elemento puede referenciarse por su nombre (longitud arbitraria, normalmente
un texto ASCII o su identificador (dos octetos, por ejemplo).
EF EF
DF DF EF
MF
10
Tarjetas inteligentes criptográficas
Comunicación con la tarjeta – ISO 17816-4
▶ ISO 7816-4 define un catálogo de comandos y respuestas para las
operaciones más comunes.
• Las tarjetas implementan además comandos propietarios no catalogados en la ISO.
▶ Por ejemplo:
– READ BINARY
– WRITE BINARY
– UPDATE BINARY
– ERASE BINARY
– READ RECORD(S)
– WRITE RECORD
– APPEND RECORD
– UPDATE RECORD
– GET DATA
– PUT DATA
– SELECT FILE
– VERIFY
– INTERNAL AUTHENTICATE
– EXTERNAL AUTHENTICATE
– GET CHALLENGE
– MANAGE CHANNEL
11
Tarjetas inteligentes criptográficas
Comunicación con la tarjeta – IFD ICC
▶ ¿Cómo le hago llegar un comando a la tarjeta?
– La práctica totalidad de los lectores de tarjetas siguen la norma USB CCID:
• http://www.usb.org/developers/docs/devclass_docs/DWG_Smart-Card_CCID_Rev110.pdf
– La práctica totalidad de los sistemas operativos exponen un API PC/SC para
el acsesso a los lectores de tarjetas:
• http://www.pcscworkgroup.com/
– La mayoría de los sistemas operativos traen de serie un controlador para
lectores CCID que expone el API PC/SC.
– La mayoría de los lenguajes de programación (.NET, Java, etc.) contienen
API de alto nivel para el acceso a PC/SC.
CCIDFW Driver PC/SC App
12
Tarjetas inteligentes criptográficas
Comunicación con la tarjeta – IFD ICC
▶ ¿Cómo le hago llegar un comando a la tarjeta?
– API Java
• JSR 268: Java Smart Card I/O API (incluido de serie en Linux, Windows,
OS X y Solaris desde Java 6)
– https://jcp.org/en/jsr/detail?id=268
Ejemplo:
final List<CardTerminal> terminals = TerminalFactory.getDefault().terminals().list();
final Card card = terminales.get(0).connect(*);
final CardChannel canal = card.getBasicChannel();
final ResponseAPDU response = canal.transmit(new CommandAPDU(COMMANDO));
13
Tarjetas inteligentes criptográficas
Comunicación con la tarjeta – IFD ICC
▶ ¿Cómo le hago llegar un comando a la tarjeta?
– ¿Android?
• Android no tiene controladores para lectores USB CCID, es necesario
implementar nuestra propia implementación de la normativa.
– https://github.com/ctt-gob-es/jmulticard/tree/master/jmulticard-android
• Es posible usar el canal inalámbrico NFC para enviar APDU a tarjetas
compatibles con ISO 14443 (NFC es un subconjunto de esta normativa).
Ejemplo:
final IsoDep isoDep = IsoDep.get(tag);
isoDep.connect();
isoDep.setTimeout(ISODEP_TIMEOUT);
final byte[] response = isoDep.transceive(APDU_COMANDO);
14
Tarjetas inteligentes criptográficas
¿Qué hay dentro de una tarjeta? ASN.1
▶ ASN.1 es un lenguaje de descripción de datos de uso general en
muchos protocolos y normativas:
– LDAP, UMTS, X.400, X.25, SNMP.
– Basado en estructuras binarias tipo TLV:
• Por ejemplo: 020101
– 02: Tipo de datos (0x02 = Número entero)
– 01: Longitud de los datos (0x01 = 1 octeto)
– 01: Valor de los datos (0x01 = Número uno)
– Muy compacto en cuanto a tamaño, muy eficiente en cuanto a uso de
recursos para su proceso (memoria, potencia de proceso), per muy
molesto de aprender y depurar.
– Recursos de aprendizaje:
• http://www.oss.com/asn1/resources/books-whitepapers-pubs/asn1-books.html#dubuisson
• http://www.oss.com/asn1/resources/books-whitepapers-pubs/asn1-books.html#larmouth
15
Tarjetas inteligentes criptográficas
¿Qué hay dentro de una tarjeta? ASN.1
▶ ASN.1 define muy diversos tipos de datos de forma implícita:
Simple Types Tag Typical Use
BOOLEAN 1 Model logical, two-state variable values
INTEGER 2 Model integer variable values
BIT STRING 3 Model binary data of arbitrary length
OCTET STRING 4 Model binary data whose length is a multiple of eight
NULL 5 Indicate effective absence of a sequence element
OBJECT
IDENTIFIER 6 Name information objects
REAL 9 Model real variable values
ENUMERATED 10 Model values of variables with at least three states
CHARACTER
STRING *
Models values that are strings of characters from a specified
characterset
16
Tarjetas inteligentes criptográficas
¿Qué hay dentro de una tarjeta? ASN.1
▶ ASN.1 define muy diversos tipos de datos de forma implícita:
Structured Types Tag Typical Use
SEQUENCE 16 Models an ordered collection of variables of different type
SEQUENCE OF 16 Models an ordered collection of variables of the same type
SET 17 Model an unordered collection of variables of different types
SET OF 17 Model an unordered collection of variables of the same type
CHOICE *
Specify a collection of distinct types from which to choose
one type
SELECTION * Select a component type from a specified CHOICE type
ANY *
Enable an application to specify the type
Note: ANY is a deprecated ASN.1 Structured Type. It has been
replaced with X.680 Open Type.
17
Tarjetas inteligentes criptográficas
¿Qué hay dentro de una tarjeta? PKCS#15
▶ La normativa PKCS#15 (fuertemente basada en ASN.1) defines las
estructuras internas de las tarjetas inteligentes, así como su
organización en la memoria de la tarjeta:
18
Tarjetas inteligentes criptográficas
¿Qué hay dentro de una tarjeta? PKCS#15
▶ PKCS#15 nos va a indicar la localización dentro de la tarjeta de las
claves públicas, las claves privadas, los certificados, etc. Para eso
define una estructura compleja de ficheros y punteros a ficheros.
19
Tarjetas inteligentes criptográficas
Consideraciones adicionales
▶ Las tarjetas inteligentes pueden estableces mecanismos adicionales
de seguridad:
– Autenticación externa:
• La tarjeta autentica al IFD.
– Autenticación interna:
• El IFC autentica al ICC.
– Canal cifrado
• CWA-14890.
– PACE
29/11/2015
Conceptos básicos de criptografía y
firma electrónica
Programación y uso
de tarjetas
criptográficas NFC
(DNIe, TUI, etc) con
Android
21
Agenda
▶ Introducción a la criptografía
– Huellas digitales
– Códigos de autenticación de mensajes
– Cifrado
– Firma digital
▶ Claves, certificados y almacenes
– Conceptos
– Formatos de firma
▶ Sobres electrónicos
▶ Cifrado simétrico
22
Introducción a la criptografía
▶ Es la parte de la criptología que estudia los algoritmos, protocolos, sistemas,…
que permiten la seguridad en las comunicaciones.
▶ Se basa en el uso de mecanismos matemáticos que aseguran la complejidad
computacional y/o estadística de violar la seguridad del las comunicaciones.
▶ La está orientada a proporcionar las siguientes propiedades de un mensaje:
– Confidencialidad
• El mensaje sólo es legible para su autor y/o destinatario.
– Integridad
• El mensaje no se ha modificado.
– Autenticidad
• El mensaje ha sido creado por quien dice ser.
23
▶ La huella electrónica es una breve serie de octetos que identifica unívocamente
a un binario. Una huella digital solo puede provenir de un binario específico y
debe ser imposible modificar un binario sin que cambie su huella digital.
▶ Evidentemente, es conceptualmente imposible
que esta definición se cumpla, por lo que, siendo
estricto, podríamos dejarlo en “debe ser
estadísticamente muy raro encontrar dos binarios
con la misma huella digital y computacionalmente
muy costoso construir un binario a partir de una
huella digital o modificar el binario sin que cambie
esta última”.
▶ El concepto “computacionalmente costoso” varía según avanza la tecnología,
por lo que los algoritmos de huella digital se quedan obsoletos con el tiempo.
Huellas Digitales
24
▶ Los códigos de autenticación de mensajes (MAC) son porciones de datos
generados a partir de un mensaje que permiten comprobar su integridad.
▶ El MAC de un mensaje suele enviarse adjunto al mismo, de tal forma que en
destino se puede comprobar si el mensaje o el código son alterados durante el
transporte.
▶ Para asegurar la autenticidad de los datos. El MAC de un mensaje suele
depender de una clave conocida por emisor y destinatario.
▶ Las funciones MAC más utilizadas son las de tipo HMAC en donde el código de
autenticación se genera a partir de una huella digital y una clave secreta.
– Además de la integridad, nos permite verificar la autenticidad del mensaje.
Código de Autenticación de
Mensaje
25
▶ El cifrado es un procedimiento criptográfico mediante el que a partir de un
mensaje legible se obtiene un mensaje ilegible de tal forma que se puede
revertir el proceso.
▶ El cifrado simétrico o cifrado de clave simétrica/secreta es aquel en el que se
utiliza una clave para el cifrado del mensaje y la misma clave para el descifrado.
▶ El cifrado asimétrico o cifrado de clave asimétrica/pública es aquel en el que
se utiliza una clave para el cifrado del mensaje y otra clave distinta para su
descifrado. Este par de claves es único, de tal forma que lo cifrado por una se
descifra con la otra (y viceversa) y no con ninguna otra clave.
Cifrado
Clave Secreta Clave Secreta
Clave A Clave B
26
▶ El cifrado RSA funciona con un par de claves complementarias (criptografía
asimétrica), lo que se cifra con la primera solo puede ser descifrado con la
segunda y viceversa.
▶ El concepto clásico es que el titular de las claves conserva una en secreto (clave
privada) y distribuye públicamente la otra (clave pública).
– Si cifra algo con la privada, todo el mundo puede descifrarlo con la pública:
• Así demostramos que el cifrado lo he hecho yo, porque solo yo tengo la
clave privada.
– Si alguien usa la clave pública de otra persona para cifrar algo se asegura que
solo esta puede descifrarlo, puesto que solo ella tiene la clave privada.
▶ El problema de la criptografía con algoritmo RSA es que es computacionalmente
costoso, por lo que solo puede usarse con datos de tamaño reducido.
Cifrado RSA
27
▶ Si unimos una huella digital y un cifrado RSA…
▶ Si unimos en una operación atómica la extracción de la huella digital de un
binario y el posterior cifrado de esta con una clave privada RSA tenemos:
– La operación solo la puedo haber realizado yo, puesto que ha sido hecha con
la clave privada.
– La operación está unívocamente ligada a un fichero binario, puesto que lo que
se cifra es su huella digital.
– Ligado unívocamente a un único documento y a una única persona…
• ¡Una firma electrónica! (O casi)
Firma digital
28
▶ Las firmas electrónicas no son solo una huella digital y un cifrado RSA, sino que
se introducen una serie de estructuras con información adicional.
– Información sobre los algoritmos usados
– Información sobre el firmante
– Información sobre el proceso de la firma (momento, etc.)
▶ En la práctica, estas estructuras pueden ser ASN.1 (CAdES, CMS, PAdES,…) o
XML (XAdES, XMLDSig, ODF,…).
Firmas electrónicas
29
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="urn:envelope">
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n- 20010315#WithComments"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>uooqbWYa5VCqcJCbuymBKqm17vY=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>KedJuTob5gtvYx9qM3k3gm7kbLBwVbEQRl26S2tmXjqNND7MRGtoew==</SignatureValue>
<KeyInfo> <KeyValue> … </KeyValue> </KeyInfo>
</Signature>
</Envelope>
Firmas electrónicas
30
Firmas electrónicas
31
▶ Un par de claves (pública + privada) se empaqueta también junto a otras
estructuras de metadatos en lo que se llama un certificado digital.
▶ Solo existe una variante: ASN.1 (normativa X.509). No hay versión XML.
Certificados electrónicos
32
▶ Certificado autofirmado
– Certificado firmado con su propia clave privada.
▶ ¿Quién nos asegura que ese certificado pertenece a quien dice ser?
▶ Autoridad de certificación (CA)
– Entidad de confianza encargada de la emisión de certificados que establece
las políticas necesarias para garantizar la identidad de los usuarios de sus
certificados.
▶ Cadena de certificación
– Listado ordenado de certificados de clave pública utilizados para la firma del
certificado de usuario.
▶ Certificado Raíz
– Certificado autofirmado de la cadena de certificación.
▶ Certificado de Autoridad intermedia
– Certificado intermedio de la cadena de certificación.
Certificados electrónicos
33
▶ Los certificados se almacenan en almacenes de certificados que pueden estar
cifrados para proteger las claves de usuario y certificados de terceros.
▶ Los sistemas operativos suelen contar con un almacén de sistema al que
cualquier aplicación puede acceder para hacer uso de los certificados que
contiene.
– Windows: CAPI
– Linux: Mozilla
– Apple: KeyChain
▶ Existen distintos formatos de almacenes en disco:
– PKCS#12 (PFX)
– JKS (Java KeyStore)
– BKS (BouncyCastle KeyStore)
Almacenes de claves
34
▶ Es el marco de trabajo para el acceso y desarrollo de funciones criptográficas en
la plataforma Java. Se diseño entorno a los principios:
– Independencia de la implementación:
• La implementación de los distintos proveedores presenta una interfaz
estándar.
– Interoperabilidad entre aplicaciones:
• Una aplicación es dependiente de un proveedor concreto.
– Extensibilidad de algoritmos:
• Es posible agregar nuevos proveedores que aporten compatibilidad con
nuevos algoritmos.
▶ Se dispone de diversos proveedores que proporcionan las distintas funciones
criptográficas para algoritmos concretos.
Java Cryptography Architecture
(JCA)
35
▶ Tipos de proveedores disponibles:
– MessageDigest: Motor para la generación de huellas digitales.
– Keystore: Motor para el acceso y gestión de almacenes de claves.
– Cipher: Motor para el cifrado y descifrado de datos.
– Signature: Motor para la generación y validación de firmas digitales.
– KeyGenerator: Motor para la generación de claves secretas.
– KeyPairGenerator: Motor para la generación de pares de claves asimétricas.
– Mac: Motor para la generación y validación de códigos de autenticación.
– SecureRandom: Motor para la generación de números aleatorios.
– …
Java Cryptography Architecture
(JCA)
36
▶ Según CERES: Es el conjunto de datos en forma electrónica, consignados junto
a otros o asociados con ellos, que pueden ser utilizados como medio de
identificación del firmante.
▶ Según INCIBE: La firma electrónica, como su propio nombre indica, es el
equivalente electrónico de nuestra firma manuscrita. Para resumirlo de forma
sencilla, es un conjunto de datos que nos permiten acreditarnos y cerrar
acuerdos por medios electrónicos, principalmente por Internet. La firma
electrónica se conoce también como firma digital.
▶ Más bien una mezcla: La firma electrónica es un conjunto de datos
electrónicos que declaran la conformidad con otros datos por parte de un
firmante identificado.
▶ En España, desde el año 2003, la firma electrónica tiene el mismo valor a
efectos legales que la firma manuscrita. (LEY 59/2003, del 19 de diciembre,
de firma electrónica)
Firma electrónica
37
▶ La firma electrónica avanzada es la firma electrónica que permite identificar al
firmante y detectar cualquier cambio ulterior de los datos firmados, que está
vinculada al firmante de manera única y a los datos a que se refiere y que ha
sido creada por medios que el firmante puede mantener bajo su exclusivo
control.
▶ Para que una firma electrónica pueda ser considera firma electrónica avanzada,
la ley marca el cumplimiento de los siguientes requisitos:
– La identificación o autenticación de usuarios
– Integridad
– No repudio
– Confidencialidad
Firmas Avanzada
38
▶ Se considera firma electrónica reconocida la firma electrónica avanzada basada
en un certificado reconocido y generada mediante un dispositivo seguro de
creación de firma.
▶ Certificado reconocido es aquel emitido por una autoridad de certificación
reconocida.
▶ Dispositivo de creación de firma es aquel programa o sistema informático que
permite crear una firma electrónica. Este se considera seguro cuando asegura:
– Que la firma no se puede reproducir.
– Que no se pueden obtener los datos utilizados para la generación de la firma.
– Que los datos de creación de firma pueden ser protegidos de forma fiable por
el firmante contra su utilización por terceros.
– Que el dispositivo utilizado no altera los datos antes de la firma.
▶ El dispositivo seguro de creación de firma más común en España es el DNIe.
Firmas Reconocidas
39
▶ Un documento de firma puede contener más de una firma.
▶ En la firma manuscrita también ocurre.
▶ La firma en paralelo (Cofirma) es aquella en la que varios firmantes muestran su
conformidad con unos datos.
– Da igual el orden.
▶ La firma en cascada (Contrafirma) es aquella en la que un firmante muestra su
conformidad con otra firma.
– Aplica a una firma concreta, no a los datos.
Firmas en paralelo y en cascada
Firma Cofirma Contrafirma
40
▶ ¿Se descifra adecuadamente con la clave pública el valor “PKCS#1” de la firma?
▶ ¿Coincide el dato resultante con la huella digital de los datos firmados?
– Es necesario recalcular la huella digital de los datos siempre.
▶ ¿Es el certificado de firma correcto?
– ¿Está dentro de su periodo de validez?
– ¿Está revocado?
• OCSP
• CRL
– ¿Está emitido por una CA de confianza?
▶ ¿Es la estructura general de la firma correcta?
– Formato de firma: XAdES, CAdES, PAdES, etc.
– Firmas adicionales en sub-estructuras internas.
Validación de firmas
41
▶ Los formatos de firma son especificaciones, comúnmente aprobadas como
estándares reconocidos, que definen qué información debe o puede contener
una firma electrónica y el cómo se estructura esa información.
▶ Existen varios formatos de firma electrónica estandarizados. Principalmente se
suelen dividir entre:
– Formatos genéricos: CAdES, XAdES, CMS/PKCS#7,…
– Formatos específicos de documentos: PAdES, OOXML, ODF,…
▶ Paralelamente, también puede diferenciarse entre:
– Formatos binarios: CAdES, CMS/PKCS#7, PAdES…
– Formatos XML: XAdES, OOXML, ODF…
Formatos de firmas electrónica
42
▶ El resultado de la firma es siempre un fichero XML.
▶ Las firmas XML son aptas tanto para ficheros XML como para archivos binarios.
– Los ficheros binarios se codifican en Base64 (representación en un
subconjunto de caracteres ASCII de los datos binarios) para poder ser
insertados en el XML final.
▶ Distintas variantes:
– Enveloping
– Enveloped
– Detached
▶ Varios formatos de firma XML:
– XMLDSig
– XAdES (firmas XML avanzadas)
– ODF (Open Document Format, firmas de documentos OpenOffice.org)
– OOXML (Office Open XML, firmas de documentos MS-Office)
– SOAP (Simple Object Access Protocol, firma de mensajes para servicios Web)
– …
Firmas XML
43
▶ El XML contiene una serie de referencias a los elementos que se desean
firmar electrónicamente.
▶ Del destino de cada referencia, se calcula la huella digital para asegurar
que el contenido se de-referencia intacto.
▶ Finalmente, se firma la combinación de las referencias.
Fundamentos técnicos de las
firmas XML
44
▶ En el siguiente ejemplo, hay una única referencia, que indica que hemos firmado
el fichero http://www.claw.org/doc-a-firmar.xml:
<?xml version="1.0" encoding="UTF-8"?>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-
c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="http://www.claw.org/doc-a-firmar.xml">
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue/>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue/>
</ds:Signature>
Fundamentos técnicos de las
firmas XML
45
▶ Una firma XML puede contener múltiples referencias, las cuales pueden apuntar
a datos que están dentro del mismo fichero XML o dentro del mismo contexto
XML, pero también que apunten a datos externos accesibles mediante URL
(http/https).
▶ Una firma XML no solo contiene una referencia a los datos que queremos firmar,
sino que también incluye referencias a otros atributos o metadatos, como por
ejemplo:
– Copia de datos del firmante (certificado, clave pública)
– Otros atributos
▶ El Cliente @firma soporta únicamente una referencia a datos a firmar (solo
podemos firmar un dato en cada fichero de firma), e incluye además otras
referencias obligadas por las normativas.
Fundamentos técnicos de las
firmas XML
46
▶ En una firma XML Detached, la referencia apunta a unos datos que no están en
el mismo contexto XML que la propia firma electrónica.
▶ Dos posibilidades:
– Los datos no están en el mismo contexto, pero si en el mismo fichero XML:
– Los datos no están en el mismo fichero XML, y son accesibles vía HTTP o
HTTPS:
INTERNALLY DETACHED
EXTERNALLY DETACHED
XML Detached
47
▶ En este caso se inserta una copia de los datos firmados dentro de la
estructura XML de firma:
▶ Si los datos son XML, se insertan directamente, y si no son XML se
convierten antes a Base64.
XML Enveloping
48
▶ En este caso se inserta la estructura XML de firma dentro de los propios
datos, siempre que estos también se encuentren en formato XML.
▶ No es posible usarlo con datos que no estén en formato XML
XML Enveloped
49
▶ ODF
– Los documentos ODF de OpenOffice.org son colecciones de ficheros XML y de
recursos dentro de un contenedor comprimido (ZIP), y se firman con
XMLDSig Detached, pero siguiendo unas pautas específicas.
– El Cliente @firma v3 soporta firmas de documentos ODF (hojas de cálculo,
presentaciones, documentos de texto, etc.) generados con OpenOffice 3 y
superiores o programas equivalentes.
▶ OOXML
– Los documentos OOXML de MS-Office 2007 y superiores son, al igual que los
ODF, colecciones de ficheros de recursos y XML, y se firman igualmente con
XMLDSig Detached.
– El Cliente @firma no soporta firmas de documentos OOXML.
▶ SOAP
– Las firmas SOAP son firmas XMLDSig organizadas siguiendo el esquema
definido por SOAP.
– El Cliente @ firma no soporta firmas SOAP
Variantes de XML
50
▶ Las firmas avanzadas XAdES (XML Advanced Electronic Signature) son firmas
XMLDSig que añaden ciertas referencias adicionales para firmar nuevos
atributos y metadatos.
▶ Distintas variedades:
– BES (Básica)
• Atributos adicionales sobre el firmante, los datos firmados y el proceso de
firma
– T (Timestamped)
• BES + Sello de Tiempo
– C (Completa)
• BES + Referencias a los datos de validación (listas de revocación o
repuestas OCSP)
– X (EXtendida)
• C pero con sellos de tiempo en las referencias a los datos de validación.
Firmas XML Avanzadas: XAdES
51
▶ Distintas variedades (Continuación):
– XL (Longevidad extendida)
• BES + Datos de validación (las listas de revocación o las respuestas OCSP
en sí, y no las referencias a ellas)
– A (Archivo)
• Permite encadenar referencias a sellados de tiempo periódicos (evita la
degradación de la seguridad por obsolescencia)
– EPES (Acorde a política)
• Incluye una referencia a la política que rige el proceso de firma
Firmas XML Avanzadas: XAdES
52
▶ Respecto a XMLDSig, la referencia adicional que se firma tiene este aspecto:
<xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Id="QualifyingProperties"
Target="#Signature" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<xades:SignedProperties Id="SignedProperties">
<xades:SignedSignatureProperties>
<xades:SigningTime>2010-01-13T10:19:04+01:00</xades:SigningTime>
<xades:SigningCertificate>
<xades:Cert>
<xades:CertDigest>…</xades:CertDigest>
<xades:IssuerSerial>…</xades:IssuerSerial>
</xades:Cert>
</xades:SigningCertificate>
</xades:SignedSignatureProperties>
<xades:SignedDataObjectProperties>
<xades:DataObjectFormat ObjectReference=“#Reference">
<xades:Description/>
<xades:MimeType>text/xml</xades:MimeType>
<xades:Encoding/>
</xades:DataObjectFormat>
</xades:SignedDataObjectProperties>
</xades:SignedProperties>
</xades:QualifyingProperties>
Ejemplo de firma XAdES (BES)
53
▶ Las firmas binarias son en aplicación completamente equivalentes a las firmas
XML, solo que los datos se describen en lenguaje ASN.1 (datos binarios).
– El lenguaje de descripción de datos ASN.1 es en muchos aspectos equivalente
a XML, pero con las siguientes ventajas:
• Ocupa mucho menos espacio
– Menos tiempo y coste en la transmisión de datos
• Es mucho más rápido
– Y los siguientes inconvenientes:
• No es legible por las personas
• No es posible una variante como la Enveloped XML en la que los datos
contengan las firmas, o al menos no de forma genérica.
▶ La normativa más extendida de firma binaria es CMS, una evolución de la más
antigua PKCS#7.
▶ Hay una variante avanzada de CMS: CAdES
▶ Hay usos propietarios de PKCS#7/CMS similares al Enveloped:
– JAR (Sun Microsistems), PE (Microsoft), PDF (Adobe), ZIP (PKWare), etc.
Firmas Binarias
54
▶ Al igual que ocurría con las firmas XML, no solo se firman los datos, sino
también una serie de información y metadatos adicionales.
▶ Se mantiene internamente una lista de elementos a firmar, uno de los
elementos de esta lista apunta a los datos que queremos firmar.
▶ De cada uno de los elementos de la lista se guarda una huella digital, y
finalmente se firma la combinación de huellas digitales.
▶ Es posible omitir o incluir los datos que se firman dentro de la firma resultante:
– Implícita:
• La firma contiene tanto la huella digital de los datos firmados como los
propios datos firmados.
– Explícita:
• La firma contiene únicamente la huella digital de los datos firmados, pero
no estos últimos.
Fundamentos de las firmas
binarias
55
▶ Una firma binaria basada en PKCS#7 (como CMS y CAdES) no funciona con un
modelo de referencias que permite firmar un número arbitrario de binarios en
una única firma individual.
SignedData ::= SEQUENCE {
version CMSVersion,
digestAlgorithms DigestAlgorithmIdentifiers,
encapContentInfo EncapsulatedContentInfo,
certificates [0] IMPLICIT CertificateSet OPTIONAL,
crls [1] IMPLICIT RevocationInfoChoices OPTIONAL,
signerInfos SignerInfos
}
EncapsulatedContentInfo ::= SEQUENCE {
eContentType ContentType,
eContent [0] EXPLICIT OCTET STRING OPTIONAL
}
▶ En resumen: Los campos están prefijados, un único contenido por firma.
Diferencias conceptuales con las
firmas XML
56
▶ CAdES es una especificación de firma pareja a XAdES, y encontramos los
mismos subtipos:
– BES (Básica), EPES (acorde a política), T (con sello de tiempo), A (para
archivo), etc.
▶ El Cliente @firma v3 soporta dos variantes de CAdES:
– BES
• Se añade un atributo sobre el firmante dentro de la lista de elementos a
firmar. Es lo mínimo para considerar una firma CMS como CAdES-BES.
– EPES
• Incluye un atributo que indica el identificador de la política de firma que se
ha aplicado.
• A nivel funcional es exactamente igual a XAdES.
CAdES
57
▶ PDF (Adobe Portable Document Format)
– Las firmas de los documentos PDF son en realidad firmas PKCS#7 incrustadas
en un lugar específico dentro del documento, y que firman una huella digital
que cubre la totalidad del contenido del documento (y deja fuera aspectos
variables).
– El Cliente @Firma soporta firmas PDF usando huellas digitales SHA-512, tal y
como recomienta Adobe PDF v9.
▶ PAdES (Firmas Avanzadas PDF)
– Las firmas PAdES, en su perfil básico (BES), son en realidad firmas PDF
normales realizadas de una forma específica.
– Existen, al igual que con el resto de firmas AdES, más variantes.
Otras Variantes de las Firmas
Binarias (I)
58
▶ PE (Microsoft Portable Executable)
– Las firmas PE son firmas PKCS#7 incrustadas en los ficheros ejecutables de
MS-Windows (EXE).
▶ JAR (Sun Microsystems Java Archive)
– Las firmas de ficheros JAR son directamente firmas PKCS#1 de una lista
textual de huellas digitales de cada uno de los ficheros que hay dentro del
JAR.
▶ ZIP
– De nuevo, las firmas de ficheros comprimidos ZIP consisten en firmas
PKCS#7 (referentes a las huellas digitales de cada uno de los ficheros
contenidos en el ZIP) incrustadas en el binario original.
– El Ciente @Firma no soporta firmas PE ¡Solicitadlo si necesitáis este tipo
de firmas en el Cliente!
• Importante: Si soportáis ZIP en vuestros esquemas de interoperabilidad
plantead que el soporte de firmas ZIP puede ser la opción más natural.
Otras Variantes de las Firmas
Binarias (y II)
59
▶ Si el formatos tiene su propia normativa de firma, debemos usar siempre esa:
– PDF, OOXML, ODF, JAR, PE, ZIP, etc.
▶ ¿Vamos a transmitir directamente la firma por HTTP o en un Servicio Web?
– XAdES Enveloping
▶ ¿Firmamos un XML y necesitamos que el original pueda seguir siendo tratado
normalmente tras la firma?
– XAdES Enveloped
▶ ¿No tenemos ninguna restricción especial?
– CAdES, explícito o implícito
▶ ¿Queremos ligar la firma a un fichero descargable por Internet y que su sitio de
descarga se refleje en esta?
– XAdES Externally Detached
¿Qué formato de firma usar en
cada ocasión?
60
1. Los formatos que el Cliente @firma denomina XML Explícitos, tanto XMLDSig
como XAdES:
1. No se adecúan a ningún estándar en su concepción, por lo que pueden
originar problemas legales.
2. Cualquier firma con algoritmo de huella digital obsoleto:
1. MD2, MD5 e incluso SHA-1 deben ser abandonados a favor de SHA-512.
3. Los formatos simples si pueden ser sustituidos por formatos avanzados:
1. PDF -> PAdES
2. XMLDSig -> XAdES
3. CMS/PKCS#7 -> CAdES
4. XMLDSig/XAdES Externally Detached cuando los datos a firmar no sean
accesibles mediante HTTP/HTTPS o no tengamos garantía de permanencia por
mucho tiempo en sus direcciones Web.
¿Qué formatos de firma no
debemos usar?
61
▶ EPES
– La firma electrónica informa de que esta se ha realizado acorde a una política
de firma.
• ¡Cuidado! No se comprueba que realmente sea así
• La política entera puede empotrarse en la firma
– Versión ASN.1 para firmas CAdES y PAdES
– Versión XML para firmas XAdES
– Las firmas XAdES y CAdES EPES se pueden generar directamente desde el
Cliente @firma (pero no PAdES EPES).
▶ T
– Se incorpora un sello de tiempo a la firma. El sello de tiempo no tiene
necesariamente que significar el momento de la firma, sino que en el
momento del sello la firma ya existía.
– Las firmas T no se generan directamente en el cliente, el sello de tiempo se
puede agregar en un momento posterior al de la firma y se hace en la
plataforma @firma Servidor.
• @firma Servidor no aplica sellos de tiempo a firmas PDF o PAdES.
Firmas Avanzadas
62
▶ C (Completa)
– Incluye referencias a la información de revocación de los certificados (listas
de revocación y/o mensajes OCSP).
– Es realmente poco útil, ya que no se incluye información temporal.
– Es necesario mantener siempre las referencias / enlaces activos.
▶ X (Extendida)
– Es igual que la completa, pero añade sellos de tiempo a las referencias, por lo
que podemos saber en que fecha era válida la información de revocación.
▶ XL (Extendida para largo plazo)
– En vez de referencias a la información de revocación se incluye empotrada
esta información completa, eliminando la necesidad de mantener las
referencias o enlaces activos.
▶ A (Archivo)
– Permite la aplicación periódica de sellos de tiempo para combatir la
obsolescencia de los algoritmos de cifrado y huella digital.
• Por ejemplo, podemos añadir un sello cada año usando siempre los
algoritmos más seguros disponibles.
Firmas Avanzadas
63
▶ La información se cifra con una clave simétrica
▶ Esta clave se incluye en el propio sobre, pero cifrada con una clave asimétrica
(una clave pública de un usuario).
▶ Además, puede incluir una firma electrónica del remitente.
▶ @firma Cliente genera sobres según las siguientes normativas:
– PKCS#7 Enveloped Data
– PKCS#7 Signed and Enveloped Data
• ¡Cuidado! El formato PKCS#7 Signed and Enveloped Data tiene
vulnerabilidades conocidas
– CMS Signed and Authentication Data
Sobres digitales
64
▶ ¿Para qué no son los sobres digitales?
– Para enviar datos a un particular.
• Ciertos dispositivos de almacén de certificados y claves privadas no
soportan la apertura de sobres digitales (DNIe, tarjetas FNMT, etc.).
– Es una restricción intencionada, una pérdida de la tarjeta no debe
ocasionar una pérdida irreparable de datos.
– Para cifrado personal de datos
▶ ¿Para que sí son los sobres digitales?
– Para que los ciudadanos envíen datos y documentos a una entidad.
• ¡Cuidado! Hay que tener ciertas precauciones con la clave privada.
– Mejor si es “de usar y tirar”
– Mejor si se reparte entre varios mediante un algoritmo de secreto
compartido
Sobres digitales
65
▶ Misma clave para cifrar y para descifrar.
▶ Dos tipos principales:
– Modo contraseña (PBE): Cualquier palabra (que no contenga caracteres
especiales como tildes, ‘ñ’, etc.) puede ser la seña para cifrar o descifrar.
– Modo clave: La clave debe seguir un complicado y estricto formato, que es
dependiente del algoritmo de cifrado.
▶ ¿Consejos de uso?
– Uso principal en el cifrado personal de datos.
– ¡Cuidado con la clave!
– Nunca para enviar datos cifrados a una entidad (para eso mejor un sobre).
• No es posible garantizar el envío.
– Envíos personales entre particulares… Pero para esto no debe intervenir una
administración pública.
▶ ¿Qué algoritmo usar?
– AES es siempre una buena opción.
– 3DES es un clásico que aun se mantiene seguro.
Cifrados Simétricos
29/11/2015
Tomás García-Merás
¡Gracias!
tomas.garciameras@atos.net
clawgrip@hotmail.com
67
▶ Tarjeta inteligente:
– https://github.com/ctt-gob-es/jmulticard/
▶ Firma electrónica
– https://github.com/ctt-gob-es/clienteafirma
▶ Todo lo anterior más documentación:
– http://svn-ctt.administracionelectronica.gob.es/svn/clienteafirma/
▶ Integración continua
– http://devel.uji.es/hudson/job/afirma-client/changes
Recursos propios

Más contenido relacionado

Destacado

Vous souhaitez accepter la Sodexo Card dans votre établissement
Vous souhaitez accepter la Sodexo Card dans votre établissementVous souhaitez accepter la Sodexo Card dans votre établissement
Vous souhaitez accepter la Sodexo Card dans votre établissementMbiombi anvers150@live.be
 
(Final)proyecto de informaticammmto1 a
(Final)proyecto de informaticammmto1 a(Final)proyecto de informaticammmto1 a
(Final)proyecto de informaticammmto1 aJeff Flores Ferrer
 
Información_red
Información_redInformación_red
Información_redREDU2013
 
Café AGM "Estrategias frente a la crisis - Convenio colectivo de empresa" 051113
Café AGM "Estrategias frente a la crisis - Convenio colectivo de empresa" 051113Café AGM "Estrategias frente a la crisis - Convenio colectivo de empresa" 051113
Café AGM "Estrategias frente a la crisis - Convenio colectivo de empresa" 051113AGM Abogados
 
Resume 10 march2016
Resume 10 march2016Resume 10 march2016
Resume 10 march2016Linda Castor
 
Challenges Facing utilization of ITNs
Challenges Facing utilization of ITNsChallenges Facing utilization of ITNs
Challenges Facing utilization of ITNsErnest Kirui
 
Fluid Thickeners
Fluid ThickenersFluid Thickeners
Fluid ThickenersAswathy GS
 
Lenguaje estudiante 7º
Lenguaje estudiante 7ºLenguaje estudiante 7º
Lenguaje estudiante 7ºfloribella
 
Waterloo, la última batalla de Napoleón
Waterloo, la última batalla de NapoleónWaterloo, la última batalla de Napoleón
Waterloo, la última batalla de NapoleónIngres
 
Portafolio de servicios
Portafolio de serviciosPortafolio de servicios
Portafolio de serviciosscevallosr
 
Enovation Solutions - Alfresco Project Collaboration Portal - Breakfast Brief...
Enovation Solutions - Alfresco Project Collaboration Portal - Breakfast Brief...Enovation Solutions - Alfresco Project Collaboration Portal - Breakfast Brief...
Enovation Solutions - Alfresco Project Collaboration Portal - Breakfast Brief...Enovation
 
parte interna de un conductor - electrón libre
parte interna de un conductor - electrón libreparte interna de un conductor - electrón libre
parte interna de un conductor - electrón libreJessica_Miranda
 
Cómo usar los juegos móviles para un Marketing 3.0
Cómo usar los juegos móviles para un Marketing 3.0Cómo usar los juegos móviles para un Marketing 3.0
Cómo usar los juegos móviles para un Marketing 3.0WingzStudio®
 
Nexteer Automotive Realizing Enterprise-wide PLM Vision with Aras
Nexteer Automotive Realizing Enterprise-wide PLM Vision with ArasNexteer Automotive Realizing Enterprise-wide PLM Vision with Aras
Nexteer Automotive Realizing Enterprise-wide PLM Vision with ArasAras
 

Destacado (18)

Vous souhaitez accepter la Sodexo Card dans votre établissement
Vous souhaitez accepter la Sodexo Card dans votre établissementVous souhaitez accepter la Sodexo Card dans votre établissement
Vous souhaitez accepter la Sodexo Card dans votre établissement
 
(Final)proyecto de informaticammmto1 a
(Final)proyecto de informaticammmto1 a(Final)proyecto de informaticammmto1 a
(Final)proyecto de informaticammmto1 a
 
Información_red
Información_redInformación_red
Información_red
 
Café AGM "Estrategias frente a la crisis - Convenio colectivo de empresa" 051113
Café AGM "Estrategias frente a la crisis - Convenio colectivo de empresa" 051113Café AGM "Estrategias frente a la crisis - Convenio colectivo de empresa" 051113
Café AGM "Estrategias frente a la crisis - Convenio colectivo de empresa" 051113
 
Resume 10 march2016
Resume 10 march2016Resume 10 march2016
Resume 10 march2016
 
Challenges Facing utilization of ITNs
Challenges Facing utilization of ITNsChallenges Facing utilization of ITNs
Challenges Facing utilization of ITNs
 
Fluid Thickeners
Fluid ThickenersFluid Thickeners
Fluid Thickeners
 
Lenguaje estudiante 7º
Lenguaje estudiante 7ºLenguaje estudiante 7º
Lenguaje estudiante 7º
 
Waterloo, la última batalla de Napoleón
Waterloo, la última batalla de NapoleónWaterloo, la última batalla de Napoleón
Waterloo, la última batalla de Napoleón
 
Portafolio de servicios
Portafolio de serviciosPortafolio de servicios
Portafolio de servicios
 
Enovation Solutions - Alfresco Project Collaboration Portal - Breakfast Brief...
Enovation Solutions - Alfresco Project Collaboration Portal - Breakfast Brief...Enovation Solutions - Alfresco Project Collaboration Portal - Breakfast Brief...
Enovation Solutions - Alfresco Project Collaboration Portal - Breakfast Brief...
 
Precision steel tube
Precision steel tubePrecision steel tube
Precision steel tube
 
parte interna de un conductor - electrón libre
parte interna de un conductor - electrón libreparte interna de un conductor - electrón libre
parte interna de un conductor - electrón libre
 
04unidad4
04unidad404unidad4
04unidad4
 
Proyecto de financiamiento cec 2013 lista
Proyecto de financiamiento cec 2013 listaProyecto de financiamiento cec 2013 lista
Proyecto de financiamiento cec 2013 lista
 
Cómo usar los juegos móviles para un Marketing 3.0
Cómo usar los juegos móviles para un Marketing 3.0Cómo usar los juegos móviles para un Marketing 3.0
Cómo usar los juegos móviles para un Marketing 3.0
 
Nexteer Automotive Realizing Enterprise-wide PLM Vision with Aras
Nexteer Automotive Realizing Enterprise-wide PLM Vision with ArasNexteer Automotive Realizing Enterprise-wide PLM Vision with Aras
Nexteer Automotive Realizing Enterprise-wide PLM Vision with Aras
 
Revista Stratego Edición 35
Revista Stratego Edición 35Revista Stratego Edición 35
Revista Stratego Edición 35
 

Similar a Programación y uso de tarjetas criptográficas NFC (DNIe, TUI, etc) con Android

Tarjetas Inteligentes (Smarth card)
Tarjetas Inteligentes (Smarth card)Tarjetas Inteligentes (Smarth card)
Tarjetas Inteligentes (Smarth card)Erick Estrada
 
Conexiones smartcard y lectura de tarjetas de crédito
Conexiones smartcard y lectura de tarjetas de créditoConexiones smartcard y lectura de tarjetas de crédito
Conexiones smartcard y lectura de tarjetas de créditoJulio Chinchilla
 
Gestión de Sistemas Prepagos en Transporte Público - FIMPE
Gestión de Sistemas Prepagos en Transporte Público - FIMPE Gestión de Sistemas Prepagos en Transporte Público - FIMPE
Gestión de Sistemas Prepagos en Transporte Público - FIMPE Fagner Glinski
 
Plantilla fase1
Plantilla fase1Plantilla fase1
Plantilla fase1davel777
 
Trabajo colaborativo 1
Trabajo colaborativo 1Trabajo colaborativo 1
Trabajo colaborativo 1Ginnaliceth16
 
T fase1 103380_grupo79
T fase1 103380_grupo79T fase1 103380_grupo79
T fase1 103380_grupo79dmalpicas
 
El ordenador y sus componentes
El ordenador y sus componentesEl ordenador y sus componentes
El ordenador y sus componentesLUIS MANUEL
 
La electricidad y la electronica tarjeta arduino.
 La electricidad y la electronica  tarjeta arduino. La electricidad y la electronica  tarjeta arduino.
La electricidad y la electronica tarjeta arduino.Cata2004
 
Curro Sánchez Toscano - Repaso T1.pdf
Curro Sánchez Toscano - Repaso T1.pdfCurro Sánchez Toscano - Repaso T1.pdf
Curro Sánchez Toscano - Repaso T1.pdfCurroSnchezToscano
 
Informe final grupo 35_fase_Mantenimiento de PC
Informe final grupo 35_fase_Mantenimiento de PCInforme final grupo 35_fase_Mantenimiento de PC
Informe final grupo 35_fase_Mantenimiento de PCkabetogomez
 

Similar a Programación y uso de tarjetas criptográficas NFC (DNIe, TUI, etc) con Android (20)

Tarjetas Inteligentes (Smarth card)
Tarjetas Inteligentes (Smarth card)Tarjetas Inteligentes (Smarth card)
Tarjetas Inteligentes (Smarth card)
 
Conexiones smartcard y lectura de tarjetas de crédito
Conexiones smartcard y lectura de tarjetas de créditoConexiones smartcard y lectura de tarjetas de crédito
Conexiones smartcard y lectura de tarjetas de crédito
 
Gestión de Sistemas Prepagos en Transporte Público - FIMPE
Gestión de Sistemas Prepagos en Transporte Público - FIMPE Gestión de Sistemas Prepagos en Transporte Público - FIMPE
Gestión de Sistemas Prepagos en Transporte Público - FIMPE
 
Presentacion DNIe Peruano
Presentacion DNIe PeruanoPresentacion DNIe Peruano
Presentacion DNIe Peruano
 
Presentacion dnie_1.2_1
Presentacion dnie_1.2_1Presentacion dnie_1.2_1
Presentacion dnie_1.2_1
 
Plantilla fase1
Plantilla fase1Plantilla fase1
Plantilla fase1
 
Plantilla fase1
Plantilla fase1Plantilla fase1
Plantilla fase1
 
Trabajo colaborativo 1
Trabajo colaborativo 1Trabajo colaborativo 1
Trabajo colaborativo 1
 
T fase1
T fase1 T fase1
T fase1
 
T fase1 103380_grupo79
T fase1 103380_grupo79T fase1 103380_grupo79
T fase1 103380_grupo79
 
SlingSecure USB cifrado
SlingSecure USB cifradoSlingSecure USB cifrado
SlingSecure USB cifrado
 
El ordenador y sus componentes
El ordenador y sus componentesEl ordenador y sus componentes
El ordenador y sus componentes
 
Accesorios para armar una red
Accesorios para armar una redAccesorios para armar una red
Accesorios para armar una red
 
La electricidad y la electronica tarjeta arduino.
 La electricidad y la electronica  tarjeta arduino. La electricidad y la electronica  tarjeta arduino.
La electricidad y la electronica tarjeta arduino.
 
Accesorios para armar una red
Accesorios para armar una redAccesorios para armar una red
Accesorios para armar una red
 
Curro Sánchez Toscano - Repaso T1.pdf
Curro Sánchez Toscano - Repaso T1.pdfCurro Sánchez Toscano - Repaso T1.pdf
Curro Sánchez Toscano - Repaso T1.pdf
 
Presentación1
Presentación1Presentación1
Presentación1
 
Evaluacion final fase1_grupo86
Evaluacion final fase1_grupo86Evaluacion final fase1_grupo86
Evaluacion final fase1_grupo86
 
Vanee♥
Vanee♥Vanee♥
Vanee♥
 
Informe final grupo 35_fase_Mantenimiento de PC
Informe final grupo 35_fase_Mantenimiento de PCInforme final grupo 35_fase_Mantenimiento de PC
Informe final grupo 35_fase_Mantenimiento de PC
 

Más de Tomás García-Merás

NWC10 - Retos digitales derivados del COVID-19
NWC10 - Retos digitales derivados del COVID-19NWC10 - Retos digitales derivados del COVID-19
NWC10 - Retos digitales derivados del COVID-19Tomás García-Merás
 
Hacking hardware en sistemas empotrados: De la preservación a la seguridad
Hacking hardware en sistemas empotrados: De la preservación a la seguridadHacking hardware en sistemas empotrados: De la preservación a la seguridad
Hacking hardware en sistemas empotrados: De la preservación a la seguridadTomás García-Merás
 
Blockchain vs. Firma electrónica en sector público
Blockchain vs. Firma electrónica en sector públicoBlockchain vs. Firma electrónica en sector público
Blockchain vs. Firma electrónica en sector públicoTomás García-Merás
 
T3chfest 2019 - Modelos de confianza técnico-jurídica en Blockchain
T3chfest 2019 - Modelos de confianza técnico-jurídica en BlockchainT3chfest 2019 - Modelos de confianza técnico-jurídica en Blockchain
T3chfest 2019 - Modelos de confianza técnico-jurídica en BlockchainTomás García-Merás
 
Confidencialidad de los datos en la cadena de bloques
Confidencialidad de los datos en la cadena de bloquesConfidencialidad de los datos en la cadena de bloques
Confidencialidad de los datos en la cadena de bloquesTomás García-Merás
 
CyberCamp 2018 - La autenticación con certificados en las Sedes Electrónicas
CyberCamp 2018 - La autenticación con certificados en las Sedes ElectrónicasCyberCamp 2018 - La autenticación con certificados en las Sedes Electrónicas
CyberCamp 2018 - La autenticación con certificados en las Sedes ElectrónicasTomás García-Merás
 
Mitos y realidades de la confianza en Blockchain
Mitos y realidades de la confianza en BlockchainMitos y realidades de la confianza en Blockchain
Mitos y realidades de la confianza en BlockchainTomás García-Merás
 
Asegurando los API con Criptografía RSA: Más allá del SSL
Asegurando los API con Criptografía RSA: Más allá del SSLAsegurando los API con Criptografía RSA: Más allá del SSL
Asegurando los API con Criptografía RSA: Más allá del SSLTomás García-Merás
 
Desarrollo Java en PlayStation: Aplicaciones en disco para usos atípicos
Desarrollo Java en PlayStation: Aplicaciones en disco para usos atípicosDesarrollo Java en PlayStation: Aplicaciones en disco para usos atípicos
Desarrollo Java en PlayStation: Aplicaciones en disco para usos atípicosTomás García-Merás
 
2016 04 --curso_portafirmas_movil_v3
2016 04 --curso_portafirmas_movil_v32016 04 --curso_portafirmas_movil_v3
2016 04 --curso_portafirmas_movil_v3Tomás García-Merás
 
2016 04 --curso_novedades_auto_firma
2016 04 --curso_novedades_auto_firma2016 04 --curso_novedades_auto_firma
2016 04 --curso_novedades_auto_firmaTomás García-Merás
 
Cl@ve Firma - Visión práctica desde el punto de vista del proveedor de servicios
Cl@ve Firma - Visión práctica desde el punto de vista del proveedor de serviciosCl@ve Firma - Visión práctica desde el punto de vista del proveedor de servicios
Cl@ve Firma - Visión práctica desde el punto de vista del proveedor de serviciosTomás García-Merás
 
2015 10 - Curso Cliente @firma INAP día 1
2015 10 - Curso Cliente @firma INAP día 12015 10 - Curso Cliente @firma INAP día 1
2015 10 - Curso Cliente @firma INAP día 1Tomás García-Merás
 
2015 10 - Curso Cliente @firma INAP día 3
2015 10 - Curso Cliente @firma INAP día 32015 10 - Curso Cliente @firma INAP día 3
2015 10 - Curso Cliente @firma INAP día 3Tomás García-Merás
 
2015 10 - Curso Cliente @firma INAP día 2
2015 10 - Curso Cliente @firma INAP día 22015 10 - Curso Cliente @firma INAP día 2
2015 10 - Curso Cliente @firma INAP día 2Tomás García-Merás
 
Alternativas a los Applets de Java para la realización de firmas electrónicas...
Alternativas a los Applets de Java para la realización de firmas electrónicas...Alternativas a los Applets de Java para la realización de firmas electrónicas...
Alternativas a los Applets de Java para la realización de firmas electrónicas...Tomás García-Merás
 
Presentación firma electrónica Codemotion 2014
Presentación firma electrónica Codemotion 2014Presentación firma electrónica Codemotion 2014
Presentación firma electrónica Codemotion 2014Tomás García-Merás
 
Uso de la firma en la AEAT (AEAT) - II Encuentro nacional sobre firma y admin...
Uso de la firma en la AEAT (AEAT) - II Encuentro nacional sobre firma y admin...Uso de la firma en la AEAT (AEAT) - II Encuentro nacional sobre firma y admin...
Uso de la firma en la AEAT (AEAT) - II Encuentro nacional sobre firma y admin...Tomás García-Merás
 

Más de Tomás García-Merás (20)

NWC10 - Retos digitales derivados del COVID-19
NWC10 - Retos digitales derivados del COVID-19NWC10 - Retos digitales derivados del COVID-19
NWC10 - Retos digitales derivados del COVID-19
 
Hacking hardware en sistemas empotrados: De la preservación a la seguridad
Hacking hardware en sistemas empotrados: De la preservación a la seguridadHacking hardware en sistemas empotrados: De la preservación a la seguridad
Hacking hardware en sistemas empotrados: De la preservación a la seguridad
 
Blockchain vs. Firma electrónica en sector público
Blockchain vs. Firma electrónica en sector públicoBlockchain vs. Firma electrónica en sector público
Blockchain vs. Firma electrónica en sector público
 
T3chfest 2019 - Modelos de confianza técnico-jurídica en Blockchain
T3chfest 2019 - Modelos de confianza técnico-jurídica en BlockchainT3chfest 2019 - Modelos de confianza técnico-jurídica en Blockchain
T3chfest 2019 - Modelos de confianza técnico-jurídica en Blockchain
 
Confidencialidad de los datos en la cadena de bloques
Confidencialidad de los datos en la cadena de bloquesConfidencialidad de los datos en la cadena de bloques
Confidencialidad de los datos en la cadena de bloques
 
CyberCamp 2018 - La autenticación con certificados en las Sedes Electrónicas
CyberCamp 2018 - La autenticación con certificados en las Sedes ElectrónicasCyberCamp 2018 - La autenticación con certificados en las Sedes Electrónicas
CyberCamp 2018 - La autenticación con certificados en las Sedes Electrónicas
 
Mitos y realidades de la confianza en Blockchain
Mitos y realidades de la confianza en BlockchainMitos y realidades de la confianza en Blockchain
Mitos y realidades de la confianza en Blockchain
 
Madres Digitales 2017
Madres Digitales 2017Madres Digitales 2017
Madres Digitales 2017
 
Asegurando los API con Criptografía RSA: Más allá del SSL
Asegurando los API con Criptografía RSA: Más allá del SSLAsegurando los API con Criptografía RSA: Más allá del SSL
Asegurando los API con Criptografía RSA: Más allá del SSL
 
Desarrollo Java en PlayStation: Aplicaciones en disco para usos atípicos
Desarrollo Java en PlayStation: Aplicaciones en disco para usos atípicosDesarrollo Java en PlayStation: Aplicaciones en disco para usos atípicos
Desarrollo Java en PlayStation: Aplicaciones en disco para usos atípicos
 
2016 04 --curso_portafirmas_movil_v3
2016 04 --curso_portafirmas_movil_v32016 04 --curso_portafirmas_movil_v3
2016 04 --curso_portafirmas_movil_v3
 
2016 04 --curso_cliente_movil_v3
2016 04 --curso_cliente_movil_v32016 04 --curso_cliente_movil_v3
2016 04 --curso_cliente_movil_v3
 
2016 04 --curso_novedades_auto_firma
2016 04 --curso_novedades_auto_firma2016 04 --curso_novedades_auto_firma
2016 04 --curso_novedades_auto_firma
 
Cl@ve Firma - Visión práctica desde el punto de vista del proveedor de servicios
Cl@ve Firma - Visión práctica desde el punto de vista del proveedor de serviciosCl@ve Firma - Visión práctica desde el punto de vista del proveedor de servicios
Cl@ve Firma - Visión práctica desde el punto de vista del proveedor de servicios
 
2015 10 - Curso Cliente @firma INAP día 1
2015 10 - Curso Cliente @firma INAP día 12015 10 - Curso Cliente @firma INAP día 1
2015 10 - Curso Cliente @firma INAP día 1
 
2015 10 - Curso Cliente @firma INAP día 3
2015 10 - Curso Cliente @firma INAP día 32015 10 - Curso Cliente @firma INAP día 3
2015 10 - Curso Cliente @firma INAP día 3
 
2015 10 - Curso Cliente @firma INAP día 2
2015 10 - Curso Cliente @firma INAP día 22015 10 - Curso Cliente @firma INAP día 2
2015 10 - Curso Cliente @firma INAP día 2
 
Alternativas a los Applets de Java para la realización de firmas electrónicas...
Alternativas a los Applets de Java para la realización de firmas electrónicas...Alternativas a los Applets de Java para la realización de firmas electrónicas...
Alternativas a los Applets de Java para la realización de firmas electrónicas...
 
Presentación firma electrónica Codemotion 2014
Presentación firma electrónica Codemotion 2014Presentación firma electrónica Codemotion 2014
Presentación firma electrónica Codemotion 2014
 
Uso de la firma en la AEAT (AEAT) - II Encuentro nacional sobre firma y admin...
Uso de la firma en la AEAT (AEAT) - II Encuentro nacional sobre firma y admin...Uso de la firma en la AEAT (AEAT) - II Encuentro nacional sobre firma y admin...
Uso de la firma en la AEAT (AEAT) - II Encuentro nacional sobre firma y admin...
 

Último

R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Luis Olivera
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 

Último (20)

R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 

Programación y uso de tarjetas criptográficas NFC (DNIe, TUI, etc) con Android

  • 1. 29/11/2015 Tomás García-Merás tomas.garciameras@atos.net clawgrip@hotmail.com Programación y uso de tarjetas criptográficas NFC (DNIe, TUI, etc) con Android
  • 2. 29/11/2015 Conceptos básicos de tarjetas inteligentes Programación y uso de tarjetas criptográficas NFC (DNIe, TUI, etc) con Android
  • 3. 3 Agenda ▶ Tarjetas inteligentes ▶ ISO 7816 ▶ PC/SC ▶ ASN.1 ▶ PKCS#15 ▶ CWA-14890 ▶ PACE
  • 4. 4 Tarjetas inteligentes criptográficas ▶ Chip con capacidad de proceso insertado en una tarjeta plástica: – Procesador de uso general con capacidad de memoria y potencia limitados. – Coprocesador criptográfico con múltiples capacidades: 3DES, RSA, AES, EC, etc. – Velocidad de comunicaciones muy limitada (típicamente 9.600 en modo serie). ▶ Puede tener otros formatos: – MicroSD, USB, PCI, software, etc.
  • 5. 5 Tarjetas inteligentes criptográficas Comunicación con la tarjeta ▶ El interfaz con una tarjeta es muy sencillo, y se basa en la norma ISO 7816-4: – El IFD envía un comando en forma de octetos binarios (APDU) al chip de la tarjeta (ICC), y este contesta con otra APDU. • La tarjeta únicamente enviará datos al IFD como respuesta a un envío previo de este, nunca inicia las comunicaciones. ▶ Ejemplo: COMMAND APDU RESPONSE APDU ICCIFD 90B8000007 0203CC950536219000 ICCIFD
  • 6. 6 Tarjetas inteligentes criptográficas Comunicación con la tarjeta – ISO 17816-4 ▶ Las APDU están normalizadas en la ISO 7816-4: – Define un formato unificado para los comandos APDU y las APDU de respuesta a estos. • Ciertas tarjetas pueden ignorar esta norma e implementar otras equivalentes (por ejemplo, las SIM implementan GSM 11.11).
  • 7. 7 Tarjetas inteligentes criptográficas Comunicación con la tarjeta – ISO 17816-4 ▶ Ejemplo de APDU: 00A40000026020 – 00 Clase de APDU (0x00 = APDU estándar) – A4 Instrucción (0xA4 = Selección del fichero) – 00 Primer parámetro de la instrucción – 00 Segundo parámetro de la instrucción – 02 Longitud del campo de datos (0x02 = dos octetos) – 60 20 Campo de datos (6020 es el nombre del fichero a seleccionar) Selección (sin parámetros) del fichero 6020 dentro del directorio actual ▶ A este comando un DNIe contestará: 610E – 61 Operación correcta, hay respuesta disponibles. – 0A La respuesta disponible mide 0x0A octetos.
  • 8. 8 Tarjetas inteligentes criptográficas Comunicación con la tarjeta – ISO 17816-4 ▶ Prueba simple: Nota: Un comando de respuesta correcta termina siempre en 9000 o en 61xx
  • 9. 9 Tarjetas inteligentes criptográficas Comunicación con la tarjeta – ISO 17816-4 ▶ La organización básica de datos dentro de una tarjeta también está normalizada en la ISO 7816-4: – MF: Master File, directorio raíz de la tarjeta. – DF: Dedicated File, equivalente a un directorio. – EF: Elementary File, equivalente a un fichero. Cada elemento puede referenciarse por su nombre (longitud arbitraria, normalmente un texto ASCII o su identificador (dos octetos, por ejemplo). EF EF DF DF EF MF
  • 10. 10 Tarjetas inteligentes criptográficas Comunicación con la tarjeta – ISO 17816-4 ▶ ISO 7816-4 define un catálogo de comandos y respuestas para las operaciones más comunes. • Las tarjetas implementan además comandos propietarios no catalogados en la ISO. ▶ Por ejemplo: – READ BINARY – WRITE BINARY – UPDATE BINARY – ERASE BINARY – READ RECORD(S) – WRITE RECORD – APPEND RECORD – UPDATE RECORD – GET DATA – PUT DATA – SELECT FILE – VERIFY – INTERNAL AUTHENTICATE – EXTERNAL AUTHENTICATE – GET CHALLENGE – MANAGE CHANNEL
  • 11. 11 Tarjetas inteligentes criptográficas Comunicación con la tarjeta – IFD ICC ▶ ¿Cómo le hago llegar un comando a la tarjeta? – La práctica totalidad de los lectores de tarjetas siguen la norma USB CCID: • http://www.usb.org/developers/docs/devclass_docs/DWG_Smart-Card_CCID_Rev110.pdf – La práctica totalidad de los sistemas operativos exponen un API PC/SC para el acsesso a los lectores de tarjetas: • http://www.pcscworkgroup.com/ – La mayoría de los sistemas operativos traen de serie un controlador para lectores CCID que expone el API PC/SC. – La mayoría de los lenguajes de programación (.NET, Java, etc.) contienen API de alto nivel para el acceso a PC/SC. CCIDFW Driver PC/SC App
  • 12. 12 Tarjetas inteligentes criptográficas Comunicación con la tarjeta – IFD ICC ▶ ¿Cómo le hago llegar un comando a la tarjeta? – API Java • JSR 268: Java Smart Card I/O API (incluido de serie en Linux, Windows, OS X y Solaris desde Java 6) – https://jcp.org/en/jsr/detail?id=268 Ejemplo: final List<CardTerminal> terminals = TerminalFactory.getDefault().terminals().list(); final Card card = terminales.get(0).connect(*); final CardChannel canal = card.getBasicChannel(); final ResponseAPDU response = canal.transmit(new CommandAPDU(COMMANDO));
  • 13. 13 Tarjetas inteligentes criptográficas Comunicación con la tarjeta – IFD ICC ▶ ¿Cómo le hago llegar un comando a la tarjeta? – ¿Android? • Android no tiene controladores para lectores USB CCID, es necesario implementar nuestra propia implementación de la normativa. – https://github.com/ctt-gob-es/jmulticard/tree/master/jmulticard-android • Es posible usar el canal inalámbrico NFC para enviar APDU a tarjetas compatibles con ISO 14443 (NFC es un subconjunto de esta normativa). Ejemplo: final IsoDep isoDep = IsoDep.get(tag); isoDep.connect(); isoDep.setTimeout(ISODEP_TIMEOUT); final byte[] response = isoDep.transceive(APDU_COMANDO);
  • 14. 14 Tarjetas inteligentes criptográficas ¿Qué hay dentro de una tarjeta? ASN.1 ▶ ASN.1 es un lenguaje de descripción de datos de uso general en muchos protocolos y normativas: – LDAP, UMTS, X.400, X.25, SNMP. – Basado en estructuras binarias tipo TLV: • Por ejemplo: 020101 – 02: Tipo de datos (0x02 = Número entero) – 01: Longitud de los datos (0x01 = 1 octeto) – 01: Valor de los datos (0x01 = Número uno) – Muy compacto en cuanto a tamaño, muy eficiente en cuanto a uso de recursos para su proceso (memoria, potencia de proceso), per muy molesto de aprender y depurar. – Recursos de aprendizaje: • http://www.oss.com/asn1/resources/books-whitepapers-pubs/asn1-books.html#dubuisson • http://www.oss.com/asn1/resources/books-whitepapers-pubs/asn1-books.html#larmouth
  • 15. 15 Tarjetas inteligentes criptográficas ¿Qué hay dentro de una tarjeta? ASN.1 ▶ ASN.1 define muy diversos tipos de datos de forma implícita: Simple Types Tag Typical Use BOOLEAN 1 Model logical, two-state variable values INTEGER 2 Model integer variable values BIT STRING 3 Model binary data of arbitrary length OCTET STRING 4 Model binary data whose length is a multiple of eight NULL 5 Indicate effective absence of a sequence element OBJECT IDENTIFIER 6 Name information objects REAL 9 Model real variable values ENUMERATED 10 Model values of variables with at least three states CHARACTER STRING * Models values that are strings of characters from a specified characterset
  • 16. 16 Tarjetas inteligentes criptográficas ¿Qué hay dentro de una tarjeta? ASN.1 ▶ ASN.1 define muy diversos tipos de datos de forma implícita: Structured Types Tag Typical Use SEQUENCE 16 Models an ordered collection of variables of different type SEQUENCE OF 16 Models an ordered collection of variables of the same type SET 17 Model an unordered collection of variables of different types SET OF 17 Model an unordered collection of variables of the same type CHOICE * Specify a collection of distinct types from which to choose one type SELECTION * Select a component type from a specified CHOICE type ANY * Enable an application to specify the type Note: ANY is a deprecated ASN.1 Structured Type. It has been replaced with X.680 Open Type.
  • 17. 17 Tarjetas inteligentes criptográficas ¿Qué hay dentro de una tarjeta? PKCS#15 ▶ La normativa PKCS#15 (fuertemente basada en ASN.1) defines las estructuras internas de las tarjetas inteligentes, así como su organización en la memoria de la tarjeta:
  • 18. 18 Tarjetas inteligentes criptográficas ¿Qué hay dentro de una tarjeta? PKCS#15 ▶ PKCS#15 nos va a indicar la localización dentro de la tarjeta de las claves públicas, las claves privadas, los certificados, etc. Para eso define una estructura compleja de ficheros y punteros a ficheros.
  • 19. 19 Tarjetas inteligentes criptográficas Consideraciones adicionales ▶ Las tarjetas inteligentes pueden estableces mecanismos adicionales de seguridad: – Autenticación externa: • La tarjeta autentica al IFD. – Autenticación interna: • El IFC autentica al ICC. – Canal cifrado • CWA-14890. – PACE
  • 20. 29/11/2015 Conceptos básicos de criptografía y firma electrónica Programación y uso de tarjetas criptográficas NFC (DNIe, TUI, etc) con Android
  • 21. 21 Agenda ▶ Introducción a la criptografía – Huellas digitales – Códigos de autenticación de mensajes – Cifrado – Firma digital ▶ Claves, certificados y almacenes – Conceptos – Formatos de firma ▶ Sobres electrónicos ▶ Cifrado simétrico
  • 22. 22 Introducción a la criptografía ▶ Es la parte de la criptología que estudia los algoritmos, protocolos, sistemas,… que permiten la seguridad en las comunicaciones. ▶ Se basa en el uso de mecanismos matemáticos que aseguran la complejidad computacional y/o estadística de violar la seguridad del las comunicaciones. ▶ La está orientada a proporcionar las siguientes propiedades de un mensaje: – Confidencialidad • El mensaje sólo es legible para su autor y/o destinatario. – Integridad • El mensaje no se ha modificado. – Autenticidad • El mensaje ha sido creado por quien dice ser.
  • 23. 23 ▶ La huella electrónica es una breve serie de octetos que identifica unívocamente a un binario. Una huella digital solo puede provenir de un binario específico y debe ser imposible modificar un binario sin que cambie su huella digital. ▶ Evidentemente, es conceptualmente imposible que esta definición se cumpla, por lo que, siendo estricto, podríamos dejarlo en “debe ser estadísticamente muy raro encontrar dos binarios con la misma huella digital y computacionalmente muy costoso construir un binario a partir de una huella digital o modificar el binario sin que cambie esta última”. ▶ El concepto “computacionalmente costoso” varía según avanza la tecnología, por lo que los algoritmos de huella digital se quedan obsoletos con el tiempo. Huellas Digitales
  • 24. 24 ▶ Los códigos de autenticación de mensajes (MAC) son porciones de datos generados a partir de un mensaje que permiten comprobar su integridad. ▶ El MAC de un mensaje suele enviarse adjunto al mismo, de tal forma que en destino se puede comprobar si el mensaje o el código son alterados durante el transporte. ▶ Para asegurar la autenticidad de los datos. El MAC de un mensaje suele depender de una clave conocida por emisor y destinatario. ▶ Las funciones MAC más utilizadas son las de tipo HMAC en donde el código de autenticación se genera a partir de una huella digital y una clave secreta. – Además de la integridad, nos permite verificar la autenticidad del mensaje. Código de Autenticación de Mensaje
  • 25. 25 ▶ El cifrado es un procedimiento criptográfico mediante el que a partir de un mensaje legible se obtiene un mensaje ilegible de tal forma que se puede revertir el proceso. ▶ El cifrado simétrico o cifrado de clave simétrica/secreta es aquel en el que se utiliza una clave para el cifrado del mensaje y la misma clave para el descifrado. ▶ El cifrado asimétrico o cifrado de clave asimétrica/pública es aquel en el que se utiliza una clave para el cifrado del mensaje y otra clave distinta para su descifrado. Este par de claves es único, de tal forma que lo cifrado por una se descifra con la otra (y viceversa) y no con ninguna otra clave. Cifrado Clave Secreta Clave Secreta Clave A Clave B
  • 26. 26 ▶ El cifrado RSA funciona con un par de claves complementarias (criptografía asimétrica), lo que se cifra con la primera solo puede ser descifrado con la segunda y viceversa. ▶ El concepto clásico es que el titular de las claves conserva una en secreto (clave privada) y distribuye públicamente la otra (clave pública). – Si cifra algo con la privada, todo el mundo puede descifrarlo con la pública: • Así demostramos que el cifrado lo he hecho yo, porque solo yo tengo la clave privada. – Si alguien usa la clave pública de otra persona para cifrar algo se asegura que solo esta puede descifrarlo, puesto que solo ella tiene la clave privada. ▶ El problema de la criptografía con algoritmo RSA es que es computacionalmente costoso, por lo que solo puede usarse con datos de tamaño reducido. Cifrado RSA
  • 27. 27 ▶ Si unimos una huella digital y un cifrado RSA… ▶ Si unimos en una operación atómica la extracción de la huella digital de un binario y el posterior cifrado de esta con una clave privada RSA tenemos: – La operación solo la puedo haber realizado yo, puesto que ha sido hecha con la clave privada. – La operación está unívocamente ligada a un fichero binario, puesto que lo que se cifra es su huella digital. – Ligado unívocamente a un único documento y a una única persona… • ¡Una firma electrónica! (O casi) Firma digital
  • 28. 28 ▶ Las firmas electrónicas no son solo una huella digital y un cifrado RSA, sino que se introducen una serie de estructuras con información adicional. – Información sobre los algoritmos usados – Información sobre el firmante – Información sobre el proceso de la firma (momento, etc.) ▶ En la práctica, estas estructuras pueden ser ASN.1 (CAdES, CMS, PAdES,…) o XML (XAdES, XMLDSig, ODF,…). Firmas electrónicas
  • 29. 29 <?xml version="1.0" encoding="UTF-8"?> <Envelope xmlns="urn:envelope"> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n- 20010315#WithComments"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/> <Reference URI=""> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>uooqbWYa5VCqcJCbuymBKqm17vY=</DigestValue> </Reference> </SignedInfo> <SignatureValue>KedJuTob5gtvYx9qM3k3gm7kbLBwVbEQRl26S2tmXjqNND7MRGtoew==</SignatureValue> <KeyInfo> <KeyValue> … </KeyValue> </KeyInfo> </Signature> </Envelope> Firmas electrónicas
  • 31. 31 ▶ Un par de claves (pública + privada) se empaqueta también junto a otras estructuras de metadatos en lo que se llama un certificado digital. ▶ Solo existe una variante: ASN.1 (normativa X.509). No hay versión XML. Certificados electrónicos
  • 32. 32 ▶ Certificado autofirmado – Certificado firmado con su propia clave privada. ▶ ¿Quién nos asegura que ese certificado pertenece a quien dice ser? ▶ Autoridad de certificación (CA) – Entidad de confianza encargada de la emisión de certificados que establece las políticas necesarias para garantizar la identidad de los usuarios de sus certificados. ▶ Cadena de certificación – Listado ordenado de certificados de clave pública utilizados para la firma del certificado de usuario. ▶ Certificado Raíz – Certificado autofirmado de la cadena de certificación. ▶ Certificado de Autoridad intermedia – Certificado intermedio de la cadena de certificación. Certificados electrónicos
  • 33. 33 ▶ Los certificados se almacenan en almacenes de certificados que pueden estar cifrados para proteger las claves de usuario y certificados de terceros. ▶ Los sistemas operativos suelen contar con un almacén de sistema al que cualquier aplicación puede acceder para hacer uso de los certificados que contiene. – Windows: CAPI – Linux: Mozilla – Apple: KeyChain ▶ Existen distintos formatos de almacenes en disco: – PKCS#12 (PFX) – JKS (Java KeyStore) – BKS (BouncyCastle KeyStore) Almacenes de claves
  • 34. 34 ▶ Es el marco de trabajo para el acceso y desarrollo de funciones criptográficas en la plataforma Java. Se diseño entorno a los principios: – Independencia de la implementación: • La implementación de los distintos proveedores presenta una interfaz estándar. – Interoperabilidad entre aplicaciones: • Una aplicación es dependiente de un proveedor concreto. – Extensibilidad de algoritmos: • Es posible agregar nuevos proveedores que aporten compatibilidad con nuevos algoritmos. ▶ Se dispone de diversos proveedores que proporcionan las distintas funciones criptográficas para algoritmos concretos. Java Cryptography Architecture (JCA)
  • 35. 35 ▶ Tipos de proveedores disponibles: – MessageDigest: Motor para la generación de huellas digitales. – Keystore: Motor para el acceso y gestión de almacenes de claves. – Cipher: Motor para el cifrado y descifrado de datos. – Signature: Motor para la generación y validación de firmas digitales. – KeyGenerator: Motor para la generación de claves secretas. – KeyPairGenerator: Motor para la generación de pares de claves asimétricas. – Mac: Motor para la generación y validación de códigos de autenticación. – SecureRandom: Motor para la generación de números aleatorios. – … Java Cryptography Architecture (JCA)
  • 36. 36 ▶ Según CERES: Es el conjunto de datos en forma electrónica, consignados junto a otros o asociados con ellos, que pueden ser utilizados como medio de identificación del firmante. ▶ Según INCIBE: La firma electrónica, como su propio nombre indica, es el equivalente electrónico de nuestra firma manuscrita. Para resumirlo de forma sencilla, es un conjunto de datos que nos permiten acreditarnos y cerrar acuerdos por medios electrónicos, principalmente por Internet. La firma electrónica se conoce también como firma digital. ▶ Más bien una mezcla: La firma electrónica es un conjunto de datos electrónicos que declaran la conformidad con otros datos por parte de un firmante identificado. ▶ En España, desde el año 2003, la firma electrónica tiene el mismo valor a efectos legales que la firma manuscrita. (LEY 59/2003, del 19 de diciembre, de firma electrónica) Firma electrónica
  • 37. 37 ▶ La firma electrónica avanzada es la firma electrónica que permite identificar al firmante y detectar cualquier cambio ulterior de los datos firmados, que está vinculada al firmante de manera única y a los datos a que se refiere y que ha sido creada por medios que el firmante puede mantener bajo su exclusivo control. ▶ Para que una firma electrónica pueda ser considera firma electrónica avanzada, la ley marca el cumplimiento de los siguientes requisitos: – La identificación o autenticación de usuarios – Integridad – No repudio – Confidencialidad Firmas Avanzada
  • 38. 38 ▶ Se considera firma electrónica reconocida la firma electrónica avanzada basada en un certificado reconocido y generada mediante un dispositivo seguro de creación de firma. ▶ Certificado reconocido es aquel emitido por una autoridad de certificación reconocida. ▶ Dispositivo de creación de firma es aquel programa o sistema informático que permite crear una firma electrónica. Este se considera seguro cuando asegura: – Que la firma no se puede reproducir. – Que no se pueden obtener los datos utilizados para la generación de la firma. – Que los datos de creación de firma pueden ser protegidos de forma fiable por el firmante contra su utilización por terceros. – Que el dispositivo utilizado no altera los datos antes de la firma. ▶ El dispositivo seguro de creación de firma más común en España es el DNIe. Firmas Reconocidas
  • 39. 39 ▶ Un documento de firma puede contener más de una firma. ▶ En la firma manuscrita también ocurre. ▶ La firma en paralelo (Cofirma) es aquella en la que varios firmantes muestran su conformidad con unos datos. – Da igual el orden. ▶ La firma en cascada (Contrafirma) es aquella en la que un firmante muestra su conformidad con otra firma. – Aplica a una firma concreta, no a los datos. Firmas en paralelo y en cascada Firma Cofirma Contrafirma
  • 40. 40 ▶ ¿Se descifra adecuadamente con la clave pública el valor “PKCS#1” de la firma? ▶ ¿Coincide el dato resultante con la huella digital de los datos firmados? – Es necesario recalcular la huella digital de los datos siempre. ▶ ¿Es el certificado de firma correcto? – ¿Está dentro de su periodo de validez? – ¿Está revocado? • OCSP • CRL – ¿Está emitido por una CA de confianza? ▶ ¿Es la estructura general de la firma correcta? – Formato de firma: XAdES, CAdES, PAdES, etc. – Firmas adicionales en sub-estructuras internas. Validación de firmas
  • 41. 41 ▶ Los formatos de firma son especificaciones, comúnmente aprobadas como estándares reconocidos, que definen qué información debe o puede contener una firma electrónica y el cómo se estructura esa información. ▶ Existen varios formatos de firma electrónica estandarizados. Principalmente se suelen dividir entre: – Formatos genéricos: CAdES, XAdES, CMS/PKCS#7,… – Formatos específicos de documentos: PAdES, OOXML, ODF,… ▶ Paralelamente, también puede diferenciarse entre: – Formatos binarios: CAdES, CMS/PKCS#7, PAdES… – Formatos XML: XAdES, OOXML, ODF… Formatos de firmas electrónica
  • 42. 42 ▶ El resultado de la firma es siempre un fichero XML. ▶ Las firmas XML son aptas tanto para ficheros XML como para archivos binarios. – Los ficheros binarios se codifican en Base64 (representación en un subconjunto de caracteres ASCII de los datos binarios) para poder ser insertados en el XML final. ▶ Distintas variantes: – Enveloping – Enveloped – Detached ▶ Varios formatos de firma XML: – XMLDSig – XAdES (firmas XML avanzadas) – ODF (Open Document Format, firmas de documentos OpenOffice.org) – OOXML (Office Open XML, firmas de documentos MS-Office) – SOAP (Simple Object Access Protocol, firma de mensajes para servicios Web) – … Firmas XML
  • 43. 43 ▶ El XML contiene una serie de referencias a los elementos que se desean firmar electrónicamente. ▶ Del destino de cada referencia, se calcula la huella digital para asegurar que el contenido se de-referencia intacto. ▶ Finalmente, se firma la combinación de las referencias. Fundamentos técnicos de las firmas XML
  • 44. 44 ▶ En el siguiente ejemplo, hay una única referencia, que indica que hemos firmado el fichero http://www.claw.org/doc-a-firmar.xml: <?xml version="1.0" encoding="UTF-8"?> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml- c14n-20010315"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:Reference URI="http://www.claw.org/doc-a-firmar.xml"> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:DigestValue/> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue/> </ds:Signature> Fundamentos técnicos de las firmas XML
  • 45. 45 ▶ Una firma XML puede contener múltiples referencias, las cuales pueden apuntar a datos que están dentro del mismo fichero XML o dentro del mismo contexto XML, pero también que apunten a datos externos accesibles mediante URL (http/https). ▶ Una firma XML no solo contiene una referencia a los datos que queremos firmar, sino que también incluye referencias a otros atributos o metadatos, como por ejemplo: – Copia de datos del firmante (certificado, clave pública) – Otros atributos ▶ El Cliente @firma soporta únicamente una referencia a datos a firmar (solo podemos firmar un dato en cada fichero de firma), e incluye además otras referencias obligadas por las normativas. Fundamentos técnicos de las firmas XML
  • 46. 46 ▶ En una firma XML Detached, la referencia apunta a unos datos que no están en el mismo contexto XML que la propia firma electrónica. ▶ Dos posibilidades: – Los datos no están en el mismo contexto, pero si en el mismo fichero XML: – Los datos no están en el mismo fichero XML, y son accesibles vía HTTP o HTTPS: INTERNALLY DETACHED EXTERNALLY DETACHED XML Detached
  • 47. 47 ▶ En este caso se inserta una copia de los datos firmados dentro de la estructura XML de firma: ▶ Si los datos son XML, se insertan directamente, y si no son XML se convierten antes a Base64. XML Enveloping
  • 48. 48 ▶ En este caso se inserta la estructura XML de firma dentro de los propios datos, siempre que estos también se encuentren en formato XML. ▶ No es posible usarlo con datos que no estén en formato XML XML Enveloped
  • 49. 49 ▶ ODF – Los documentos ODF de OpenOffice.org son colecciones de ficheros XML y de recursos dentro de un contenedor comprimido (ZIP), y se firman con XMLDSig Detached, pero siguiendo unas pautas específicas. – El Cliente @firma v3 soporta firmas de documentos ODF (hojas de cálculo, presentaciones, documentos de texto, etc.) generados con OpenOffice 3 y superiores o programas equivalentes. ▶ OOXML – Los documentos OOXML de MS-Office 2007 y superiores son, al igual que los ODF, colecciones de ficheros de recursos y XML, y se firman igualmente con XMLDSig Detached. – El Cliente @firma no soporta firmas de documentos OOXML. ▶ SOAP – Las firmas SOAP son firmas XMLDSig organizadas siguiendo el esquema definido por SOAP. – El Cliente @ firma no soporta firmas SOAP Variantes de XML
  • 50. 50 ▶ Las firmas avanzadas XAdES (XML Advanced Electronic Signature) son firmas XMLDSig que añaden ciertas referencias adicionales para firmar nuevos atributos y metadatos. ▶ Distintas variedades: – BES (Básica) • Atributos adicionales sobre el firmante, los datos firmados y el proceso de firma – T (Timestamped) • BES + Sello de Tiempo – C (Completa) • BES + Referencias a los datos de validación (listas de revocación o repuestas OCSP) – X (EXtendida) • C pero con sellos de tiempo en las referencias a los datos de validación. Firmas XML Avanzadas: XAdES
  • 51. 51 ▶ Distintas variedades (Continuación): – XL (Longevidad extendida) • BES + Datos de validación (las listas de revocación o las respuestas OCSP en sí, y no las referencias a ellas) – A (Archivo) • Permite encadenar referencias a sellados de tiempo periódicos (evita la degradación de la seguridad por obsolescencia) – EPES (Acorde a política) • Incluye una referencia a la política que rige el proceso de firma Firmas XML Avanzadas: XAdES
  • 52. 52 ▶ Respecto a XMLDSig, la referencia adicional que se firma tiene este aspecto: <xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Id="QualifyingProperties" Target="#Signature" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <xades:SignedProperties Id="SignedProperties"> <xades:SignedSignatureProperties> <xades:SigningTime>2010-01-13T10:19:04+01:00</xades:SigningTime> <xades:SigningCertificate> <xades:Cert> <xades:CertDigest>…</xades:CertDigest> <xades:IssuerSerial>…</xades:IssuerSerial> </xades:Cert> </xades:SigningCertificate> </xades:SignedSignatureProperties> <xades:SignedDataObjectProperties> <xades:DataObjectFormat ObjectReference=“#Reference"> <xades:Description/> <xades:MimeType>text/xml</xades:MimeType> <xades:Encoding/> </xades:DataObjectFormat> </xades:SignedDataObjectProperties> </xades:SignedProperties> </xades:QualifyingProperties> Ejemplo de firma XAdES (BES)
  • 53. 53 ▶ Las firmas binarias son en aplicación completamente equivalentes a las firmas XML, solo que los datos se describen en lenguaje ASN.1 (datos binarios). – El lenguaje de descripción de datos ASN.1 es en muchos aspectos equivalente a XML, pero con las siguientes ventajas: • Ocupa mucho menos espacio – Menos tiempo y coste en la transmisión de datos • Es mucho más rápido – Y los siguientes inconvenientes: • No es legible por las personas • No es posible una variante como la Enveloped XML en la que los datos contengan las firmas, o al menos no de forma genérica. ▶ La normativa más extendida de firma binaria es CMS, una evolución de la más antigua PKCS#7. ▶ Hay una variante avanzada de CMS: CAdES ▶ Hay usos propietarios de PKCS#7/CMS similares al Enveloped: – JAR (Sun Microsistems), PE (Microsoft), PDF (Adobe), ZIP (PKWare), etc. Firmas Binarias
  • 54. 54 ▶ Al igual que ocurría con las firmas XML, no solo se firman los datos, sino también una serie de información y metadatos adicionales. ▶ Se mantiene internamente una lista de elementos a firmar, uno de los elementos de esta lista apunta a los datos que queremos firmar. ▶ De cada uno de los elementos de la lista se guarda una huella digital, y finalmente se firma la combinación de huellas digitales. ▶ Es posible omitir o incluir los datos que se firman dentro de la firma resultante: – Implícita: • La firma contiene tanto la huella digital de los datos firmados como los propios datos firmados. – Explícita: • La firma contiene únicamente la huella digital de los datos firmados, pero no estos últimos. Fundamentos de las firmas binarias
  • 55. 55 ▶ Una firma binaria basada en PKCS#7 (como CMS y CAdES) no funciona con un modelo de referencias que permite firmar un número arbitrario de binarios en una única firma individual. SignedData ::= SEQUENCE { version CMSVersion, digestAlgorithms DigestAlgorithmIdentifiers, encapContentInfo EncapsulatedContentInfo, certificates [0] IMPLICIT CertificateSet OPTIONAL, crls [1] IMPLICIT RevocationInfoChoices OPTIONAL, signerInfos SignerInfos } EncapsulatedContentInfo ::= SEQUENCE { eContentType ContentType, eContent [0] EXPLICIT OCTET STRING OPTIONAL } ▶ En resumen: Los campos están prefijados, un único contenido por firma. Diferencias conceptuales con las firmas XML
  • 56. 56 ▶ CAdES es una especificación de firma pareja a XAdES, y encontramos los mismos subtipos: – BES (Básica), EPES (acorde a política), T (con sello de tiempo), A (para archivo), etc. ▶ El Cliente @firma v3 soporta dos variantes de CAdES: – BES • Se añade un atributo sobre el firmante dentro de la lista de elementos a firmar. Es lo mínimo para considerar una firma CMS como CAdES-BES. – EPES • Incluye un atributo que indica el identificador de la política de firma que se ha aplicado. • A nivel funcional es exactamente igual a XAdES. CAdES
  • 57. 57 ▶ PDF (Adobe Portable Document Format) – Las firmas de los documentos PDF son en realidad firmas PKCS#7 incrustadas en un lugar específico dentro del documento, y que firman una huella digital que cubre la totalidad del contenido del documento (y deja fuera aspectos variables). – El Cliente @Firma soporta firmas PDF usando huellas digitales SHA-512, tal y como recomienta Adobe PDF v9. ▶ PAdES (Firmas Avanzadas PDF) – Las firmas PAdES, en su perfil básico (BES), son en realidad firmas PDF normales realizadas de una forma específica. – Existen, al igual que con el resto de firmas AdES, más variantes. Otras Variantes de las Firmas Binarias (I)
  • 58. 58 ▶ PE (Microsoft Portable Executable) – Las firmas PE son firmas PKCS#7 incrustadas en los ficheros ejecutables de MS-Windows (EXE). ▶ JAR (Sun Microsystems Java Archive) – Las firmas de ficheros JAR son directamente firmas PKCS#1 de una lista textual de huellas digitales de cada uno de los ficheros que hay dentro del JAR. ▶ ZIP – De nuevo, las firmas de ficheros comprimidos ZIP consisten en firmas PKCS#7 (referentes a las huellas digitales de cada uno de los ficheros contenidos en el ZIP) incrustadas en el binario original. – El Ciente @Firma no soporta firmas PE ¡Solicitadlo si necesitáis este tipo de firmas en el Cliente! • Importante: Si soportáis ZIP en vuestros esquemas de interoperabilidad plantead que el soporte de firmas ZIP puede ser la opción más natural. Otras Variantes de las Firmas Binarias (y II)
  • 59. 59 ▶ Si el formatos tiene su propia normativa de firma, debemos usar siempre esa: – PDF, OOXML, ODF, JAR, PE, ZIP, etc. ▶ ¿Vamos a transmitir directamente la firma por HTTP o en un Servicio Web? – XAdES Enveloping ▶ ¿Firmamos un XML y necesitamos que el original pueda seguir siendo tratado normalmente tras la firma? – XAdES Enveloped ▶ ¿No tenemos ninguna restricción especial? – CAdES, explícito o implícito ▶ ¿Queremos ligar la firma a un fichero descargable por Internet y que su sitio de descarga se refleje en esta? – XAdES Externally Detached ¿Qué formato de firma usar en cada ocasión?
  • 60. 60 1. Los formatos que el Cliente @firma denomina XML Explícitos, tanto XMLDSig como XAdES: 1. No se adecúan a ningún estándar en su concepción, por lo que pueden originar problemas legales. 2. Cualquier firma con algoritmo de huella digital obsoleto: 1. MD2, MD5 e incluso SHA-1 deben ser abandonados a favor de SHA-512. 3. Los formatos simples si pueden ser sustituidos por formatos avanzados: 1. PDF -> PAdES 2. XMLDSig -> XAdES 3. CMS/PKCS#7 -> CAdES 4. XMLDSig/XAdES Externally Detached cuando los datos a firmar no sean accesibles mediante HTTP/HTTPS o no tengamos garantía de permanencia por mucho tiempo en sus direcciones Web. ¿Qué formatos de firma no debemos usar?
  • 61. 61 ▶ EPES – La firma electrónica informa de que esta se ha realizado acorde a una política de firma. • ¡Cuidado! No se comprueba que realmente sea así • La política entera puede empotrarse en la firma – Versión ASN.1 para firmas CAdES y PAdES – Versión XML para firmas XAdES – Las firmas XAdES y CAdES EPES se pueden generar directamente desde el Cliente @firma (pero no PAdES EPES). ▶ T – Se incorpora un sello de tiempo a la firma. El sello de tiempo no tiene necesariamente que significar el momento de la firma, sino que en el momento del sello la firma ya existía. – Las firmas T no se generan directamente en el cliente, el sello de tiempo se puede agregar en un momento posterior al de la firma y se hace en la plataforma @firma Servidor. • @firma Servidor no aplica sellos de tiempo a firmas PDF o PAdES. Firmas Avanzadas
  • 62. 62 ▶ C (Completa) – Incluye referencias a la información de revocación de los certificados (listas de revocación y/o mensajes OCSP). – Es realmente poco útil, ya que no se incluye información temporal. – Es necesario mantener siempre las referencias / enlaces activos. ▶ X (Extendida) – Es igual que la completa, pero añade sellos de tiempo a las referencias, por lo que podemos saber en que fecha era válida la información de revocación. ▶ XL (Extendida para largo plazo) – En vez de referencias a la información de revocación se incluye empotrada esta información completa, eliminando la necesidad de mantener las referencias o enlaces activos. ▶ A (Archivo) – Permite la aplicación periódica de sellos de tiempo para combatir la obsolescencia de los algoritmos de cifrado y huella digital. • Por ejemplo, podemos añadir un sello cada año usando siempre los algoritmos más seguros disponibles. Firmas Avanzadas
  • 63. 63 ▶ La información se cifra con una clave simétrica ▶ Esta clave se incluye en el propio sobre, pero cifrada con una clave asimétrica (una clave pública de un usuario). ▶ Además, puede incluir una firma electrónica del remitente. ▶ @firma Cliente genera sobres según las siguientes normativas: – PKCS#7 Enveloped Data – PKCS#7 Signed and Enveloped Data • ¡Cuidado! El formato PKCS#7 Signed and Enveloped Data tiene vulnerabilidades conocidas – CMS Signed and Authentication Data Sobres digitales
  • 64. 64 ▶ ¿Para qué no son los sobres digitales? – Para enviar datos a un particular. • Ciertos dispositivos de almacén de certificados y claves privadas no soportan la apertura de sobres digitales (DNIe, tarjetas FNMT, etc.). – Es una restricción intencionada, una pérdida de la tarjeta no debe ocasionar una pérdida irreparable de datos. – Para cifrado personal de datos ▶ ¿Para que sí son los sobres digitales? – Para que los ciudadanos envíen datos y documentos a una entidad. • ¡Cuidado! Hay que tener ciertas precauciones con la clave privada. – Mejor si es “de usar y tirar” – Mejor si se reparte entre varios mediante un algoritmo de secreto compartido Sobres digitales
  • 65. 65 ▶ Misma clave para cifrar y para descifrar. ▶ Dos tipos principales: – Modo contraseña (PBE): Cualquier palabra (que no contenga caracteres especiales como tildes, ‘ñ’, etc.) puede ser la seña para cifrar o descifrar. – Modo clave: La clave debe seguir un complicado y estricto formato, que es dependiente del algoritmo de cifrado. ▶ ¿Consejos de uso? – Uso principal en el cifrado personal de datos. – ¡Cuidado con la clave! – Nunca para enviar datos cifrados a una entidad (para eso mejor un sobre). • No es posible garantizar el envío. – Envíos personales entre particulares… Pero para esto no debe intervenir una administración pública. ▶ ¿Qué algoritmo usar? – AES es siempre una buena opción. – 3DES es un clásico que aun se mantiene seguro. Cifrados Simétricos
  • 67. 67 ▶ Tarjeta inteligente: – https://github.com/ctt-gob-es/jmulticard/ ▶ Firma electrónica – https://github.com/ctt-gob-es/clienteafirma ▶ Todo lo anterior más documentación: – http://svn-ctt.administracionelectronica.gob.es/svn/clienteafirma/ ▶ Integración continua – http://devel.uji.es/hudson/job/afirma-client/changes Recursos propios

Notas del editor

  1. Un algoritmo clásico para la obtención de una clave común entre emisor y destinatario es Diffie-Hellman.
  2. Cifrado simétrico: - Tiene la ventaja de ser bastante rápido y la desventaja de tener que hacer llegar la clave al usuario que desee descifrar el mensaje. Cifrado asimétrico: - Tiene la ventaja de poder mantener al menos una clave en secreto, pero es un proceso computacionalmente costoso. Ninguno de los 2 mecanismos están asociados a un algoritmo concreto.
  3. - Los certificados son estructuras ASN.1, aunque pueden encontrarse tanto en su versión ASN.1 como codificados en base 64. - Pueden almacenar las claves pública y privada del usuario, aunque esta última es opcional. - Almacenan información del usuario. - Definen un uso para sus claves (KeyUsage).