Seguridad en redes de ordenadores: Herramientas criptográficas Departamento de Sistemas Telemáticos y Computación (GSyC) http://gsyc.urjc.es Febrero de 2013 GSyC - 2013 Herramientas criptográficas 1 c 2013 GSyC Algunos derechos reservados. Este trabajo se distribuye bajo la licencia Creative Commons Attribution Share-Alike 3.0 GSyC - 2013 Herramientas criptográficas 2 Principio de Kerckhoffs Principio de Kerckhoffs: Los algoritmos deben ser públicos; solo las claves deben ser secretas Rogues knew a good deal about lock-picking long before locksmiths discussed it among themselves. If a lock is not so inviolable as it has hitherto been deemed to be, surely it is to the interest of honest persons to know this fact, and the spread of the knowledge is necessary to give fair play to those who might suffer by ignorance A.C.Hobbs, 1853 El sistema no debe depender del secreto y debe poder ser robado por el enemigo sin causar problemas A. Kerckhoffs, 1883 GSyC - 2013 Herramientas criptográficas 3 Dos principios contrapuestos 1 Security through obscurity (Seguridad mediante la oscuridad) 2 Security by design Diseñar desde el principio cada elemento del sistema para ser seguro Confiar solamente en (1) es sin duda una mala idea. En general se prefiere solamente (2). Aunque en ocasiones se defiende (2) complementado con (1) GSyC - 2013 Herramientas criptográficas 4 Una vez descubierta una vulnerabilidad, un hacker (sombrero gris o blanco) puede aplicar varias polı́ticas para revelarla Full disclosure. (Divulgación masiva) Responsible disclosure (Revelación responsable) Security through obscurity (Seguridad mediante la oscuridad) GSyC - 2013 Herramientas criptográficas 5 Criptografı́a Principios criptográficos Criptologı́a = criptografı́a (inventar códigos) + criptoanálisis (atacarlos) El cifrado es la base de la confidencialidad La garantı́a de la integridad está basada en algún mecanismo con redundancia, que evite que una modificación de los mismos resulte en otro mensaje válido. Algoritmos como CRC no son adecuados, previenen contra error casual, no contra atacante malicioso. MD5 y SHA-1 tienen seguridad intermedia. Hay alternativas mejores como p.e. MIC (Message Integrity Check), SHA-2, RIPEMD-160 (RACE Integrity Primitives Evaluation Message Digest) El cifrado por sı́ mismo no basta para protegerse contra los ataques por retransmisión (aka repetición) GSyC - 2013 Herramientas criptográficas 6 Criptografı́a Ejemplo de ataque por retransmisión: ábrete, sésamo El capitán de los cuarenta ladrones usa estas palabras mágicas para abrir la cueva de los tesoros y Alı́ Babá las repite sin más. Como defensa: Inclusión de marcas de tiempo hora lógica vs hora fı́sica, aka hora civil, aka hora del reloj de pared Sistemas de reto-respuesta GSyC - 2013 Herramientas criptográficas 7 Criptografı́a Sistemas de reto-respuesta Métodos basados en el intercambio de mensajes Un reto es un nounce, un valor que solamente se usa una vez A A ---E(R)---> <----R---- B B Si A envı́a un reto cifrado a B y B es capaz de devolverlo en claro (o con otro cifrado), B demuestra a A que conoce el secreto Pero B no revela el secreto GSyC - 2013 Herramientas criptográficas 8 Criptografı́a Criptografı́a de Clave Secreta Criptografı́a de Clave Secreta La misma clave que cifra, descifra Muchos algoritmos: DES (obsoleto), triple DES, AES (o Rijndael). Oficial gobierno EEUU desde 2001), twofish, etc etc Problemas Haces falta muchas claves: una por cada pareja de posibles comunicantes n(n-1)/2 P.e. para 20 usuarios, harı́an falta 190 claves distintas ¿Cómo transmitir las claves de forma segura? Problema de los libros de claves GSyC - 2013 Herramientas criptográficas 9 Criptografı́a Criptografı́a de Clave Secreta Clave de sesión Es una clave simétrica que se usa en una única sesión (que tı́picamente durará minutos o como mucho, horas) Como se usa poco tiempo, es poco probable que el atacante la obtenga. Y aunque la obtuviera, no le servirı́a durante mucho tiempo Normalmente se distribuye de forma segura y automática, ya sea mediante criptografı́a simétrica o mediante criptografı́a asimétrica GSyC - 2013 Herramientas criptográficas 10 Criptografı́a Autenticación con clave secreta: Kerberos Autenticación con clave secreta: Kerberos Kerberos: protocolo de autenticación, sobre red no segura Publicado por el MIT en 1993, RFC 1510, año 1993 RFC 4120, año 2005 El MIT también ofrece implementaciones con licencia tipo BSD. Muy ampliamente usado: Windows, Unix, Linux, MacOS, OpenVMS... Criptografı́a simétrica, basado en DES, 3DES, RC4 Cliente/servidor, ambos autenticados Depende de un tercero en el que cliente y servidor confı́an GSyC - 2013 Herramientas criptográficas 11 Criptografı́a Autenticación con clave secreta: Kerberos Kerberos usa el protocolo de autenticación Needham-Schroeder Alice y Bob confı́an en un servidor, con el que comparten una clave privada Alice se autentica con el Servidor empleando una clave privada El servidor le da a Alice un ticket cifrado con la clave privada de Bob, con una clave de sesión y marca de tiempo Alice envı́a a Bob el ticket Alice y Bob intercambian mensajes con la clave de sesión GSyC - 2013 Herramientas criptográficas 12 Criptografı́a Autenticación con clave secreta: Kerberos Inconvenientes de Kerberos El servidor es un punto único de fallo: necesita estar continuamente disponible Requiere una sincronización estricta de los relojes para evitar ataques por retransmisión GSyC - 2013 Herramientas criptográficas 13 Criptografı́a Criptografı́a de clave pública Criptografı́a de clave pública Aparece con el algoritmo Diffie-Hellman, año 1976 Clave de cifrado o pública Pub y de descifrado o privada Priv distintas (asimétricas) Priv (Pub(Mensaje)) = Mensaje Prácticamente imposible romper el sistema (p.e. obtener Priv ) teniendo Pub. Basado en aritmética de numeros primos muy grandes (300 dı́gitos): Conociendo X e Y, números primos muy grandes, se descomponer X*Y. Pero es inviable obtener X e Y a partir de X*Y Permite intercambiar claves por canal no seguro La clave privada sirve para descifrar. Debe mantenerse en secreto La clave pública sirve para cifrar. Puede conocerla todo el mundo (lo importante es que la clave conocida sea la correcta) GSyC - 2013 Herramientas criptográficas 14 Criptografı́a Criptografı́a de clave pública Alice Bob --- PubB (Mensaje) ---> PrivB (PubB (Mensaje)) = Mensaje Conociendo la clave pública de alguien, podemos cifrar un mensaje que solo él, con su clave privada, podrá descifrar Los algoritmos de clave pública son mucho más lentos que los de clave secreta (100 a 1000 veces). Por eso se suelen usar solamente para el intercambio de claves de sesión GSyC - 2013 Herramientas criptográficas 15 Criptografı́a Criptografı́a de clave pública La criptografı́a asimétrica también sirve para autenticar (como en OpenSSH) Queremos desde una sesión en una máquina local, abrir otra sesión en una máquina remota sin volver a teclear contraseña Una máquina remota, no fiable, contiene clave pública Máquina local, fiable, contiene la clave privada La máquina remota envı́a un reto cifrado con la clave pública, si la máquina local lo descifra, el usuario queda autenticado y puede abrir sesión en la máquina remota sin teclear contraseña GSyC - 2013 Herramientas criptográficas 16 Criptografı́a Criptografı́a de clave pública RSA De Rivest, Shamir y Adleman, año 1978 Algorimo de clave pública, muy extendido Además de cifrar, sirve para firmar GSyC - 2013 Herramientas criptográficas 17 Criptografı́a Criptografı́a de clave pública Autenticación con clave pública Alice (1) (2) (3) (4) (5) (6) (7) GSyC - 2013 Servidor de Claves Bob --- Envı́ame PubB --> <-- Toma PubB ---------------- PubB (A, RA ) -------------> <--- Envı́ame PubA ---- Toma PubA --> <------------ PubA (RA , RB , KS ) ----------------------- KS (RB ) -----------------> Herramientas criptográficas 18 Criptografı́a 1,2: 3: 4,5: 6: 7: A A B B y A Criptografı́a de clave pública obtiene del servidor la clave pública de B envı́a a B su remite y un reto, cifrados con la clave de B obtiene del servidor la clave pública de A cifra, con la clave de A: el reto de A, un reto nuevo una clave de sesión. Lo envı́a a A devuelve el reto de B, cifrado con la clave de sesión Esto garantiza privacidad e integridad Limitación: Es necesario generar una clave de sesión para cada transmisión, para cada destinatario ¿Servirı́a para un chat? ¿Servirı́a para una ley? ¿Servirı́a para un testamento? GSyC - 2013 Herramientas criptográficas 19 Criptografı́a Función hash Función hash Se usa en cualquier algoritmo que garantice la integridad de un mensaje, sin depender de clave de sesión hash: a mess, jumble, or muddled. to chop into small pieces; make into hash; mince. to muddle or mess up. Función que, a partir de un bloque arbitrario de datos (message), genera de forma determinista un valor hash, aka message digest, aka digest. Este valor hash identifica de forma prácticamente unı́voca al mensaje, de forma que un cambio en el mensaje, incluso mı́nimo, provoque un cambio en el valor hash Es posible que dos mensajes distintos generen el mismo valor hash, aunque muy difı́cil koji@mazinger:~$ md5sum ubuntu-12.10-desktop-i386.iso b4191c1d1d6fdf358c154f8bf86b97dd ubuntu-12.10-desktop-i386.iso GSyC - 2013 Herramientas criptográficas 20 Criptografı́a Función hash Función hash ideal: Fácil de generar Muy difı́cil generar el mensaje a partir del hash Muy difı́cil modificar el mensaje manteniendo el hash Muy difı́cil encontrar dos mensajes con el mismo hash Ejemplos de funciones hash: MD5, SHA-1, SHA-2 GSyC - 2013 Herramientas criptográficas 21 Criptografı́a Firmas digitales Firma digital Además de la firma manuscrita tradicional, en España (ley 59/2003) y muchos otros paises puede emplearse una firma digital, con el mismo valor legal Permite enviar un mensaje firmado, esto es, con autenticación, integridad y no repudio Requisitos Generación fácil No rechazable (no repudio) Única: solo su propietario puede generarlo Fácilmente verificable por propietario y receptores Depender del mensaje y del autor Inclusión de sello de tiempo Revocación del certificado por el firmante ¿Más o menos seguro que la firma tradicional? GSyC - 2013 Herramientas criptográficas 22 Criptografı́a Firmas digitales Algoritmos como RSA tienen la propiedad de que la clave privada, además de descifrar lo cifrado con la clave pública, sirve para cifrar algo que podrá ser descifrado con la clave pública Uso normal: Privacidad básica (sin integridad) Alice Bob --- PubB (Mensaje) ---> PrivB (PubB (Mensaje)) = Mensaje Uso adicional: Firma básica (integridad sin privacidad) Alice Bob --- PrivA (Mensaje) ---> PubA (PrivA (Mensaje)) = Mensaje Llamamos básicos a estos algoritmos porque cifran con criptografı́a asimétrica el mensaje completo. No son prácticos (a menos que el mensaje sea muy corto), ya que es muy costoso cifrar el mensaje completo con la clave privada. Por eso se usan algoritmos ligeramente más complejos (enviar una clave de sesión o firmar un hash) GSyC - 2013 Herramientas criptográficas 23 Criptografı́a Firmas digitales ¿Podemos obtener el mensaje a partir de PubB (PubB (Mensaje))? GSyC - 2013 Herramientas criptográficas 24 Criptografı́a Firmas digitales Para evitar el cifrado del mensaje completo: A partir de un mensaje, se genera un digest El digest se encripta con la clave privada y se transmite junto con el mensaje El receptor Descifra el digest con la clave pública del emisor Genera de nuevo el código hash Si el código hash de la firma y del mensaje coinciden, el mensaje solo puedo enviarlo el origen GSyC - 2013 Herramientas criptográficas 25 Criptografı́a A Firmas digitales B --- Mensaje, Priv_A(Digest)---> Pub_A(Priv_A(Digest)) = Digest_recibido Hash (Mensaje) = Digest_recalculado Si Digest_recibido=Digest_recalculado, entonces el mensaje lo ha enviado A Obsérvese que esto solo busca la integridad, no la privacidad. ¿Servirı́a para un chat? ¿Servirı́a para una ley? ¿Servirı́a para un testamento? GSyC - 2013 Herramientas criptográficas 26 Criptografı́a Firmas digitales Para comunicaciones sı́ncronas (ejemplo: un chat), cuando se necesita privacidad además de integridad, lo más conveniente suele ser emplear el algoritmo de intercambio de clave de sesión que ya hemos visto Para comunicaciones ası́ncronas (ejemplo: un e-mail), no se puede usar una clave de sesión. Para obtener privacidad e integridad se puede: Cifrar el mensaje/el hash con la clave privada del origen (para ofrecer integridad) y cifrar el resultado con la clave pública del destino (para ofrecer privacidad) Cifrar el mensaje con la clave pública del destino (para ofrecer privacidad) y cifrar el resultado/el hash del resultado con la clave privada del origen (para ofrecer integridad) Las diferencias entre estos dos pasos son mı́nimas, es hacer prácticamente lo mismo en distinto orden No se debe transmitir en claro el hash de un mensaje privado, esto puede facilitar el trabajo del atacante GSyC - 2013 Herramientas criptográficas 27 Criptografı́a Certificados digitales Certificados digitales La criptografı́a asimétrica me garantiza que un mensaje cifrado con la clave pública de alguien solo lo descifrará quien tenga la clave privada asociada Pero ¿Cómo se que ese alguien es realmente quien dice ser? Hay protocolos basados en autoridades de certificación. Tı́picamente X.509. Es un modelo jerárquico, con autoridades certificantes centralizadas, que verifican la identidad y emiten certificados digitales Hay protocolos basados en redes de confianza. El más habitual es OpenPGP. Si Alice confı́a en Bob y Bob confı́a en Carol, Alice confı́a en Carol Si quiero comunicarme con un usuario, y no tenemos contactos comunes, este protocolo no proporciona ninguna manera de validar su clave GSyC - 2013 Herramientas criptográficas 28 Criptografı́a Certificados digitales Un certificado digital contiene, al menos Identidad del usuario: nombre y apellidos, o denominación social Clave pública del usuario Identidad de la CA (certificate authority aka certification authority, autoridad certificadora) Algoritmo criptográfico empleado Todo ello, con una firma que fue generada con la clave privada de la CA y que permite obtener la clave pública de la CA Al igual que la clave pública, un certificado no es ningún secreto. Cualquiera puede leerlo, y cualquiera que reconozca a esa CA, podrá comprobar que se mantiene la integridad y que la identidad es válida GSyC - 2013 Herramientas criptográficas 29 Criptografı́a Certificados digitales X.509 Es un estándar del ITU-T y el IETF, publicado inicialmente en 1988 La autoridad central que emite el certificado digital puede ser Una empresa acreditada, p.e. VeriSign Un organismo público, como la Fábrica Nacional de Moneda y Timbre (FNMT) o la Dirección General de la Policı́a Una comunidad de usuarios, normalmente CAcert Cualquier persona GSyC - 2013 Herramientas criptográficas 30 Criptografı́a Certificados digitales Los certificados X.509 Pueden usar diversos algoritmos de criptografı́a asimétrica, p.e. RSA Tı́picamente se usan dentro de un navegador web Es necesario que el navegador reconozca a la autoridad certificadora. Esto es, que traiga de serie un certificado de autoridad certificadora raiz Esto no siempre sucede. Ejemplos: Cualquier navegador incluye el certificado de VeriSign El certificado de la FNMT solo lo incluyen Internet Explorer y Mozilla Firefox El certificado de CACert no viene en ningún navegador Cuando falta el certificado, el navegador mostrará un aviso. El usuario puede obtener certificados por su cuenta e instalarlos GSyC - 2013 Herramientas criptográficas 31 Criptografı́a Herramientas de cifrado Herramientas de cifrado Los algoritmos de cifrado tal y como los definen los matemáticos no suelen ser prácticos para el administrador o usuario final A partir de los algoritmos (normalmente unos pocos) se desarrollan diversas implementaciones, librerı́as, aplicaciones, protocolos GSyC - 2013 Herramientas criptográficas 32 Criptografı́a Herramientas de cifrado PGP PGP: Pretty Good Privacy Philip Zimmermann, año 1991 Implementación de RSA muy popular Claves de al menos 128 bits Base de estándar OpenPGP RFC 1991 (año 1996), RFC 5581 (Año 2009) En la actualidad es más habitual emplear GPG aka GnuPG (GNU Privacy Guard), implementación de OpenPGP alternativa a PGP Diversos front-ends: Gpg4win para Windows, Seahorse para GNOME, KGPG para KDE, Mac GPG para Mac OS, Enigform para Firefox... Habitualmente se usa para encriptar y firmar ficheros, correos, etc GSyC - 2013 Herramientas criptográficas 33 Criptografı́a Herramientas de cifrado Cifrado de particiones En ocasiones, en vez de cifrar ficheros individuales, resulta más conveniente cifrar particiones completas del disco duro eCryptfs Sistema de ficheros cifrado, compatible con la norma POSIX. Habitual en Linux Encrypting File System Nativo en Microsoft Windows FileVault Nativo en Mac OS TrueCrypt Disponible para Windows, Linux, Mac OS. Uso sencillo, potente, muy popular. Código fuente disponible con licencia gratuita no libre Basados en AES, Triple DES o similares GSyC - 2013 Herramientas criptográficas 34 Criptografı́a DRM DRM En 2012, el intercambio de ficheros representa el 25 % del tráfico global en internet. El video, el 60 % 1 A su vez, una buena parte de los ficheros y cierta parte del vı́deo se corresponde con contenidos protegidos por Copyright DRM: Digital rights management Sistema de control de acceso a contenidos digitales (música, vı́deo, juegos y libros) para evitar que sean utilizado en formas no permitidas por el distribuidor Desde el siglo XVIII se reconoce a los autores los derechos sobre su creación intelectual. El DRM busca la protección de estos derechos Basado en criptografı́a 1 GSyC - 2013 Cisco Visual Networking Index, 2012 Herramientas criptográficas 35 Criptografı́a DRM La industria de contenidos dice: La copia es un delito El DRM beneficia al usuario, ya que si el autor no recibe compensación, no habrá creación Miguel de Cervantes dice: No hagas muchas pragmáticas 2 ; y si las hicieres, procura que sean buenas, y, sobre todo, que se guarden y cumplan; que las pragmáticas que no se guardan, lo mismo es que si no lo fuesen; antes dan a entender que el prı́ncipe que tuvo discreción y autoridad para hacerlas, no tuvo valor para hacer que se guardasen; y las leyes que atemorizan y no se ejecutan, vienen a ser como la viga, rey de las ranas: que al principio las espantó, y con el tiempo la menospreciaron y se subieron sobre ella. 2 GSyC - 2013 leyes Herramientas criptográficas 36 Criptografı́a DRM Limitaciones del DRM Criptografı́a relativamente vulnerable, puesto que el atacante tı́picamente también es usuario legı́timo, y tiene acceso a un dispositivo con todas las claves. Aunque estas claves tengan cierta protección Frecuentemente implementado en hardware no actualizable El usuario final con equipos domésticos no podrá copiar el contenido, pero equipos industriales capaces de trabajar a bajo nivel, probablemente sı́ podrán Cualquier material (excepto el interactivo) es vulnerable al agujero analógico GSyC - 2013 Herramientas criptográficas 37 Criptografı́a DRM Inconvenientes para el usuario legı́timo Es frecuente que el DRM Resulte incómodo Impida usos legales de los contenidos Conlleve pérdida del acceso, por obsolescencia GSyC - 2013 Herramientas criptográficas 38