Obtención de datos del DNI-e. Jesús Pérez-Castilla Gil Juan Carlos Pérez García

Texto completo

(1)

Obtención de datos del DNI-e

Jesús Pérez-Castilla Gil

Juan Carlos Pérez García

(2)

Arquitecturas disponibles

Arquitecturas disponibles

PKCS#11.

– Estándar creado por RSA.

– Define un API genérico de acceso a dispositivos

criptográficos.

– Gestiona objetos de varios tipos.

Crypto Service Provider.

– Empleado por Microsoft.

– Gestiona dispositivos de firma electrónica.

– Permite a las aplicaciones basadas en CryptoAPI

realizar firmas digitales, cifrar, descifrar, etc.

(3)

Librería PKCS#11

Librería PKCS#11

PKCS: Public Key Cryptography

Standard.

Estándar de facto, creado por

RSA Labs.

Define por completo el interfaz de

acceso a tokens criptográficos.

Gestiona varios tipos de objetos:

Claves públicas, claves privadas,

datos y certificados.

Utilizado por aplicaciones que

soporten ese estándar: Firefox,

Thunderbird, etc.

Aplicación 1 Aplicación 2 Aplicación 3 Interfaz PKCS#11 PC/SC Lector Tarjetas Tarjeta DNIe

(4)

Librería CSP

Librería CSP

Estándar de Microsoft.

Gestiona dispositivos de firma

electrónica.

Utilizado por aplicaciones

basadas en Crypto API:

Internet Explorer, Outlook

Express, Adobe Acrobat, etc.

Discriminación por ATR.

CryptoAPI Aplic. 1 CSP 3 CSP 1 Aplic. 2 Aplic. 3 DNIECSP PC/SC Lector Tarjetas Tarjeta DNIe

(5)

Características de dll

Características de dll

• Librerías de enlace dinámico.

• Archivo que contiene funciones y/o recursos

(mapas de bits, definiciones de fuentes, etc.).

• Pueden ser llamados desde cualquier

aplicación Windows.

• Extensiones posibles:

– DLL,

– EXE,

– DRV.

(6)

Ventajas e inconvenientes

Ventajas e inconvenientes

Ahorro de espacio en disco.

Las DLLs son independientes de la aplicación.

Mayor complejidad a la hora de realizar las llamadas.

Mejora en el tiempo de compilación y/o carga de la aplicación.

El tiempo de acceso a la DLL por parte de la aplicación que la usa es mas lento.

Se reduce el tamaño de las aplicaciones que utilizan la DLL por la reutilización de su código.

Tienen que estar presentes en la carpeta del sistema antes de ser utilizadas.

Una función dentro de una DLL está disponible para cualquier aplicación Windows.

Desventajas Ventajas

(7)

Tipos de acceso a dlls

Tipos de acceso a dlls

• En el proceso de compilación de la librería se crea el

archivo .

LIB

.

• Tras el proceso de link

del proyecto se genera el

archivo .

DLL

.

• Para acceder a las funciones de una DLL, existen

dos métodos:

• Llamada estática,

• Llamada dinámica.

(8)

Llamadas estáticas

Llamadas estáticas

• Utiliza archivos .

lib

dentro de su código.

• Requiere el archivo de cabecera

.h

.

• Enlace en tiempo de compilación.

• La librería queda incluida dentro de la propia

aplicación.

• No es necesaria carga ni descarga explícita.

• Las llamadas se hacen como a cualquier otra

función.

(9)

Llamadas dinámicas

Llamadas dinámicas

• Utiliza archivos

dll

externos.

• Enlace en tiempo de ejecución.

• Carga mediante

LoadLibrary

().

• Acceso a las funciones:

GetProcAddress

().

• Descarga de la librería:

FreeLibrary

().

(10)

Diferencias entre estático-dinámico

Diferencias entre estático-dinámico

Sólo una dll para todas las

aplicaciones

Genera aplicaciones de mayor

tamaño

Mayor reutilización de código

Menor reutilización de código

Independiente de la librería

dll

Dependencia total de la librería

lib

Llamadas: mediante punteros

especiales a las funciones

Llamadas: como a otra función

Enlace dinámico

Enlace estático

Una única librería, cargada sólo

mientras se necesite

La librería está en memoria

mientras corre la aplicación

Carga dinámica de la librería (

dll

)

Librería incluida en el código (

lib

)

(11)

Certificados X.509

Certificados X.509

• Recomendación ITU-T X.509 aprobada en

1993.

• Elaborada para facilitar la interconexión de los

sistemas de servicios de directorio.

• Define un marco para certificados de clave

pública.

• Documentos que asocian una clave pública con

la identidad de su propietario.

(12)

Campos del certificado X.509

Campos del certificado X.509

Versión,

Número de serie,

Identificador del algoritmo de firma,

Nombre del emisor,

Período de validez,

Nombre del usuario,

Información de la clave pública,

Identificador único del emisor,

Identificador único del usuario,

Extensiones.

(13)

Formato X.509

Formato X.509

typedef struct _CERT_INFO {

DWORD dwVersion;

CRYPT_INTEGER_BLOB SerialNumber;

CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;

CERT_NAME_BLOB Issuer;

FILETIME NotBefore;

FILETIME NotAfter;

CERT_NAME_BLOB Subject;

CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;

CRYPT_BIT_BLOB IssuerUniqueId;

CRYPT_BIT_BLOB SubjectUniqueId;

DWORD cExtension;

PCERT_EXTENSION rgExtension;

} CERT_INFO, *PCERT_INFO;

(14)

Notación ASN.1

Notación ASN.1

• Estructura interna del DNIEstructura interna del DNI--e sege segúún n PKCS#15PKCS#15.. •

• Los certificados digitales X.509 se almacenan en Los certificados digitales X.509 se almacenan en DFsDFs.. •

• Se representan utilizando la Sintaxis de NotaciSe representan utilizando la Sintaxis de Notacióón Abstracta nn Abstracta nºº1 (ASN.1, 1 (ASN.1, Abstract

Abstract SyntaxSyntax NotationNotation –– OneOne)) •

• Esta norma se encuentra descrita en [ISO/IEC 8824Esta norma se encuentra descrita en [ISO/IEC 8824--1].1]. •

• Este estEste estáándar no define cndar no define cóómo se han de codificar esos datos, sino que es una mo se han de codificar esos datos, sino que es una sintaxis abstracta para indicar el significado de los datos.

sintaxis abstracta para indicar el significado de los datos.

• Para la codificaciPara la codificacióón de los datos se usan otras normas como:n de los datos se usan otras normas como –

– BER (BER (basicbasic encodingencoding rulesrules) (BER ) (BER -- X.209)X.209) –

– CER (CER (canonical canonical encodingencoding rulesrules).). –

– DER (DER (distinguisheddistinguished encodingencoding rulesrules).). –

– PER (PER (packedpacked encodingencoding rulesrules).). –

(15)

Parseo de certificados (I)

(16)

308205ED308204D5A003020102021008C8EFBBA9493A7D4419663081176255300D06092A86 4886F70D0101050500305C310B300906035504061302455331283026060355040A0C1F4449524 54343494F4E2047454E4552414C204445204C4120504F4C49434941310D300B060355040B0C0 4444E49453114301206035504030C0B414320444E494520303031301E170D3036303331363133 323034385A170D3038303931363132323034375A307F310B30090603550406130245533112301 0060355040513093032363437363036463117301506035504040C0E504552455A2D43415354494 C4C41310E300C060355042A0C054A455355533133303106035504030C2A504552455A2D4341 5354494C4C412047494C2C204A455355532028415554454E544943414349C3934E29308201223 00D06092A864886F70D01010105000382010F003082010A0282010100AECC9DE91E266C9DE B91706E64FC095816811EBD367ABCE6B88272EBFB097D9A80DA4D4A5C0E688FB9BD7A EC25030451DD2E5784697AB48F318CCB7CB2E2FCA773CC64B0C032B96651FACA4846B37 5C7D0A96E843E0BF422CE7DA8CD72A7A490D11724D84835B7325EC205A452AA30C3F81 93A433CF0234201269706A6083447EF92C4B1175E7E6FE2163C93E4C289BF3218DDD99D57 9FCD91E7D52E70F0989D35F605AF9BBA85860D45E813B4C26BC2A7A622075898BD9CF9B DBC3E216C8B7C0A0D61076F09777F218E48C8A8EFB5B19346DA9FC02EB7A1922A39B40 D56476CC148C216D9FEC0365CA4A632244BFA6A7ACEE6D6CC827621C6115EFE9C65D36 50203010001A3820286 [...]

Parseo de certificados (II)

Parseo de certificados (II)

308205ED308204D5A003020102021008C8EFBBA9493A7D4419663081176255300D06092A86 4886F70D0101050500305C310B300906035504061302455331283026060355040A0C1F4449524 54343494F4E2047454E4552414C204445204C4120504F4C49434941310D300B060355040B0C0 4444E49453114301206035504030C0B414320444E494520303031301E170D3036303331363133 323034385A170D3038303931363132323034375A307F310B30090603550406130245533112301 0060355040513093032363437363036463117301506035504040C0E504552455A2D43415354494 C4C41310E300C060355042A0C054A455355533133303106035504030C2A504552455A2D4341 5354494C4C412047494C2C204A455355532028415554454E544943414349C3934E29308201223 00D06092A864886F70D01010105000382010F003082010A0282010100AECC9DE91E266C9DE B91706E64FC095816811EBD367ABCE6B88272EBFB097D9A80DA4D4A5C0E688FB9BD7A EC25030451DD2E5784697AB48F318CCB7CB2E2FCA773CC64B0C032B96651FACA4846B37 5C7D0A96E843E0BF422CE7DA8CD72A7A490D11724D84835B7325EC205A452AA30C3F81 93A433CF0234201269706A6083447EF92C4B1175E7E6FE2163C93E4C289BF3218DDD99D57 9FCD91E7D52E70F0989D35F605AF9BBA85860D45E813B4C26BC2A7A622075898BD9CF9B DBC3E216C8B7C0A0D61076F09777F218E48C8A8EFB5B19346DA9FC02EB7A1922A39B40 D56476CC148C216D9FEC0365CA4A632244BFA6A7ACEE6D6CC827621C6115EFE9C65D36 50203010001A3820286 308205ED308204D5A003020102021008C8EFBBA9493A7D4419663081176255

308205ED308204D5A003020102021008C8EFBBA9493A7D4419663081176255300D06092A86 4886F70D0101050500305C310B300906035504061302455331283026060355040A0C1F4449524 54343494F4E2047454E4552414C204445204C4120504F4C49434941310D300B060355040B0C0 4444E49453114301206035504030C0B414320444E494520303031301E170D3036303331363133 323034385A170D3038303931363132323034375A307F310B30090603550406130245533112301 0060355040513093032363437363036463117301506035504040C0E504552455A2D43415354494 C4C41310E300C060355042A0C054A455355533133303106035504030C2A504552455A2D4341 5354494C4C412047494C2C204A455355532028415554454E544943414349C3934E29308201223 00D06092A864886F70D01010105000382010F003082010A0282010100AECC9DE91E266C9DE B91706E64FC095816811EBD367ABCE6B88272EBFB097D9A80DA4D4A5C0E688FB9BD7A EC25030451DD2E5784697AB48F318CCB7CB2E2FCA773CC64B0C032B96651FACA4846B37 5C7D0A96E843E0BF422CE7DA8CD72A7A490D11724D84835B7325EC205A452AA30C3F81 93A433CF0234201269706A6083447EF92C4B1175E7E6FE2163C93E4C289BF3218DDD99D57 9FCD91E7D52E70F0989D35F605AF9BBA85860D45E813B4C26BC2A7A622075898BD9CF9B DBC3E216C8B7C0A0D61076F09777F218E48C8A8EFB5B19346DA9FC02EB7A1922A39B40 D56476CC148C216D9FEC0365CA4A632244BFA6A7ACEE6D6CC827621C6115EFE9C65D36 50203010001A3820286 [...] 308205ED308204D5A003020102021008C8EFBBA9493A7D4419663081176255 308205ED308204D5A003020102021008C8EFBBA9493A7D4419663081176255300D06092A86 4886F70D0101050500 308205ED308204D5A003020102021008C8EFBBA9493A7D4419663081176255300D06092A86 4886F70D0101050500305C31

(17)

Parseo de certificados (III)

Parseo de certificados (III)

Ejemplo de parseo de certificados

Ejemplo

30 82 05 ED 30 82 04D5 A0 03 02 01 02 (Versión) 02 10 08 C8 EF BB A9 49 3A 7D 44 19 66 30 81 17 62 55 (SerialNumber) 30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 05 00 (sha1RSA) 30 5C 31 0B 30 09 06 03 55 04 06 13 02 45 53 (CountryName, C) 31 28 30 26 06 03 55 04 0A 0C 1F 444952454343494F4E20 47454E4552414C204445 204C4120504F4C494349 41 (OrganizationName, O) [...]

(18)

Aplicación sobre PKCS#11 (I)

Aplicación sobre PKCS#11 (I)

• Librería utilizada: UsrPKCS11.dll

• Permite la lectura de los certificados incluidos en el DNIe.

• Se trabaja sobre una sesión.

• Debe realizar una búsqueda de los objetos deseados: los

certificados.

• Crea en memoria objetos de tipo CKO_CERTIFICATE.

• El valor del certificado está almacenado en ASN.1.

(19)

• Secuencia principal de llamadas:

– LoadLibrary(UsrPKCS11.dll).

– C_Initialize

– C_GetSlotList

– C_OpenSession

– C_Login

– C_FindObjectsInit

– C_FindObjetcs

– C_FindObjetcsFinal

– C_GetAttributeValue

– C_Finalize

– FreeLibrary

Aplicación sobre PKCS#11 (II)

(20)

Pantalla de aplicación PKCS#11

(21)

ƒ

Librería utilizada: dniecsp.dll

ƒ

Permite a las aplicaciones basadas en CryptoAPI realizar firmas

digitales, cifrar, descifrar, etc.

ƒ

Securización de mensajes.

ƒ

Permite intercambiar información cifrada y/o firmada entre dos

usuarios garantizando la integridad, la autenticidad del mensaje, la

confidencialidad y el no repudio (certificado vinculado con la cuenta de

correo que va a utilizar el usuario).

ƒ

Aplicaciones de correo de Microsoft:

Outlook Express, Outlook 2000.

ƒ

Autenticación del cliente.

ƒ

Implica la identificación y la validación de la identidad del usuario

frente a un

servidor remoto

, estableciendo para ello un canal de

comunicaciones seguras.

ƒ

Aplicaciones:

ƒ

Microsoft Internet Explorer, Outlook Express, Outlook 2000,

etc.

Aplicación sobre CSP (I)

(22)

• Secuencia básica de llamadas:

– LoadLibrary(dniecsp.dll).

– SCardListReaders

– SCardConnect

– CPAcquireContext

– CPGetProvParam

– CPGetUserKey

– CPGetKeyParam

– FreeLibrary

Aplicación sobre CSP (II)

(23)

Pantalla de aplicación CSP

Figure

Actualización...

Referencias

Actualización...

Related subjects :