Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DNI ELECTRNICO.
GUA
DE
REFERENCIA TCNICA.
Esta copia del Manual Tcnico del DNIe ha sido firmada y emitida por la Oficina Tcnica del DNIe a solicitud de David Blanco Gir 09340620K
1
ndice de contenido
Marco legal bsico................................................................................................................................................................3 Descripcin.....................................................................................................................................................................3 Actividad de validacin de los certificados..........................................................................................................................5 Seguridad lgica...................................................................................................................................................................6 Identificacin de usuario mediante cdigo CHV......................................................................................7 Identificacin de usuarios mediante datos biomtricos............................................................................7 Identificacin de aplicacin......................................................................................................................7 Identificacin mutua.................................................................................................................................7 Desbloqueo y cambio de cdigo CHV.....................................................................................................8 Proteccin de mensajes............................................................................................................................8 Funcionalidades criptogrficas.................................................................................................................9 Estados del sistema...................................................................................................................................9 Requisitos de seguridad. Asunciones de entorno..................................................................................................................9 Servicio de Atencin al Ciudadano.....................................................................................................................................11 Glosario de trminos y expresiones habituales...................................................................................................................13 Anexo I. Desarrollo de la funcionalidad de seguridad. .....................................................................................................17 Anexo II. Comandos APDU. .............................................................................................................................................19 Anexo III. Elementos criptogrficos. ................................................................................................................................41 Anexo IV. Ejemplo de firma electrnica. ..........................................................................................................................43
Descripcin.
En el resto del documento usaremos el trmino tarjeta para referirnos de forma indiferente al soporte plstico del DNIe y al microprocesador que incorpora. El contexto indicar si se est haciendo referencia a uno u otro elemento o a la suma de ambos.
El propsito del microprocesador que incorpora el DNI electrnico es contener y custodiar los datos de filiacin del ciudadano, los datos biomtricos (modelo dactilar, foto y firma manuscrita) y los dos pares de claves RSA con sus respectivos certificados. Podemos decir que el DNI electrnico est compuesto de dos elementos fundamentales: 1. La tarjeta. o Cumple con el estndar ISO-7816-1. o Est fabricada en policarbonato. Este es un material que permite su uso continuado y frecuente sin sufrir deterioro visible que altere sus prestaciones, durante el plazo mximo de vigencia del DNI, es decir, ms de 10 aos. o La personalizacin de la tarjeta se realiza mediante la grabacin con lser de los datos de filiacin, la fotografa y la firma manuscrita. Este sistema de personalizacin garantiza la imposibilidad de manipular los datos sin alterar el acabado de forma visible. o Cuenta con las ms modernas medidas de seguridad ante la manipulacin y falsificacin del documento, muchas de ellas fcilmente identificables por cualquier persona sin ningn procedimiento especial. El conjunto de todas las medidas hace del DNI electrnico un documento altamente seguro, tanto desde el punto de vista fsico como lgico. 2. El chip del DNI electrnico. o Nombre comercial: ST19WL34 o Sistema operativo: DNIe v1.1 o Capacidad de memoria: 32Kb.
La informacin en el chip est distribuida en tres zonas de seguridad con diferentes niveles y condiciones de acceso: Zona pblica: Accesible en lectura sin restricciones. Certificado AC intermedia. Claves Diffie-Hellman. Certificado x509v3 de componente. Zona privada: Accesible en lectura por el ciudadano, mediante la utilizacin de la clave personal de acceso o PIN; contiene: Certificado de Firma. Certificado de Identificacin. Zona de seguridad. Accesible en lectura por el titular en los Puestos de Actualizacin del DNIe (PAD). Incluye: Datos de filiacin del ciudadano, los mismos que estn impresos en la tarjeta. Imagen de la fotografa. Imagen de la firma manuscrita. En una zona lgica inaccesible desde el exterior se encuentran las claves RSA privadas y el modelo de la impresin dactilar. El acceso a estos datos es competencia exclusiva del sistema operativo que corre en cada chip. Datos criptogrficos que incorporan los DNI electrnicos. Parejas de claves RSA de identificacin y firma. Clave Pblica de la AC raz. Claves Diffie-Hellman.
Datos de gestin. Traza de fabricacin. Nmero de serie del soporte. El chip almacena los siguientes certificados electrnicos:
Certificado de identificacin. Tiene como finalidad garantizar electrnicamente la identidad del ciudadano al realizar una transaccin telemtica. El certificado de identificacin asegura que la comunicacin electrnica se realiza con la persona que se identifica con el mismo. El titular podr, a travs de su certificado, acreditar su identidad frente a cualquiera ya que se encuentra en posesin del propio certificado y de la clave privada asociada al mismo. El uso de este certificado no est habilitado para operaciones que exijan no repudio de origen, por tanto los terceros aceptantes y los prestadores de servicios no tendrn garanta del compromiso del titular del DNI con el contenido firmado. Su uso principal ser el de generar mensajes de identificacin en el seno de determinados protocolos de establecimiento de canales cifrados.
Para ms informacin sobre el atributo KeyUsage de los certificados incorporados a los DNIe vase el apartado 6.7.1 de la DPC.
Este certificado puede ser utilizado tambin como medio de identificacin para la realizacin de un registro que permita la expedicin de certificados reconocidos por parte de entidades privadas, sin verse estas obligadas a realizar una fuerte inversin en el despliegue y mantenimiento de una infraestructura de registro.
Observacin: Desde los orgenes del estndar X.509, descrito por primera vez en el documento RFC-2410 en 1998 tras su evolucin desde el estndar X.500, se usa la expresin digitalSignature para referirse a un uso de la clave dirigido a la autenticacin. Esta peculiaridad puede a veces inducir a error y causa sorpresa en los usuarios que tienen su primer contacto con esta tecnologa. Parece lgico pensar que la expresin digitalSignature y su traduccin al castellano, firmaDigital, haga referencia a un procedimiento de firma electrnica. Para aclarar este aparente error de concepto recordemos que el estndar describe convenciones; los autores del documento original usaron una etiqueta que resuma el hecho de que en el trasfondo de una operacin de identificacin lo que hay es un cifrado de un reto mediante la clave privada asociada al certificado, es decir, una firma electrnica avanzada. Para distinguir esta accin de la firma electrnica de documentos se aplic la etiqueta nonRepudiation (no repudio) y en la actualidad contentCommitment (compromiso con el contenido) al uso de los certificados dirigidos a expresar precisamente el compromiso con el contenido de un documento electrnico.
La Autoridad de Validacin es el componente de una PKI que tiene como tarea suministrar informacin sobre la vigencia de los certificados electrnicos que hayan sido expedidos por una Autoridad de Certificacin. La informacin sobre los certificados electrnicos revocados (no vigentes) se almacena en las denominadas listas de revocacin de certificados. Estas listas se
conocen ms habitualmente por sus siglas en ingls, CRL. Recomendamos el examen detenido de la RFC-5280, y concretamente el apartado 5, para ms informacin sobre las listas de revocacin de certificados. En el esquema de infraestructura de clave pblica adoptada para el DNI electrnico, se ha optado por asignar las funciones de Autoridad de Validacin a entidades diferentes de la Autoridad de Certificacin a fin de aislar la comprobacin de la vigencia de un certificado electrnico de los datos de identidad de su titular; de esta forma la Autoridad de Certificacin (Ministerio del Interior Direccin General de la Polica y de la Guardia Civil) no tiene en modo alguno acceso a los datos de las transacciones que se realicen con los certificados que ella emite y las Autoridades de Validacin no tienen acceso a la identidad de los titulares de los certificados electrnicos que valida, reforzando an ms si cabe la transparencia del sistema y garantizando la intimidad en el uso de los certificados DNIe.En la actualidad la PKI del DNI electrnico dispone de tres prestadores de servicios de validacin: oFbrica Nacional de Moneda y Timbre Real Casa de la Moneda, que presta sus servicios de validacin con carcter universal: ciudadanos, empresas y Administraciones Pblicas. oMinisterio de Administraciones Pblicas, que presta los servicios de validacin al conjunto de las Administraciones Pblicas. oMinisterio de Industria, Turismo y Comercio, que presta servicio de validacin a empresas. Adicionalmente, la entidad pblica empresarial Red.es podra completar los servicios de validacin en un futuro prximo. La prestacin de estos servicios de validacin se realiza en base a Online Certificate Status Protocol (OCSP), segn se describe en el documento RFC-2560. En esencia supone que un cliente OCSP enva una peticin a la Autoridad de Validacin y sta emite una respuesta firmada electrnicamente tras consultar su base de datos. En resumen, si el certificado no est en ninguna CRL se considera vlido y si est en alguna CRL, la AV informar de que el estado es revocado. Si consta la razn de la revocacin, tambin se incluye en la respuesta.
El servicio de validacin est disponible de forma ininterrumpida todos los das del ao.
Seguridad lgica.
Mecanismos de identificacin. El sistema operativo DNIe dispone de distintos mtodos de identificacin mediante los que una entidad externa demuestra legitimidad para el uso de los datos del chip.
Usamos la expresin entidad externa para poder englobar cualquier tipo de implementacin software o hardware. Dicha entidad puede ser una aplicacin programada en un lenguaje de alto nivel corriendo sobre un determinado sistema operativo comercial o un programa en cdigo mquina embebido en un perifrico diseado a medida para su ejecucin.
La correcta realizacin de cada uno de estos mtodos permite obtener unas condiciones de seguridad que podrn ser requeridas para el acceso a los distintos recursos de la tarjeta.
La tarjeta DNIe soporta verificacin de usuario (CHV-Card Holder Verification). Esta operacin la realiza el sistema operativo cotejando el valor facilitado por la entidad externa con el valor almacenado en el chip. El cdigo CHV tiene su propio contador de intentos. Tras una presentacin vlida el contador de intentos es automticamente puesto a su valor inicial (tpicamente = 3). El contador de intentos es decrementado cada vez que se realiza una presentacin errnea, bloquendose la posibilidad de identificacin por este mtodo si el contador llega a cero. El desbloqueo de un cdigo CHV exige una identificacin de nivel superior, concretamente de tipo biomtrico. Esta operacin se lleva a cabo en las instalaciones del Cuerpo Nacional de Polica mediante el uso de un PAD. A su vez estas presentaciones de huellas tienen su propio contador de intentos. Si el nmero de intentos de presentacin de huella dactilar se agota, no ser posible realizar la operacin de desbloqueo. Es posible cambiar el cdigo de CHV a un nuevo valor presentando el valor actual o presentando la huella dactilar.
El sistema operativo del DNI electrnico permite realizar una identificacin biomtrica del titular de la tarjeta. Est funcin slo estar disponible en puntos de acceso controlados. En lineas generales, la aplicacin que accede al DNIe decide qu huella va a proceder a verificar, solicitando al usuario que coloque el dedo adecuado. Tras la captura biomtrica en el dispositivo lector de huellas, presenta la informacin al sistema operativo del chip a travs del correspondiente comando. Mediante un algoritmo match-on-card se evala la correspondencia entre la huella presentada y la referencia almacenada en el propio chip. Si la evaluacin supera el umbral, la verificacin se considera correcta. En caso contrario, se anota una presentacin errnea sobre esa huella devolviendo el nmero de intentos restantes.
Identificacin de aplicacin.
El propsito de este mtodo es que la entidad externa demuestre tener conocimiento de una clave como condicin de acceso a determinados recursos presentes en el chip. El mtodo elegido es un protocolo de desafo-respuesta, con los siguientes pasos: oLa aplicacin pide un desafo a la tarjeta. oSobre ese desafo, la entidad externa aplica un algoritmo en el que participa la clave privada de un certificado conocido por el sistema operativo del DNIe. El resultado lo transmite al chip. oEl sistema operativo del chip realiza las operaciones necesarias para determinar si la clave privada es congruente con el certificado confiable con el que cuenta. En caso de coincidir, considera correcta la presentacin para posteriores operaciones.
Identificacin mutua.
Este procedimiento permite que cada una de las partes (tarjeta y aplicacin externa) confe en la otra, mediante la presentacin mutua de certificados y su verificacin. Este proceso, similar al anterior en lineas generales, tiene como objetivo no slo identificar los elementos participantes sino tambin un intercambio de claves de sesin, que debern ser utilizadas para cifrar todos los mensajes que se intercambien posteriormente. Este servicio permite el uso de diferentes alternativas, que podrn seleccionarse implcitamente en funcin de la secuencia de comandos, o explcitamente, indicando su identificador de algoritmo en un comando de gestin de entorno de seguridad anterior (MSE). Las dos opciones disponibles estn basadas en la especificacin EN-14890-1 Application Interface for smart cards used as Secured Signature Creation Devices Part 1, y son las siguientes: oAutenticacin con intercambio de claves (captulo 8.4 de EN-14890-1) oAutenticacin de dispositivos con proteccin de la privacidad, (captulo 8.5 de EN14890-1)
Se permite el cambio de cdigo CHV mediante la presentacin del valor antiguo o mediante identificacin biomtrica previa. Debido al carcter crtico de esta operacin, el cambio de cdigo CHV se ha de realizar siempre en condiciones de mxima confidencialidad y en terminales especficamente habilitados a tal efecto o con las debidas condiciones de seguridad, exigindose por tanto, el establecimiento de un canal seguro basado en certificados de componente. El desbloqueo del cdigo CHV slo es posible en los equipos denominados PAD, previa identificacin biomtrica del titular de la tarjeta. El cambio de cdigo CHV es posible tambin mediante el producto denominado PAD_virtual. Se trata de un programa cliente desarrollado en lenguaje Java que accede a un servicio en el que se generan disposiciones aleatorias de caracteres. El programa representa en la pantalla del usuario un teclado sobre el que se seleccionan los caracteres que se desean que conformen el nuevo cdigo CHV. Se envan al servidor las coordenadas ocupadas por dichos caracteres y el servidor compone la secuencia de comandos que el programa cliente debe enviar al chip para que ste acepte el cambio. Con este mecanismo se consigue que el nuevo cdigo CHV no viaje en ningn momento entre cliente y servidor, imposibilitando as la interceptacin de este dato tan sensible.
Proteccin de mensajes.
La sistema operativo DNIe incorpora la posibilidad de establecer un canal seguro entre el terminal y el chip que proteja los mensajes transmitidos, de hecho el sistema operativo rechazar la ejecucin de determinados comandos si no se envan a la tarjeta a travs de un canal seguro e identificado. Para el establecimiento es necesaria la autenticacin previa del terminal y el chip mediante el uso de certificados. Durante la presencia del canal seguro cada mensajes se cifra y autentica de forma que se asegura una comunicacin una a uno entre los extremos del canal. El canal seguro puede ser requerido por la aplicacin o puede ser una restriccin de acceso impuesta por algn recurso de la tarjeta. Para el establecimiento del canal seguro, en primer lugar se realiza un intercambio de las claves pblicas de la tarjeta y el terminal mediante certificados que sern verificados por ambas partes. A continuacin se ejecuta un protocolo dirigido al establecimiento de una clave de sesin. El procedimiento descrito es una variante del protocolo Diffie-Hellman. Una vez concluido el protocolo para el establecimiento de la clave de sesin todos los mensajes deben transmitirse cifrados con esta clave.
Funcionalidades criptogrficas.
Claves RSA
La sistema operativo DNIe es capaz de generar y gestionar claves RSA. La generacin de la pareja de claves RSA sigue el estndar PKCS#1 v1.5. Se usa el algoritmo Miller-Rabin como test de primalidad.
Firmas electrnicas
El DNIe tiene capacidad para la realizacin de firmas electrnicas de dos modos diferentes:
oModo raw.
oModo relleno PKCS#1.
Desde el punto de vista operativo, el chip del DNIe tiene tres estados de funcionamiento: Operacional: estado habitual en el que el sistema ofrece todas las funcionalidades que incorpora. Terminado: estado en el que se deshabilitan las funcionalidades, y deja de responder a comandos administrativos. Borrado: estado en el que se destruye el contenido de la memoria EEPROM interna, y se deshabilitan las funcionalidades.
Las transiciones entre estados se invocan por reaccin ante eventos que pudieran comprometer la seguridad. Las nicas transiciones posibles son de operacional a terminada y de operacional a borrada.
Ntese que los eventos que motivan los cambios de estado son independientes de los cdigos de respuesta y de la lgica del procesamiento de los comandos en modo operacional, que estn diseados para mantener constante el nivel de seguridad de la tarjeta. Los modos y transiciones indicados garantizan la confidencialidad del contenido del chip, comprometiendo si es necesario su disponibilidad; en determinadas circunstancias, ante actividad que pueda ser reconocida por el chip como algn tipo de ataque, el contenido quedar destruido o inaccesible.
Los requisitos de seguridad, tanto para el DNIe como para su entorno de operacin estn descritos en el Perfil de Proteccin EN-14169 y ms especficamente en la Declaracin de Seguridad del DNIe. De sta ltima, obtenemos que para asegurar la confidencialidad y la integridad de los activos gestionados por el DNIe, su entorno de operacin debe cumplir los siguientes requisitos En relacin con la aplicacin de generacin de certificados (CGA) FCS_CKM.2.1/CGA La tarjeta DNIe debe exportar las claves pblicas a la aplicacin de generacin de certificados, para la posterior generacin del certificado de integridad y no repudio. FCS_CKM.3.1/ CGA Una vez generado el certificado, la tarjeta DNIe debe realizar su importacin a travs de un canal seguro con confidencialidad, integridad y autenticacin. FDP_UIT.1.1 / Importacin de datos de verificacin de firma (SVD) La tarjeta DNIe debe aplicar las polticas de seguridad en relacin a la importacin de datos de verificacin de firma (SVD) para poder recibir datos de usuario de una manera protegida contra errores de modificacin e insercin. FDP_UIT.1.2 / Importacin de datos de verificacin de firma (SVD) La tarjeta DNIe debe ser capaz de determinar, a la recepcin de los datos de usuario, si ha ocurrido modificacin e insercin. FTP_ITC.1.1 / Importacin de datos de verificacin de firma (SVD) La tarjeta DNIe debe proporcionar un canal de comunicacin, entre s misma y un producto de tecnologa de la informacin (IT) confiable remoto, que sea distinto lgicamente de otros canales de comunicacin y que proporcione la identificacin segura de sus extremos y la proteccin de los datos del canal contra su modificacin o prdida de confidencialidad. FTP_ITC.1.2 / Importacin de datos de verificacin de firma (SVD) La tarjeta DNIe debe permitir al producto de tecnologa de la informacin (IT) confiable remoto iniciar la comunicacin a travs del canal confiable. FTP_ITC.1.3 / Importacin de datos de verificacin de firma (SVD) La tarjeta DNIe debe iniciar la comunicacin a travs del canal confiable para la importacin de datos de verificacin de firma (SVD). La tarjeta incorpora funciones de seguridad para satisfacer los requisitos relacionados con la aplicacin de generacin de certificados. El DNIe no permite la
10
exportacin de claves para la generacin de certificados si no es a travs de canales seguros establecidos con equipos del Cuerpo Nacional de Polica. Por otra parte, la funcionalidad de la tarjeta DNIe detecta cualquier alteracin en las comunicaciones, invalidando, como resultado, la misma. Finalmente, la importacin de certificados reconocidos, igualmente ha de ser realizada en equipos del Cuerpo Nacional de Polica. Estas medidas de seguridad garantizan la confidencialidad, integridad y autenticacin de los datos en trnsito y los generados por cada una de las partes (DNIe y aplicacin de generacin de certificados). El usuario deber realizar la solicitud de certificados en las dependencias del Cuerpo Nacional de Polica habilitadas a tal efecto. De este modo, el usuario tendr todas las garantas del cumplimiento de los requisitos relacionados con el entorno al objeto de la generacin de certificados reconocidos. En relacin con la aplicacin de generacin de firma electrnica (SGA) FCS_COP.1.1/ Hash de la aplicacin de creacin de firma (SCA) La tarjeta DNIe debe realizar el hash de los datos a ser firmados (DTBS) de acuerdo con el algoritmo criptogrfico SHA1. FDP_UIT.1.1 / DTBS de la SCA La tarjeta DNIe debe aplicar las polticas de creacin de firma para poder transmitir datos de usuario de una manera protegida contra errores de modificacin, borrado e insercin. FDP_UIT.1.2 / DTBS de la SCA La tarjeta DNIe debe ser capaz de determinar, a la recepcin de los datos de usuario, si ha ocurrido modificacin, borrado e insercin. FTP_ITC.1.1 / DTBS de la SCA La tarjeta DNIe debe proporcionar un canal de comunicacin, entre s misma y un producto de tecnologa de la informacin (IT) confiable remoto, que sea distinto lgicamente de otros canales de comunicacin y que proporcione identificacin segura de sus extremos y proteccin de los datos del canal contra la modificacin o la prdida de confidencialidad. FTP_ITC.1.2 / DTBS de la SCA La tarjeta DNIe debe permitir a la propia tarjeta iniciar la comunicacin a travs del canal confiable. FTP_ITC.1.3 / DTBS de la SCA La tarjeta DNIe debe iniciar la comunicacin a travs del canal confiable para firmar la representacin de datos a ser firmados (DTBS) mediante el dispositivo seguro de creacin de firma (SSCD). FTP_TRP.1.1 / SCA La tarjeta DNIe debe proporcionar una ruta de comunicacin, entre s misma y los usuarios locales, que sea lgicamente distinta de otras rutas de comunicacin y proporcione identificacin segura de sus extremos y proteccin de los datos comunicados contra la modificacin o la prdida de confidencialidad. FTP_TRP.1.2 / SCA La tarjeta DNIe debe permitir a los usuarios locales iniciar la comunicacin a travs de la ruta confiable. FTP_TRP.1.3 / SCA La tarjeta DNIe debe exigir el uso de la ruta confiable para la autenticacin inicial del usuario. La tarjeta DNI tiene capacidad para realizar un hash o resumen segn lo definido en el algoritmo SHA-1 al objeto de realizar firmas electrnicas. Por otra parte, la solicitud de una firma slo puede ser realizada por el ciudadano previa autenticacin del mismo, operacin que realiza enviando el cdigo PIN y bajo un canal de comunicaciones cifrado. La tarjeta DNIe slo aceptar peticiones de firma en caso de que provengan de una SCA, identificada por un par de claves RSA que son utilizadas para establecer un canal seguro entre la tarjeta DNIe y la propia aplicacin, dotando a los datos
11
intercambiados de confidencialidad, integridad y no repudio de autora. Asimismo, ante cualquier perturbacin detectada en las comunicaciones o en los propios datos, se generar el correspondiente error, invalidndose lo realizado hasta el momento. Para la correcta interaccin de las aplicaciones con el chip DNIe se han de utilizar los mdulos criptogrficos CSP y PKCS#11 que se encuentran en el URI http://www.dnielectronico.es/descargas/index.html .
Es prestado de forma permanente, 24 horas al da, 7 das a la semana. Es de mbito universal, para todo tipo de usuarios. Es gratuito. Su cobertura es integral, atiende cualquier tipo de incidencia del DNI electrnico.
12
13
Clave de Sesin: clave simtrica que se establece para cifrar una comunicacin entre dos entidades. La clave se establece para cada sesin de comunicacin, terminando su utilidad y desechndose una vez finalizada sta. La sesin puede ser tan corta como para suponer la transmisin de un nico comando o tan larga como para que se produzca el complejo intercambio de mensajes que exige una generacin de firma electrnica. Clave Personal de Acceso (PIN): vase CHV. CRL: iniciales de la expresin inglesa Certificates Revocation List. Vase Lista de Revocacin de Certificados. Datos de creacin de Firma (Clave Privada): son datos nicos, como cdigos o claves criptogrficas privadas, que el suscriptor utiliza para crear la firma electrnica. Datos de verificacin de Firma (Clave Pblica): son los datos, como cdigos o claves criptogrficas pblicas, que se utilizan para verificar la firma electrnica. Dispositivo seguro de creacin de firma: instrumento que sirve para aplicar los datos de creacin de firma cumpliendo con los requisitos que establece el artculo 24.3 de la Ley 59/2003, de 19 de diciembre, de Firma Electrnica. Documento electrnico: conjunto de datos almacenado en soporte susceptible de ser ledo por equipos electrnicos de procesamiento de datos. Documento de seguridad: documento exigido por la Ley Orgnica 15/99 de Proteccin de Datos de Carcter Personal cuyo objetivo es establecer las medidas de seguridad implantadas, a los efectos de este documento, por la DGPGC como Prestador de Servicios de Certificacin, para la proteccin de los datos de carcter personal contenidos en los ficheros de la actividad de certificacin que contienen datos personales. DPC, Declaracin de Polticas de Certificacin: documento en el que la Autoridad de Certificacin declara de forma detallada las prcticas que tiene previsto aplicar durante el ciclo de vida a los certificados que emita y los aspectos relativos a la seguridad en sentido amplio. DSCF: Vase Dispositivo seguro de creacin de firma. Encargado del tratamiento: la persona fsica o jurdica, autoridad pblica, servicio o cualquier otro organismo que trate datos personales por cuenta del responsable del tratamiento de los ficheros. Firma electrnica: es el conjunto de datos en forma electrnica, consignados junto a otros o asociados con ellos, que pueden ser utilizados como medio de identificacin personal y para garantizar la integridad de un documento electrnico.
14
Firma electrnica avanzada: es aquella firma electrnica que permite establecer la identidad personal del suscriptor respecto de los datos firmados y comprobar la integridad de los mismos, por estar vinculada de manera exclusiva tanto al suscriptor, como a los datos a que se refiere, y por haber sido creada por medios que mantiene bajo su exclusivo control. Firma electrnica reconocida: es aquella firma electrnica avanzada basada en un certificado reconocido y generada mediante un dispositivo seguro de creacin de firma. Funcin hash: esta expresin se refiere a una forma de correspondencia matemtica en base a la cual se realiza una serie de operaciones algebraicas sobre un conjunto de datos de cualquier tamao de forma que el resultado obtenido es otro conjunto de datos de tamao fijo y habitualmente menor al original y que representa de forma bastante unvoca al conjunto original. Hash o huella digital: valor que se obtiene tras aplicar una funcin hash a un conjunto de datos. HSM: siglas de la expresin inglesa Hardware Security Module. Vase Mdulo Hardware de Seguridad. Identificador de usuario: conjunto de caracteres que se utilizan para la identificacin unvoca de un usuario en un sistema. Jerarqua de confianza: conjunto de autoridades de certificacin que mantienen relaciones de confianza por las cuales una AC de nivel superior garantiza la confiabilidad de una o varias de nivel inferior. En el caso de DNIe, la jerarqua tiene dos niveles, la AC Raz en el nivel superior es el origen de la confianza en sus AC subordinadas. Listas de Revocacin de Certificados o Listas de Certificados Revocados: ficheros donde figuran exclusivamente aquellos certificados que han sido revocados o suspendidos (no los caducados). En el caso de la PKI del DNIe no existe el estado suspendido. Mdulo Hardware de Seguridad: dispositivo utilizado para realizar funciones criptogrficas (generacin de claves y operaciones asociadas) y almacenar claves en un entorno seguro. Es ms habitualmente conocido por sus siglas en ingls: HSM. Prestador de Servicios de Certificacin: persona fsica o jurdica que expide certificados electrnicos o presta otros servicios en relacin con la certificacin y la firma electrnica. Punto de Actualizacin del DNIe: terminal ubicado en las Oficinas de Expedicin que permite al ciudadano de forma guiada, sin la intervencin de un funcionario, la realizacin de ciertas operaciones con el DNIe (comprobacin de datos almacenados en la tarjeta, renovacin de los certificados de identidad pblica, cambio de clave personal de acceso y comprobacin funcional de la tarjeta).
15
SCA: siglas de la expresin inglesa Signing Creation Aplication, Aplicacin de generacin de firma. SSCD: siglas de la expresin inglesa Secure Signature-Creation Device. Vase Dispositivo seguro de creacin de firma. Tercero Aceptante: persona o entidad diferente del titular que decide confiar en un certificado emitido por un determinado Prestador de Servicios de Certificacin.
16
Si bien las prestaciones electrnicas del DNIe pueden ser invocadas a travs de las libreras CSP y PKCS#11 provistas, la tarjeta proporciona funciones accesibles a travs de su interfaz de comandos para desarrollarla en los trminos que desee el usuario. La invocacin de estos comandos se rige por lo definido en el estndar ISO IEC 7816.
En el resto del presente documento, la palabra comando hace siempre referencia a los comandos APDU definidos en esa norma, ms concretamente en el documento ISO7816-4. Refirase el lector a dicha norma para un estudio en profundidad de las caractersticas, prestaciones y sintaxis de cada comando y sus respuestas.
Identificacin La tarjeta DNIe dispone de distintos mtodos de identificacin para que el usuario acceda a los recursos, pero slo la identificacin mediante cdigo CHV est disponible para los usuarios. Una operacin exitosa de identificacin mediante cdigo CHV conlleva la satisfaccin de determinadas condiciones de seguridad, requisito indispensable para el acceso a los activos del DNIe. El comando que se ha de invocar para obtener esta funcionalidad es: -Verify Desbloqueo y cambio de PIN Se permite el cambio de PIN, mediante la presentacin del valor antiguo. Es posible tambin el cambio de PIN bajo determinadas condiciones (canal seguro basado en certificado de componente en combinacin con una clave de aplicacin) tras la realizacin de una verificacin biomtrica.
Esta operacin se considera de administracin de la seguridad del dispositivo por lo que el usuario deber utilizar los mecanismos provistos por la Direccin General de la Polica y de la Guardia Civil.
Establecimiento de canal seguro. La tarjeta DNIe permite la posibilidad de establecer un canal seguro de usuario que cifre el trfico de mensajes entre el terminal y la tarjeta. Para el establecimiento es necesaria la identificacin previa del terminal y de la tarjeta mediante el uso de certificados. Durante la presencia del canal seguro los mensajes se cifran y se comprueba su autora de tal forma que se asegura una comunicacin una a uno entre los dos extremos del canal. El lector puede encontrar una descripcin detallada de este protocolo en la norma EN-14890. Este canal seguro es un requisito obligatorio para la realizacin de firma electrnica y la autenticacin del usuario. Los comandos APDU que hay que invocar para el establecimiento del este tipo de canal son, en este orden: Get Chip Info, Select File (6020) Get Response Read Binary (Lectura del Certificado de Autoridad intermedia para componentes)
17
Select File (3F00) Get Response Select File (601F) Get Response Read Binary (Lectura del Certificado Componente) Manage Security Environment (Seleccion Root CA), Perform Security Operation (Verificar Certificado Autoverificable de la CA intermedia) Manage Security Environment (Seleccion de clave en memoria y modo de uso), Perform Security Operation (Verificar Certificado Autoverificable del terminal) Manage Security Environment (Seleccion de claves para autenticacin), Internal Authenticate Get Response Get Challenge External Authenticate Funcionalidades criptogrficas. Generacin de claves RSA para la firma electrnica. El usuario puede realizar una generacin de claves al objeto de obtener un certificado reconocido para la realizacin de firma electrnica pero debido a los requisitos de seguridad para las aplicaciones de generacin de certificados reconocidos, el ciudadano slo podr realizar esta operacin en las dependencias del Cuerpo Nacional de Polica habilitadas a este efecto. Firmas electrnicas La tarjeta DNIe tiene capacidad para la realizacin de firmas electrnicas. Primero se establecer canal seguro de usuario con los comandos descritos anteriormente. La aplicacin de generacin de firma, en el proceso de establecimiento del canal seguro, se deber autenticar con los certificados del terminal y la clave RSA asociada. Esto es necesario para poder invocar la funcionalidad de firma. A continuacin, se invocarn los siguientes comandos: 1)Verify (Para autenticacin del usuario) 2)Manage Security Environment (Seleccin de clave y modo de uso), 3)Perform Security Operation (Clculo de una firma) Las aplicaciones de generacin de firma pueden ser construidas a partir de los mdulos PKCS#11 y CSP que proporciona la Direccin General de la Polica y de la Guardia Civil. Estos mdulos incluyen todos los datos, funciones y algoritmos necesarios para la comunicacin con el DNIe y realizan todas las operaciones habituales que pueden ser requeridas por una aplicacin de firma, un cliente de correo o un navegador web. No obstante, aquellos usuarios que decidan programar un mdulo PKCS#11 o un CSP a medida necesitarn conocer las claves implicadas en el establecimiento de canal seguro. Estas claves se incluyen en el ANEXO III.
18
ANEXO II Comandos APDU necesarios para el desarrollo de la funcionalidad de seguridad de la tarjeta DNIe como dispositivo seguro de creacin de firma.
NOTA: El presente anexo no pretende ser una transcripcin, traduccin o extracto de la norma ISO-IEC 7816-4. Si necesita informacin ms precisa sobre el contenido de este anexo, por favor refirase a dicha norma. Los ejemplos se proponen en su forma ms genrica y no se basan en casos reales; no incorporan parmetros que puedan ser funcionales en algn escenario y su nica finalidad es didctica.
0x08
Vaco Vaco Longitud del desafo de 8 bytes, para establecimiento de canal seguro
Mensaje de respuesta
Datos SW1-SW2 Significado Datos del desafo Bytes de estado
Condiciones de estado
SW1 0x67 0x6A SW2 0x00 0x86 Significado Longitud incorrecta Parmetros incorrectos P1-P2
Ejemplo:
Terminal 00 84 00 00 08 xx xx xx xx xx xx xx xx 90 00 (Nmero aleatorio, 8 bytes) Tarjeta
19
0x07
Mensaje de respuesta
Datos SW1-SW2 Tamao Significado 0x07 Nmero de serie Bytes de estado
Condiciones de estado
SW1 0x67 0x6A Significado Longitud incorrecta (el campo Lc no 0x00 es correcto) 0x86 Parmetros P1-P2 incorrectos SW2
Ejemplo:
Terminal 90 B8 00 00 07 xx xx xx xx xx xx xx 90 00 (Nmero de serie, 7 bytes) Tarjeta
20
Mensaje de respuesta
Significado Mensaje respuesta(o parte) de acuerdo a LE Bytes de estado
Datos SW1-SW2
Condiciones de estado
SW1 0x61 0x69 0x6C 0x90 SW2 0xXX 0x85 0xXX 0x00 Significado Ejecucin correcta. Quedan datos disponibles en la tarjeta. Condiciones de uso no satisfechas Longitud incorrecta (XX indica el valor correcto) Ejecucin correcta.
Ejemplo:
Terminal 00 C0 00 00 xx xx Long de datos solicitados, en este ejemplo: 0A xx xx xx xx xx xx xx xx xx xx 90 00 (Datos comando, 10 bytes) Tarjeta
21
Long
El bloque de datos 6A || PRND2 || K IFD || h || BC es firmado con la clave privada del terminal (SK.IFD.AUT). Al resultado de esta firma (SIG) se le aplica la funcin SIGMIN para luego poder encriptar el resultado con la clave pblica de la tarjeta (PK.ICC.AUT). Para poder realizar esta operacin, es necesario que el tamao de las dos claves RSA implicadas (PK.ICC.AUT y SK.IFD.AUT) sea el mismo. La tarjeta descifrar el mensaje utilizando su clave privada, y verificar la firma utilizando la clave pblica del terminal, que deber haber sido cargada previamente mediante un certificado verificable en la tarjeta. Ambas claves deben estar seleccionadas previamente en la plantilla de autenticacin.
22
Condiciones de estado
SW1 0x63 0x65 0x67 0x69 0x69 0x6A 0x6A 0x6A 0x6A SW2 0xCX 0x81 0x00 0x83 0x85 0x80 0x86 0x87 0x88 Meaning El cdigo de autenticacin no es vlido. X expresa el nmero de intentos posibles. Error de memoria Longitud incorrecta Mtodo de autenticacin bloqueado Condiciones de uso no satisfechas Error en el campo de datos Parmetros incorrectos P1-P2 Lc inconsistente con P1-P2 Datos referenciados no encontrados
Ejemplo:
Terminal 00 82 00 00 P3 xx xx xx ..... xx xx P3: long clave pblica de tarjeta xx xx xx .... xx xx Datos para autenticacin externa por parte del terminal 90 00 Tarjeta
23
Autenticacin interna con establecimiento de canal Autenticacin segn EN-14890 RND.IFD || SN.IFD Autenticacin segn EN-14890 ap. 8.4 Vaco
) El bloque de datos 6A || PRND1 || KICC || h || BC es firmado con la clave privada de la tarjeta (SK.ICC.AUT), que debe estar seleccionada en la plantilla de autenticacin. Al resultado de esta firma (SIG) se le aplica la funcin SIGMIN para luego poder encriptar el resultado con la clave pblica del terminal (PK.IFD.AUT), que previamente se deber haber cargado (mediante certificados verificables en la tarjeta), y seleccionado en la plantilla de autenticacin. Para poder realizar esta operacin, es necesario que el tamao de las dos claves RSA implicadas (PK.IFD.AUT y SK.ICC.AUT) sea el mismo.
24
Condiciones de estado
SW1 0x61 0x62 0x65 0x69 0x69 0x6A 0x6A 0x6A 0x6A SW2 0xXX 0x83 0x81 0x82 0x85 0x80 0x82 0x86 0x88 Significado SW2 indica el nmero de bytes disponibles en la tarjeta como datos de respuesta. El fichero seleccionado est invalidado Error de memoria Condiciones de seguridad no satisfechas Condiciones de uso no satisfechas Error en el campo de datos No se ha encontrado el EF criptogrfico Parmetros incorrectos P1-P2 Datos referenciados no encontrados
Ejemplo:
Terminal 00 88 00 00 10 xx .. xx yy .. yy xx .. xx desafo del Terminal yy .. yy n serie Terminal 61 LL 00 C0 00 00 LL xx xx xx .. xx xx 90 00 (Datos de la tarjeta para la autenticacin interna) P3 = longitud clave de la tarjeta Tarjeta
25
Descripcin Referencia una clave RSA privada almacenada en ICC.CRYPTO con el identificador KeyID Referencia una clave RSA (pblica o privada) almacenada en ICC.ID con el identificador KeyID Referencia claves pblica RSA en memoria. Su valor debe coincidir con el campo Certificate Holder Refererence (CHR) incluido en el certificado utilizado para cargar la clave.
A continuacin se detallan las plantillas definidas, y los parmetros permitidos por cada una:
Firma (DST)
Parmetros oReferencia a la clave privada de la tarjeta, para la autenticacin. Tiene que estar en ICC.ID, y con un identificador entre 0x10 y 0x1f Referencia a la clave pblica del terminal, para la autenticacin. Tiene que estar en memoria, y haber sido cargada mediante un certificado de terminal correctamente verificado. Identificador de algoritmo, indicando el tipo de autenticacin que se va a realizar Referencia a la clave privada con la que se quiere realizar una operacin de firma (con PSO:Sign). Tiene que estar en ICC.CRYPTO Referencia a una clave pblica que se quiere utilizar para verificar un certificado. Puede tratarse de una clave de CA raz, alojada en ICC.ID (con identificador entre 0x00 y 0x0f), o de una clave en memoria, cargada mediante un certificado de autoridad certificadora correctamente verificado Identificador de algoritmo, indicando el tipo de relleno que se debe utilizar en una operacin de firma posterior 26
Tipo de operacin. Plantilla a modificar Vaco o longitud del campo de datos Data Objects a incluir en la plantilla
El parmetro P1 indica qu tipo de operacin se va a realizar, y qu elementos se estn suministrando a la plantilla. Slo se soporta la modificacin del SE actual, por lo que el segundo nibble siempre deber ser 0001. La siguiente tabla muestra la codificacin de este valor.
b b7 8 - - 1 1 - B6 1 b5 1 b4 0 b3 0 b2 0 b1 1 Significado Asegurar el mensaje que aparece en campo de datos del comando Asegurar el mensaje que aparece en campo de datos de respuesta Clculo, descifrado, autenticacin interna y acuerdo de claves Verificacin, cifrado, autenticacin externa y acuerdo de claves SET
La siguiente tabla muestra los posibles valores de P2, que identifican la plantilla a utilizar.
Valor A4 A6 B6
Significado Plantilla de autenticacin Plantilla para intercambio de claves Plantilla para firmas
Mensaje de respuesta
Datos SW1-SW2 Significado Vaco Bytes de estado
Condiciones de estado
SW1 0x62 0x6A 0x6A 0x6A 0x6A SW2 0x83 0x82 0x86 0x87 0x88 Significado Fichero invalidado Fichero no encontrado Parmetros incorrectos P1-P2 Longitud de datos incorrecta Datos referenciados no encontrados
27
Ejemplo:
Ejemplo 1: Seleccin de la clave Root CA
Terminal 00 22 81 B6 04 83 02 02 0F 90 00 Tarjeta
28
Validacin de un certificado
Este sub-comando permite la verificacin de un certificado, utilizando la clave pblica de la autoridad certificadora raz almacenada en la tarjeta, o una clave pblica de una autoridad certificadora intermedia, cargada anteriormente mediante otro certificado. El formato de los certificados en el definido en el documento EN-14890-1 captulo 14. Se soportan los certificados de acuerdo a las plantillas con identificadores (CPI) 3 y 4 (nicos definidos hasta la fecha en el mencionado documento) Los certificados con CPI=3 son utilizados para la cargar la clave pblica de una autoridad certificadora intermedia. Su formato es el siguiente:
7F 21 81 CE 5F 37 81 80 C_CV certificate Longitud de la firma (ejemplo para claves de 1024 bits) 6A = Relleno segn ISO 9796-2 CPI = 03 CAR = Certification Authority Reference CHR = Card Holder Reference CHA = AID[1..6] || Role Identifier a0 00 00 01 67 45 || Role Identifier OID = 2B 24 03 04 02 02 01' PK_part1 = XX ... XX (MSB..LSB) Hash = XX ...XX BC Los campos descritos no estn en claro en el certificado, si no que son la entrada de la firma incluida en esta seccin. PK_part2 = XX ... XX (MSB..LSB) || 00 01 00 01 Incluye el resto de la clave pblica, que no se pudo poner en PK_part1 (resto del mdulo y exponente pblico en 4 bytes) Se incluye tambin en claro para poder CAR identificar la autoridad que firma el certificado
5F 38
3D
42
08
29
La codificacin de los campos es la siguiente: CPI es el identificador de la plantilla con que est construida el certificado (Certificate Profile Identifier). Este campo ocupa un solo byte. CAR es un campo de ocho bytes, que identifica la autoridad certificadora que emiti el certificado. (Certification Authority Reference) CHR es el identificador del propietario del certificado (Card Holder Reference), en este caso, corresponde a la autoridad certificadora intermedia cuya clave pblica contiene este certificado. Este campo ocupa siempre doce bytes, compuesto por cuatro bytes de relleno a cero, y el identificador de la autoridad certificadora. CHA indica los niveles de autorizacin que se conceden al propietario del certificado (Certificate Holder Authorization). Es un campo de siete bytes, en los que los seis primeros son la parte ms significativa del identificador de aplicacin definido en EN-14890 (A0 00 00 01 67 45), y el ltimo byte es el identificador de rol del certificado. OID es un campo de siete bytes con el identificador de objeto definido en EN-14890. Su valor debe ser 2B 24 03 04 02 02 01 PK_part1 es la primera parte de la clave pblica incluida en el certificado. La clave pblica RSA est formada por el mdulo, concatenado con el exponente pblico codificado en 4 bytes. En este campo se incluir el mximo nmero de bytes posible (en funcin del tamao de las claves) y el resto deber ir en claro en el campo PK_part2 Hash es el resultado de aplicar la funcin SHA1 a la concatenacin de los campos CPI, CAR, CHR, CHA, OID, y la clave pblica completa. PK_part2 es el campo con la parte de la clave pblica que no se pudo incluir en PK_part1 El bloque de datos 6A || CPI || CAR || CHR || CHA || OID || PK_part1 || Hash || BC constituye la parte a firmar del certificado, y deber tener el mismo tamao que la clave RSA con la que est firmado el certificado. Los certificados con CPI=4 son utilizados para la cargar la clave pblica de un terminal, que ser utilizada a continuacin en un proceso de autenticacin. Su formato es el siguiente:
7F 21 81 CD 5F 37 81 80 C_CV Certificate Longitud de la firma (ejemplo para claves de 1024 bits) 6A = Relleno segn ISO 9796-2 CPI = 04 CAR = Defined by Card Manufacturer CHR = Certificate Holder Reference CHA = AID[1..6] || Role Identifier OID = 2B 24 07 02 01 01 PK_part1 = xx..xx (MSB..LSB) Hash = xx..xx BC Los campos descritos no estn en claro en el certificado, si no que son la entrada de la firma incluida en esta seccin. PK_part2 = XX ... XX (MSB..LSB) || 00 01 00 01 Incluye el resto de la clave pblica, que no se pudo poner en PK_part1 (resto del mdulo y exponente pblico en 4 bytes) Se incluye tambin en claro para poder CAR identificar la autoridad que firma el certificado
5F 38
3C
42
08
La codificacin de los campos es la siguiente: CPI es el identificador de la plantilla con que est construida el certificado (Certificate Profile Identifier). Este campo ocupa un solo byte. CAR es un campo de ocho bytes, que identifica la autoridad certificadora que emiti el certificado. (Certification Authority Reference)
30
CHR es el identificador del propietario del certificado (Card Holder Reference), en este caso, corresponde al nmero de serie del terminal propietario del certificado. El campo ocupa siempre doce bytes. Si el nmero de serie es de menor longitud, se completar con ceros a la izquierda. Se considera que el nmero de serie es al menos de ocho bytes. CHA indica los niveles de autorizacin que se conceden al propietario del certificado (Certificate Holder Authorisation). Es un campo de siete bytes, en los que los seis primeros son la parte ms significativa del identificador de aplicacin definido en EN-14890 (A0 00 00 01 67 45), y el ltimo byte es el identificador de rol del certificado. OID es un campo de seis bytes con el identificador de objeto definido en EN-14890. Su valor debe ser 2B 24 07 02 01 01 PK_part1 es la primera parte de la clave pblica incluida en el certificado. La clave pblica RSA est formada por el mdulo, concatenado con el exponente pblico codificado en 4 bytes. En este campo se incluir el mximo nmero de bytes posible (en funcin del tamao de las claves) y el resto deber ir en claro en el campo PK_part2 Hash es el resultado de aplicar la funcin SHA1 a la concatenacin de los campos CPI, CAR, CHR, CHA, OID, y la clave pblica completa. PK_part2 es el campo con la parte de la clave pblica que no se pudo incluir en PK_part1 El bloque de datos 6A || CPI || CAR || CHR || CHA || OID || PK_part1 || Hash || BC constituye la parte a firmar del certificado, y deber tener el mismo tamao que la clave RSA con la que est firmado el certificado. Los identificadores de rol soportados son los siguientes:
Uso del certificado Puede utilizarse para la verificacin de firma en una cadena cruzada de certificados Puede utilizarse para la verificacin de firma en una cadena de certificados Puede utilizarse en el proceso de establecimiento de un canal seguro de usuario
31
L
-
V (Ejemplo con mdulo de 1024 bits) 00 = Byte de inicio 01 = Tipo de bloque FF..FF = Cadena de relleno, PS (mnimo 8 bytes) 00 = Separador DigestInfo = ASN.1- Secuencia de OID y resumen . { SHA1 : 30 21 30 09 06 05 2b 0e 03 02 1a 05 00 04 14 } xx..xx = Hash
En caso de que los datos a firmar se incluyan directamente en el comando, la firma se realizar con formato PKCS#1, como indica EN-14890-2 apartado 6.3. Los datos no debern exceder el 40% del tamao de la clave RSA utilizada.
Tag indicando el tipo de datos de la respuesta Tag indicando el tipo de datos enviado Longitud de los datos Datos de entrada Datos de salida
P1 00 90
P2 AE 80
90
A0
Operacin Verificacin de certificado. Los datos de entrada son el certificado, y no se esperan datos de respuesta Calculo de hash. En la entrada se entregan datos sin estructura, y la respuesta es el hash calculado por la tarjeta. Este hash quedar disponible para una firma realizada en el siguiente comando Calculo de hash. En la entrada se entregan los datos 32
9E
9A
con estructura, permitiendo realizar el hash parcialmente fuera de la tarjeta. La respuesta ser el hash calculado Calculo de una firma. Si el tamao de los datos de entrada es cero, se firmar el hash generado anteriormente, en caso contrario, se firmarn los datos enviados en el comando. La respuesta es la firma generada
Mensaje de respuesta
Significado Mensaje respuesta(o parte) de acuerdo a LE Bytes de estado
Datos SW1-SW2
Condiciones de estado
SW1 0x62 0x65 0x69 0x69 0x69 0x6A 0x6A 0x6A 0x6A 0x6A SW2 0x83 0x81 0x82 0x85 0x86 0x80 0x82 0x86 0x87 0x88 Significado Fichero invalidado Error de memoria Condiciones de seguridad no satisfechas Condiciones de uso no satisfechas (secuencia de comandos incorrecta) Tipo de fichero incorrecto Campo de datos incorrecto Fichero no encontrado Parmetros incorrectos P1-P2 Longitud de datos incorrecta Datos referenciados no encontrados
Ejemplos:
Ejemplo 1: Verificar Certificado Autoverificable CA intermedia
Terminal 00 2A 00 AE P3
Tarjeta
33
34
Comando SELECT.
Este comando permite la seleccin de fichero dedicado (DF) o de un fichero elemental (EF).
Selecciona DF o EF por Id (data field = id) Seleccin directa de DF por nombre. Longitud del campo de datos Datos de acuerdo a P1-P2 Vacio
Mensaje de respuesta
Significado Plantilla FCI acorde con ISO 78164/9. Bytes de estado
Datos SW1-SW2
La informacin de control del fichero (FCI) es la cadena de datos que se recibe en respuesta a un comando SELECT FILE.
Long.
Plantilla FCI acorde con ISO 7816-4/9. Longitud de los subsiguientes Objetos de Datos L Valor 0xXX Nombre del DF name. (Solo para DFs) 0xXX Informacin propietaria: Long. Significado 0x01 0x02 0x02 0x05
File descriptor byte: 0x01 Elementary File (EF) 0x34 Dedicated File (DF) 0x15 EF propietario para claves. Linear variable SIMPLE-TLV Identificador de Fichero Nmero de datos en el fichero, excluyendo la informacin de la estructura cabecera del fichero Atributos de seguridad, informacin propietaria
35
Long.
Plantilla FCI acorde con ISO 7816-4/9. Longitud de los subsiguientes Objetos de Datos L Valor 0xXX Nombre del DF name. (Solo para DFs) 0xXX Informacin propietaria: Long. Significado
Control Flag for Security files Security Efs (type 0x15)
------------0000 ------1---10-01---1 ----100 -010 -001 000-b 001-b 010-b 011-b 100-b 101-b 110-b 1---b 1---b 1---b 1---b 111-b 111-b 111-b 111-b CHV keys App Keys RFU RFU Empty RSA KEY file RFU Active RSA Key Key generated internally RSA Key in CRT format RSA Key without CRT RFU Inactive RSA Key Inactive RSA Key Type 1 Inactive RSA Key Type 2 Inactive RSA Key Type 3
0x01
Control bytes for RSA cryptographic files Cryptographic Efs (type 0x15)
RSA KEY in CRT format ---- ----b XXXX XXXXb bit length of the key in 64 base 0000 0000b ---- ----b empty key 1--- ----b ---- ----b q present -1-- ----b ---- ----b p present --1- ----b ---- ----b CRT present ---1 ----b ---- ----b d mod (p-1) present ---- 1---b ---- ----b d mod (q-1) present ---- --1-b ---- ----b public exponent present ---- ---1b ---- ----b modulus present 1111 1011b ---- ----b valid RSA with CRT key Inactive RSA KEY ---- ----b XXXX XXXXb bit length of the key in 64 base 0000 0000b ---- ----b empty key ---- -1--b ---- ----b A8h-A9h-B8h present ---- --1-b ---- ----b Aah-ABh-BAh present ---- ---1b ---- ----b Ach-BCh Hash present 0000 0111b ---- ----b valid inactive RSA key RSA KEY without CRT ---- ----b XXXX XXXXb bit length of the key in 64 base 0000 0000b ---- ----b empty key ---- -1--b ---- ----b private present ---- --1-b ---- ----b public exponent present ---- ---1b ---- ----b modulus present 0000 0111b ---- ----b valid RSA key
0x02
Condiciones de estado
SW1 0x61 0x62 0x65 0x6A 0x6A 0x6A SW2 0xXX 0x83 0x81 0x82 0x86 0x87 Significado Ejecucin correcta. Se indica el nmero de bytes disponibles en respuesta al comando como una estructura FCI. Fichero seleccionado invalidado Error de memoria (FCI errneo) Fichero no encontrado Parmetros incorrectos P1-P2 Lc inconsistente con P1-P2
36
Ejemplos:
Ejemplo 1: Seleccin del fichero elemental Id: 60 1F
Terminal 00 A4 00 00 02 60 1F 61 0E 00 C0 00 00 0E 6F 0C 85 0A FF FF 90 00 01 60 1F 03 25 00 FF FF Tarjeta
37
Offset del primer byte a leer desde el principio del fichero. Vaco Vaco Nmero de bytes a leer
Mensaje de respuesta
Significado Datos leidos (LE bytes) Bytes de estado
DatOS SW1-SW2
Condiciones de estado
SW1 0x62 0x65 0x69 0x69 0x69 0x6A 0x6B 0x6C SW2 0x83 0x81 0x82 0x85 0x86 0x82 0x00 0xXX Meaning El EF o DF seleccionados estn invalidados Error de memoria Condiciones de seguridad no satisfechas Condiciones de uso no satisfechas Comando no permitido (no existe un EF seleccionado) Fichero no encontrado Parmetros incorrectos (el offset est fuera del EF) Longitud incorrecta (XX indica la longitud exacta)
38
Comando VERIFY.
El comando Verify inicia la comparacin en la tarjeta de los datos de verificacin de usuario enviados desde el dispositivo externo con los almacenados en la tarjeta. Esta operacin se suele denominar verificacin de PIN o CHV.
Datos de referencia (cdigo CHV) Vaco o longitud del campo de datos Vaco o datos de verificacin
Mensaje de respuesta
Significado Datos SW1-SW2 Vaco Bytes de estado
39
Condiciones de estado
SW1 0x63 0x65 0x69 0x69 0x69 0x6A 0x6A 0x6A 0x6A SW2 0xCx 0x81 0x82 0x83 0x863 0x82 0x84 0x86 0x88 Significado Verificacin fallida: X indica el nmero de intentos disponibles. Error de memoria Condiciones de seguridad no satisfechas Mtodo de autenticacin bloqueado Identificador de CHV no permitido No se encuentra el fichero CHV No hay memoria suficiente Parmetros incorrectos P1-P2 Datos refrenciados no encontrados
40
ANEXO III Informacin necesaria para el establecimiento del canal seguro de usuario. Clave Pblica ROOT CA para autenticacin del componente. Sirve para verificar la cadena de certificado de componente (certificados de CA intermedia de componente fichero 3F00/6020 - y certificado de componente fichero 3F00/601F-)
C_CV_CA = 7F2181CE5F3781803CBADC3684BEF32041AD155089258DFD 20C69115D72F9C38AA99AD6C1AEDFAB2BFAC9092FC70CCC0 0CAF482A4BE31AFDBD3CBC8C8382CF06BC0719BAABB56B6E C80760A4A93FA2D7C347F34427F9FF5C8DE6D65DAC95F2F1 9DAC0053DF11A507FB625EEB8DA4C0299E4A2112AB704758 8B8D6DA7592214F2DBA140C7D122579B5F383D2253C8B9CB 5BC3543A55660BDA80946AFB0525E8E5586B4E63E8924149 7836D8D3AB088CD44C214D6AC856E2A007F44F8374333737 1ADD8E030001000142086573524449600006
Identificador de esta CA intermedia (CHR):
CHR = 000000006573534449600006
Certificado de Terminal verificable por la tarjeta:
C_CV_IFD = 7F2181CD5F3781802563FCF6714624C0C4F5D75F67305EBF 8F3A6BB772996AFB6497BB466A238E731D08D378E9F4ECC0 4070E3717C138EA8D6D35A14ED1862B7F84E351B2DCE4CFB 30F8C76B8AD1731E9AA84AB0B3BD30C3F00DA274E2005A51 EB4213FD5523ABC97584A9FBD2576CB5DD9DD572AE49A597 E14ECFFA91F76E04F6081292AE07CEF75F383C258B73CFB9 4A739CB5E97392E599E8FB45A60072CAA6FCD5F215C3C7E0 25EA3C9EB2CBE47DE9FEE8002BF2F6D4A24350AB3F5F15DB 05A1270001000142086573534449600006 41
CHR: 000000002000000000000001
Clave privada asociada para realizar la autenticacin del Terminal:
Mdulo: DB2CB41E112BACFA2BD7C3D3D7967E84FB9434FC261F9D09 0A8983947DAF8488D3DF8FBDCC1F92493585E134A1B42DE5 19F463244D7ED384E26D516CC7A4FF7895B1992140043AAC ADFC12E856B202346AF8226B1A882137DC3C5A57F0D2815C 1FCD4BB46FA9157FDFFD79EC3A10A824CCC1EB3CE0B6B439 6AE236590016BA69 Exponente_pblico: 010001 Exponente_privado: 18B44A3D155C61EBF4E3261C8BB157E36F63FE30E9AF2889 2B59E2ADEB18CC8C8BAD284B9165819CA4DEC94AA06B69BC E81706D1C1B668EB128695E5F7FEDE18A908A3011A646A48 1D3EA71D8A387D474609BD57A882B182E047DE80E04B4221 416BD39DFA1FAC0300641962ADB109E28CAF50061B68C9CA BD9B00313C0F46ED
42
ANEXO IV Ejemplo de firma electrnica para autenticacin con establecimiento previo de canal seguro de usuario y presentacin de PIN.
El presente anexo muestra un ejemplo de implementacin con los comandos necesarios y el orden de estos comandos para el establecimiento del canal seguro de usuario, presentacin de PIN, y realizacin de una firma con la clave de autenticacin del usuario. Tenga en cuenta que se trata de un ejemplo con finalidad didctica y que los valores utilizados y obtenidos son los aplicables a la tarjeta con la que se llev a cabo el experimento.
2.a) Reiniciar la tarjeta. En este primer paso, reiniciamos la tarjeta para que pierda cualquier estado previo. Se asume que la tarjeta acaba de ser alimentada y que se ha devuelto un ATR vlido. 2.b) Peticin del nmero de serie de la tarjeta: Para ello utilizamos el comando Get Chip Info:
90b8000007 065a85ca586f329000
El nmero de serie de la tarjeta objeto de la prueba es: 065a85ca586f32 2.c) Seleccin y lectura de los certificados de componente, y de autoridad intermedia de componente: Empezamos seleccionado el fichero del certificado de la autoridad de certificacin intermedia, que reside en el fichero 3F00/6020. Utilizamos los comandos Select File, y Get Response:
43
00b00000ff 3082042830820391a00302010202101aed357a7ba8c87b43 fadf3fa9775680300d06092a864886f70d01010505003081 87310b300906035504061302455331283026060355040a0c 1f444952454343494f4e2047454e4552414c204445204c41 20504f4c49434941310d300b060355040b0c04444e494531 1c301a060355040b0c134143205241495a20434f4d504f4e 454e5445533121301f06035504030c183030303030303030 36353733353234343439363030303036301e170d30363032 32313039333730335a170d3331303232303137313331355a 3072310b300906035504061302455331283026060355040a 0c1f444952454343494f4e2047454e9000 00b000ffff 4552414c204445204c4120504f4c49434941310d300b0603 55040b0c04444e4945310d300b060355040b0c04464e4d54 311b301906035504030c12414320434f4d504f4e454e5445 532030303130819f300d06092a864886f70d010101050003 818d0030818902818100de3cc30b668cb2353485fd42a119 2125f4a82504197ebd3cb6abffb8e68f2e84293bb725fd61 8fd10fda1a409737d74bd1b97984685156ceff55f5e3525b c58bfd3799c2a7e300471d9303105ee8ec4c67d476dc48d1 834670c27ebf4668779d7b855b44afa733da451bb954994a 718910fde6313aab6266313fdbd1564fa57d0203010001a3 8201a7308201a330120603551d13019000 00b001feff 01ff040830060101ff020100301d0603551d0e041604143f 320e9794b8f9566ea3d721a61754fa923a12b1301f060355 1d2304183016801445d76465f22504d8045e6627419d7650 05a2d158300e0603551d0f0101ff04040302010630370603 551d200430302e302c0604551d20003024302206082b0601 05050702011616687474703a2f2f7777772e646e69652e65 732f647063308201020603551d1f0481fa3081f73081f4a0 81f1a081ee8623687474703a2f2f63726c732e646e69652e 65732f63726c732f41524c434f4d2e63726c8681c66c6461 703a2f2f6c6461702e646e69652e65732f434e3d43524c2c 434e3d3030303030303030363537339000 00b002fdff 3532343434393630303030362c4f553d4143253230524149 5a253230434f4d504f4e454e5445532c4f553d444e49452c 4f3d444952454343494f4e25323047454e4552414c253230 44452532304c41253230504f4c494349412c433d45533f61 7574686f726974795265766f636174696f6e4c6973743f62 6173653f6f626a656374636c6173733d63524c4469737472 69627574696f6e506f696e74300d06092a864886f70d0101 050500038181008f837ad2f2a8c4ba6ab45e0d4b392d6ec0 e66b9da3f97efb08da7dc3bbd3a6549be10471ff7f28209a 17f0717af6f6d51e9f30dfd58fe804f02bf2b25820def595 c2ed85e3b080380438d824702180469000 00b003fc30 44
2667f29d75b30cb9f2bb4a03dda58de2c150ed316ab9b29c a63210017dd70ffc21316f88f753904d743b70214523760a 9000 Realizamos la misma operacin de seleccin y lectura con el certificado de componente, ubicado en el fichero 3F00/601F: 00a4000002601f 610e 00c000000e 6f0c850a01601f032500ffffffff9000 00b00000ff 308203213082028aa003020102021031a75901575f510643 ff47d829436117300d06092a864886f70d01010505003072 310b300906035504061302455331283026060355040a0c1f 444952454343494f4e2047454e4552414c204445204c4120 504f4c49434941310d300b060355040b0c04444e4945310d 300b060355040b0c04464e4d54311b301906035504030c12 414320434f4d504f4e454e54455320303031301e170d3036 303232343137353232345a170d3137303232343137353232 345a3026310b300906035504061302455331173015060355 0403130e303635413835434135383646333230819f300d06 092a864886f70d010101050003818d9000 00b000ffff 0030818902818100d1d60b95e4522a480b12b8bd565a6141 3c79279eab0e60d7d490199e6786d1c965a9cefe06a38edb 9a5b89c47248fbd44932c8b908cf5111d9fb9635d1fcc94e 3f0ef3e654f7c062686ba4c63ae7319899bd32b0e1b74ea2 889e6b98def58ed17d4d0e55d9f12b6c61a5d2a535cbc253 65513479458337b3f84556acb807511d0203010001a38201 023081ff300c0603551d130101ff04023000300e0603551d 0f0101ff040403020388301d0603551d0e04160414b20804 697314e07b66f48b0140009a26ed41654a301f0603551d23 0418301680143f320e9794b8f9566ea3d721a61754fa923a 12b1303f06082b06010505070101049000 00b001feff 333031302f06082b060105050730028623687474703a2f2f 7777772e646e69652e65732f63657274732f41435261697a 2e637274305e0603551d1f045730553053a051a04f864d68 7474703a2f2f63726c732e666e6d742e646e69652e65732f 63726c732f43524c38343931343432323932433433423733 413445453131443844344635413846374132413944323334 2e63726c300d06092a864886f70d01010505000381810057 5c9b73f6dea428b98f6008cc6f66e03ed4a408f6247f2b36 ee0450072297f29b749beb49cfb965d575a533eb342f4d3a 4b25805dc0f98e0bcd02c56c13861eee635bb9760bde4840 59bd7caa77ed8274d4a405bccd4d8c9000 00b002fd28 45
55a441f4e0492fc7ff7fd6b0b76dfcb98972720fe3f8c1d8 58c3a96de551d4a0bb02131279d20a199000
Una vez ledos ambos certificados, se deber verificar la cadena de certificacin de componente, utilizando la clave pblica de la autoridad certificadora raz. Del certificado de componente, extraemos la clave pblica de componente, que luego tendremos que utilizar para completar las autenticaciones interna y externa. Clave pblica de ICC:
Mdulo = d1d60b95e4522a480b12b8bd565a61413c79279eab0e60d7 d490199e6786d1c965a9cefe06a38edb9a5b89c47248fbd4 4932c8b908cf5111d9fb9635d1fcc94e3f0ef3e654f7c062 686ba4c63ae7319899bd32b0e1b74ea2889e6b98def58ed1 7d4d0e55d9f12b6c61a5d2a535cbc25365513479458337b3 f84556acb807511d Exponente pblico = 010001
2.d) Seleccin y carga de la cadena de certificados verificables en la tarjeta. Seleccionamos en la tarjeta la clave pblica de la autoridad certificadora raz de la jerarqua de certificados verificables por la tarjeta. Para ello utilizamos el comando Manage Security Environment, utilizando la referencia del fichero donde reside la clave (020f):
002281b6048302020f 9000
Enviamos el certificado de la autoridad intermedia verificable por la tarjeta (C_CV_CA). Para ello utilizamos el comando Perform Security Operation:
002a00aed27f2181ce5f3781803cbadc3684bef32041ad15 5089258dfd20c69115d72f9c38aa99ad6c1aedfab2bfac90 92fc70ccc00caf482a4be31afdbd3cbc8c8382cf06bc0719 baabb56b6ec80760a4a93fa2d7c347f34427f9ff5c8de6d6 5dac95f2f19dac0053df11a507fb625eeb8da4c0299e4a21 12ab7047588b8d6da7592214f2dba140c7d122579b5f383d 2253c8b9cb5bc3543a55660bda80946afb0525e8e5586b4e 63e89241497836d8d3ab088cd44c214d6ac856e2a007f44f 83743337371add8e030001000142086573524449600006 9000
Al responder 9000, la tarjeta indica que el certificado ha sido correctamente verificado y que su clave pblica ha quedado almacenada en memoria.
46
A continuacin, seleccionamos la clave pblica recin cargada con el comando Manage Security Environment, y utilizando la referencia del certificado anterior (CHR):
002281b60a83086573534449600006 9000
Enviamos el certificado del Terminal, verificable por la tarjeta (C_CV_IFD), utilizando el comando Perform Security Operation:
002a00aed17f2181cd5f378180825b69c6451e5f51707438 5f2f17d64dfe2e68567567094b57f3c578e830e425572de8 28faf4de1b01c394e345c2fb0629a393492f94f570b00b1d 677729f755d107022bb0a116e1d7d7659db5c4ac0ddeab07 ff045f37b5daf1732b54eab238a2ce17c9794187759cea9f 92a17805a27c1015ec56cc7e471a488e6f1b91f7aa5f383c adfc12e856b202346af8226b1a882137dc3c5a57f0d2815c 1fcd4bb46fa9157fdffd79ec3a10a824ccc1eb3ce0b6b439 6ae236590016ba690001000142086573534449600006 9000
Seleccionamos la clave pblica recin cargada para autenticacin. En el mismo comando Manage Security Environment aprovechamos para seleccionar en la tarjeta la clave privada de componente (referencia 021F) que tambin se usar en los comandos de autenticacin.
0022c1a412830c0000000020000000000000018402021f 9000
2.e) Autenticacin interna (de la tarjeta). Enviamos el comando Internal Authentication, mediante el que se le pide a la tarjeta que demuestre que posee la clave privada asociada a su certificado de componente. Para este comando, el Terminal deber generar un valor aleatorio de 8 bytes. (en el ejemplo RND.IFD = 231dac737ba0fe6e):
47
E[PK.IFD.AUT] (SIGMIN) Donde SIGMIN = min (SIG, N.ICC - SIG) y SIG= DS[SK.ICC.AUT] ( 6A = relleno segn ISO 9796-2 (DS scheme 1) PRND1 = XX ... XX bytes de relleno aleatorios generados en la tarjeta. La longitud debe ser la necesaria para que la longitud desde 6A hasta BC coincida con la longitud de la clave RSA KICC = Semilla de 32 bytes, generada por la tarjeta, para la derivacin de claves del canal seguro. h[PRND1 || KICC || RND.IFD || SN.IFD ] = hash SHA1 que incluye
) Por lo tanto, para verificarlo hay que empezar por descifrarlo con la clave privada del Terminal:
Mensaje entregados por la tarjeta: 437393b30d1f0161455bb132e999de7bb8f7d82f91d507d6 d116074d33e60457f189b976235cab5762b64f896be8a924 1a245dcac976fa2d0cac8719157e2927c61e0bcb48b51170 ea0898381ef919398e46417899abe82708addd1b755c056f 5f7b96ba69bd56fc576c809b27b8f8364fc4d559d1da8681 fa04145ddd636eb7 Mensaje descifrado con clave privada de Terminal: 0b9b44777590ea6c4d1f1f724c235964c5ffed0109aab5d4 80b05b7a31c224a4d1c7effe147d454eaaf7d47c35f0dd01 824023282bf8bb3cf1adecd576509672348a9eb196c8b8f1 f49931ea73e634f681a7474480243992f177a92f386747a0 6f57ae0566b5557efc0217cc8be84f50dae24b0a35cd3df1 f2429b96545464d5
Ahora lo que tenemos es el resultado de la funcin SIGMIN, que puede ser directamente SIG, o bien N.ICC-SIG. Probamos primero si es el primer caso, y por tanto lo desciframos directamente con la clave pblica de componente de la tarjeta:
Descifrado con clave pblica de tarjeta: 670f3942a1c15faed26cf22c0c87a8930dc3c1f73f772c82 096fe5198ef3b03b72257a8bf8d5c26425faf638758072f3 357ef10ee95f1284f8f277444fb0416ef092d8007abd245d 46b12f3dcfbc303bb7f3e0134d53e542dcccc6f4269784b4 affdb92cadd0494dcc58a142e901a8c940ed480554077ba1 b2263e8b415e8461
Sobre este mensaje descifrado hay que comprobar si se ajusta al formato esperado, y si coincide el hash. En este ejemplo no coincide el relleno (debera empezar por 0x6A, y acabar con 0xBC), as que pasamos a probar si el resultado de la funcin SIGMIN fue N.ICC-SIG. Calcularemos N.ICC-SIGMIN(..), y desciframos de nuevo con la clave pblica de la tarjeta:
48
N.ICC-SIGMIN(..) c63ac71e6ec13fdbbdf3994b0a3707dc76793a9da163ab03 53dfbe2435c4ad2493e1defff226498cef63b5483c581ed2 c6f2a590dcd695d4e84da9605bac32dc0a845534be2f0770 73d272dbc700fca21815eb6c6193150f9726c269a68e4731 0df56050733bd5ed65a3bad8a9e373028a6ee96f0fb5f9c2 0602bb1663b2ec48 Descifrado con clave pblica de tarjeta: 6ac6d2534290ca9938a5c69149d2b8ae2eb565a76b973455 cb203484d893218df38454720dcdcc777460938bfcc888e1 13b3d7aa1f703e8ce1091ef1824c87df4e7c1be5da3a9c05 21ba75886b2b015ce1c9529d9463695fabd1a4a4b85e0a1c cd4f55292c20e21e954d31624cca198a2463ec73f17bbc12 461f182176a8ccbc
En este caso s que obtenemos el relleno correcto, as que pasamos a descomponerlo de acuerdo a la estructura del mensaje, y comprobamos el hash:
= hash SHA1 que incluye los datos aportados por la tarjeta y por el terminal
BC = relleno segn ISO 9796-2 (option 1)
Datos sobre los que calcular el hash: c6d2534290ca9938a5c69149d2b8ae2eb565a76b973455cb 203484d893218df38454720dcdcc777460938bfcc888e113 b3d7aa1f703e8ce1091ef1824c87df4e7c1be5da3a9c0521 ba75 886b2b015ce1c9529d9463695fabd1a4a4b85e0a1ccd4f55 292c20e21e954d31 231dac737ba0fe6e 2000000000000001 Hash calculado: 624cca198a2463ec73f17bbc12461f182176a8cc
Al coincidir el hash calculado con el recuperado en el mensaje descifrado la autenticacin interna se considera correcta. El valor de Kicc debemos guardarlo, ya que se utilizar mas adelante para el clculo de las claves de canal.
49
2.f) Autenticacin externa (del terminal). El siguiente objetivo es realizar la autenticacin externa, para lo cual hay que comenzar solicitando a la tarjeta un desafo de 8 bytes (RND.ICC):
0084000008 eaefa8fbd31ac8ec9000
Ahora hay que construir el campo de datos para el comando External authentication de acuerdo al siguiente formato:
E[PK.ICC.AUT](SIGMIN) Donde SIGMIN = min (SIG, N.IFD - SIG) y SIG= DS[SK.IFD.AUT] ( 6A = relleno segn ISO 9796-2 (DS scheme 1) PRND2 =XX ... XX bytes de relleno aleatorios generados por el terminal. La longitud debe ser la necesaria para que la longitud desde 6A hasta BC coincida con la longitud de la clave RSA KIFD = Semilla de 32 bytes, generada por el terminal, para la derivacin de claves del canal seguro. h[PRND2 || KIFD || RND.ICC || SN.ICC ] = hash SHA1 que incluye
Datos sobre los que calcular el hash: 2a5c7300d96df9190ec2ae1cef89bde15678a78b7f7d4df3 d7d9bcfa313a0986efcc39695bd29812d2ce5931e1c2fc2d 068a5caf3de5bafef621cd8ba7082659a307d9a45318d479 8084 cd97dbf2235760d8b3e9c4d7e9a691fb12cd207c42660df9 50
6A = relleno segn ISO 9796-2 (DS scheme 1) PRND2 =XX ... XX bytes de relleno aleatorios generados por el terminal. La longitud debe ser la necesaria para que la longitud desde 6A hasta BC coincida con la longitud de la clave RSA KIFD = Semilla de 32 bytes, generada por el terminal, para la derivacin de claves del canal seguro. h[PRND2 || KIFD || RND.ICC || SN.ICC ] = hash SHA1 que incluye los datos aportados por la tarjeta y por el Terminal BC = relleno segn ISO 9796-2 (option 1)
bc
Este mensaje lo cifraremos en primer lugar con la clave privada del Terminal:
52
Datos para el hash: 45fcf0f37fb6a98a2e7da7beb60d405f b6757e765eab42acefbf775865b09dcd 00000001 hash: 598f26e36e11a8ec14b81e19bda223ca ebc69784 Kenc: 598f26e36e11a8ec14b81e19bda223ca
De la misma forma, la clave para el clculo del mac, Kmac se obtiene como los primeros 16 bytes del hash de Kifdicc concatenado con el valor 00000002:
Datos para el hash: 45fcf0f37fb6a98a2e7da7beb60d405f b6757e765eab42acefbf775865b09dcd 00000002 hash: 5de2939a1ea03a930b88206d8f73e8a7 aefdaa4b Kmac: 5de2939a1ea03a930b88206d8f73e8a7
Por ltimo el contador de secuencia SSC se obtiene concatenando los 4 ltimos bytes del desafo de la tarjeta (RND.ICC), con los cuatro ltimos del desafo del Terminal (RND.IFD):
3) Construccin de un mensaje cifrado. Como ejemplo de construccin de un mensaje cifrado para su envo a la tarjeta una vez establecido el canal seguro, analizaremos un comando de seleccin por nombre del fichero maestro (Master.File). El estado inicial del canal para este ejemplo es el siguiente:
53
Mensaje en claro: 00a404000b4d61737465722e46696c65 CLA: 00 INS: a4 P1 P2: 0400 P3: 0b Datos: 4d61737465722e46696c65
Como tenemos campo de datos, en primer lugar lo completamos con relleno (7816) hasta obtener una longitud mltiplo de 8 bytes. En este caso nos quedarn dos bloques de 8 bytes:
CLA con los bits de mensaje cifrado: 0c Cabecera con relleno 7816: 0ca4040080000000 Aadiendo el TLV de datos: 0ca4040080000000 8711013e9ac315a8 54
e855dd3722f29107 8ac2bd Completando de nuevo con relleno 7816: 0ca4040080000000 8711013e9ac315a8 e855dd3722f29107 8ac2bd8000000000
Para calcular el MAC sobre estos datos deberemos realizar un cifrado DES con CBC de estos datos, y en el ltimo bloque se utilizar triple DES. La clave para el cifrado DES son los ocho primeros bytes de Kmac, y para el triple DES ser Kmac completa (con key3=key1). El valor inicial del IV para el encadenamiento CDB, ser en contador de secuencia SSC incrementado antes de ser utilizado. La siguiente figura ilustra este proceso:
Los primeros cuatro bytes del ltimo bloque cifrado ser el MAC que incluiremos en el mensaje a la tarjeta. Con los datos de nuestro ejemplo:
SSC incrementado: d31ac8ec7ba0fe75 Cifrado DES: DES(d31ac8ec7ba0fe75) = 8818b3bff0cb40f5 XOR con bloque de datos: 8818b3bff0cb40f5 XOR 0ca4040080000000 = 84bcb7bf70cb40f5 Cifrado DES: DES(84bcb7bf70cb40f5) = dc6a4a7c11d0b384 55
XOR con bloque de datos: dc6a4a7c11d0b384 XOR 8711013e9ac315a8= 5b7b4b428b13a62c Cifrado DES: DES(5b7b4b428b13a62c) = 5a04399a0116a291 XOR con bloque de datos: 5a04399a0116a291 XOR e855dd3722f29107 = b251e4ad23e43396 Cifrado DES: DES(b251e4ad23e43396) = a398ffc834a23278 XOR con bloque de datos: a398ffc834a23278 XOR 8ac2bd8000000000 = 295a424834a23278 Cifrado triple DES: DES(295a424834a23278) = b6f56963ca2b8632 MAC: b6f56963
Construimos el TLV del MAC (tag = 0x8e), y construimos el mensaje completo, que incluir la cabecera (con el CLA indicando mensaje cifrado), el TLV de datos, y el TLV con el MAC:
TLV de datos: 872101bb10c8915f0ddb630cf38ed799a202647ca47449d2 79139fc226d25c20765645 TLV con respuesta del comando: 99029000 TLV con el MAC: 8e049aa77707
Para calcular el MAC utilizaremos como entrada todos los TLV devueltos por la tarjeta, excepto el propio TLV del MAC. El procedimiento es el descrito anteriormente:
TLV de datos: 872101bb10c8915f0ddb630cf38ed799a202647ca47449d2 79139fc226d25c20765645 Datos encriptados: bb10c8915f0ddb63 0cf38ed799a20264 7ca47449d279139f c226d25c20765645 Desencriptando con Kenc: 6f19840b4d617374 65722e46696c6585 0a383f00000bffff ffffff8000000000 Eliminando relleno 7816: 6f19840b4d617374 65722e46696c6585 0a383f00000bffff ffffff
Por tanto, la respuesta equivalente de la tarjeta, puesta en claro sera:
3) Proceso de firma. El primer paso para realizar una operacin de firma con una tarjeta DNIe ser establecer un canal seguro de usuario, tal como se ha descrito anteriormente. En este ejemplo asumimos que el canal acaba de ser establecido, y las claves del canal son:
57
Primera Clave: CKA_LABEL = KprivAutenticacion CKA_ID = A065A85CA586F3220060302120000 Path = 3F110101 Segunda Clave: CKA_LABEL = KprivFirmaDigital CKA_ID = F065A85CA586F3220060302000000 Path = 3F110102
Para simplificar este ejemplo no se incluye la secuencia de comandos para seleccionar, leer y analizar el PrKDF. Para ello nicamente es necesario utilizar los comandos de Select File y de Read Binary. Su contenido se ajusta a la estructura ASN.1 descrita en el PKCS15 para este fichero. La clave que queremos utilizar es la de autenticacin, que por la etiqueta vemos es la primera. El identificador de la clave en la tarjeta coincide con el ltimo byte del path del fichero donde se encuentra, que en nuestro caso es el 01. Con todo esto, utilizaremos el comando Manage Security Environment para seleccionar la clave 1 en la plantilla de firma:
Datos a firmar: 58
[002a9e9a233021300906052b0e03021a05000414839b543f b09d20c803b46e6f8f0747244951822f] 0c2a9e9a31872901e2f39b27db5bc373dde1ea4de7c84371 1529a8f8ded8092fbc88ba9c2b6b7c18b9ffbf4f01def59a 8e04ae86da97 6100 00c0000000 8782010901e4e9ca20eb996f14f219d086b13187d640a7f7 d9a93b74368870e7300ec5db202e683e8507ae871ff9fe6c 10cd6b66e942affac1996a2048e0564d8edd8b0057eaa057 6ec83e0b62eb07bea6f74a43a8d4a518f55daeba0bc6a87f 0e30fb1a75d4472108ecb043dcd2f22f85db5640c86b500b f5a819ac7363d879f98b4295359d2f7c04f134fd28af07b7 e5b327f3214a816fcda489b17e0a0f9b9c3af5b7ceaa4311 c7a66eece210de9b471c78aef858cfeaeb11da40ba932d49 900b73f6a14451c0cae04b085b62aa19037b62eaf7b97bf7 e6df54cb8a4e3db5bc56818467ac756b53ba04b5db0f55c1 db23f2289f9e2c359671ba174a9ecde26117 00c0000017 784dd3609f32f040dae1c1447e990290008e04999b1e4e9000 [632369fa040ccb9f298fdcc2a3e344d815be131e2a609792 9cf9d1fe35fd472580f56c67e040a2437d37f1320a7d8025 27e6eb2734f848315625f6bd14935ed72d1c1e42f5f41bc6 53d83fc180b98fff5b0f3ba5ef159d2de0737e9d4a86469a 156ca7711ad7d9c2d10c797696062cac0b656c0b04b988c7 e447fdf43add6e3a379f1f6e4e115916a49f1cf18ce4421e 41ac044c5dca70a90e58b155212b7caa22bfd1e42ba60a02 92d531943f2adf6bd0f238ecf931bbdfd98d085edc0050dc c799480415f0282e1f9e57b013ea3732330dffa6daba8957 a55d34d004fd3259e6bdd9e568face8118d2e1eff13adeb2 3e1c58f5fafefe38e1374c631281a6689000]
Por lo tanto, la firma calculada es:
Firma del hash de los datos: 632369fa040ccb9f298fdcc2a3e344d815be131e2a609792 9cf9d1fe35fd472580f56c67e040a2437d37f1320a7d8025 27e6eb2734f848315625f6bd14935ed72d1c1e42f5f41bc6 53d83fc180b98fff5b0f3ba5ef159d2de0737e9d4a86469a 156ca7711ad7d9c2d10c797696062cac0b656c0b04b988c7 e447fdf43add6e3a379f1f6e4e115916a49f1cf18ce4421e 59
Primer certificado: CKA_LABEL = CertAutenticacion CKA_ID = A065A85CA586F3220060302120000 Path = 60817002 Segundo certificado: CKA_LABEL = CertFirmaDigital CKA_ID = F065A85CA586F3220060302000000 Path = 60817001 Tercer certificado: CKA_LABEL = CertCAIntermediaDGP CKA_ID = S065A85CA586F3220060302000000 Path = 60617003
La relacin entre un certificado y su clave privada es que ambos tienen el mismo CKA_ID. En nuestro caso, el certificado correspondiente a la clave que hemos utilizado es el primero (CKA_LABEL= CertAutenticacion), que est en la ruta 6081/7002. Seleccionamos el fichero del certificado (empezando por el fichero maestro), y lo leemos:
[00a404000b4d61737465722e46696c65] 0ca40400198711013e9ac315a8e855dd3722f291078ac2bd 8e04b6f56963 612d 00c000002d 872101bb10c8915f0ddb630cf38ed799a202647ca47449d2 79139fc226d25c20765645990290008e049aa777079000 [6f19840b4d61737465722e46696c65850a383f00000bffff ffffff9000] [00a40000026081] 0ca4000011870901251c58d6b01d4e098e04fb732ce1 60
612d 00c000002d 872101fad72ff5311c10b8a755837dd24460dcf522cfea3a 198b9ca5c5c2d09ef7dc19990290008e0457cd226d9000 [6f178409444e49652e50726976850a3860810009e0ffffff ff9000] [00a40000027002] 0ca40000118709012ca1509017522a6c8e04470c1fde 611d 00c000001d 8711012b9724c0ebbec01c697f4693b659d8aa990290008e 0460c777959000 [6f0c850a24700204f21120ffffff9000] [00b00000ef] 0cb00000099701ef8e0482fc8ba1 61fe 00c00000fe 8781f101711c55e3704a007ff352b1bcafcac96b43e11e87 697f6b7bae797005d20adbafbba31fc2f8e9ceaeb90b7963 1a230e69e57c06fb7f58e3f2ef0e11211195d87572a2ee38 ec91e8722bd660db01c718d6f0d8509de1e4b81cc169e18a 128c638c705f4b5e5ebe0f02d9c5edf06908f472feda8953 f04db368cd270baf5098fd8d38447df3d44952100510fc09 a85b9055ce475867beb21f252e28e68bb0188abf70103d37 2c9ffba2270a6e13c393256ab44504f9021037d45a621e82 8307a14efdcd5796f39190632861ff195ffc9d2167a1879d 0abc269354a76489cd574d2ea76e40ee7c3d04e0aeeb7dfd f917cbb3990290008e042d30f6009000 [e8050000b3040000789c3368627d62d0c472660133132313 9300af5929b7e022f54617b62713652f1cbe6bc0cbc6a9d5 e6d1f69d9791919595c120c690db80938d3994854d98c935 d850c3400dc4e1e29177f10c727576f6f4f7537077f5730d 72f451707155f0715408f0f7f174f67434e435e006a9e4e6 6171f1f3743514311002719979b81d9d1540220a06068606 72e2bc066606c6064686464666a6e65140ae8581259c6b50 866abb90810088c32acc69000646c621307b587858bc421d fd0c050df8415c2d1e0ed7e000c7c313fd7d0c0d0df42156 6bc08414600c1d059026050dc7d01057bf104f674767cf90 00] [00b000efef] 0cb000ef099701ef8e04b08c0cd5 61fe 00c00000fe 8781f1017490b8866e13cdcd7929262740e34d3e97d2c0e7 61
fa9c9259e12392e14ebfbe81549405a5038343e85b774eb0 2b7df7e57ece210bff119f5f9ecf3de16fbfe9e5516273b2 81ef0e21f40b9aa6e5ebcac0450a18784c3b3989c6c3b9b4 e5aa20d95cb9e1333842696f154316055c408553cb47f7d5 ffc4315d44fa4c851c16c55f5f06a897ecc0e6fbb67398dc 9f414b771ebe0039c506e49e529ec757e2550ab85c38320a b1aa977a70e803d9f35da6bfb1e1e7ef5be4748d33234966 c00840a733e05e67107a1234a9f41219ee92f0228504e8b7 1baf9affddc36093ead8705008b3fc62cba13cf7c9b02b76 41b955cb990290008e04398d9f209000 [c393fd340d9a1895900382919581b989919f0128cec5d4c4 c8c870e84ab9f987c4f4e3efda98f4d466fd75bd1a7d2469 a7e81de1996bf8e79a374f7ca9707f6148c633d7aacf5e37 e4265ca9c91311769733b1bb3a7d9bfbffd8779716cecbf5 5abaafff5ef8b2c88c98b0d07b7d6a063c9f9a67e90b862c f2cede90e9b8f4a8bbe3b9eb16ce13b98df8b6adb294fffd b14177c934f3042df179afe35ab5fe67346cac6b0e773f31 4b80e9b0cbf7290b647beb736b3a0c9cdc17c878f9796854 88bf9c715a607dc4ddc7524527aaa48e7f9b312dbde5bfc8 01ff6f4aa9ccde0bfee42707e87ae74418fc993aebe3cc90 00] [00b001deef] 0cb001de099701ef8e04537dd3e6 61fe 00c00000fe 8781f101c80473207556fd7f00d1c0a2ef0b156ec3d6901f efc8ea9a5ad065b30ac38839b6242b4a5ac4f7af7c620917 e022b35ac5c59b6918dead31cea1488aabd7c2b35a7c2e6c a4159a02c660f7674fd04aa31a013452b40bf36fe4a0c2fe 53552b56a0f6814fcd4bbbd17b8d1974bb69067ead830a49 7109b513507b76a41df522641a965b0d087f32d3c101b88e 446219ecf77727fa033c315f277a888d0492498d5f227f0e 2e8a3c99f5631e5485a252ad43b42b1fa768bac9d54a5ac9 796b32ce14c03b790cd4474ca7f1583e14b99ba26e30dc40 97e3f61248b9b5d237dc53010b5ae8f34f647febf8a1d0b8 9844a15d990290008e04df3d0c1d9000 [30a545b396093f69ea7aae5bb46d717c3acf85c31b0aeebc 3eba2dce4be0ad466224c789231b565a356a3031edf48bd4 6060af093775f3fbcec4ccc8c0b8b889a9cda089a9c98007 18bcb2c28c8cff59980c180cf8403c7e108f859989bdc140 16c4e7631163117999fe5026f2d31df3cbda496d026bee30 aeb9af9e62200f9256669130106b1091ea5c71f45d7f596c 6861e7676bd3bdab5819a6e61b28b17168b301d3223b2333 8b98818801071b1b0b439f1b23239cc562900057c3c81262 10043414ca37606c13ce282929b0d2d7cf4f2e2ed04bc9cb 4cd54b2d06a6089802a63665a882f2f27298bc7e726a5190 00]
62
[00b002cdef] 0cb002cd099701ef8e048e11b7f4 61fe 00c00000fe 8781f101d18a6305065cc06862c9e6e1011528d61ccd546c a61d59930bc697fbba768ed933d6fd8b79ef635449a94a51 9071ce33e9176b7968520c42f8c2f92a314062f35060e63c 1d4246d540f2680b4f539b0c21b8ff94f699fd962b2283d9 593246c289f200e75533819f95b7e172117b3b8cc2f7191f 61c785905c500a69a362a9f82c95877f6aeec27236a48170 c224ae7c96948a95e2858d5377ca208a0df25b74392a6eef c3a773e196193bdee3e42aa5c2da03c74a9fd886668c4e59 e9482624d7abad231090f2f63d9c97738b4c4c5cafda92c5 738a4ccc7f7377ab2f2650c98e69377d0faa1fe578092c0e 4ada6869990290008e0486200d469000 [49b1bea373506266955e7251898135c8990a2c2606460606 6c1c09ad21c0ccc3c462a082701e13a398181693520a920d 1a3fc0ddc7c4d2f8d8a0f181811113d003dc6c9c096d1e8c a9cc2c4c8c2c0aa1b67cacf60fd64bc7cc683388bfece376 f4a1d2b33ba6191327cdbef5b850ff7936480f03a97aac80 cac18e052aa7402f1ba97a3540e1c5c9a268200f4c0050cf 73321a0a4af01b5a9a0173be91a9a111280b471938c18293 8591c5ccc004e44b2634db02abd2fa1e2e7aecb7dcf75ff8 9d4a815f6bc3c38d27a9ba7194fe7f97bd7a52ca12b4428b 199445bd180515365cef3c1a1dbd5ecf6dddda7edd733190 00] [00b003bcef] 0cb003bc099701ef8e04dd235d61 61fe 00c00000fe 8781f101750c77ccaf5c18cdfe6c0cbd5a66772ca56995d8 1932677e0d3954f87010b02e070502dc3444023faa127a5a 28cad4db3f1adcb0e0848c35fd418dbcfa0b9acf9bff811b ac4d6ef1b0c5df7818539eb8ba1f3edc51874d6cfa8f2a1d 93a245523755dabe07f44b364afc3265236ce3c55cb0217b 00e6da7cd9afd861d1a0840086ef1aac2e1b842357ca44c1 e918c877ce60edaac1b8529644b64baba80cc3c74867d5f9 132f19cabe8094496a8ff6994963982a43ba41eb733f16ab 83b3e7941fcc0ef9c0b5bb472c25b0227c0b9fe9c537a0b1 1ce03ec92fb82c2d10a47163194319a1a54a57da771a14eb c86f5d2a990290008e0413713a3f9000 [ca7107799d04152b4fbc522ffbd693ce71ecb3700d4f9432 7b36c39ca2d9499fddd6bb7f9512baca1ab9fa8de6c52d8f 1497e50598e77e6b38ecfc96d9fbda84047f79d7f33396f7 316d3511564daa3fd1adaa98fe9d7dc5d5f61533ffa807ec dbecaff7cce7f2c16d425646ec4eacc63f76711c79762ae8 5bc3df42f557738eaf13ba21788ad5e976df3bb9e90a3fd5 5a0bfb74e34ae6ed50bb9e7fdab2c349f3ee8ac7073e45e8 63
ce2ff25a6ada29f96285ef9aeb31f5acb7cc2cb6cc7a9260 3cc1904ff460b83b8364e5676d91d9520fd62bb71fe5edb6 2958ccc4ab9f719be123df963333bf046e4b75faf7f6a690 00] [00b004ab47] 0cb004ab099701478e04960bfd2f 610a 00c000000a 99026c108e043190b8309000 [6c10]
Tamao de los datos descomprimidos: e8050000 Tamao de los datos comprimidos: b3040000 Datos comprimidos: 789c3368627d62d0c4726601331323139300af5929b7e022 f54617b62713652f1cbe6bc0cbc6a9d5e6d1f69d97919195 95c120c690db80938d3994854d98c935d850c3400dc4e1e2 9177f10c727576f6f4f7537077f5730d72f451707155f071 5408f0f7f174f67434e435e006a9e4e66171f1f374351431 1002719979b81d9d1540220a0606860672e2bc066606c606 4686464666a6e65140ae8581259c6b50866abb90810088c3 2acc69000646c621307b587858bc421dfd0c050df8415c2d 1e0ed7e000c7c313fd7d0c0d0df421566bc08414600c1d05 9026050dc7d01057bf104f674767cfc393fd340d9a189590 0382919581b989919f0128cec5d4c4c8c870e84ab9f987c4 f4e3efda98f4d466fd75bd1a7d2469a7e81de1996bf8e79a 374f7ca9707f6148c633d7aacf5e37e4265ca9c913117697 33b1bb3a7d9bfbffd8779716cecbf55abaafff5ef8b2c88c 98b0d07b7d6a063c9f9a67e90b862cf2cede90e9b8f4a8bb e3b9eb16ce13b98df8b6adb294fffdb14177c934f3042df1 79afe35ab5fe67346cac6b0e773f314b80e9b0cbf7290b64 7beb736b3a0c9cdc17c878f979685488bf9c715a607dc4dd c7524527aaa48e7f9b312dbde5bfc801ff6f4aa9ccde0bfe e42707e87ae74418fc993aebe3cc30a545b396093f69ea7a 64
ae5bb46d717c3acf85c31b0aeebc3eba2dce4be0ad466224 c789231b565a356a3031edf48bd46060af093775f3fbcec4 ccc8c0b8b889a9cda089a9c9800718bcb2c28c8cff59980c 180cf8403c7e108f859989bdc14016c4e7631163117999fe 5026f2d31df3cbda496d026bee30aeb9af9e62200f925666 9130106b1091ea5c71f45d7f596c6861e7676bd3bdab5819 a6e61b28b17168b301d3223b23338b98818801071b1b0b43 9f1b23239cc562900057c3c8126210043414ca37606c13ce 282929b0d2d7cf4f2e2ed04bc9cb4cd54b2d06a6089802a6 3665a882f2f27298bc7e726a5149b1bea373506266955e72 51898135c8990a2c26064606066c1c09ad21c0ccc3c462a0 82701e13a398181693520a920d1a3fc0ddc7c4d2f8d8a0f1 81811113d003dc6c9c096d1e8ca9cc2c4c8c2c0aa1b67cac f60fd64bc7cc683388bfece376f4a1d2b33ba6191327cdbe f5b850ff7936480f03a97aac80cac18e052aa7402f1ba97a 3540e1c5c9a268200f4c0050cf73321a0a4af01b5a9a0173 be91a9a111280b471938c182938591c5ccc004e44b2634db 02abd2fa1e2e7aecb7dcf75ff89d4a815f6bc3c38d27a9ba 7194fe7f97bd7a52ca12b4428b199445bd180515365cef3c 1a1dbd5ecf6dddda7edd7331ca7107799d04152b4fbc522f fbd693ce71ecb3700d4f94327b36c39ca2d9499fddd6bb7f 9512baca1ab9fa8de6c52d8f1497e50598e77e6b38ecfc96 d9fbda84047f79d7f33396f7316d3511564daa3fd1adaa98 fe9d7dc5d5f61533ffa807ecdbecaff7cce7f2c16d425646 ec4eacc63f76711c79762ae85bc3df42f557738eaf13ba21 788ad5e976df3bb9e90a3fd55a0bfb74e34ae6ed50bb9e7f dab2c349f3ee8ac7073e45e8ce2ff25a6ada29f96285ef9a eb31f5acb7cc2cb6cc7a92603cc1904ff460b83b8364e567 6d91d9520fd62bb71fe5edb62958ccc4ab9f719be123df96 3333bf046e4b75faf7f6a6810bdff7e4830fe75e780e00c9 adeabc
Si los datos comprimidos los expandimos con la librera zlib obtendremos el certificado X509 de autenticacin del ciudadano:
Certificado X509: 308205e4318204cca00302010202100d36750b11a2278144 06e4911dd0c3dd300d06092a864886f70d0101050500305c 310b300906035504061302455331283026060355040a0c1f 444952454343494f4e2047454e4552414c204445204c4120 504f4c49434941310d301b060355040b0c04444e49453114 301206035504030c0b414320444e494520303031301e170d 3036303330323132323635375a170d303830393032313232 3635375a3076310b30090603550406130245533112301006 035504051309303030303030323354310d300b0603550404 0c044a55414e3111300b060355042a0c0845535041c3914f 4c3131302f06035504030c2845535041c3914f4c20455350 41c3914f4c2c204a55414e2028415554454e544943414349 c3934e2930820122300d06092a864886f70d010101050003 82010f003082010a0282010100c2d47737f06167c7ee8602 2e269afd45d55bc462b915dc1399ac0f9d378391e920dfa1 65
5468e6457af34ad81e90d47c6e1413471e343ed597b647ff 5deed2a19e6d4aa5be8fde57a659685c5655de8e26300cf2 839a2f1154a24b6bb06941a5c54741ced73843910b320eb6 aa391ffbf1802da49637602a179eeb5e852aff6880b17e83 5747c89a1002c344f794a01d8d7f6d7c88304247a01c4a4e 48287817e998cb10af58dde31a72c87a1ac7f698966784ff 14c04ff62265034ba0fc6f63502d4b6c5830fc959af19956 22a29aa613e4828ae72d72b6a35f670cd0c3b070dcebc5b6 5e4a10ed28615908c8c4b0a93a81280202b94e592800077c 5735464ef70203010001a382028630820282300c0603551d 130101ff04023000300e0603551d0f0101ff040403020780 301d0603551d0e04160414e967e11c59f2dc37d32b628610 acdc01acdf2764301f0603551d230418301680141a89a8c5 ee8f765d557189f33b35bdaa0500956f302206082b060105 05070103041630143008060604008e460101300806060400 8e460104306006082b0601050507010104543052301f0608 2b060105050730018613687474703a2f2f6f6373702e646e 69652e6573302f06082b060105050730028623687474703a 2f2f7777772e646e69652e65732f63657274732f41435261 697a2e637274303b0603551d200434303230300608608554 01020202043024302206082b060105050702011616687474 703a2f2f7777772e646e69652e65732f6470633081f00608 2b060105050701020481e33081e03032020101300b060960 86480165030402010420553d0e053fe0af1b5c9886305fd3 4c46c5e122e6dc356891929bdae3712fe76b303202010030 0b06096086480165030402010420553d0e053fe0af1b5c98 86305fd34c46c5e122e6dc356891929bdae3712fe76b303a 0609608554010202040201300b0609608648016503040201 0420553d0e053fe0af1b5c9886305fd34c46c5e122e6dc35 6891929bdae3712fe76b303a060960855401020204020630 0b06096086480165030402010420553d0e053fe0af1b5c98 86305fd34c46c5e122e6dc356891929bdae3712fe76b3028 0603551d090421301f301d06082b06010505070901311118 0f31393630313032353132303030305a3042060860855401 02020401043630343032020102300b060960864801650304 02010420517a668ee1a2e34ea75dfe57dc7910faad575733 9225460875ffee6bab9264a4300d06092a864886f70d0101 05050003820101004a011120b0d789c55b5baf2e46aead8f 2dce5c235ec10d42112179c8ea2776f68c6708c6f3137c0c 5a23076b009c729b62f346af47f51a12d50559abec29d1b4 e221a66e50376df680c343ed034bd690604f1f45cf98a78e 02b5341325627fc88b252167f707a8d587a899fc2750beb3 4f2ee64cd3c1b6123a3206420533f8ba08c4e6ca52f680fd 7127ea9cc7ae12d811ca0542db8eee1e9720f92685718e2d 5e749eb826d76fcb39884229dda8e3c0f2582d9f724aa535 8919e8a84dacd75c7f05da3638b49ae4603390310e15c157 47001979f32b149b1ae0af2387c50d8b3c70a3020d2f68db 00f10eb4cc99f451b66542deedd930440ef763c1e19dd0e7
Este certificado deber ser verificado con la cadena de validacin de certificados, comprobar caducidad, lista de revocados, etc...
66
De l podemos obtener la clave pblica que nos servir para comprobar la firma realizada anteriormente: Clave pblica de autenticacin:
Mdulo = 2cd47737f06167c7ee86022e269afd45d55bc462b915dc13 99ac0f9d378391e920dfa15468e6457af34ad81e90d47c6e 1413471e343ed597b647ff5deed2a19e6d4aa5be8fde57a6 59685c5655de8e26300cf2839a2f1154a24b6bb06941a5c5 4741ced73843911c320eb6aa391ffbf1802da49637602a17 9eeb5e852aff6880b17e835747c89a1002c344f794a01d8d 7f6d7c88304247a01c4a4e48287817e998cb10af58dde31a 72c87a1ac7f698966784ff14c04ff62265034ba0fc6f6350 2d4b6c5830fc959af1995622a29aa613e4828ae72d72b6a3 5f670cd0c3b070dcebc5b65e4a21ed28615908c8c4b0a93a 81280202b94e592800077c5735464ef7 Exponente pblico: 010001
Desencriptando con esta clave pblica la firma generada anteriormente:
Datos firmados con clave de autenticacin: 632369fa040ccb9f298fdcc2a3e344d815be131e2a609792 9cf9d1fe35fd472580f56c67e040a2437d37f1320a7d8025 27e6eb2734f847315625f6bd14935ed72d1c1e42f5f41bc6 53d83fc180b98fff5b0f3ba5ef159d2de0737e9d4a86469a 156ca7711ad7d9c2d10c797696062cac0b656c0b04b988c7 e447fdf43add6e3a379f1f6e4e115916a49f1cf18ce4421e 41ac044c5dca70a90e58b615212b7caa22bfd1e42ba60a02 92d531943f2adf6bd0f238ecf931bbdfd98d085edc0050dc c799480415f0282e1f9e57b013ea3732330dffa6daba8957 a55d34d004fd3259e6bdd9e568face8118d2e1eff13adeb2 3e1c58f5fafefe38e1347c631281a668 Firma desencriptada: 0001ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff ffffffff003021300906052b0e03021a05000414839b543f b09d20c803b46e6f8f0747244951822f
Donde podemos comprobar que est el hash que solicitamos firmar, y al que se le ha incluido el relleno PKCS1 hasta completar el tamao de la clave.
67