Infraestructura de clave pública con Software Libre

39
Infraestructura de clave pública -PKI- con Software Libre Febrero 2009 Toni de la Fuente Director de Sistemas y Soporte Intecna Soluciones [email protected]

description

Infraestructura de clave pública con Software Libre. Introducción a la PKI y soluciones actuales para implementar PKI con soluciones Open Source.

Transcript of Infraestructura de clave pública con Software Libre

Page 1: Infraestructura de clave pública con Software Libre

Infraestructura de clave pública -PKI- con Software Libre

Febrero 2009

Toni de la FuenteDirector de Sistemas y Soporte

Intecna [email protected]

Page 2: Infraestructura de clave pública con Software Libre

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

Page 3: Infraestructura de clave pública con Software Libre

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.

Page 4: Infraestructura de clave pública con Software Libre

¿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.

Page 5: Infraestructura de clave pública con Software Libre

¿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.

Page 6: Infraestructura de clave pública con Software Libre

¿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.

Page 7: Infraestructura de clave pública con Software Libre

¿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.

Page 8: Infraestructura de clave pública con Software Libre

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

Page 9: Infraestructura de clave pública con Software Libre

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.

Page 10: Infraestructura de clave pública con Software Libre

Firma digital

Esquema de funcionamiento de la firma digital:

Page 11: Infraestructura de clave pública con Software Libre

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.

Page 12: Infraestructura de clave pública con Software Libre

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.

Page 13: Infraestructura de clave pública con Software Libre

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.

Page 14: Infraestructura de clave pública con Software Libre

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

Page 15: Infraestructura de clave pública con Software Libre

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.

Page 16: Infraestructura de clave pública con Software Libre

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

Page 17: Infraestructura de clave pública con Software Libre

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.

Page 18: Infraestructura de clave pública con Software Libre

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

Page 19: Infraestructura de clave pública con Software Libre

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.

Page 20: Infraestructura de clave pública con Software Libre

Soluciones PKI en Software Libre

Las soluciones a tener en cuenta son:

• OpenCA• OpenXPKI (fork de OpenCA)• EJBCA• PHPki• Gnomint• OpenSSL

Page 21: Infraestructura de clave pública con Software Libre

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/

Page 22: Infraestructura de clave pública con Software Libre

Soluciones PKI en Software LibreOpenCA: Capturas de pantalla, Inicialización:

Page 23: Infraestructura de clave pública con Software Libre

Soluciones PKI en Software LibreOpenCA: Capturas de pantalla, General:

Page 24: Infraestructura de clave pública con Software Libre

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.

Page 25: Infraestructura de clave pública con Software Libre

Soluciones PKI en Software Libre

OpenXPKI: captura de pantalla, listado:

Page 26: Infraestructura de clave pública con Software Libre

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*.

Page 27: Infraestructura de clave pública con Software Libre

Soluciones PKI en Software Libre

EJBCA: Capturas de pantalla, panel de administración:

Page 28: Infraestructura de clave pública con Software Libre

Soluciones PKI en Software Libre

EJBCA: Capturas de pantalla, visor de eventos:

Page 29: Infraestructura de clave pública con Software Libre

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.

Page 30: Infraestructura de clave pública con Software Libre

Soluciones PKI en Software Libre

PHPki: captura de pantalla, menú de administración:

Page 31: Infraestructura de clave pública con Software Libre

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.

Page 32: Infraestructura de clave pública con Software Libre

Soluciones PKI en Software Libre

Gnomint: captura de pantalla, listado:

Page 33: Infraestructura de clave pública con Software Libre

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)

Page 34: Infraestructura de clave pública con Software Libre

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 "-1" 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.

Page 35: Infraestructura de clave pública con Software Libre

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).

Page 36: Infraestructura de clave pública con Software Libre

Conclusiones

Page 37: Infraestructura de clave pública con Software Libre

Preguntas y respuestas

Page 38: Infraestructura de clave pública con Software Libre

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.

Page 39: Infraestructura de clave pública con Software Libre

$ while true; do ; ‘¡gracias!’; done

;-)

Toni de la FuenteDirector de Sistemas y Soporte

Intecna [email protected]