Curso de introducción a la firma digitalCurso de introducción a la firma digital Ricardo Lorenzo Rodríguez WHITEBEARSOLUTIONS S.L. Tel. 902906969 Página 1 de 77 Curso de introducción a la firma digital Índice de contenido 1Introducción a la criptografía..........................................................................................5 2Criptografía simétrica........................................................................................................6 2.1Definición.....................................................................................................................6 2.2Tipos de algoritmos simétricos..................................................................................6 2.2.13DES.......................................................................................................................6 2.2.2Blowfish.................................................................................................................7 2.2.3IDEA.......................................................................................................................8 2.2.4AES........................................................................................................................8 2.3Intercambio de claves...............................................................................................9 2.4Sistema híbrido..........................................................................................................10 3Criptografía asimétrica o de clave pública.................................................................11 3.1Definición...................................................................................................................11 3.2Algoritmos actuales..................................................................................................12 3.2.1Diffie-Hellman.....................................................................................................12 3.2.2RSA......................................................................................................................12 3.2.3DSA......................................................................................................................13 3.2.4ElGamal..............................................................................................................13 3.2.5Criptografía de curvas elípticas......................................................................14 3.3Debilidades...............................................................................................................14 3.3.1.1Ataque Man-In-The-Middle.......................................................................14 4Encapsulación SSL/TLS.....................................................................................................14 4.1Prácticas OpenSSL....................................................................................................17 4.1.1Primer contacto con OpenSSL.........................................................................17 4.1.2Huellas digitales..................................................................................................18 4.1.3Generar contraseñas........................................................................................18 4.1.4Cifrado simétrico................................................................................................19 4.2IKE (Internet key Exchange).....................................................................................19 4.2.1IpSec...................................................................................................................20 4.2.2Implementaciones sobre GNU/Linux..............................................................21 4.2.3Práctica Stunnel................................................................................................22 4.2.4Prácticas Racoon..............................................................................................26 4.2.4.1Cifrado punto a punto..............................................................................26 5Identidad y criptografía asíncrona...............................................................................28 5.1X.509 y OpenPGP......................................................................................................28 5.1.1X.509.....................................................................................................................28 5.1.2OpenPGP............................................................................................................30 WHITEBEARSOLUTIONS S.L. Tel. 902906969 Página 2 de 77 Curso de introducción a la firma digital 5.2Estándares PKCS.......................................................................................................30 5.3Extensiones de ficheros............................................................................................32 6Infraestructura de clave pública...................................................................................33 6.1 Autoridad de certificación.....................................................................................34 6.1.1Normativa...........................................................................................................35 6.2 Clases de certificados............................................................................................35 6.3Listas de revocación................................................................................................36 6.4Prácticas OpenSSL....................................................................................................37 6.4.1Creación del certificado de CA.....................................................................38 6.4.2Creación y firma de un certificado certificado...........................................38 6.4.3Mostrando el contenido de un certificado...................................................39 6.4.4Exportar los certificados a otros formatos......................................................39 6.4.5Revocación de certificados............................................................................40 6.4.6Cifrado asimétrico............................................................................................40 6.4.7Integración con directorios LDAP....................................................................41 7Tarjetas criptográficas (smart cards).............................................................................49 7.1Definición...................................................................................................................49 7.2PCSD, OpenSC y generación de tarjetas smart card..........................................50 7.2.1PC/SC..................................................................................................................50 7.2.2OpenSC...............................................................................................................51 7.3Autenticación con tarjetas y PAM..........................................................................51 7.4Práctica PCSDd y OpenSC......................................................................................51 7.4.1Dispositivo C3PO LTC31......................................................................................52 7.4.2Software de verificación y gestión del dispositivo........................................53 7.4.3Software de gestión de las tarjetas.................................................................55 8Autoridades de Certificación y Listas de Revocación-RCM como prestador de Servicios de Certificación. CERES....................................................................................57 8.1 7.1 La Fábrica Nacional de Moneda y Timbre como autoridad de certificación...................................................................................................................57 8.2 7.2 Proyecto CERES..................................................................................................57 8.3 7.3 Buenas prácticas en el uso de certificados...................................................57 8.4 7.4 Uso de certificados orientados a la Administración Pública.......................57 9GNUPG..............................................................................................................................57 9.1Definición...................................................................................................................57 9.2Funcionamiento........................................................................................................58 9.3GPG versión SMIME..................................................................................................58 9.4Practica GPG............................................................................................................58 10Otras aplicaciones.........................................................................................................66 10.1Práctica Apache/SSL.............................................................................................66 WHITEBEARSOLUTIONS S.L. Tel. 902906969 Página 3 de 77 ....................................................1..........................5Configuración de Apache...70 WHITEBEARSOLUTIONS S.....................................66 10....2Requisitos.........67 10..................................1Acerca de mod_ssl..................... Tel..................................68 10..........6Comprobaciones.................................1........................................................................L............................................1...............1.........................3Procedimientos....................4Generando clave y certificado............1..........66 10......................1.Curso de introducción a la firma digital 10........67 10............................... 902906969 Página 4 de 77 ........................ Tel. Las dos técnicas más sencillas de cifrado. por lo que en el sentido literal. es decir. y la palabra graphos que significa “escribir”. que el remitente sea realmente quien dice ser y que el contenido del mensaje enviado. coloquialmente se denomina también así al contexto en el que algún intercambio de mensajes se asegura a través de técnicas de cifrado. Los segundos se denominan algoritmos asimétricos. Los primeros se denominan algoritmos simétricos.Curso de introducción a la firma digital 1 Introducción a la criptografía La etimología de la palabra criptografía.L. la palabra criptografía significa “escritura oculta”. en la criptografía clásica. y los que utilizan una clave para cifrar mensajes y una clave distinta para descifrarlos. El estudio de estas técnicas de cifrado se conoce como “criptología”. Existen dos grandes grupos de algoritmos de cifrado: los algoritmos que utilizan una única clave tanto en el proceso de cifrado como en el de descifrado. la gran mayoría de los algoritmos clásicos son combinaciones de estas dos operaciones básicas. es el proceso de convertir el “texto claro” en un conjunto de información ilegible o criptograma. o de clave pública. Habitualmente el mensaje original que debe protegerse se denomina “texto en claro”. o de clave simétrica. comúnmente denominado “criptograma”. son la sustitución (que supone el cambio de significado de los elementos básicos del mensaje) y la trasposición (que supone una reordenación de los mismos). tiene su origen en las palabras griegas krypto que significa “oculto”. no haya sido modificado en su tránsito. El cifrado por tanto. Siendo este el significado literal. 902906969 Página 5 de 77 . El objetivo de la criptografía es el de garantizar el secreto de los mensajes en la comunicación entre dos entidades. así como también asegurar que la información que se envía es auténtica en un doble sentido. WHITEBEARSOLUTIONS S. y el estudio de los mecanismos que permiten romper el cifrado de los mensajes se conoce como “criptoanálisis”. lo que significa que hay 2 elevado a 56 claves posibles. Teniendo en cuenta que los algoritmos modernos basan su seguridad en la clave y no en el algoritmo. Esto quiere decir que el conjunto de claves posibles. Esto representa un número muy alto de claves. es importante que sea muy difícil adivinar el tipo de clave. 902906969 Página 6 de 77 . tardarían en encontrar la clave más o menos la edad teórica del universo. el algoritmo de cifrado DES usa una clave de 56 bits.1 3DES Su base histórica es el algoritmo DES (Data Encryption Standard). Este algoritmo fue controvertido al principio. debido a algunos elementos de diseño clasificados. lo que significa que existen 2 elevado a 128 claves posibles. así que en este caso.1 Definición La criptografía simétrica es el método criptográfico que usa una misma clave para cifrar y descifrar mensajes. y cuyo uso se ha propagado ampliamente por todo el mundo. Blowfish e IDEA usan claves de 128 bits. En la actualidad los ordenadores cuentan con la capacidad de descifrar claves con extrema rapidez. Por ejemplo. Tel. 2. pero un ordenador de uso general puede comprobar el conjunto posible de claves en cuestión de días.2.L. Las dos partes que se comunican han de ponerse de acuerdo de antemano sobre la clave a usar. lo que se conoce como “el espacio de posibilidades de claves”. una longitud de clave relativamente corta. escogido como FIPS (Federal Information Processing Standards) en los Estados Unidos en 1976. Algoritmos de cifrado de diseño más reciente como 3DES. y las WHITEBEARSOLUTIONS S.2 Tipos de algoritmos simétricos 2. Esto equivale a muchísimas más claves. Una superordenador podría hacerlo en horas. aunque todas las máquinas del planeta estuvieran trabajando concurrentemente. debe ser muy amplio.Curso de introducción a la firma digital 2 Criptografía simétrica 2. y es la razón por la cual el tamaño de la clave es tremendamente relevante en los criptosistemas modernos. Schneier diseñó Blowfish como un algoritmo de uso general. haciendo este método de cifrado muchísimo más seguro que el DES. pero en cambio es preciso triplicar el número de operaciones de cifrado. WHITEBEARSOLUTIONS S. 3DES fue desarrollado por IBM en 1978. que intentaba reemplazar al antiguo DES y evitar los problemas asociados con otros algoritmos.2. patentados o los guardaba el gobierno. aunque existen ataques teóricos. El algoritmo está a disposición del público. Sin embargo. y así se quedará en los demás continentes. 2. muchos otros diseños eran propiedad privada. como AES y Twofish. Este método de cifrado dobla la longitud efectiva de la clave (112 bits).L. la mayoría de las tarjeta de crédito y otros medios de pago electrónico tienen como estándar el algoritmo 3DES (anteriormente usaban el DES). Por el diseño DES y por lo tanto 3DES son algoritmos lentos.Curso de introducción a la firma digital continuas sospechas sobre la existencia de alguna puerta trasera para la National Security Agency (NSA). 902906969 Página 7 de 77 . Schneier declaró “Blowfish no tiene patente. AES puede llegar a ser hasta 6 veces más rápido y hasta el día de la fecha no se encontró ninguna vulnerabilidad. se ha dado más atención de la decodificación de bloques con bloques más grandes. Al mismo tiempo.2 Blowfish Originalmente diseñado por Bruce Schneier en 1993. Por tanto. 3DES fue elegido como la manera de extender el tamaño de la clave sin necesidad de cambiar de algoritmo de cifrado. la longitud de la clave usada será de 192 bits. este algoritmo es reemplazado por AES. aunque su eficacia solo sea de 112 bits En la actualidad. Al descubrirse que una clave de 56 bits no era suficiente para evitar un ataque de fuerza bruta. y puede ser usado libremente por cualquiera”. Hoy en día. 3DES pretendía eliminar los posibles ataques haciendo un triple cifrado. Tel. Actualmente se cree que este algoritmo es seguro en la práctica. Se han encontrado algunas claves débiles.Curso de introducción a la firma digital 2. IDEA fue utilizado como el cifrador simétrico en las primeras versiones de PGP (PGP v2. 2. Se espera que sea usado en el mundo entero y analizado exhaustivamente.L. 902906969 Página 8 de 77 .2. aunque fue patentado y sus patentes se vencerán en 2010 y 2011. Este algoritmo es un esquema de cifrado por bloques que hoy en día es adoptado como estándar de cifrado por el gobierno de los Estados Unidos. como fue el caso de su predecesor.0) y se lo incorporó luego de que el cifrador original usado en la v1. IDEA es libre para uso no comercial.0 ("Bass-O-Matic") se demostró insegura. Tel. Es un algoritmo óptimo en OpenPGP. la cual se hizo parte de Ascom-Tech AG. El nombre “IDEA” es una marca registrada y está licenciada a nivel mundial por MediaCrypt. el Data Encryption Standard (DES).4 AES El algoritmo AES (Advanced Encryption Standard).2. ya que sería necesario probar 1038 claves. las cuales en la práctica son poco usadas siendo necesario evitarlas explícitamente. No se han reportado debilidades frente criptoanálisis lineal o algebraico. En primer lugar. Los diseñadores analizaron IDEA para medir su fortaleza frente al criptoanálisis diferencial y concluyeron que es inmune bajo ciertos supuestos. cantidad imposible de manejar con los medios informáticos actuales.3 IDEA El algoritmo IDEA (International Data Encryption Algorithm) descrito por primera vez en 1991 y diseñado en contrato con la Fundación Hasler. el ataque por fuerza bruta resulta impracticable. Este algoritmo opera con bloques de 64 bits usando una clave de 128 bits y consiste de ocho transformaciones idénticas (cada una llamada un ronda) y una transformación de salida (llamada media ronda). El AES fue anunciado por el Instituto Nacional de Estándares y Tecnología (NIST) como FIPS PUB 197 de los Estados Unidos (FIPS 197) el 26 de noviembre de 2001 después de un proceso de estandarización que duró WHITEBEARSOLUTIONS S. es también conocido como Rijndael. La Agencia de Seguridad Nacional de los Estados Unidos (NSA) revisó todos los finalistas candidatos al AES. En junio de 2003. y declaró que todos ellos eran suficientemente seguros para su empleo en información no clasificada del gobierno de los Estados Unidos. Varios expertos criptográficos han encontrado problemas en las matemáticas que hay por debajo del ataque propuesto. pero algunos investigadores están preocupados por que futuros ataques quizá encuentren una manera de explotar esta estructura. Una vez que el remitente y el destinatario hayan intercambiado las claves pueden usarlas para comunicarse con seguridad. no se ha encontrado ningún ataque exitoso contra el AES. es improbable que nadie pudiera llevar a cabo en la práctica este ataque. sino al intercambio de claves. 2. ya que a diferencia de la mayoría de cifradores de bloques. Esto no ha llevado todavía a ningún ataque.Curso de introducción a la firma digital 5 años. En 2002. el ataque XSL contra AES parece especulativo. 902906969 Página 9 de 77 . sugiriendo que los autores quizá hayan cometido un error en sus estimaciones. denominado “ataque XSL”. pero ¿qué canal de comunicación que sea seguro han usado para transmitirse las claves? Sería mucho más fácil para un atacante intentar interceptar una clave que probar las posibles combinaciones del espacio de claves. se publicó un ataque teórico. WHITEBEARSOLUTIONS S. La estructura matemática de AES constituye una preocupación para algunos investigadores. Hasta el momento. incluyendo el Rijndael. Tel. Si esta línea de ataque puede ser tomada contra AES. mostrando una potencial debilidad en el algoritmo AES. es una cuestión todavía abierta.3 Intercambio de claves El principal problema con los sistemas de cifrado simétrico no está ligado a su seguridad. Hasta 2005.L. AES tiene una descripción matemática muy ordenada. el gobierno de los Estados Unidos anunció que el AES podía ser usado para información clasificada. que fue anunciado por Nicolas Courtois y Josef Pieprzyk. Esto es viable con un grupo reducido de personas. Tel. Si tenemos un número X de personas que necesitan comunicarse entre sí.L. se necesitan X/2 claves para cada pareja de personas que tengan que comunicarse de modo privado. Un sistema de cifrado híbrido no es más fuerte que el de cifrado asimétrico o el de cifrado simétrico de los que hace uso.4 Sistema híbrido La criptografía híbrida es un método criptográfico que usa tanto un cifrado simétrico como un asimétrico.Curso de introducción a la firma digital Intercambio de claves Canal seguro Otro problema es el número de claves que se necesitan. la clave usada es diferente para cada sesión. Emplea el cifrado de clave pública para compartir una clave para el cifrado simétrico. se cifra usando la clave y enviándolo al destinatario. WHITEBEARSOLUTIONS S. 902906969 Página 10 de 77 . y el mensaje saliente es cifrado con la clave simétrica. En PGP y GnuPG el sistema de clave pública es probablemente la parte más débil de la combinación. pero sería imposible llevarlo a cabo con grupos más grandes. La clave de sesión es cifrada con la clave pública. 2. independientemente de cuál sea más débil. El destinatario usa su clave privada para descifrar la clave de sesión y acto seguido usa la clave de sesión para descifrar el mensaje. todo combinado automáticamente en un sólo paquete. El mensaje que se esté enviando en el momento. Tanto PGP como GnuPG usan sistemas de cifrado híbridos. Ya que compartir una clave simétrica no es seguro. En este caso se consigue por tanto la identificación y autenticación del remitente. Si el remitente usa la clave pública del destinatario para cifrar el mensaje. Con las claves públicas no es WHITEBEARSOLUTIONS S. una vez cifrado.L. cualquiera puede descifrarlo utilizando su clave pública. Si el propietario del par de claves usa su clave privada para cifrar el mensaje. ya que es el único que la conoce. 902906969 Página 11 de 77 . ya que se sabe que sólo pudo haber sido él quien utilizó su clave privada.1 Definición Se trata de un método criptográfico que usa un par de claves para el envío de los mensajes.Curso de introducción a la firma digital 3 Criptografía asimétrica o de clave pública 3. sólo la clave privada del destinatario podrá descifrar este mensaje. Una de las claves es pública y se puede entregar a cualquiera. Los métodos criptográficos garantizan que esa pareja de claves sólo se puede generar una vez. Tel. la otra clave es privada y el propietario debe guardarla de modo que nadie tenga acceso a ella. Ambas claves pertenecen a la misma entidad o persona que intercambia un mensaje. Llave pública Llave pública Llave privada Canal seguro Llave privada Los sistemas de cifrado de clave pública o sistemas de cifrado asimétricos se inventaron con el fin de evitar por completo el problema del intercambio de claves de los sistemas de cifrado simétricos. de modo que se puede asumir que no es posible que dos personas hayan obtenido casualmente la misma pareja de claves. Curso de introducción a la firma digital necesario que el remitente y el destinatario se pongan de acuerdo en la clave a emplear. Este algoritmo permite el intercambio secreto de claves entre dos partes que no han tenido contacto previo. Tel. y de manera anónima (no autenticada).1 Diffie-Hellman Su nombre es debido a sus creadores Whitfield Diffie y Martin Hellman. Su seguridad radica en la extrema dificultad (conjeturada.L. 902906969 Página 12 de 77 . Se emplea generalmente como medio para acordar claves simétricas que serán empleadas para el cifrado de una sesión.2 Algoritmos actuales 3. La alternativa es la criptografía de curva elíptica. no demostrada) de calcular logaritmos discretos en un campo finito. utilizando un canal inseguro. ✔ ✔ ✔ 3.2. la cual es guardada en secreto por su propietario. y otra privada. la seguridad se apoya en la clave y no en el algoritmo. Una clave de 512bits representa 155 dígitos decimales. se recomienda 1024bits. por lo que el tamaño de la clave es una medida de seguridad. WHITEBEARSOLUTIONS S. Por tanto 128bits no son suficientes como en la criptografía simétrica. 3.2 RSA El sistema criptográfico RSA es un algoritmo asimétrico de cifrado de bloques.2. la cual se distribuye (en forma autenticada preferentemente). Es de destacar que al igual que en la criptografía simétrica. que utiliza una clave pública. versiones recientes de PGP. DSA se hizo público el 30 de agosto de 1991. comparado por ejemplo con RSA. y otros sistemas criptográficos. La seguridad del algoritmo se basa en la suposición que la función utilizada es de un sólo sentido y la dificultad de calcular un logaritmo discreto.Curso de introducción a la firma digital Una clave es un número de gran tamaño.L. que una entidad o persona puede concebir como un mensaje digital. WHITEBEARSOLUTIONS S. Este algoritmo sirve únicamente para firmar y no para cifrar información. Este algoritmo no esta bajo ninguna patente lo que lo hace de uso libre. 902906969 Página 13 de 77 . 3. como un archivo binario o como una cadena de bits o bytes.2.3 DSA DSA (Digital Signature Algorithm) es un estándar del Gobierno Federal de los Estados Unidos de América o FIPS para firmas digitales.2. La computación cuántica podría proveer una solución a este problema de factorización. La seguridad de este algoritmo radica en que no hay maneras rápidas conocidas de factorizar un número grande en sus factores primos utilizando computadoras tradicionales. 3. Una desventaja de este algoritmo es que requiere mucho más tiempo de cómputo. Fue descrito por Taher Elgamal en 1984 y se usa en aplicaciones como GNU Privacy Guard. Tel. Es un algoritmo de criptografía asimétrica basado en la idea de Diffie-Hellman. El algoritmo de ElGamal puede ser utilizado tanto para generar firmas digitales como para cifrar o descifrar.4 ElGamal Este algoritmo es un esquema de cifrado basado en problemas matemáticos de algoritmos discretos. Los mensajes enviados usando el algoritmo RSA se representan mediante números y su funcionamiento se basa en el producto de dos números primos grandes (mayores que 10100) elegidos al azar para conformar la clave de descifrado. su sucesor. El mensaje cifrado ocupa más espacio que el original. insertar y modificar a voluntad. 4 Encapsulación SSL/TLS Secure Sockets Layer (SSL) y Transport Layer Security (TLS .Curso de introducción a la firma digital 3. 3. al tiempo que proporcionan un nivel de seguridad equivalente. la gran ventaja de la criptografía asimétrica es que se puede cifrar con una clave y descifrar con la otra. cuando éste se emplea sin autenticación. los mensajes entre dos partes sin que ninguna de ellas conozca que el enlace entre ellos ha sido violado. Tel.Seguridad de la Capa de Transporte).2. El ataque MitM es particularmente significativo en el protocolo original de intercambio de claves de Diffie-Hellman. El atacante debe ser capaz de observar e interceptar mensajes entre las dos víctimas.5 Criptografía de curvas elípticas La utilización de curvas elípticas en criptografía fue propuesta de forma independiente por Neal Koblitz y Victor Miller en 1985. ✔ ✔ ✔ 3. en castellano) es un ataque en el que el enemigo adquiere la capacidad de leer. u hombre en el medio.3.3 Debilidades En resumen. 902906969 Página 14 de 77 .L. Sus autores argumentan que este tipo de criptografía puede ser más rápida y usar claves más cortas que los métodos antiguos como RSA. Las claves deben ser de mayor tamaño que las simétricas. son protocolos criptográficos que proporcionan WHITEBEARSOLUTIONS S.1 Ataque Man-In-The-Middle En criptografía. sin embargo no está exento de desventajas como las siguientes: Para una misma longitud de clave y mensaje se necesita mayor tiempo de proceso.1. un ataque man-in-the-middle (MitM. Estos algoritmos son una variante de la criptografía asimétrica o de clave pública basada en las matemáticas de las curvas elípticas. SSL proporciona autenticación y privacidad de la información entre extremos sobre Internet mediante el uso de criptografía. sólo el servidor es autenticado (es decir.Curso de introducción a la firma digital comunicaciones seguras en Internet. se aplica a ambos protocolos a menos que el contexto indique lo contrario. se garantiza su identidad) mientras que el cliente se mantiene sin autenticar. pero el protocolo permanece sustancialmente igual. Diffie-Hellman. la falsificación de la identidad del remitente y mantener la integridad del mensaje. Existen pequeñas diferencias entre SSL 3. Para cifrado simétrico: RC2. DSA (Digital Signature Algorithm) o Fortezza.0. Triple DES o AES (Advanced Encryption Standard). la autenticación mutua requiere un despliegue de infraestructura de claves públicas (o PKI) para los clientes.L. cada registro puede ser WHITEBEARSOLUTIONS S. 902906969 Página 15 de 77 . Los protocolos permiten a las aplicaciones cliente-servidor comunicarse de una forma diseñada para prevenir escuchas. El término “SSL” según se usa aquí. opcionalmente. el cliente y el servidor negocian qué algoritmos criptográficos se van a usar. DES (Data Encryption Standard). Con funciones hash: MD5 o de la familia SHA ✔ ✔ ✔ El protocolo SSL intercambia registros. Tel. IDEA (International Data Encryption Algorithm). RC4. Habitualmente. SSL implica una serie de fases básicas: Negociar entre las partes el algoritmo que se usará en la comunicación Intercambio de claves públicas y autenticación basada en certificados digitales Cifrado del tráfico basado en cifrado simétrico ✔ ✔ ✔ Durante la primera fase. Las implementaciones actuales proporcionan las siguientes opciones: Para criptografía de clave pública: RSA.0 y TLS 1. El servidor puede requerir un certificado al cliente.Curso de introducción a la firma digital comprimido. Éste también envía bytes aleatorios que serán usados más tarde (llamados Challenge de Cliente o Reto). Tel. recibe un registro ServerHello. en el que el servidor elige los parámetros de conexión a partir de las opciones ofertadas con anterioridad por el cliente. ✔ ✔ ✔ ✔ TLS/SSL poseen una variedad de medidas de seguridad: Numerando todos los registros y usando el número de secuencia en el MAC.L. Cada registro tiene un campo de content_type que especifica el protocolo de nivel superior que se está usando. El cliente envía y recibe varias estructuras handshake: ✔ Envía un mensaje ClientHello especificando una lista de conjunto de cifrados. Después. que tiene el “content_type 22”. Cuando se inicia la conexión. cliente y servidor intercambian certificados (dependiendo de las claves públicas de cifrado seleccionadas). el nivel de registro encapsula otro protocolo. Estos certificados son actualmente X. Cliente y servidor negocian una clave secreta común llamada master secret. para que la conexión sea mutuamente autenticada. que son pasados a través una función pseudo aleatoria cuidadosamente elegida. el protocolo handshake. pero hay también un borrador especificando el uso de certificados basados en OpenPGP.509. Todos los datos de claves restantes son derivados a partir de este master secret (y los valores aleatorios generados en el cliente y el servidor). Cuando los parámetros de la conexión son conocidos. posiblemente usando el resultado de un intercambio Diffie-Hellman. 902906969 Página 16 de 77 . Además puede incluir el identificador de la sesión. o simplemente cifrando una clave secreta con una clave pública que es descifrada con la clave privada de cada uno. ✔ WHITEBEARSOLUTIONS S. cifrado y empaquetado con un código de autenticación del mensaje (MAC). métodos de compresión y la versión del protocolo SSL más alta permitida. 4. Para ver la de estas tres secciones de forma independiente puedes usar los comandos: $ openssl list-standard-commands WHITEBEARSOLUTIONS S. Message Digests y Cipher commands. después realiza sobre ellos una operación XOR. como los que implican un degradado del protocolo a versiones previas (por tanto. menos seguras). como el Transport Layer Security (TLS). Estas herramientas ayudan al sistema a implementar el Secure Sockets Layer (SSL).Curso de introducción a la firma digital ✔ Usando un resumen de mensaje mejorado con una clave (de forma que solo con dicha clave se pueda comprobar el MAC). El mensaje que finaliza el protocolo handshake (Finished) envía un hash de todos los datos intercambiados y vistos por ambas partes. que suministran funciones criptográficas a otros paquetes como OpenSSH y navegadores web (para acceso seguro a sitios HTTPS). De esta forma se protege a sí mismo de la eventualidad de que alguno de estos algoritmos se revelen vulnerables en el futuro. por ejemplo Apache. Protección contra varios ataques conocidos (incluidos ataques man in the middle attack). así como otros protocolos relacionados con la seguridad. Este paquete de software es importante para cualquiera que esté planeando usar cierto nivel de seguridad en su máquina con un sistema operativo Libre basado en GNU/Linux. Tel.1 Primer contacto con OpenSSL Vemos tres ayudas: Standard Commands. La función pseudo aleatoria divide los datos de entrada en 2 mitades y las procesa con algoritmos hash diferentes (MD5 y SHA). o conjuntos de cifrados más débiles.1 Prácticas OpenSSL OpenSSL es un proyecto de software desarrollado por los miembros de la comunidad Open Source para libre descarga y está basado en SSLeay desarrollado por Eric Young y Tim Hudson. ✔ ✔ ✔ 4. Esto se especifica en el RFC 2104). 902906969 Página 17 de 77 . OpenSSL también nos permite crear certificados digitales que podremos aplicar a nuestro servidor.1. Consiste en un robusto paquete de herramientas de administración y librerías relacionadas con la criptografía.L. 1.Curso de introducción a la firma digital $ openssl list-message-digest-commands $ openssl list-cipher-commands 4. El siguiente ejemplo muestra como generar el MD5 de 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. Tel. Si tu sistema operativo no soporta MD5 las contraseñas puede ser creadas con CRYPT: $ echo blah | openssl passwd -stdin -crypt -salt GH Este comando generará una contraseña crypt de ``blah'' con ``GH'' como salt.2 Huellas digitales OpenSSL puede combinarse con el comando find para hacer ``huellas digitales'' (fingerprints) de muchos archivos a la vez: $ find /etc -type f | xargs openssl md5 > /etc/secure/md5_sigs.1. 902906969 Página 18 de 77 . Esta opción puede ser usada para automatizar el aprovisionamiento de usuarios o la actualización de contraseñas. WHITEBEARSOLUTIONS S.L.3 Generar contraseñas Podemos usar OpenSSL para generar contraseñas a través del comando passwd. Estos finger prints deben ser almacenados como solo lectura y en un lugar seguro.txt El anterior comando creará un archivo MD5 hash de todos los archivos del directorio /etc. 4. rc4.).txt -pass pass:clave 4. Permite.4 Cifrado simétrico El programa OpenSSL soporta de manera estándar muchos algoritmos de cifrado. especificar el tiempo de vida de la sesión IPSEC. La mayoría de la implementaciones de IPsec consisten en un dominio IKE que corre en el espacio de usuario y una pila IPsec dentro del kernel que procesa los paquetes IP. idea. 902906969 Página 19 de 77 . etc.txt y generar texto\_cifrado. como por ejemplo: $ openssl des -d -in texto_cifrado. Tel. El comando necesario para cifrar con el algoritmo DES el documento texto.txt es el siguiente: $ openssl des -in texto.txt -pass pass:clave Para utilizar otro algoritmo basta cambiar ``des'' por el nombre del algoritmo deseado (des3. aes-256-ecb.2 IKE (Internet key Exchange) Internet key exchange (IKE) es un protocolo usado para establecer una Asociación de Seguridad (SA) en el protocolo Ipsec. rc5. Para descifrar el archivo se utiliza el mismo comando.txt -out texto_original. y generalmente requiere entre 4 y 6 paquetes con dos turnos para crear una SA en ambos extremos. bf. incluidas diferentes variantes de cada uno. Supone una alternativa al intercambio manual de claves. El protocolo IKE usa paquetes UDP. pero añadiendo la opción -d (descifrar). Su objetivo es la negociación de una Asociación de Seguridad para IPSEC. normalmente a través del puerto 500. WHITEBEARSOLUTIONS S.L.Curso de introducción a la firma digital 4. además. etc. autenticación dinámica de otras máquinas.1. rc2.txt -out texto_cifrado. Tel. básicamente cifra o autentica los paquetes IP.2. La función de autenticación se incorporó posteriormente. Este protocolo no opera si existen traducciones SNAT.Curso de introducción a la firma digital Negociación IKE TCP/UDP TCP/UDP SA IpSec/ESP Paqutes IP seguros 4. confidencialidad e integridad de los mensajes. IPSec opera en la capa 3.1 IpSec SA IpSec/ESP Es un estándar para la securización del protocolo IP (IP Security). lo que lo hace más flexible que SSL/TLS que opera en la capa 4 o superiores. pero no realiza cifrado. ESP (Encapsulating Security Payload): Provee autenticación. Puede actuar a través de SNAT usando la encapsulación NAT-T.L. Se trata de un conjunto de protocolos y flujos de intercambio seguros. 902906969 . Formalmente existen dos protocolos de transmisión: AH (Authentication Header): Proporciona autenticación e integridad de los mensajes. Página 20 de 77 ✔ ✔ WHITEBEARSOLUTIONS S. 902906969 Página 21 de 77 . Que consta de la dirección del canal a crear (entrada o salida) y la acción a tomar (discard. el cuál contiene: WHITEBEARSOLUTIONS S. Rango de direcciones de destino. Si la dirección de origen del paquete está dentro de este rango. SAD (Security Association Database): debe crear las asociaciones.Curso de introducción a la firma digital La operativa de IPSec requiere de dos bases de datos: SPD (Security Policy Database): Informan a el protocolo cuando debe actuar respecto a un paquete IP. se han portado herramientas de gestión para los núcleos 2. A partir del proyecto KAME (http://www. udp. cualquiera.2 Implementaciones sobre GNU/Linux El núcleo Linux implementa directamente el protocolo IpSec/AH e IpSec/ESP. Muestra al protocolo como ✔ ✔ La política de seguridad (SP) esta construida sobre los siguientes aspectos: Rango de direcciones de origen.2. actuar como se indica. Tel. icmp. Si el protocolo del paquete es tcp.6x dentro del proyecto llamado IPSec-Tools. Si la dirección de destino del paquete está dentro de este rango.kame.org). none o ipsec). Política que se aplicará. Protocolo de alto nivel. actúa como se indica. ✔ ✔ ✔ ✔ 4.L. esperando conexiones en el puerto 5555 (-d 5555).1 y la remota 192. Tel. por ejemplo.2.168. 192.1:192. Setkey: Herramienta para manipular las bases de datos SPD y SAD.pppd local).168. 902906969 Página 22 de 77 .168.1.2 -v 1 -D 7 -L /usr/sbin/pppd -pppd local En ciertas versiones de stunnel.1. $ stunnel -d 5555 192.conf.2.1. no reconocerá los argumentos del comando stunnel y será necesario crear un archivo de configuración en /etc/stunnel.1. con nivel de depuración 7 (-D 7).3 Práctica Stunnel En el servidor debemos instalar el modulo necesario para que funcione la conexión ppp.L. ✔ ✔ 4. La dirección local va a ser. abriendo un pty local y ejecutando /usr/sbin/pppd (-L /usr/sbin/pppd -.Curso de introducción a la firma digital ✔ libipsec: Librería que implementa la gestión de sockets de llaves confiables PF_KEY. Bien creamos el archivo con el siguiente contenido: WHITEBEARSOLUTIONS S. que nuestro kernel de Red Hat deberia tener pre-compilado: $ modprobe ppp o en algunos casos: $ modprobe ppp_generic Se instala el túnel como “daemon”. verificando el certificado de su par (-v 1).168. Racoon: Servidor de intercambio de claves (IKE). pem cert = /etc/stunnel/stunnel.38 Bcast:10. 902906969 Página 23 de 77 .allow.18.1:192.255.1.255. que hay que habilitar en /etc/hosts.pem [vpn] accept = 5555 exec = /usr/sbin/pppd execargs = pppd local 192.pem key = /etc/stunnel/stunnel-key.Curso de introducción a la firma digital client = no foreground = yes #For debug CAfile = /usr/share/ssl/CA/ca-cert.43 En el servidor.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:285069 errors:0 dropped:0 overruns:0 frame:0 TX packets:13650 errors:0 dropped:0 overruns:0 carrier:0 WHITEBEARSOLUTIONS S. es un servidor de PPP esperando conexiones por el pty en el puerto 5555.1.5. Tel.255 Mask:255.5.2 pty = yes En resumen.20. Stunnel genera un servicio de TCP wrappers llamado pppd.178.L.168. por ejemplo: pppd: 163.168. al teclear $ ifconfig aparece algo como: eth0 Link encap:Ethernet HWaddr 00:A0:C9:89:3F:B1 inet addr:10.20. 38. nivel de depuración 7 (-D 7) y por el pty.5.38:5555 -D 7 -L /usr/sbin/pppd -.20.5.38:5555).0.5. Tel. Además.20.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 Algo similar debe aparecer en el cliente.1 Mask:255. 902906969 Página 24 de 77 #For debug creamos . sin pedir a su par que se autorice (noauth).pppd local noauth Es decir.20.conf en el cliente de la siguiente forma: client = yes foreground = yes [vpn] conect = 10. Para hacer esto con un fichero de configuración /etc/stunnel/stunnel.5. se conecta como cliente (-c) al servidor 10.38:5555 exec = /usr/sbin/pppd execargs = pppd local noauth pty = yes WHITEBEARSOLUTIONS S. puerto 5555 (-r 10.20.0.L.Curso de introducción a la firma digital collisions:12208 txqueuelen:100 Interrupt:14 Base address:0xf060 lo Link encap:Local Loopback inet addr:127. en el cliente se debe ejecutar el siguiente comando: $ stunnel -c -r 10. también. en el cliente se da: $ ifconfig contesta algo como: eth0 Link encap:Ethernet HWaddr 00:A0:C9:89:3F:B1 inet addr:10.Curso de introducción a la firma digital Como consecuencia.2 por medio de la interfaz ppp0 del cliente.0.20. Tel.168.0.5.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:42 errors:2 dropped:0 overruns:0 frame:2 TX packets:43 errors:0 dropped:0 overruns:0 carrier:0 WHITEBEARSOLUTIONS S. 902906969 Página 25 de 77 .0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:12 errors:0 dropped:0 overruns:0 frame:0 TX packets:12 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 ppp0 Link encap:Point-to-Point Protocol inet addr:192.255 Mask:255.2 P-t-P:192.1.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:289453 errors:0 dropped:0 overruns:0 frame:0 TX packets:15686 errors:0 dropped:0 overruns:0 carrier:0 collisions:12208 txqueuelen:100 Interrupt:14 Base address:0xf060 lo Link encap:Local Loopback inet addr:127.20.255.1.168. Si ahora. va a recibir la direccion 192.0.1 Mask:255.1.38 Bcast:10.168.255.5.1 Mask:255.255.L.0. tenemos un túnel seguro asociado a una conexión PPP que a su vez esta asociada (en este caso) a Ethernet por medio de los “pty”. Se detallará a continuación la configuración de los dos extremos. 902906969 Página 26 de 77 . En resumen.2. excepto que las direcciones IP en ppp0 van a estar invertidas.2.key WHITEBEARSOLUTIONS S.L.1 Cifrado punto a punto Con el fin de configurar el extremo (o ambos) de la comunicación cifrada que utilicen el sistema operativo GNU/Linux. 4. es necesario editar el fichero /etc/racoon/ racoon-tool. Tel. para ello ejecutamos lo siguiente: # apt-get install ipsec-tools racoon A continuación se describen los dos esquemas más comunes dentro de la implementación de túneles.4.Curso de introducción a la firma digital collisions:0 txqueuelen:10 En el servidor se va a mostrar algo similar.4 Prácticas Racoon Para empezar instalaremos los paquetes necesarios para controlar las funciones IPSec del kernel. una especie de PPTP. O sea. Para lo anterior utilizaremos el protocolo ESP de IPSec en el modo transporte. 4.conf de la siguiente forma: # Ejemplos: # peer(%default): # certificate_type: x509 host. En el primer esquema se utilizara IPSec para cifrar todos los paquetes que se intercambien entre sí dos equipos (cifrado punto a punto).crt host. 168.101 # peers_identifier:: address 192.101 dst_ip: 192. el cuál tiene el siguiente aspecto: WHITEBEARSOLUTIONS S.168.102 admin_status: enabled authentication_algorithm: hmac_sha1 encryption_algorithm: 3des pfs_group: modp1024 El modo de inicio de sesión main (exchange_mode: main) es recomendable frente a la alternativa aggressive debido a la forma insegura en la que se eligen las claves de sesión en este último.102): exchange_mode: main hash_algorithm[0]: sha1 encryption_algorithm[0]: 3des authentication_method[0]: pre_shared_key connection(linux): src_ip: 192. El método de autenticación será: clave compartida (authentication_method[0]: pre_shared_key). El algoritmo 3DES (encryption_algorithm: 3des) se utiliza para la encriptación y SHA-1 (authentication_algorithm: hmac_sha1) para la autenticación.0.102 peer(192.Curso de introducción a la firma digital # my_identifier: fqdn bodhisatva. 902906969 Página 27 de 77 .0.L. Esto lo hacemos editando el fichero psk.168.168.com # peers_identifier:: fqdn winxp.txt.168. configuramos la clave que utilizarán ambos extremos para reconocerse entre sí. A partir de lo anterior.whitebearsolutions.whitebearsolutions.0.0.0. Tel.com # my_identifier: address 192. 168.L.168. corresponde a la clave compartida entre ambos extremos. Una vez realizada la configuración se debe realizar un reinicio de los servicios IPSec para asegurar que los parámetros se encuentren cargados correctamente. para lo anterior ejecutamos: # /etc/init.1 X. Tel. donde cualquier nodo de la red (no solo las ACs) puede firmar claves públicas. definido específicamente para PKI. La primera cadena de texto corresponde al extremo de la conexión. en este caso se utiliza la dirección IP del extremo (192. como PGP. 902906969 Página 28 de 77 . y por ende avalar la validez de certificados de claves de otros.1.d/racoon restart 5 Identidad y criptografía asíncrona 5.1 X. WHITEBEARSOLUTIONS S.102). X.31.509 X.509 fue publicado oficialmente en 1988 y comenzado conjuntamente con el estándar X.0.509 y OpenPGP 5.509 es un estándar del UIT (Unión Internacional de Telecomunicaciones – organismo de naciones unidas para la regulación de las telecomunicaciones).130 La cuidadosa. Esto contrasta con modelos de redes de confianza.Curso de introducción a la firma digital 192. \\ elección de esta clave debe ser especialmente Una mala elección puede causar que la seguridad no sea efectiva. El resto de la línea incluyendo los espacios.500 y asume un sistema jerárquico estricto de autoridades certificantes (ACs) para emisión de certificados. 1 (Abstract Syntax Notation One) y los formatos de codificación más comunes son: DER (Distinguish Encoding Rules) PEM (Privacy Enhanced Mail) ✔ ✔ La estructura de un certificado digital X. Tel. 902906969 Página 29 de 77 .L.Curso de introducción a la firma digital La sintaxis se define empleando el lenguaje ASN.1 ■ ■ ○ ○ Identificador único de emisor (opcional) Identificador único de sujeto (opcional) WHITEBEARSOLUTIONS S.509 v3 es la siguiente: Certificado ○ ○ ○ ○ ○ ✔ Versión Número de serie ID del algoritmo Emisor Validez ■ ■ No antes de No después de ○ Sujeto: En notación DN (Distinguished Name) que a su vez se compone de diversos campos: ■ ■ ■ ■ CN (Common Name) OU (Organizational Unit) O (Organization) C (Country) Algoritmo de clave pública Clave pública del sujeto ○ Información de clave pública del sujeto: Expresada en notación ASN. La Free Software Foundation a desarrollado su propia implementación de OpenPGP llamada GNU Privacy Guard (GNUPG). que contiene tres atributos: ○ ○ ○ Algoritmo de firma Hash de la firma La propia firma 5.Curso de introducción a la firma digital ○ ✔ ✔ Extensiones (opcional) Algoritmo usado para firmar el certificado Firma digital del certificado: Secuencia añadida por la CA.2 Estándares PKCS PKCS se refiere a un grupo de estándares de criptografía de clave pública concebidos y publicados por los laboratorios de RSA en California. Tel. ✔ WHITEBEARSOLUTIONS S. PKCS#1: Estándar criptográfico RSA definido en el RFC 3447. A RSA Security se le asignaron los derechos de licenciamiento para la patente de algoritmo de clave asimétrica RSA y adquirió los derechos de licenciamiento para muchas otras patentes de claves. 902906969 Página 30 de 77 . El IETF aceptó la propuesta e inicio el grupo de trabajo OpenPGP. Define el formato del cifrado RSA. Muchos clientes de correo proveen compatibilidad con OpenPGP y los mecanismos de seguridad descritos en el RFC3156. La especificación actual está en el RFC 4880 de noviembre de 2007 que reemplaza al RFC 2440. propone en julio de 1997 a el IETF un estándar llamado OpenPGP. OpenPGP está actualmente en el Internet Standards Track y se encuentra en desarrollo activo.1.L. 5.2 OpenPGP PGP Inc. Usado para firmar y/o cifrar mensajes en PKI. ahora basado en la RFC 3852. Fue la base para el estándar S/MIME. PKCS#10: Estándar de solicitud de certificación especificado en el RFC 2986. PKCS#7: Estándar sobre la sintaxis del mensaje criptográfico definido en el RFC 2315.509 versión 1. También usado para la diseminación de certificados. PKCS#4: Actualmente obsoleto. PKCS#11: Es una interfaz de dispositivo criptográfico (“Cryptographic Token Página 31 de 77 ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ WHITEBEARSOLUTIONS S. definía la sintaxis de la clave RSA. Formato de los mensajes enviados a una Autoridad de certificación para solicitar la certificación de una clave pública. utilizado para firmar digitalmente. o cifrar arbitrariamente el contenido de un mensaje. PKCS#3: Estándar de intercambio de claves Diffie-Hellman. PKCS#6: Estándar de sintaxis de certificados extendidos que define extensiones a la antigua especificación de certificados X.L. autenticar. una actualización del estándar [CMS Cryptographic Message Syntax. pero fue absorbido también por el PKCS#1. pero fue absorbido por el PKCS#1. definía el cifrado RSA de resúmenes de mensajes. 902906969 . PKCS#9: Tipos de atributos seleccionados. La versión 3 del mismo lo dejó obsoleto. Tel. PKCS#8: Estándar sobre la sintaxis de la información de clave privada. PKCS#5: Estándar de cifrado basado en contraseñas definido en el RFC 2898 y PBKDF2. obtener el digest.Curso de introducción a la firma digital ✔ PKCS#2: Actualmente obsoleto. PKCS#14: Generación de actualmente en desarrollo.CER: Certificado codificado en CER.p7c . Tel. número pseudo-aleatorios. 5.P7C: Estructura PKCS#7 SignedData sin datos.p12 Página 32 de 77 ✔ ✔ ✔ ✔ ✔ ✔ WHITEBEARSOLUTIONS S. solo certificado o CRL . PKCS#12: Estándar de sintaxis de intercambio de información personal que define un formato de fichero usado comúnmente para almacenar claves privadas con su certificado de clave pública protegido mediante clave simétrica. algunas veces es una secuencia de certificados .PFX: Ver .PEM: Certificado codificado en Base64.L.DER: Certificado codificado en DER .509 son: . PKCS#13: Estándar de criptografía de curva elíptica.P7B: Ver .Curso de introducción a la firma digital Interface” o cryptoki) que define un API genérico de acceso a dispositivos criptográficos. 902906969 . encerrado entre “-----BEGIN CERTIFICATE-----” y “-----END CERTIFICATE-----” . Se encuentra actualmente en desarrollo. Se encuentra ✔ ✔ ✔ ✔ PKCS#15: Estándar de formato de información de dispositivo criptográfico que define un estándar que permite a los usuarios de dispositivo criptográficos identificarse con aplicaciones independientemente de la implementación del PKCS#11 (crytoki) u otro API.3 Extensiones de ficheros Las extensiones de archivo de certificados X. El término PKI se utiliza para referirse tanto a la autoridad de certificación y al resto de componentes. la firma digital o el no repudio de transacciones electrónicas. políticas y procedimientos de seguridad que permiten la ejecución con garantías de operaciones criptográficas como el cifrado. Autoridad de registro (RA . al uso de algoritmos de clave pública en comunicaciones electrónicas.Registration Authority): Responsable de verificar el enlace entre los certificado y la identidad de los titulares. Tel. Página 33 de 77 ✔ ✔ ✔ ✔ ✔ WHITEBEARSOLUTIONS S. de manera más amplia y a veces confusa.Certificate Authority): Se encarga de emitir y revocar los certificados. Los componentes de una entidad certificadora son: Autoridad de certificación (CA . fichero protegido con clave que puede contener certificado (público) y claves privadas 6 Infraestructura de clave pública Una infraestructura de clave pública es una combinación de hardware y software.L.TimeStamp Authority): Firma los documentos digitales con el fin de probar su existencia antes de una determinada fecha. como para referirse.Validation Authority): Encargada de comprobar los certificados digitales.Certificate Revocation List) Autoridad de validación (VA .Curso de introducción a la firma digital ✔ .P12: PKCS#12. Repositorios: Repositorio de certificados y listas de revocación de certificados que han dejado de ser válidos antes de la fecha de caducidad (CRL . 902906969 . Autoridad de sellado de tiempo (TSA . 902906969 Página 34 de 77 . cuyas claves privadas asociadas son empleadas por las CA para firmar los certificados que emiten.L. lo que hace poco práctica su descarga para los terceros que confían.Curso de introducción a la firma digital 6. La lista denominada CRL (Certificate Revocation List) contiene los certificados que entran en esta categoría. WHITEBEARSOLUTIONS S. como servidores basados en los protocolos OCSP y SCVP. Este es el caso de los certificados de CA raíz. Finalmente. teléfono o intervención presencial. Tel. verifica la identidad del solicitante de un certificado antes de su expedición o. Las CA disponen de sus propios certificados públicos. el elemento inicial de cualquier jerarquía de certificación. por sí misma o mediante la intervención de una Autoridad de Registro. elimina la revocación de los certificados al comprobar dicha identidad. Esto incluye las tareas de revocación de certificados que puede instar el titular del certificado o cualquier tercero con interés legítimo ante la CA por email.1 Autoridad de certificación Una autoridad de certificación o certificadora es una entidad de confianza. Un certificado de CA puede estar auto-firmado cuando no hay ninguna CA de rango superior que lo firme. responsable de emitir y revocar los certificados digitales o certificados. otra tarea que debe realizar una CA es la gestión asociada a la renovación de certificados por caducidad o revocación. en caso de certificados expedidos con la condición de revocados. La Autoridad de Certificación. corre el riesgo de que sus CRL sean de gran tamaño. las CA también se encargan de la gestión de los certificados firmados. Si la CA emite muchos certificados. Una de las formas por las que se establece la confianza en una CA para un usuario consiste en la "instalación" en el ordenador del usuario (tercero que confía) del certificado autofirmado de la CA raíz de la jerarquía en la que se desea confiar. por lo que es responsabilidad de la CA publicarla y actualizarla debidamente. Por ese motivo desarrollan mecanismos alternativos de consulta de validez de los certificados. Por otra parte. Los certificados son documentos que recogen ciertos datos de su titular y su clave pública y están firmados electrónicamente por la Autoridad de Certificación utilizando su clave privada. Un certificado emitido por una entidad de certificación autorizada. La Ley 59/2003 de Firma Electrónica ha derogado el Real Decreto Ley 14/1999. 6.2 Clases de certificados Un Certificado Digital es un documento digital mediante el cual un tercero confiable (una autoridad de certificación) garantiza la vinculación entre la identidad de un sujeto o entidad y su clave pública. de 17 de septiembre. los más comúnmente empleados se rigen por el estándar UIT-T X. ✔ ✔ WHITEBEARSOLUTIONS S. Tel. La clave pública del usuario.509.Curso de introducción a la firma digital 6. Identificación del suscriptor nombrado en el certificado. 902906969 Página 35 de 77 . sobre firma electrónica haciendo más efectiva la actividad de certificación en España. además de estar firmado digitalmente por ésta.L.1 Normativa La Directiva 93/1999 ha establecido un marco común aplicable a todos los países de la Unión Europea por el que el nivel de exigencia que supone la normativa firma electrónica implica que los Prestadores de Servicios de Certificación que emiten certificados cualificados son merecedores de confianza por cualquier tercero que confía y sus certificados otorgan a la firma electrónica avanzada a la que acompañan el mismo valor que tiene la “firma manuscrita”. La metodología para verificar la firma digital del suscriptor impuesta en el mensaje de datos.1. la dirección y el lugar donde realiza actividades la entidad de certificación. Si bien existen variados formatos para certificados digitales. dirección y domicilio del suscriptor. debe contener por lo menos lo siguiente: ✔ ✔ ✔ Nombre. El nombre. Desaparece la condición por la que el certificado fue expedido. 902906969 Página 36 de 77 . una errata en los apellidos. de manera inesperada: ✔ ✔ El usuario del certificado cree que su clave privada ha sido robada. Por ejemplo. existen otras situaciones que pueden invalidar el certificado digital aún cuando no ha caducado. La fecha de caducidad viene indicada en el propio certificado digital. ya no son válidos y en los que no debe confiar ningún usuario del sistema. Otras razones ✔ ✔ ✔ Por tanto. una CRL es una lista de certificados (más concretamente sus números de serie) que han sido revocados. lo hace con un periodo máximo de validez que oscila entre uno y cinco años. El certificado contiene información errónea o información que ha cambiado.3 Listas de revocación En la operación de algunos sistemas criptográficos. Una orden judicial. Fecha de emisión y expiración del certificado.Curso de introducción a la firma digital ✔ ✔ El número de serie del certificado. A pesar de lo anterior. Cuando una autoridad de certificación emite un certificado digital. usualmente los de infraestructura de clave pública (PKI). debe existir algún mecanismo para comprobar la validez de un certificado antes de su caducidad. el cambio de apoderado de una entidad jurídica. El objetivo de este periodo de caducidad es obligar a la renovación del certificado para adaptarlo a los cambios tecnológicos. Por ejemplo. 6. Tel. Así se disminuye el riesgo de que el certificado quede comprometido por un avance tecnológico.L. Cuando un tercero desea comprobar la validez de un certificado debe descargar una CRL actualizada desde los servidores de la misma autoridad de WHITEBEARSOLUTIONS S. el primer certificado se generará con este número. También podemos observar otras opciones como el tiempo de vida del certificado o la sección de policy donde podremos editar la información que llevaran los certificados (si lo dejamos en los valores por defecto. es decir.txt es el archivo que utiliza OpenSSL como base de datos. para el presente ejemplo la ubicación básica será /etc/ssl.txt Donde serial será el primer número de serie para la generación de certificados. Tel. el segundo se generará con el número siguiente a este serial y así sucesivamente. Después debe comprobar que el número de serie del certificado cuestionado está en la lista. OpenSSL nos preguntará dichos valores a la hora de crear los certificados). index.Curso de introducción a la firma digital certificación que emitió el certificado en cuestión. WHITEBEARSOLUTIONS S.4 Prácticas OpenSSL Por defecto podemos ubicar el almacén de certificados y el fichero de configuración en el directorio que consideremos oportuno. no se debe aceptar el certificado como válido. para ello debemos mostrar especial atención a la seccion [ CA_default ] donde encontraremos la información de la estructura de directorios que usa OpenSSL.cnf para ajustar el funcionamiento de OpenSSL a nuestras preferencias. Una vez elegido el directorio ejecutamos lo siguiente: $ cd $DIRECTORIO $ echo '100001' > serial $ touch index. Después deberemos editar el archivo openssl. 902906969 Página 37 de 77 . A continuación comprueba la autenticidad de la lista gracias a la firma digital de la autoridad de certificación. en este archivo es donde veremos una referencia a los certificados creados. 6. En caso afirmativo.L. pem -outform PEM Si se prefiere almacenar los certificados en binario DER en lugar de en formato PEM Base64. basta con especificarlo en el atributo outform o keyform del comando anterior.pem A continuación la aplicación preguntará por una serie de atributos.pem -keyform PEM -out /etc/ssl/ca/ca-cert.1 Creación del certificado de CA En primer lugar es necesario crear el certificado de CA.4. El campo CN (Common Name) debe corresponder al nombre DNS de la máquina o servidor para el cuál se emite el certificado.pem -nodes -out /etc/ssl/certs/host-req. 902906969 Página 38 de 77 . Una vez se cuenta con el certificado de solicitud de firma. con la diferencia que carece de la firma de la entidad certificadora. En caso de un usuario el campo CN debe corresponder al nombre completo.L.509 del certificado definitivo. 6.Curso de introducción a la firma digital 6.509 del certificado. los cuales constituyen la estructura de atributos X.2 Creación y firma de un certificado certificado El certificado de solicitud de firma (Certificate Signing Request) es el paso previo en la creación de un certificado de servidor o usuario. Para crear este tipo de certificado se ejecuta: $ openssl req -new -newkey rsa:1024 -keyout /etc/ssl/private/host-key.4. este fichero contiene todos los atributos X. de la siguiente forma: $ openssl req -x509 -newkey rsa:1024 -keyout /etc/ssl/private/ca-key. Tel. este puede ser firmado WHITEBEARSOLUTIONS S. Curso de introducción a la firma digital por la entidad certificadora creando así un fichero con el certificado definitivo.der -inform DER -noout -enddate El comando anterior mostrará la fecha de caducidad del certificado cert.pem -out /etc/ssl/certs/host-cert.crt.4.der.pem (PEM-encoded): $ openssl x509 -in cert.L. Este proceso puede realizarse mediante la siguiente orden: $ openssl ca -in /etc/ssl/certs/host-req.pem -inform PEM -text -noout OpenSSL también permite mostrar atributos del certificado individualmente: $ openssl x509 -in cert. la forma más conveniente para cargar esa información es poner todo en un fichero de tipo PKCS#12. El siguiente ejemplo mostrará el contenido del certificado cert. 902906969 Página 39 de 77 .4 Exportar los certificados a otros formatos Normalmente muchas aplicaciones necesitan usar la llave privada de los certificados creados.pem -notext 6.crt. 6.4.3 Mostrando el contenido de un certificado Un certificado digital puede ser almacenado en muchos formatos.crt.pem WHITEBEARSOLUTIONS S. OpenSSL puede mostrar el contenido de ambos formatos usando comandos x509.crt. Los dos formatos mas comunes son PEM (Privacy Enhanced Mail) y DER (Definite Encoding Rules). Tel. de la siguiente forma: $ openssl pkcs12 -export -inkey /etc/ssl/private/host-key. Es muy sencillo de utilizar si disponemos de un certificado que incluya tanto la clave pública como la clave privada.4. Tel.pem -name “Nombre” -certfile /etc/ssl/cacert. 902906969 Página 40 de 77 .4. En los siguientes ejemplos supondremos que tenemos el certificado en formato PEM en el archivo cert.pem -caname “Nombre_de_CA” -out /etc/ssl/certs/host-cert.5 Revocación de certificados Cuando se desea revocar un certificado. puede ejecutarse el siguiente comando para conseguirlo: $ openssl ca -revoke /etc/ssl/certs/host-cer. debe generarse un fichero CRL el cuál contiene la información necesaria relativa a la lista de revocación.der 6. Este fichero puede generarse con el siguiente comando: $ openssl ca -gencrl -out /etc/ssl/ca/ca. si se desea crear un fichero en formato binario (DER) basta con ejecutar lo siguiente: $ openssl x509 -outform DER -in /etc/ssl/certs/ -out /etc/ssl/certs/host-cert.pem.es decir el típico archivo que se obtiene al exportar certificados desde el navegador.L. WHITEBEARSOLUTIONS S.pem Para hacer pública la lista de revocación de certificados.crl 6.p12 Los certificados se almacenan en modo texto en formato base64.Curso de introducción a la firma digital -in /etc/ssl/certs/host-cert.6 Cifrado asimétrico Los cifrados asimétricos mediante el algoritmo RSA se pueden realizar con el comando rsautl de openssl. Curso de introducción a la firma digital PARA CIFRAR: $ openssl rsautl -in texto.txt -out texto.rsa -inkey cert.pem -certin -encrypt PARA DESCIFRAR: $ openssl rsautl -in texto.rsa -out texto_original.txt -inkey cert.pem -certin -decrypt En cada caso se utiliza la par te necesaria del certificado, es decir la clave pública para cifrar y la clave privada para descifrar. Alternativamente se pueden proporcionar archivos tipo PEM, que según el caso sólo contengan la par te pública o la parte privada, entonces se omite la opción -certin. A diferencia del cifrado simétrico, el comando rsautl no admite textos largos, tan sólo de unos 100 caracteres. Esto es debido a que normalmente no se cifran grandes documentos mediante algoritmos asimétricos. Como ya se ha comentado los documentos se cifran con algoritmos simétricos sólo la clave secreta se cifra con algoritmos asimétricos. Una manera directa para cifrar un documento real es utilizar el comando smime que realiza el cifrado simétrico mediante des, 3DES, RC2 o AES y luego protege la clave secreta utilizando la clave pública del destinatario: $ openssl smime -encrypt -aes128 -in bigfile.doc -out bigfile.msg user.pem 6.4.7 Integración con directorios LDAP Es posible utilizar el directorio LDAP para almacenar y consultar los certificados de usuario, para esto es imprescindible que el servidor soporte objectclasses que WHITEBEARSOLUTIONS S.L. Tel. 902906969 Página 41 de 77 Curso de introducción a la firma digital permitan almacenar los certificados. certificationAuthority permite utilizar los certificateRevocationList y cACertificate. En particular el objectclass atributos: authorityRevocationList, El objectclass inetOrgPerson soporta el atributo binario userCertificate. Los certificados de usuario deben publicarse a través de ficheros en formato binario DER (Distingushed Encoding Rules). Para importar el certificado de CA al directorio LDAP basta con crear un fichero LDIF con los siguientes atributos: dn: cn=WhitebearsolutionsCA,dc=whitebearsolutions,dc=com objectClass: top objectClass: applicationProcess objectClass: certificationAuthority cn: WhitebearsolutionsCA cACertificate;binary:< file:///etc/ssl/ca/ca.crt certificateRevocationList;binary:< file:///etc/ssl/ca/ca.crl authorityRevocationList;binary: Para importar un certificado de usuario también es necesario crear un fichero LDIF con el atributo userCertificate, el cuál debe apuntar al fichero binario DER que contiene el certificado. dn: cn=user,ou=people,dc=whitebearsolutions,dc=com changetype: modify add: usercertificate userCertificate;binary:< file:///ruta/a/certificado.der Si se introducen caracteres con codificaciones diferentes a \emph{UTF-8}, deben convertirse en \emph{Unicode} o de lo contrario el formato será rechazado por la aplicación de actualización y el directorio LDAP. Para recodificar un fichero LDIF puede utilizarse la siguiente aplicación: #include <errno.h> #include <stdio.h> WHITEBEARSOLUTIONS S.L. Tel. 902906969 Página 42 de 77 Curso de introducción a la firma digital int main (int argc, char** argv) { register int c; while ((c = getchar()) != EOF) { if ((c & 0x80) == 0) { putchar (c); } else { putchar (0xC0 | (0x03 & (c >> 6))); putchar (0x80 | (0x3F & c)); } } if ( ! feof (stdin)) { errno = ferror (stdin); perror (argv[0]); } return 0; } Para compilar el código anterior basta con ubicarlo en un fichero con extensión (*.c) y ejecutar el siguiente comando: $ gcc -o utf8 utf8.c Obviamente después de esto se debe ejecutar el comando de actualización ldapmodify de la siguiente forma: $ ldapmodify -x -W -D "cn=Manager,ou=people, \\ dc=whitebearsolutions,dc=com" -f certificado.ldif Para extraer los certificados del servidor de directorio LDAP puede utilizarse una aplicación que posea esta caracterísitica o simplemente ejecutar un shell script como el siguiente: #!/bin/sh # Author: Ricardo Lorenzo # WhiteBearSolutions # WHITEBEARSOLUTIONS S.L. Tel. 902906969 Página 43 de 77 * || $# != 1 ]] . el código de dicho CGI puede ser como el siguiente: #!/bin/sh # Author: Ricardo Lorenzo # WhiteBearSolutions 2003-2005 # HOST=”192.168.0.dc=com" RESULT="" TYPE="cert" MAIL="" if [[ $1 == *\&* ]] . También es posible utilizar un CGI para extraer y consultar los certificados. Tel. then TYPE=${1#*\&*} WHITEBEARSOLUTIONS S.10" PROTOCOL="ldap" BASE_DN="dc=whitebearsolutions.L. do echo "${RESULT:NUM:64}" NUM=$(($NUM+64)) done echo "-----END CERTIFICATE-----" Este script extrae el certificado de la entrada de directorio que posea la dirección de correo electrónico que se pasa como parámetro.tls>" exit 0 fi RESULT=$(ldapsearch -x -LLL mail=$1 userCertificate) if [ -z "$RESULT" ]. 902906969 Página 44 de 77 . then exit 0 fi RESULT=${RESULT#*binary:: *} RESULT=${RESULT//\ } RESULT=$(echo "$RESULT" | tr -d "\n") NUM=0 echo "-----BEGIN CERTIFICATE-----" while [ $NUM -le "${#RESULT}" ] .Curso de introducción a la firma digital if [[ $1 != *@*. then echo "Uso: script <cuenta@servidor. 902906969 Página 45 de 77 .L. Tel. do echo "${RESULT:NUM:64}" NUM=$(($NUM+64)) done echo "-----END CERTIFICATE-----" } get_result() { if [[ $MAIL == "ca" ]] .Curso de introducción a la firma digital MAIL=${1%\\\&*} else MAIL=$1 fi # To lowercase mail MAIL=$(echo $MAIL | tr A-Z a-z) ### BEGIN FUNCTIONS ### parse_cert() { RESULT=${RESULT#*binary:: *} RESULT=${RESULT//\ } RESULT=$(echo "$RESULT" | tr -d "\n") NUM=0 echo "-----BEGIN CERTIFICATE-----" while [ $NUM -le "${#RESULT}" ] . then RESULT=$(ldapsearch -H "$PROTOCOL://$HOST" -b $BASE_DN -x -LLL cACertificate=*) else RESULT=$(ldapsearch -H "$PROTOCOL://$HOST" -b $BASE_DN -x -LLL mail=$MAIL userCertificate) fi } print_not_found() { echo "Content-type: text/html" echo "" echo "<html><head><title>WhiteBearSolutions Directory Security Tool</title></head>" echo "<body>" WHITEBEARSOLUTIONS S. </i>” echo "</td></tr>" echo "<tr><td>&
[email protected] de introducción a la firma digital echo "<br/><br/>" echo "<table align=\"center\" valign=\"top\" border=\"0\">" echo "<tr><td align=\"center\">" echo "<h2>WHITEBEARSOLUTIONS</h2>" echo "<b>Directory Security Tool</b>" echo "</td></tr>" echo "<tr><td> . 902906969 Página 46 de 77 .tls][& text | cert ]</i>" echo "</td></tr></table>" echo "</body></html>" } ### END FUNCTIONS ### WHITEBEARSOLUTIONS S.L.</td></tr>" echo "<tr><td align=\"center\">" echo "El certificado de la cuenta [<i>$MAIL</i>] <br/>no se encuentra en el servidor de directorio.metros incorrectos." echo "</td></tr></table>" echo “</body></html>” } print_syntax_error() { echo “Content-type: text/html” echo “” echo “<html><head><title>WhiteBearSolutions Directory Security Tool</title></head>” echo “<body>” echo “<br/><br/>" echo “<table align=\"center\" valign=\"top\" border=\"0\">" echo “<tr><td align=\"center\">" echo “<h2>WHITEBEARSOLUTIONS</h2>" echo “<b>Directory Security Tool</b>" echo “</td></tr>” echo “<tr><td> . Tel.</td></tr>” echo “<tr><td align=\”center\”>” echo “Error: <i>Pará.</td></tr>" echo "<tr><td align=\"center\">" echo "Sintaxis: <i>/cgi-bin/[ca | certificate. Curso de introducción a la firma digital if [[ $MAIL != "ca" && $MAIL != *@*. filename=\"whitebearsolutionsca. then print_not_found exit 0 fi if [[ $MAIL == "ca" ]] .* ]] . "install" ) if [[ $MAIL == "ca" ]] . name=\"${MAIL %\@*}.crt\"" echo "Content-Description: CA Digital Certificate" echo "Content-Disposition: attachment. Tel. then echo "Content-type: application/x-x509-ca-certificate..crt\"" echo "Content-Description: User Digital Certificate" echo "Content-Disposition: attachment. filename=\"${MAIL%\@*}. name=\"whitebearsolutions-ca.crt\"" fi echo "" parse_cert .crt\"" else echo "Content-type: application/x-x509-email-cert. then print_syntax_error exit 0 fi case $TYPE in "cert" ) get_result if [ -z "$RESULT" ] . then echo "Content-type: text/html" echo "" echo "<html><head><title>WhiteBearSolutions Directory Security Tool</title></head>" echo "<body>" echo "<br/><br/>" echo "<table align=\"center\" valign=\"top\" border=\"0\">" echo "<tr><td align=\"center\">" echo "<h2>WHITEBEARSOLUTIONS</h2>" echo "<b>Directory Security Tool</b>" WHITEBEARSOLUTIONS S.L. 902906969 Página 47 de 77 . “text” ) get_result. then print_not_found exit 0 fi echo "Content-type: application/x-x509-email-cert" echo "" parse_cert fi . Tel.Curso de introducción a la firma digital echo "</td></tr>" echo "<tr><td> ....ticamente. if [ -z "$RESULT" ] .L. 902906969 Página 48 de 77 .</td></tr>" echo "<tr><td align=\"center\">" echo "El certificado de CA no se puede instalar automá. *) print_syntax_error . esac WHITEBEARSOLUTIONS S. then print_not_found exit 0 fi echo "Content-type: text/plain" echo "" parse_cert ." echo "</td></tr></table>" echo "</body></html>" exit 0 else get_result if [ -z "$RESULT" ] . Éstas albergan ficheros y aplicaciones y suelen usarse para identificación y pago con monederos electrónicos.L.Curso de introducción a la firma digital 7 Tarjetas criptográficas (smart cards) 7. Por ejemplo. Tel. o tarjeta con circuito integrado (TCI). 902906969 Página 49 de 77 .1 Definición Una tarjeta inteligente (smart card). En estas tarjetas se puede almacenar de forma segura un certificado digital (y su clave privada) y firmar documentos o autenticarse con la tarjeta sin que el certificado salga de la tarjeta (sin que se instale en el almacén de certificados de un navegador web. las tarjetas más habituales son: Memoria: tarjetas que únicamente son un contenedor de ficheros pero que no albergan aplicaciones ejecutables. Éstas se usan generalmente en aplicaciones de identificación y control de acceso sin altos requisitos de seguridad. Aunque existe un diverso rango de aplicaciones. MIFARE. memoria volátil. hay dos categorías principales de TCI. Según las capacidades de su chip. Las Tarjetas de memoria contienen sólo componentes de memoria no volátil y posiblemente alguna lógica de seguridad. es cualquier tarjeta del tamaño de un bolsillo con circuitos integrados que permiten la ejecución de cierta lógica programada. ✔ ✔ ✔ Según los tipos de tarjetas y la estructura de su sistema operativo: WHITEBEARSOLUTIONS S. memoria persistente). por ejemplo) ya que es el procesador de la propia tarjeta el que realiza la firma. Microprocesadas: tarjetas con una estructura análoga a la de un ordenador (procesador. Un ejemplo de estas tarjetas son las emitidas por la Fábrica Nacional de Moneda y Timbre (FNMT) española para la firma digital (véase Ceres-FNMT). Criptográficas: tarjetas microprocesadas avanzadas en las que hay módulos hardware para la ejecución de algoritmos usados en cifrados y firmas digitales. También hay una implementación libre (de código abierto) llamada PC/SC Lite (proyecto MUSCLE) para sistemas WHITEBEARSOLUTIONS S. ✔ ✔ 7.1 PC/SC PC/SC (Personal Computer/Smart Card) es un conjunto de especificaciones para la integración de tarjetas inteligentes en ordenadores personales. 902906969 Página 50 de 77 .2 PCSD. Java Cards: Una Java Card es una tarjeta capaz de ejecutar miniaplicaciones Java. OpenSC y generación de tarjetas smart card 7.L. Disponen de un sistema operativo limitado con una serie de comandos básicos de lectura y escritura de las distintas secciones de memoria y pueden tener capacidades de seguridad para proteger el acceso a determinadas zonas de memoria. En este tipo de tarjetas el sistema operativo es una pequeña máquina virtual Java (JVM) y en ellas se pueden cargar dinámicamente aplicaciones desarrolladas específicamente para este entorno. Basadas en sistemas de ficheros. Tel. En particular se define un API de programación que permite a los desarrolladores trabajar de forma uniforme con lectores de tarjetas de distintos fabricantes (que cumplan con la especificación).2. El API de PC/SC está incorporada en sistemas Microsoft Windows 200x/XP y disponible también Microsoft Windows NT/9x. aplicaciones y comandos: Estas tarjetas disponen del equivalente a un sistema de ficheros compatible con el estándar ISO/IEC 7816 parte 4 y un sistema operativo en el que se incrustan una o más aplicaciones (durante el proceso de fabricación) que exponen una serie de comandos que se pueden invocar a través de APIs de programación.Curso de introducción a la firma digital ✔ Tarjetas de memoria: Tarjetas que únicamente son un contenedor de ficheros pero que no albergan aplicaciones ejecutables. Para la verificación de usuarios los certificados de CA y CRL's deben ser localmente accesibles. ofreciendo el código necesario para interactuar con una tarjeta. 7.3.alioth. 902906969 Página 51 de 77 de .Curso de introducción a la firma digital operativos GNU Linux.2. OpenSC también implementa el estándar PKCS#15 para el formato de las tarjetas.3 Autenticación con tarjetas y PAM El proyecto OpenSC ofrece un módulo PAM que permite la autenticación de usuarios en base a certificados X.tar.9.html y ejecutar lo siguiente: $ tar xvfz ccid-0./configure WHITEBEARSOLUTIONS S.509.gz $ cd ccid-0. Esta librería de desarrollo se instala con el siguiente comando: # apt-get install libpcsclite-dev libusb-dev Para compilar el driver CCID basta con descargarlo http://pcsclite.9. Tel.org/ccid.2 OpenSC El proyecto OpenSC ofrece un componente software para el uso de SmartCard. 7. 7.debian. Este proyecto también incluye código de emulación que es compatible con un gran número de tarjetas nacionales de identificación. Este proyecto ofrece un módulo que implementa el estándar PKCS#11 que puede ser utilizado por otras aplicaciones.L.3/ $ . El certificado y su clave privada deben ser accedidos por el módulo PKCS#11 apropiado.4 Práctica PCSDd y OpenSC Antes de empezar es necesario instalar las librerias PCSC-Lite y USB de desarrollo si lo que se desea es compilar el driver CCID (genérico para dispositivos USB) para poder acceder a las smart cards. org/).4. como se muestra a continuación: { int ret.org/ltc3xusb\_on\_kernel\_2\_6\_11.html ya que funciona bien bajo Linux 2.c de los fuentes del núcleo.1 Dispositivo C3PO LTC31 Este dispositivo lector de PC/SC de la empresa C3PO S.x el cuál está disponible en http://pcsclite.txt. 902906969 Página 52 de 77 .L (http://www.4.L.6.x pero da un fallo sobre Linux 2. WHITEBEARSOLUTIONS S.6. y existe un parche para el núcleo 2.patch.alioth.software-libre.alioth.x.Curso de introducción a la firma digital $ make $ su # make install En cualquier caso también puede instalarse en Debian utilizando lo siguiente: # apt-get install libccid 7. Básicamente este parche lo que hace es comentar dos líneas a partir de la línea 1090 del fichero drivers/usb/host/uhci-hcd. Este dispositivo no está soportado por el driver genérico CCID.debian. Tel.org/ccid.es) permite leer tarjetas Siemens HiPathSicurity CardOS y tarjetas criptograficas CERES de la Fábrica Nacional de Moneda y Timbre a través del proyecto OpenSC-CERES (http://opensc-ceres. como reza en su página web http://pcsclite. El fabricante está trabajando en una solución.c3po.debian. /* Can't have low-speed bulk transfers */ /* if (urb->dev->speed == USB_SPEED_LOW) return -EINVAL. c:1066:RFInitializeReader() \\ WHITEBEARSOLUTIONS S. las herramientas permiten verificar y realizar operaciones contra el dispositivo y las tarjetas smart card. para instalar PCSC-Lite utilizamos lo siguiente: # apt-get install libpcsclite1 El sistema middleware PCSCD se instala como demonio y carga automáticamente los drivers de los dispositivos.4. eurb. Si todo va bien detectará el dispositivo y mostrará una salida como esta: kernel: usb 1-1: new low speed USB device using uhci_hcd and address 5 pcscd: hotplug_libusb.2 Software de verificación y gestión del dispositivo Para un sencillo acceso a las tarjetas puede instalarse un sistema middleware y algunas herramientas para acceder al dispositivo lector. el sistema middleware necesita del proyecto PCSC-Lite para la gestión de las smartcard y los dispositivos.c:371:HPAddHotPluggable() \\ Adding USB device: 001:005 pcscd: readerfactory. urb). Estos dos paquetes se instalan con el comando: # apt-get install pcscd pcsc-tools El demonio PCSCD se arranca automáticamente al instalar el paquete para verificar que reconoce el dispositivo basta con conectarlo a través de USB y verificar la salida de mensajes (dmesg o tail -f /var/log/messages). 7. Tel. urb. if (ret == -EINPROGRESS) uhci_inc_fsbr(uhci.L.Curso de introducción a la firma digital */ ret = uhci_submit_common(uhci. uhci->skel_bulk_qh). 902906969 Página 53 de 77 .
[email protected]:1009:init_driver DriverOptions: 0x0000 pcscd: ifdhandler.c:67:IFDHCreateChannelByName \\ lun: 0.c:235:OpenUSBByName ProductString: \\ Generic CCID reader v0.c:378:OpenUSBByName Using USB \\ bus/device: 001/005 Para verificar la operativa del dispositivo podemos utilizar la herramienta pcsc_scan la cuál analiza todos los lectores conectados y muestra las operaciones que se realizan con el lector.fr) pcscd: ccid_usb.3 pcscd: ccid_usb. 902906969 Página 54 de 77 . Tel. device: usb:0783/0003:libusb:001:005 pcscd: ccid_usb. or (at your option) \\ any later version. como inserciones o extracciones de tarjeta.c:225:OpenUSBByName Manufacturer: \\ Ludovic Rousseau (ludovic.0 pcscd: ifdhandler.c:376:OpenUSBByName Found \\ Vendor/Product: 0783/0003 (LTC31) pcscd: ccid_usb.c:241:OpenUSBByName Copyright: This \\ driver is protected by terms of the GNU General \\ Public License version 2.c:998:init_driver LogLevel: 0x0003 pcscd: ifdhandler.L.Curso de introducción a la firma digital Attempting startup of LTC31 00 00. Para ejecutar esta herramienta basta con escribir: $ pcsc_scan WHITEBEARSOLUTIONS S. pcscd: readerfactory.9.c:940:RFBindFunctions() \\ Loading IFD Handler 3. pcscd: ccid_usb. podemos verificar y comprobar el acceso y lectura de las tarjetas a través de comandos simples. puede utilizarse una aplicación como OpenSC.4.3 Software de gestión de las tarjetas Para la gestión de las tarjetas una vez instalado correctamente el dispositivo. Para conocer cuantos y cuales son los lectores conectados al sistema. De esta forma si queremos borrar la información de una tarjeta ejecutamos: $ pkcs15-init -r $NUMERO_DEL_READER --erase-card WHITEBEARSOLUTIONS S.Curso de introducción a la firma digital 7. podemos escribir: $ opensc-tool --list-drivers La operación con tarjetas es relativamente sencilla utilizando las herramientas de OpenSC. Tel. 902906969 Página 55 de 77 . este módulo también es un paquete de Debian el cuál puede instalarse mediante el comando: # apt-get install libpam-opensc Una vez instalado y antes de describir las operaciones básicas.L. la cuál puede ser instalada de forma muy sencilla en un sistema Debian: # apt-get install opensc También es posible instalar el módulo PAM para realizar las autenticaciones automáticas en consola. ejecutamos: $ opensc-tool --list-readers De la misma forma para conocer los drivers de tarjetas que se encuentran disponibles. L.1 La Fábrica Nacional de Moneda y Timbre como autoridad de certificación. 8. de Organización y Funcionamiento de la Administración General del Estado. ejercerá respecto de ella la dirección estratégica y el control de eficacia en los términos previstos en la citada Ley. patrimonio y tesorería propios y autonomía de gestión en los términos previstos en dicha Ley. a través de la Subsecretaría de Economía y Hacienda. Está adscrita al Ministerio de Economía y Hacienda.Real Casa de la Moneda (FNMT-RCM) es una entidad pública empresarial de las previstas en la Ley 6/1997.pem $ pkcs15-init --auth-id 1 --pin "1234" --store-certificate newcert. ejecutamos lo siguiente: $ pkcs15-init --no-so-pin --create-pkcs15 --profile pkcs15 $ pkcs15-init --auth-id 1 --store-pin --pin "1234" --puk "123456" --label "PIN" $ pkcs15-init --auth-id 1 --pin "1234" --key-usage sign. WHITEBEARSOLUTIONS S.1 7. el cual. como organismo público. que. tiene personalidad jurídica pública diferenciada. de 14 de abril. Tel. 902906969 Página 56 de 77 . CERES.pem 8 Autoridades de Certificación y Listas de Revocación-RCM como prestador de Servicios de Certificación.Curso de introducción a la firma digital o bien. Para crear una estructura básica en la tarjeta. el cuál se muestra usando opensc-tool --listreaders.decrypt --store-privatekey newkey. La Fábrica Nacional de Moneda y Timbre . $ pkcs15-init -E En el comando anterior la variable $NUMERO_DEL_READER se refiere al número indicativo del lector de tarjetas. La prestación. fabricación y suministro de los títulos o certificados de usuario o soportes en tarjeta necesarios a tal fin. de acuerdo con lo establecido en la Página 57 de 77 ✔ ✔ ✔ ✔ ✔ ✔ ✔ WHITEBEARSOLUTIONS S. Tel. así como cualquier documento relativo a otros juegos que le sean encomendados por las Administraciones públicas o sus organismos públicos. La estampación de toda clase de documentos. en las comunicaciones a través de técnicas y medios electrónicos. de conformidad con su legislación reguladora y en los términos que se acuerde con el Banco de España o banco emisor correspondiente. en su caso. informáticos y telemáticos (EIT). en el ámbito de las Administraciones públicas y sus organismos públicos. La impresión de billetes de banco. técnicos y administrativos. La elaboración de los documentos por los que se hacen efectivos cualesquiera tributos o precios públicos. de acuerdo con la legislación aplicable. de servicios de seguridad. La elaboración de cospeles y la acuñación de medallas y trabajos análogos para el Estado o particulares. La elaboración de documentos de valor o de seguridad que le sean encargados por cualquier Administración pública o sus organismos públicos. impresos y listas de Lotería Nacional.L. sellos. vinculados o dependientes. para organismos o entidades públicas o privadas. para el Estado o.Curso de introducción a la firma digital Sus funciones son: La acuñación de monedas de todas clases. vinculados o dependientes. 902906969 . signos o efectos postales y de franqueo. vinculados o dependientes. billetes. así como la expedición. de acuerdo con lo establecido por la legislación aplicable. ✔ ✔ 8. informáticos o telemáticos. y en su normativa de desarrollo o. así como en la expedición. Tel.2 7. El objetivo principal de CERES es la securización de las comunicaciones WHITEBEARSOLUTIONS S.2 de la Ley 6/1997. confidencialidad e integridad. y demás de aplicación. sin perjuicio del resto de supuestos en que resulte de aplicación. de la Ley de Régimen Jurídico de las Administraciones Públicas y del Procedimiento Administrativo Común. empresas u otras instituciones y administraciones públicas a través de las redes abiertas de comunicación. En el ejercicio de las facultades derivadas de este apartado. en su caso. fabricación y suministro de títulos o certificados de usuario y soportes o tarjetas destinados al ámbito privado. con el objetivo de que CERES facilite al máximo sus relaciones a través de las nuevas redes de comunicaciones. de 30 de diciembre. Las posibilidades de CERES cubren todas aquellas relaciones entre las distintas Administraciones (Central. en los términos que establezcan las disposiciones legales correspondientes. Autonómica y Local) y los ciudadanos que necesiten ser securizadas en términos de garantía de identidad. la Fábrica Nacional de Moneda y Timbre-Real Casa de la Moneda quedará sometida a lo dispuesto en el artículo 2. de acuerdo con el artículo 53.L. 902906969 Página 58 de 77 . consiste en líneas generales en establecer una Entidad Pública de Certificación. así como a la normativa que se cita en este apartado. En la prestación de servicios electrónicos.Curso de introducción a la firma digital Ley 66/1997.2. tanto nacionales como extranjeras. la entidad actuará a todos los efectos en régimen de derecho privado. de 14 de abril. para personas o entidades públicas o privadas.2 Proyecto CERES El denominado proyecto CERES (CERficación ESpañola) que lidera la Fábrica Nacional de Moneda y Timbre. La realización de actividades o prestación de servicios relacionados con los ramos propios de la entidad a que se refieren los apartados anteriores. Cualquier otro que se le atribuya por disposición legal o reglamentaria. que permita autentificar y garantizar la confidencialidad de las comunicaciones entre ciudadanos. en el caso de máxima seguridad. entre otras cosas. 8. CERES utiliza técnicas y sistemas criptográficos basados en lo que se conoce como sistema de clave pública. no es necesario conocer ninguna técnica criptográfica para realizar o verificar una firma electrónica o cifrar o descifrar un mensaje. se encuentra. ✔ ✔ 8. Página 59 de 77 WHITEBEARSOLUTIONS S. las condiciones aplicables a la solicitud. siendo un intermediario transparente al usuario que garantizará a ciudadanos y Administraciones la identidad de ambos partícipes en una comunicación. al igual que su capacidad de firma. el perfil criptográfico queda almacenado en un fichero.3 7. En caso de no utilizar tarjeta. siendo necesario también un PIN de acceso.3 Buenas prácticas en el uso de certificados La Declaración de Prácticas de Certificación es un documento elaborado por una Autoridad de Certificación que recoge o regula la prestación de los servicios de certificación por parte de dicha Autoridad de Certificación en su condición de Prestador de Servicios de Certificación. expedición. uso.3. 902906969 . así como la confidencialidad e integridad del mensaje enviado. suspensión y extinción de la vigencia de los Certificados.L. es decir. almacenada en una tarjeta inteligente. Se regula. Para ello.1 Aspectos generales ✔ La Fábrica Nacional de Moneda y Timbre-Real Casa de la Moneda (FNMTRCM). Tel. con dos características básicas: La identidad del usuario. procederá a la expedición de los Certificados a todos los interesados que hubieran formulado su solicitud y suscriban el presente documento. que no puede ser accesible salvo por su propietario cuando introduzca el número de identificación personal. similar a la clave de una tarjeta de crédito.Curso de introducción a la firma digital electrónicas con la Administración. El sistema es completamente transparente al usuario. la gestión de los Datos de creación y verificación de Firma y de los Certificados. en este caso la FNMT-RCM. resolución judicial o administrativa. en la versión 3 de la recomendación internacional X. Fuera de la Comunidad Electrónica no se debe confiar en un Certificado o en una firma electrónica que se base en un Certificado . en cuanto a su formato. 59/2003 de Firma Electrónica. ✔ 8. ✔ ✔ 8.L. La expedición de Certificados y la anotación en el registro correspondiente por la FNMT-RCM otorgará a los interesados la condición de Entidad usuaria de la Comunidad Electrónica de la FNMT-RCM. de producirse esta confianza por parte de un tercero.3. En cualquier caso. Página 60 de 77 WHITEBEARSOLUTIONS S. mayores de edad (o menores emancipados) y en posesión del correspondiente DNI o NIE (número de identificación de extranjeros).3 Condiciones de utilización ✔ Uso de los Certificados: Para poder usar los Certificados o confiar en documentos firmados electrónicamente con base en los mismos. los cuales tendrán la condición de confidenciales. y se carecerá de legitimidad alguna para reclamar o emprender acciones judiciales contra la FNMT-RCM por daños.Curso de introducción a la firma digital ✔ Los Solicitantes de Certificados deberán ser personas físicas. 902906969 . no se obtendrá cobertura de la presente Declaración de Prácticas de Certificación. El Certificado a expedir por la FNMT–RCM se basa. y adquirir la condición de Entidad usuaria. sin perjuicio de lo que se ordenare por Ley. Tel.509 de la UIT y será expedido con la cualidad de Certificado Reconocido con base en los criterios para ello establecido en la Ley núm.2 Características de los certificados ✔ La FNMT-RCM no facilitará información sobre los procesos técnicos de producción y expedición de Certificados.3. se deberá previamente formar parte de la Comunidad Electrónica. La emisión y firma electrónica del Certificado se realizará por la FNMT-RCM. la no revelación de ninguno de los datos mencionados . (ii) Actuar con diligencia respecto de la custodia y conservación de los Datos de creación de Firma o cualquier otra información sensible como Claves. (iv) Prestar servicios a título gratuito u oneroso. palabras de acceso. (ii) Firmar electrónicamente software o componentes. (iii) Conocer y cumplir las condiciones de utilización de los Certificados previstos en la Declaración de Prácticas de Certificación y. códigos de activación del Certificado . (v) Realizar transacciones económicas superiores a 100 €. no se podrá emplear este tipo de Certificado para: (i) Firmar electrónicamente otro certificado. etc.L. salvo que: Uno de los intervinientes sea una Entidad usuaria de Derecho Público o medie autorización expresa y escrita de la FNMT-RCM para hacerlo y. (iv) Conocer y cumplir tanto la Declaración de Prácticas de Certificación como las modificaciones que en ella se produzcan. modificación o uso no autorizado de los Datos de creación de Firma. solicitando además la revocación del correspondiente Certificado. en ese caso. ✔ ○ ✔ Obligaciones del Suscriptor: (i) Aportar información verdadera en la solicitud de los Certificados. (viii) Notificar diligentemente a la FNMT-RCM o a cualquier otra Oficina de Registro cualquier modificación de los datos Página 61 de 77 WHITEBEARSOLUTIONS S. Límites de uso de los Certificados: Incluso dentro del ámbito de la Comunidad Electrónica. y notificar a la Oficina de Registro cualquier error o inexactitud . la Firma electrónica reconocida del Prestador de Servicios de Certificación emisor del Certificado. (v) Notificar diligentemente a la FNMT-RCM o a cualquier otra Oficina de Registro. y mantenerla actualizada. las limitaciones de uso de los Certificados . o conflictos provenientes del uso o confianza en un Certificado. lo que comprende en todo caso.Curso de introducción a la firma digital perjuicios. prestar servicios de notificación. números de identificación personal. generar Listas de Revocación. Tel.. en particular. las circunstancias o sospecha de pérdida de la Confidencialidad. así como de los soportes de los Certificados. (vi) Revisar la información contenida en el Certificado . (iii) Generar sellos de tiempo para procedimientos de Fechado electrónico. (vii) Verificar con carácter previo a confiar en los Certificados. como por ejemplo serían a título enunciativo: prestar servicios de OCSP. la divulgación. 902906969 . en las condiciones que se establezcan en dicha autorización. (vi) Tomar medidas contra la falsificación de Certificados . (x) No usar el Certificado fuera de la Comunidad Electrónica. (vii) Conservar registrada por cualquier medio seguro toda la información y Página 62 de 77 ✔ ○ ○ WHITEBEARSOLUTIONS S. 59/2003 de Firma Electrónica. cuando el Certificado caduque. Tel. o cuando sea revocado. (ii) Verificar que la información contenida en el Certificado es exacta y que incluye toda la información requerida para un Certificado Reconocido. La FNMT-RCM con carácter general deberá: (i) No almacenar ni copiar los Datos de creación de Firma de la persona a la que presta sus servicios. (ii) Demostrar la fiabilidad necesaria para prestar servicios de certificación. constituyendo desde entonces los Datos de verificación de Firma del Suscriptor. 902906969 . y en su caso criptográfica. (v) Utilizar sistemas y productos fiables que doten de la seguridad técnica. conocimiento y experiencia necesarios para la prestación de los servicios de certificación ofrecidos y los procedimientos de seguridad y de gestión adecuados en el ámbito de la firma electrónica. (iv) Proporcionar al Solicitante de forma electrónica y gratuita la informa ción exigible en el articulo 18. Esta información se proporciona a través de la Declaración de Prácticas de Certificación. (ix) Devolver o destruir el Certificado cuando así lo exija la FNMT-RCM o la Oficina de Registro . (iii) Garantizar que puede determinarse con precisión la fecha y la hora en las que se expidió un Certificado o se extinguió o suspendió su vigencia.L. a los procesos de certificación a los que sirve de soporte. apartado b) de la Ley núm. (iv) Emplear personal con la cualificación.Curso de introducción a la firma digital aportados en la solicitud del Certificado. 59/2003 de Firma Electrónica antes de la expedición del Certificado . solicitando cuando consecuentemente fuere pertinente la revocación del mismo . (iii) Comprobar que el interesado en solicitar la emisión del Certificado está en posesión de la Clave Privada correspondiente a la Clave Pública que posteriormente constará en el Certificado. Obligaciones de la FNMT-RCM como Prestador de Servicios de Certificación: La FNMT-RCM con carácter previo a la emisión del Certificado deberá: (i) Comprobar la identidad y circunstancias personales de los Solicitantes de Certificado con arreglo al artículo 13 de la Ley núm. previo consentimiento expreso del Suscriptor . En los demás casos. incapacidad total sobrevenida total o parcial. de manera que éste ya no fuera conforme a la realidad. la extinción de la eficacia de un Certificado surtirá efectos desde la fecha en que la FNMT–RCM tenga conocimiento cierto de cualquiera de los hechos determinantes de ella y así lo haga constar en la Lista de Revocación . al menos durante 15 años contados desde el momento de su expedición. la persona física o Persona jurídica representada por éste. de cualquiera de ellos. de manera que puedan verificarse las firmas efectuadas con el mismo . en los supuestos de expiración de su período de validez y de cese de actividad del Prestador de Servicios de Certificación tendrá lugar desde que estas circunstancias se produzcan. WHITEBEARSOLUTIONS S. cese en el cargo.Curso de introducción a la firma digital documentación relativa a un Certificado Reconocido y la Declaración de Prácticas de Certificación vigente en cada momento. terminación de la representación o extinción de la Persona jurídica representada. (ii) Revocación solicitada por el Suscriptor.L. salvo que. (iii) Violación o puesta en peligro del secreto de los Datos de creación de Firma del firmante o del Prestador de Servicios de Certificación o utilización indebida de dichos datos por un tercero. (v) Fallecimiento o extinción de la personalidad jurídica del firmante o del Representado. (viii) Cualquier otra causa lícita prevista en la Declaración de Prácticas de Certificación. Tel. (vi) Cese en su actividad como Prestador de Servicios de Certificación de la FNMT-RCM. 902906969 Página 63 de 77 ✔ . (iv) Resolución judicial o administrativa que lo ordene. (viii) Utilizar sistemas fiables para almacenar Certificados Reconocidos que permitan comprobar su autenticidad e impedir que personas no autorizadas alteren los datos. un tercero autorizado o la persona física solicitante de un Certificado de Persona j urídica. como las relativas al cargo o a las facultades de representación. La pérdida de eficacia de los Certificados. (vii) Alteración de los datos aportados para la obtención del Certificado o modificación de las circunstancias verificadas para la expedición del Certificado . los Certificados expedidos por aquél sean transferidos a otro Prestador de Servicios de Certificación. Vigencia de los Certificados : Los Certificados quedarán sin efecto en los siguientes casos: (i) Expiración del período de validez del Certificado . PP. 902906969 Página 64 de 77 . están ofreciendo son: Presentación de recursos y reclamaciones Cumplimentación de los datos del censo de población y viviendas Presentación y liquidación de impuestos Consulta e inscripción en el padrón municipal Consulta de multas de circulación Domiciliación bancaria de tributos municipales (IBI. Tel.L. También es posible añadir una firma digital criptográfica a un mensaje. que viene a ser un reemplazo del PGP.es/convenio/dpc.Curso de introducción a la firma digital http://www.) Consulta y trámites para solicitud de subvenciones Consulta de asignación de colegios electorales Actuaciones comunicadas Firma electrónica de documentos oficiales y expedición de copias compulsadas.4 Uso de certificados orientados a la Administración Pública Algunos ejemplos de los servicios al ciudadano que las distintas AA. ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ 9 GNUPG 9.1 Definición GNU Privacy Guard es una herramienta para cifrado y firmas digitales. Esta aplicación cifra los mensajes usando pares de claves individuales asimétricas generadas por los usuarios. un ejemplo de ello es depositándolas en los servidores de claves. WHITEBEARSOLUTIONS S. Siempre deben ser compartidas cuidadosamente para prevenir falsas identidades por la corrupción de las claves públicas. IAE..fnmt. IVTM.cert. Las claves públicas pueden ser compartidas con otros usuarios de muchas maneras.pdf 8.4 7.. para empezar el trabajo y las operaciones con la herramienta. En su lugar usa una serie de algoritmos no patentados como ElGamal.2 Funcionamiento GPG es un software de cifrado híbrido que usa una combinación convencional de criptografía de claves simétricas para la rapidez y criptografía de claves públicas para el fácil compartimiento de claves seguras. Este modo de operación es parte del estándar OpenPGP y ha sido parte del PGP desde su primera versión. Triple DES (3DES). La primera pregunta es qué algoritmo se va a usar. WHITEBEARSOLUTIONS S. 902906969 Página 65 de 77 . entre estos se encuentra el algoritmo de cifrado IDEA que está presente en PGP casi desde sus inicios.L.3 GPG versión SMIME Esta versión ofrece una implementación SMIME de uso similar a la implementación OpenPGP. AES y Blowfish. GPG no usa algoritmos de software que están restringidos por patentes. sin embargo este puede requerir una licencia para usuarios de algunos países en donde esté patentada IDEA. típicamente usando recipientes de claves públicas para cifrar una sesión de clave que es usada una vez. También es posible usar IDEA en GPG descargando un plugin extra. $ gpg --gen-key Con este comando se genera un nuevo par de claves (el par se compone de clave privada y clave pública). Tel. 9. generamos una nueva clave.Curso de introducción a la firma digital de esta manera la totalidad del mensaje y el remitente pueden ser verificados en caso de que se desconfíe de una correspondencia en particular. 9. 9. CAST5.4 Practica GPG En primer lugar. Al exportar. aunque mucha gente opina que debería ser de 2048 (que es el máximo con GnuPG en este momento). menor será el riesgo de que el mensaje sea descodificado si es interceptado. Por ejemplo. o si se ha olvidado la contraseña de ésta. Cuando la seguridad es una prioridad más alta que el tiempo. El tamaño mínimo que requiere GnuPG es de 768 bits. Tel.Curso de introducción a la firma digital La siguiente pregunta es la longitud de la clave. pero con la opción -o podemos especificar que sea enviado a un fichero. El resultado es enviado por defecto a stdout. Cuanto mayor sea una clave. Para DSA 1024 es un tamaño fijo. 902906969 Página 66 de 77 . podemos mover las claves públicas en ficheros que podemos importar al anillo local de certificados mediante el comando “importar” que podemos ejecutar de la siguiente forma: $ gpg --import <fichero> Existen diversos motivos por los que se puede desear revocar una clave. Es necesario elegir entre la seguridad y el tiempo de los procesos. Se recomienda usar la opción -a para que el resultado sea un fichero de 7-bit ASCII en lugar de un fichero binario. En cualquier caso la orden de revocación es: $ gpg --gen-revoke WHITEBEARSOLUTIONS S. pero también aumentará el tiempo que empleará para el cálculo de los procesos. Una vez generada la clave. Esta parte depende de los requerimientos del usuario. la opción es elegir el tamaño de clave más grande que se permita. podremos realizar otra de las operaciones importantes como la de exportarla. si la clave secreta ha sido robada.L. La orden para exportar la clave es: $ gpg --export <uid> Si no designamos un identificador de usuario “uid” todas las claves presentes en el anillo de claves serán exportadas. L. por ejemplo. La operativa con GNUPG genera una base de datos local en un fichero que constituye el anillo local de claves. usar: $ gpg --list-sigs Para ver las huellas digitales (fingerprints): $ gpg --fingerprint Las “huellas digitales” sirven para confirmar la identidad de la persona. de lo contrario cualquiera podría hacer un certificado y revocar una clave que no le perteneciera. Para poder ver también las firmas en cada clave. Para consultar o gestionar esta base de datos de claves la herramienta cuenta con múltiples opciones como las siguientes: $ gpg --list-keys Con el anterior comando se muestran todas las claves presentes. Esta orden nos muestra una lista alfanumérica que podemos comprobar.Curso de introducción a la firma digital Esto creará un “certificado de revocación”. Tel. Para ver el listado de las claves secretas: $ gpg --list-secret-keys Para eliminar una clave pública: $ gpg --delete-key <uid> WHITEBEARSOLUTIONS S. por teléfono. 902906969 Página 67 de 77 . Para ello es necesaria la clave secreta. se nos llevará al subcomando: Command> sign Basándose en las firmas existentes en una clave y en el “grado de confianza”. ya se puede despedir uno del valor del cifrado. El grado de confianza (ownertrust) es un valor que el propietario de una clave usa para determinar el nivel de confianza para una cierta clave. Como se ha mencionado anteriormente en la introducción. Tel. Cuando tenemos la certeza de que una clave es válida y pertenece a quien dice. entre otras cosas. Para evitar estos riesgos está la posibilidad de firmar las claves. 902906969 Página 68 de 77 . de modo que otros que confíen en nuestra firma la puedan dar por válida.Curso de introducción a la firma digital Para eliminar una clave secreta: $ gpg --delete-secret-key Existe otra orden que es relevante para trabajar con las claves: $ gpg --edit-key <uid> Para esta orden necesitaremos la contraseña. podemos firmarla digitalmente. Para hacer esto podemos ejecutar: $ gpg --edit-key <uid> Una vez aquí. editar la fecha de caducidad. y podemos. GnuPG determina la validez de las claves.L. existe un talón de Aquiles en el sistema: la autenticación de las claves públicas. añadir una huella digital y firmar la clave. Estos valores pueden ser: WHITEBEARSOLUTIONS S. Si se obtiene una clave pública errónea. L. es necesario seleccionar una de ellas como activa. Tel. La información sobre la confianza no se guarda en el mismo fichero que el de las claves. Para ello se puede usar la opción -u <uid> o bien la opción --local-user <uid> También podemos agregar la siguiente línea en el fichero de configuración $HOME/. se puede hacerse con la opción: -r WHITEBEARSOLUTIONS S. Si esto es así. sino en otro diferente. tengamos más de una clave privada en nuestro anillo de claves privadas. 902906969 Página 69 de 77 .Curso de introducción a la firma digital ✔ ✔ ✔ ✔ 1: No sé.gnupg/options: default-key <uid> Si se desea indicar el “uid” de un destinatario para cifrar un fichero con su clave. y rechazar la confianza en ésta. no conozco 2: Confianza nula 3: Confianza marginal 4: Confianza plena Si el usuario no se fía de una firma puede indicarlo así. Es posible que cuando estemos cifrando o descifrando un documento. Para cifrar un fichero con la clave de otro usuario: $ gpg -er destinatario <fichero> Pero como ya hemos comentado anteriormente esto produciría un criptograma con el nombre de fichero. se puede añadir la opción --armor para que el criptograma sea del tipo 7-bit ASCII: $ gpg -a -er destinatario <fichero> Esta comando producirá un criptograma con la extensión fichero. Ya que los WHITEBEARSOLUTIONS S.asc. podemos cifrar y descifrar ficheros para lo cuál podemos empezar con la siguiente orden: $ gpg -e <fichero> o bien la siguiente: $ gpg --encrypt <fichero> Estas órdenes cifrarían un fichero con la clave que hayamos definido por defecto en el fichero de configuración options.gpg.L. Tel.Curso de introducción a la firma digital o bien la opción: --recipient Una vez ajustado todo lo anterior. 902906969 Página 70 de 77 . Firmar y verificar firmas es una parte importante de los sistemas de criptografía de clave pública. pero puede ser redireccionado con la opción: -o <fichero> Con esto se crea un fichero con cualquier otro nombre. es opcional. 902906969 Página 71 de 77 . para lo que usa su propia clave privada. Para evitar esto basta con firmar digitalmente todo lo que se cifre. Tel.L. existe el riesgo de que alguien lo haga suplantando nuestra identidad. ficheros. podemos empezar con el siguiente comando: $ gpg [-d] <fichero> o bien: $ gpg [--decrypt] <fichero> En este caso no es necesaria la opción. El usuario puede firmar una serie de datos o un documento en varios modos. Para descifrar un fichero cifrado. WHITEBEARSOLUTIONS S. Para verificar las firmas de otros usuarios. ya que la orden gpg usa por defecto la opción: --decrypt En todos los casos que hemos nombrado aquí el resultado está direccionado a stdout. es necesario poseer previamente las claves públicas de éstos. y otro tipo de datos que enviamos codificados van cifrados con la clave del destinatario.Curso de introducción a la firma digital mensajes. Curso de introducción a la firma digital Para firmar un fichero con la clave propia se usa la orden $ gpg -s <fichero> Esta orden. también comprime el fichero.L. se usa la orden: $ gpg --clearsign <fichero> De este modo. o un ejecutable. 902906969 Página 72 de 77 . para distribuirlo. son legibles con un editor. Cuando queramos que la firma aparezca en un fichero separado. ya que la firma se basa en el binario pero va en un fichero aparte. usaremos la orden $ gpg -b <fichero> o bien: $ gpg --detach-sign <fichero> Este es el modo que MIME/PGP usa para firmar los mensajes del correo electrónico. Este modo es muy útil cuando tengamos que firmar un binario. La opción --armor también puede ser de utilidad en estos casos. Tel. además de producir una firma digital. como por ejemplo un archivo comprimido. A menudo debemos cifrar y firmar un fichero a un tiempo. por lo que el resultado es un fichero de tipo binario (y por tanto ilegible). sobre todo cuando se trata de firmar un fichero binario. tanto la firma como los datos firmados. por ejemplo. La orden que usaríamos en este caso sería WHITEBEARSOLUTIONS S. Para producir un fichero firmado legible (ascii). la firma es verificada automáticamente. garantizando una protección razonable durante la comunicación cliente-servidor.org/.Curso de introducción a la firma digital $ gpg [-u remitente] [-r destinatario] [--armor] --sign --encrypt <fichero> La funcionalidad de las opciones -u (--local-user) y -r (--recipient) es la que se ha descrito ya anteriormente. inventada en 1996 por Netscape Communications Corporation. 902906969 Página 73 de 77 . Tel. Al descifrar un criptograma que también haya sido firmado digitalmente. Es ampliamente utilizado en la red mundial (WWW o World Wide Web) para comunicaciones como transacciones bancarias y pago de bienes y servicios.1.1 Acerca de mod_ssl WHITEBEARSOLUTIONS S. El servicio utiliza el puerto 443 por TCP para realizar las comunicaciones (la comunicación normal para HTTP utiliza el 80 por TCP).dominio. El esquema URI (Uniform Resource Identifier o Identificador Uniforme de Recursos) es. 10.1 Práctica Apache/SSL HTTPS es la versión segura del protocolo HTTP. En todo caso es posible verificar la firma simplemente con la orden: $ gpg [--verify] <fichero> 10 Otras aplicaciones 10. idéntico al de HTTP (http:). utilizándose como https: seguido del subconjunto denominado URL (Uniform Resource Locator o Localizador Uniforme de Recursos). No es un protocolo separado de HTTP. Se trata de una combinación de este último con un mecanismo de transporte SSL o TLS.L. comparando sintaxis. Ejemplo: https://www. puesto que se utilizarán ficheros de inclusión. y un directorio dedicado para cada sitio virtual SSL.org Acceder al directorio que se acaba de crear. Engeschall. con extensión *. El paquete mod_ssl instala el fichero /etc/httpd/conf.conf. Debido a la naturaleza de los protocolos SSL y TLS. es conveniente crear un directorio específico para almacenar los certificados de cada sitio virtual SSL. dentro del directorio /etc/httpd/conf. derivado del trabajo de Ben Laurie. $ mkdir -m 0700 /etc/ssl/midominio. debe ser solamente accesible para el usuario root. el cual provee soporte para SSL versiones 2 y 3 y TLS versión 1. no es posible utilizar múltiples sitios de red virtuales con soporte SSL/TLS utilizando una misma dirección IP. Igualmente. 10.1. por motivos de seguridad. por motivos de seguridad. brindando un punto de retorno en el caso de que algo saliera mal. El directorio. mismo que no es necesario modificar. debe ser solamente accesible para el usuario root. Cada certificado utilizado requerirá una dirección IP independiente en el sitio de red virtual.d/ssl. 10.1. 902906969 Página 74 de 77 .Curso de introducción a la firma digital mod\_ssl es un módulo para el servidor HTTP Apache. $ mkdir -m 0700 /etc/ssl A fin de mantener cierta organización. Es una contribución de Ralf S.d/.3 Procedimientos Acceda al sistema como el usuario root. a fin de respetar la configuración predeterminada y podre contar con la misma. Tel.conf. que es funcional.2 Requisitos Es necesario disponer de una dirección IP pública para cada sitio de red virtual que se quiera configurar con soporte SSL/TLS.L. WHITEBEARSOLUTIONS S. Se debe crear el directorio donde se almacenarán los certificados para todos los sitios SSL. 1. WHITEBEARSOLUTIONS S. la cual se cifra utilizado Triple DES (Data Encryption Standard).crt) firmado por dicha autoridad.key -out server. almacenado en formato PEM de modo que sea interpretable como texto ASCII. tras el correspondiente pago.csr). se requerirá de interacción del administrador cada vez que se tenga que iniciar. sin embargo. En el ejemplo a continuación.pem) solo sea accesible para root. envían de vuelta un certificado (server. o reiniciar. resulta conveniente generar una clave sin Triple DES.key -out server. Ésta es la razón por la cual se crea el directorio /etc/ssl/midominio. la cual permita iniciar normalmente. como Verisign.Curso de introducción a la firma digital $ cd /etc/ssl/midominio. ingresando la clave de acceso de la clave RSA.org con permiso de acceso solo para root. debido a que resultaría poco práctico tener que ingresar una clave de acceso cada vez que se inicie el servicio httpd. quienes. sin interacción alguna.key 1024 Si se utiliza este fichero (server.pem Opcionalmente se genera un fichero de petición CSR (Certificate Signing Request) que se hace llegar a una RA (Registration Authority o Autoridad de Registro). 902906969 Página 75 de 77 . $ openssl req -new -key server.org 10.509 en el que se establece una validez por 730 días (dos años).4 Generando clave y certificado Se debe crear una clave con algoritmo RSA de 1024 octetos y estructura x509. $ openssl genrsa -des3 -out server. al servicio httpd. Tel. A fin de que no se sacrifique demasiada seguridad.key) para la configuración del sitio virtual. es un requisito indispensable que esta clave (fichero server.csr Si no se desea un certificado firmado por un RA. se crea un certificado con estructura X.L. Este es el procedimiento más seguro. el servicio httpd. puede generarse uno certificado propio utilizando el fichero de petición CSR (server. $ openssl rsa -in server. 5 Configuración de Apache Crear la estructura de directorios para el sitio de red virtual.org/etc.b.d/midominio. Tel.org/server.midominio.csr -signkey server.logs.etc.org/ como /var/www/midominio. solo /var/www/midominio.b.var} De todos directorios creados.org/html.d:80 <VirtualHost a.org/var pueden pertenecer al usuario. /var/www/midominio.org/logs.html.org Redirect 301 / https://www.conf con el siguiente contenido. que administrará éste sitio de red virtual.L.org/{cgi-bin. se deben cambiar los permisos de éstos a solo lectura para root.org ### NameVirtualHost a. tanto /var/www/midominio.c.org corresponde al nombre de dominio a configurar para el sitio de red virtual: ### midominio. Crear el fichero /etc/httpd/conf.1.b.midominio.org/html ServerName www.d corresponde a una dirección IP. 902906969 Página 76 de 77 .d:80> ServerAdmin
[email protected] de introducción a la firma digital $openssl x509 -req -days 730 -in server. Por motivos de seguridad.* 10.c. y a fin de evitar que el servicio HTTPD no sea trastornado en caso de un borrado accidental de algún directorio.org/cgi-bin y /var/www/midominio. deben pertenecer al usuario root. /var/www/midominio. donde a.org ServerAlias midominio.c.org DocumentRoot /var/www/midominio. $ mkdir -p /var/www/midominio.org/ CustomLog /var/www/midominio.org/logs/access_log combined WHITEBEARSOLUTIONS S.crt Con la finalidad de que solo el usuario root pueda acceder a los ficheros creados. y midominio. $ chmod 400 /etc/ssl/midominio. sin privilegios.key -out server. d:443 <VirtualHost a.b.org/cgi-bin/ SSLEngine on SSLCertificateFile /etc/ssl/midominio.c.c.crt SSLCertificateKeyFile /etc/ssl/midominio.org/logs/ssl_access_log combined Errorlog /var/www/midominio.org/html ServerName www.org ScriptAlias /cgi-bin/ /var/www/midominio.org/server. en el caso de que éste no haya sido firmado por un RA. es necesario reiniciar el servicio httpd.org DocumentRoot /var/www/midominio. 902906969 Página 77 de 77 .org/ a fin de verificar que todo esté trabajando correctamente.pem SetEnvIf User-Agent ".6 Comprobaciones Solo basta dirigir cualquier navegador HTTP hacia https://www.1. Tras aceptar el certificado. deberá poderse observar un signo en la barra de estado del navegador. Tel.org/logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" CustomLog /var/www/midominio. WHITEBEARSOLUTIONS S.*" nokeepalive ssl-unclean-shutdown CustomLog /var/www/midominio.L.d/apache restart 10. $ /etc/init.midominio.midominio.b.org/server.*MSIE.org/logs/ssl_error_log </VirtualHost> A fin de que surtan efecto los cambios.Curso de introducción a la firma digital Errorlog /var/www/midominio.org/logs/error_log </VirtualHost> NameVirtualHost a.d:443> ServerAdmin webmaster@midominio. el cual indica que se trata de una conexión segura.