•Tema 12: Firma electrónica •Tema 13: Políticas y estándares de certificación de claves públicas Módulo IV: Infraestructura de clave pública Ataque de Suplantación MitM contra la Clave Pública Adversario fuente de claves d’ m descifrado e’ c cifrado Ee(m)=c Dd’(c’)=m e fuente de claves d c’ Alice cifrado Ee’(m)=c’ descifrado Dd(c)=m m fuente del texto m destino Bob Certificación de la Clave Pública • Cuando se obtiene la clave pública de una entidad o persona, ¿cómo se puede verificar que realmente corresponde a esa entidad o persona? • El objetivo de un certificado electrónico (o digital) es dar fe de la vinculación de una clave pública a una identidad. • La información básica que contiene un certificado es: – La identidad que se certifica, como un correo electrónico o un DNI. – El período de validez, fecha a partir de la cual el certificado no es válido. – La clave pública que se certifica. – La entidad que expide el certificado mediante su firma digital. » Por ejemplo, en una conexión a un sitio web seguro, siempre se obtiene un certificado para autenticar la identidad del servidor al que nos conectamos. Normalmente en el software del cliente, los navegadores incluyen por defecto un conjunto de certificados confiables que permiten comprobar las firmas incluidas en los certificados de muchos servidores. Modelo Descentralizado de Certificación • Se basa en confiar en las amistades de tus amistades. • Firmamos las claves de las personas que conozcamos y en las que confiemos. • Pretty Good Privacy (PGP) es un programa para usar clave pública con ese modelo • GPG es una herramienta criptográfica con el modelo Open de PGP. • El llavero, ringkey o keychain es el fichero donde se almacenan las claves públicas de las personas de las que nos fiamos. GPG Modelo Centralizado de Certificación Certificado de autenticación según estándar X.509: Documento electrónico emitido por una tercera parte de confianza (AC) con el que se asocia la identidad de un usuario con su clave pública, de forma que otros puedan autenticarla. Incluye: U, puU, X, Alg, FAC(U, puU, X, Alg) » U: nombre del usuario » puU: clave pública de U » X: fecha de expiración » Alg: identificador del algoritmo con el que se puede usar esa clave » FAC: firma de la autoridad de certificación AC P. Caballero Gil Estándar X.509 Autoridades de Certificación Existen dos tipos de autoridades con capacidad para emitir certificados: las autoridades raíz y las subordinadas. Las autoridades raíz se certifican a sí mismas y a otras autoridades, mientras que las subordinadas sólo pueden emitir certificados para entidades subordinadas, dando la posibilidad de definir jerarquías de certificación. Autoridades de Certificación Implementaciones de AC de código abierto • Existen varias implementaciones de código abierto de software de AC, para proporcionar los servicios necesarios para expedir, revocar y gestionar certificados digitales. • Una implementación de código abierto es OpenSSL, que es una biblioteca TLS/SSL que viene con herramientas que permiten su uso como AC sencilla. P. Caballero Gil OpenSSL Infraestructura de Clave Pública P. Caballero Gil PKI P. Caballero Gil Revocación de Certificados • ¿Cuándo revocar un certificado? – una vez superado el periodo de validez o – si la clave ha sido comprometida • Es necesario revisar las listas de certificados revocados (CRL) antes de aceptar un certificado. • Un propuesta certificados de solución efímeros, son que los son certificados con validez de unos pocos minutos. P. Caballero Gil Firma Digital •Objetivos: –Permite verificar el emisor de un mensaje –Permite autenticar la integridad del mensaje –Puede ser comprobada por terceras partes •Propiedades: –Depende del mensaje a firmar y del emisor –Fácil de producir –Fácil de reconocer –Infalsificable –Los documentos firmados se pueden guardar •Aplicaciones: –En correo electrónico –Certificación de claves públicas Cifrado con Clave Pública Clave pública del usuario B M Usuaria A EB Medio de Transmisión Clave privada del usuario B DDBB C Criptograma Adversario Se cifra con la clave pública del receptor C M Usuario B protegida Confidencialidad C = EB(M) M = DB(C) = DB(EB(M)) DB y EB son inversos Firma Digital con Clave Pública Clave privada de la usuaria A M Usuaria A DAA D Medio de Transmisión Clave pública de la usuaria A C C Criptograma Adversario Se cifra con la clave privada de la emisora EA M Usuario B protegidas Integridad y Autenticidad C = DA(M) M = EA(C) = EA(DA(M)) EA y DA son inversos Cifrado y Firma Digital con Clave Pública clave privada de A M clave pública de B DDAA EB C clave privada clave pública de B de A DDBB Usuaria A EA M Usuario B Confidencialidad Integridad y Autenticidad C = EB(DA(M)) Cifrado y firma digital del mensaje M = EA(DB(C)) Verificación de firma y descifrado Firma RSA A Mi firma Fi≡MidA (mod nA) B Fi verificación Mi≡FieA (mod nA) 128 firma con dA=103 2≡128103 (mod 143) 2 verificación con eA=7 128≡27 (mod 143) Firma Incluyendo Función Hash P. Caballero Gil Función Hash Compresión: Dado un mensaje x de longitud arbitraria, su valor hash h(x) normalmente tiene una longitud menor fija. ✓También se usa para comprobar la integridad P. Caballero Gil Firma Digital Estándar • DSA (Digital Signature Algorithm) es un algoritmo de firma digital basado en el problema del logaritmo discreto. • En 1991 fue propuesto y en 1994 se eligió estándar de firma digital en EEUU, pasando a llamarse DSS (Digital Signature Standard). • Requiere mucho más tiempo que la firma RSA. • Fases: 1 Generación de claves 2 Firma 3 Verificación Firma Digital DSS B publica: • un número primo pB de L bits, donde 512 ≤ L ≤ 1024 y L es divisible por 64. • un número primo qB de 160 bits, tal que pB−1 = qBz, donde z es algún número natural. • el número a = hz (mod pB) donde h es un número primo tal que 1 < h < pB−1 Escoge secretos b y k: b < qB-1 y k < qB Calcula Calcula: w=sB-1 (mod qB) yB=ab (mod pB) u=H(M)*w (mod qB) rB=(ak mod pB)mod qB v=rB*w (mod qB) -1 sB=(H(M)+b*rB)k mod qB (rB,sB) r’=((au*yBvmod pB)mod qB) Verifica que r’=rB ECDSA Elliptic Curve Digital Signature Algorithm • Es la modificación elíptica del DSA. • El tamaño de las claves es inferior, pero tiene la misma seguridad que las firmas DSA y RSA. Generación de claves – Elija una curva elíptica E. – Elija un punto P (que pertenezca a E) de orden n. – Elija aleatoriamente un número d en el intervalo [1, n - 1]. – Calcule Q = dP. – d será la clave privada. Firma – Q será la clave pública. Seleccione un número k de forma aleatoria. Calcule kP = (x1,y1). Calcule r = x1 mod n. Si r = 0 regresa al primer paso. Calcule (k-1) mod n. Calcule s = k-1(H(m) + dr) mod n. Si s = 0 regrese al primer paso. La firma del mensaje m son los números r y s. P. Caballero Gil Verificación Verifique que r y s estén dentro del rango [1,n - 1]. Calcule w = s-1 mod n. Calcule u1 = H(m)w mod n. Calcule u2 = r·w mod n. Calcule u1P + u2Q = (x0,y0) Calcule v = x0 mod n La firma se verifica si y solo si v = r Función Hash MD5 • MD5 (Message-Digest Algorithm 5, Algoritmo de Resumen del Mensaje 5) es un algoritmo hash criptográfico de 128 bits ampliamente usado. • El MD5 fue diseñado por Ronald Rivest en 1991. • El resultado del MD5 de 128 bits es representado como un número de 32 dígitos hexadecimal. • Se ha usado en TLS. • Se usa en Linux para proteger las contraseñas • Forma parte del paquete criptográfico gratuito GPG • Se puede usar en Certificados X.509, SSL, OpenSSL, S/MIME y SET. MD5 MD5 MD5 Seguridad de MD5 • Se pensaba que era segura, pero se descubrieron colisiones prácticas. • En 2004 se consiguió crear dos certificados X.509 distintos con igual hash MD5. • En 2008, se consiguió falsificar certificados SSL usando MD5. • Además de las colisiones, MD5 tiene otros problemas. Para una función hash robusta debería ser muy complicado invertirla, e.d. calcular los datos que produjeron el hash. Hace años se popularizaron las llamadas tablas rainbow con información preprocesada sobre hashes MD5, que permiten a quien tenga acceso a esos resúmenes, realizar el proceso inverso en un tiempo razonable. Funciones Hash SHA •SHA (Secure Hash Algorithm) es una familia de funciones hash de la NSA publicadas por el NIST. •La primera, SHA-0, fue publicada en 1993. •En 1995 se publicó SHA-1, que es la que se usa en la firma DSS. •Hay cuatro variantes.conocidas como SHA-2, con mayores tamaños de salida: SHA-224, SHA-256, SHA-384, y SHA-512. •En 2004 se publicaron varios ataques contra hashes similares a SHA-1, lo que planteó dudas sobre su seguridad. •SHA-0 y SHA-1 producen una salida de 160 bits de un mensaje que puede tener un tamaño máximo de 264 bits, y es similar a MD5. •Se ha usado en TLS, Linux, GPG y OpenSSL. SHA-2 • Cada bloque de texto de 512 bits se divide en 4 subbloques de 128 bits. • Los bloques de 128 bits se estructuran en 4 palabras de 32 bits (A,B,C,D). Función Hash Estándar: SHA-3 • Función hash antes llamada Keccak, elegida en 2012 como nueva función hash standard. • Es compatible con SHA-2, pero su estructura interna es distinta. Cifrado Autenticado con Datos Adicionales AEAD Authenticated Encryption with Additional Data Forma de cifrado que asegura simultáneamente la confidencialidad y la integridad de los datos. • MAC (Message Authentication Code) es un código de autenticación de mensaje, normalmente generado con una función hash. • HMAC es MAC combinado con el uso de una clave secreta Integridad en TLS Criptosistema Híbrido Habitual •autenticidad + integridad + confidencialidad •clave pública + función hash + clave secreta A B canal público KRA es clave privada de A. K es clave secreta compartida. KUA es clave pública de A TLS •Criptoprotocolo para comunicaciones seguras por Internet. •Se usan certificados X.509 para criptografía asimétrica en la autentificación de las partes, y en la generación de clave secreta compartida con la que se cifra la sesión. •Garantiza autenticidad de participantes y confidencialidad e integridad de la comunicación. •La versión actual de TLS se usa con las siguientes opciones: ➢ Criptografía de clave secreta: AES y ChaCha20. ➢ Criptografía de clave pública: DH, RSA, ECDH y ECDSA. P. Caballero Gil TLS •Implica una serie de fases: 1. Negociar entre las partes el algoritmo que se usará en la comunicación. 2. Intercambiar las claves públicas y autenticarlas con certificados digitales y generar la clave secreta para la sesión. 3. Cifrar el tráfico usando un cifrado simétrico usando la clave de sesión. P. Caballero Gil Fuente:CCN