Infraestructura de clave pública con Software Libre
1. Infraestructura de clave pública
-PKI- con Software Libre
Febrero 2009
Toni de la Fuente
Director de Sistemas y Soporte
Intecna Soluciones
afuente@intecna.es
2. Contenidos
Quién soy
●
¿Qué es PKI y para qué sirve?
●
Conceptos relacionados con PKI
●
Criptografía asimétrica
●
Firma digital
●
Certificados digitales
●
Autoridades de certificación
●
Validez de los certificados: CRL y OCSP
●
Soluciones
●
3. Quién soy
Director de Sistemas y Soporte de Intecna Soluciones
España y LATAM.
Responsable de Formación de Intecna Soluciones
España y LATAM.
Miembro del comité de Innovación de Intecna
Soluciones.
Creador de phpRADmin, solución para seguridad de
redes basadas en FreeRADIUS y PKI.
Blog personal blyx.com, desde 2002 publicando
artículos relacionados con Software Libre, Seguridad y
Tecnologías de la Información.
4. ¿Qué es PKI y para qué sirve? I
Es un sistema para gestión de certificados digitales y
aplicaciones de firma digital o/y cifrado.
Debe proporcionar:
Autenticidad, la firma digital tendrá la misma
●
validez que la manuscrita.
Confidencialidad de la información transmitida
●
entre las partes.
Integridad. Debe asegurarse la capacidad de
●
detectar si un documento firmado ha sido
manipulado.
No Repudio, de un documento firmado
●
digitalmente.
5. ¿Qué es PKI y para qué sirve? II
Proporciona el marco que permite la implantación de
clave pública.
Incluye una Autoridad de Certificación (CA) y gestiona
la información relacionada con ella.
Debe prestar los siguientes servicios:
• Emisión de certificados
• Generación del par de claves (pública y privada)
• Distribución de certificados
• Certificación cruzada
• Salvaguarda de claves
• Suspensión y revocación de certificados
• etc.
6. ¿Qué es PKI y para qué sirve? III
Los componentes de una PKI son o pueden ser
entidades con funciones diferentes:
Autoridad de Certificación: CA
•
Autoridad de Registro: RA
•
Autoridad Raiz: Root CA
•
Usuarios finales.
•
Una PKI sólo es válida si se cumplen las siguientes
condiciones:
• Las claves privadas estén protegidas.
• Las claves públicas estén inequívocamente
asociadas a una entidad.
7. ¿Qué es PKI y para qué sirve? IV
Las claves privadas se protegen con una contraseña y
se deben almacenar de forma cifrada en:
Disco duro.
•
Floppy.
•
Dispositivo USB.
•
Smart Card.
•
8. Conceptos relacionados con PKI
Criptografía asimétrica o de clave pública
•
Funciones Hash
•
Firma digital
•
Certificados digitales
•
Autoridad de Certificación
•
Autoridad de Registro
•
CRL
•
OCSP
•
PEM
•
PKCS
•
DER
•
9. Criptografía asimétrica
Cifrado simétrico:
Se cifra y descifra con la misma clave. (DES, RC2, RC5,
Tripe DES, AES, etc.)
Cifrado asimétrico:
Basado en un par de claves (pública y privada) de modo
que lo que se cifra con una sólo se puede descifrar con la
otra del mismo par.
11. Certificados digitales I
¿Qué es un certificado?
• Documento electrónico que garantiza la identidad
de una persona o fqdn.
• Contiene información del titular del certificado.
12. Certificados digitales II
Información que contiene un certificado (X.509v3):
La identidad de un usuario y su clave pública.
•
Un número de serie y versión.
•
Periodo de validez.
•
La identidad de quién emite el certificado.
•
Descripción.
•
Clave pública.
•
Algoritmos utilizados.
•
La firma digital de las informaciones contenidas en el
•
certificado.
13. Certificados digitales III
¿Cómo obtengo un certificado digital?
• Se solicitan a una autoridad de certificación.
• Tienen un tiempo de validez determinado, a partir del
cual caducan.
• Normalmente hay que pagar por ellos.
14. Certificados digitales IV
Contenido de un certificado:
Data:
Version: 3 (0x0)
Serial Number: 18 (0x12)
SignatureAlgorithm: PKCS #1 SHA-1 con cifrado RSA
Issuer: OU = FNMT Clase 2 CA, O = FNMT, C = ES
Validity:
NotBefore: Jan7 13:02:39 2000 GMT
NotAfter: Jan6 13:02:39 2001 GMT
Subject: CN = Toni, OU = 00011, OU = FNMT Clase 2 CA, O = FNMT, C = ES
PublicKeyAlgorithm: rsaEncryption
RSA PublicKey: (512 bit)
Modulus(512 bit):
00:98:59:ab:d9:7e:a3:40:21:60:ee:54:a5:a4:54:
d2:29:fd:50:82:c1:28:05:25:0a:6b:aa:61:aa:e0:
19:3b:d7:5e:18:f2:14:60:ed:58:f6:87:eb:4c:61:
fc:9e:ed:9d:b2:19:d4:73:25:cc:d4:63:88:54:f4:
49:2a:ba:ce:7b
Exponent: 65537 (0x10001)
SignatureAlgorithm: PKCS #1 SHA-1 con cifrado RSA
7a:df:8a:aa:b5:23:5b:c6:ff:f3:02:73:65:bb:0f:05:7a:fd:
f4:68:ee:b9:fe:92:72:53:bb:f2:31:9e:38:92:69:b3:04:22:
d7:be:f5:18:42:7a:c0:9b:e2:1e:04:a4:66:02:80:76:79:0e:
f6:c3:7e:25:2d:ec:00:01:fb:f7
15. Autoridades de Certificación I
Autoridad de Certificación (CA):
• Entidad intermediaria y confiable que emite y
administra los certificados.
• Garantiza la asociación entre una clave pública y una
identidad.
• Debe verificar los datos incorporados en el
certificado.
• Problemas asociados a lo difuso de las relaciones de
confianza.
• Publicación de las listas de certificados no válidos.
16. Autoridades de Certificación II
Tipos de autoridades de certificación:
• CA interna
• CA ext. certificadora de empleados
• CA ext. certificadora de clientes
• CA tipo Tercera Parte Confiable
Tipos de certificados:
• Certificados de usuarios
• Certificados de servidores
• Certificados de CA
17. Validez de los certificados:
CRL y OCSP
Listas de Revocación de Certificados (CRL)
Misión:
• Detectar que un certificado no es válido en caso de sustracción,
errores, cambios de derechos, ruptura de la CA.
Problemas:
• CRLs de gran longitud
• Existe un intervalo de posible fraude
• Comprobación on-line de certificados
Para verificar una firma de un documento, el usuario no
sólo ha de verificar el certificado y su validez, sino que
también ha de adquirir la versión más reciente de la CRL y
confirmar que el número de serie del certificado no está
en tal CRL.
18. Validez de los certificados:
CRL y OCSP
Contenido de una CRL:
• Versión
• Algoritmo de Firma
• Emisor
• Actualización Presente
• Siguiente Actualización
• Nº Serie Certificado
• Fecha Revocación
• Extensiones Locales
• Extensiones Globales
19. Validez de los certificados:
CRL y OCSP
Servidor OSCP (Online Certificate Status Protocol)
• Confirmación online del estado de un certificado.
• Servicio online de alta disponibilidad que debe ofrece
la CA a los usuarios.
• Proporciona información más adecuada y reciente.
• No requiere CRLs: ahorra tráfico y CPU.
• Las CRLs contienen información sensible.
• Usa LDAP como backend.
Funcionamiento: el cliente OSCP envía petición de
estado al OSCP responder y suspende su aceptación
hasta recibir respuesta.
20. Soluciones PKI en Software Libre
Las soluciones a tener en cuenta son:
OpenCA
•
OpenXPKI (fork de OpenCA)
•
EJBCA
•
PHPki
•
Gnomint
•
OpenSSL
•
21. Soluciones PKI en Software Libre
OpenCA: herramienta que proporciona un interface Web
para poder administrar una PKI.
Componentes:
• Una interface web creado en Perl (Público).
• Openssl para operaciones criptográficas.
• Una base de datos (MySQL/PgSQL).
• Un OpenLDAP, Apache (mod_ssl).
Características:
• Software Libre.
• Integración con otras aplicaciones.
• Comunidades de soporte y empresas.
• Soporte estándares internacionales.
• Versión 1.0.2
• En castellano
• Demo en http://mm.cs.dartmouth.edu/pki/pub/
22. Soluciones PKI en Software Libre
OpenCA: Capturas de pantalla, Inicialización:
23. Soluciones PKI en Software Libre
OpenCA: Capturas de pantalla, General:
24. Soluciones PKI en Software Libre
OpenXPKI: fork de OpenCA, con varios componentes
reescritos.
Componentes:
• Similares a OpenCA (perl).
Características:
• Software Libre.
• No se liberan versiones de forma normal, se
distribuye en ISO, SVN, nightly builds.
• Soporte estándares internacionales.
• Versión 0.9.1
• Integrado con RT para solicitud de certificados.
• Múltiples instancias de CA
• Soporte nCipher y nShield para hardware
criptográfico.
25. Soluciones PKI en Software Libre
OpenXPKI: captura de pantalla, listado:
26. Soluciones PKI en Software Libre
EJBCA: Infraestructura completa de PKI realizada en
Java.
Componentes:
• Java JDK.
• Servidor de aplicaciones Jboss, Glashfish
• Ant
Características:
• Software Libre.
• Proyecto muy activo.
• Soporte estándares internacionales.
• Versión 3.8.1.
• Software complementario para más funcionalidades.
• Multiples CAs y multiplataforma.
• Soporte a gran variedad de HW criptográfico y
eParapher*.
27. Soluciones PKI en Software Libre
EJBCA: Capturas de pantalla, panel de administración:
28. Soluciones PKI en Software Libre
EJBCA: Capturas de pantalla, visor de eventos:
29. Soluciones PKI en Software Libre
PHPki: Infraestructura mínima de PKI realizada en PHP
y OpenSSL.
Componentes:
• Apache + mod_ssl.
• OpenSSL
• PHP (librerías criptográficas)
Características:
• Software Libre.
• Proyecto parado.
• Soporte y funcionalidades limitadas.
• Versión 0.82.
• Muy fácil de usar e implementar.
• No soporta HW criptográfico.
30. Soluciones PKI en Software Libre
PHPki: captura de pantalla, menú de administración:
31. Soluciones PKI en Software Libre
Gnomint: Herramienta gestión de CA y certificados
para Gnome.
Componentes:
• Gnome.
• OpenSSL
Características:
• Software Libre.
• Soporte y funcionalidades limitadas.
• Versión 0.6.0.
• Muy fácil de usar e implementar.
• No soporta HW criptográfico.
• No soporta OCSP.
32. Soluciones PKI en Software Libre
Gnomint: captura de pantalla, listado:
33. Soluciones PKI en Software Libre
OpenSSL: Herramienta por excelencia para gestión y
creación de CAs y certificados.
Componentes:
• OpenSSL ;)
Características:
• Software Libre.
• Herramienta por línea de comandos.
• Soporta gestión de CA, cifrado, firma, etc.
• Navaja suiza para certificados.
• Multiplataforma.
• Dispone de su propia shell.
Ver: Usando OpenSSL en el mundo real.pdf (blyx.com)
34. Soluciones PKI en Software Libre
OpenSSL: línea de comandos, ejemplos:
$ fnd /etc -type f | xargs openssl md5 > /etc/secure/md5_sigs.txt
El anterior comando creará un archivo MD5 hash de todos los archivos del directorio /etc. Estos
finger prints deben ser almacenados como solo lectura y en un lugar seguro.
Veamos un ejemplo para cifrar un archivo llamado passwd con Blowfish:
$ openssl bf -e -in /etc/secure/passwd -out /etc/secure/passwd.enc.bf
El siguiente ejemplo muestra como descifrar el archivo /etc/secure/sensitive_data.enc.3des que
fue cifrado con el algoritmo 3DES:
$ openssl enc -des3 -d -in /etc/secure/sensitive_data.enc.3des -out /etc/secure/sensitive_data
El siguiente ejemplo muestra como generar el MD5de la contraseña “blah”:
$ echo blah | openssl passwd -stdin -1
La opción quot;-1quot; indica que usaremos MD5 como algoritmo y la opción “-stdin” indica que le
pasamos la contraseña a través de la entrada estándar.
35. Soluciones PKI en Software Libre
eParapher: Cliente para firma digital de documentos.
Componentes:
• Java 5 y 6.
• Eclipse.
• OpenOffice 2.4+
• Maven.
• Apache directory studio.
Características:
• Software Libre.
• Herramienta gráfica multiplataforma.
• Windows, Linux y Mac.
• En estado inicial, versión 0.0.1.
• Bien dimensianada.
• Soporta firmas en PDF, PDF/A, CMS and XML.
• Firma masiva (bulk sign).
38. Agradecimientos:
Víctor Manuel Fernández Gómez - http://vfernandezg.blogspot.com/
Gonzalo Álvarez Marañón - Univ. Oviedo.
Pedro Pablo Pérez García - Univ. Oviedo.
José María Sierra - Univ. Comillas.
39. $ while true; do ; ‘¡gracias!’; done
;-)
Toni de la Fuente
Director de Sistemas y Soporte
Intecna Soluciones
afuente@intecna.es