Seguridad y Alta Disponibilidad
UNIDAD 5.
CRIPTOGRAFÍA
1
1. Principios de criptografía
2. Tipos de algoritmos de cifrado
2.1. Criptografía simétrica
2.2. Criptografía de clave asimétrica
2.3. Criptografía híbrida
2.4. Firma digital
3. Certificados digitales
3.1. Terceras partes de confianza
3.2. DNIe
1
PRINCIPIOS DE
CRIPTOGRAFÍA
3
CRIPTOGRAFÍA
Arte o ciencia de cifrar y descifrar información.
Del griego kriptos(ocultar) y graphos (escribir), literalmente escritura oculta.
Se emplea para el intercambio de mensajes de manera segura, de forma que sólo
puedan ser leídos por personas a las que van dirigidos y que poseen los medios
para descifrarlos (confidencialidad).
CRIPTOLOGÍA
Como ciencia, engloba:
o Técnicas de cifrado: la criptografía.
o Técnicas complementarias: el criptoanálisis.
Conceptos de criptología:
Información original a proteger: texto en claro o texto plano.
Cifrado: proceso de convertir el texto plano en un texto ilegible (texto cifrado o
criptograma).
Algoritmos de cifrado: se basan en la existencia de una información secreta (clave) que
adapta el algoritmo de cifrado para cada uso distinto. Dos tipos:
o De cifrado en bloque: dividen el texto origen en bloques de bits de un tamaño fijo
y los cifran de manera independiente.
o De cifrado de flujo: se realiza bit a bit, byte a byte o carácter a carácter.
Técnicas más sencillas de cifrado (en la criptografía clásica):
o Sustitución: cambio de significado de los elementos básicos del mensaje, las letras,
los dígitos o los símbolos.
o Transposición:reordenación de los mismos,los elementos básicos no se modifican.
Descifrado: proceso inverso, recupera el texto plano a partir del criptograma y la clave.
Ejemplos históricos:
Cifrado del César
Sistema de sustitución que consiste en reemplazar cada letra del texto
original por otra que se encuentra un número fijo de posiciones más
adelante en el alfabeto.
Julio César solía utilizar un desplazamiento de 3 posiciones en casi todos sus mensajes.
ROT13 ( = Rotar 13 posiciones )
Tipo de cifrado de César en el que ciframos un
texto sustituyendo cada letra por la que está 13
posiciones por delante en el alfabeto.
Ejemplos históricos:
El escitalo de Esparta (siglo V a.C)
Método de transposición que consistía en el uso de una
vara de madera (scytale) en la que se enrollaba una tira
de cuero o papiro sobre la que se escribía el mensaje. Cuando se desenrollaba el
mensaje, parecía una lista de letras sin sentido. Para descifrar el mensaje, el
destinatario simplemente necesitaba una vara del mismo diámetro.
Trasposición de Riel
El mensaje se escribe alternando las letras en dos líneas separadas. A continuación, la
secuencia de letras de la línea inferior, se añade al final de la secuencia de la línea
superior, creando el mensaje cifrado. El mensaje se recupera simplemente invirtiendo el
proceso.
2
TIPOS DE
ALGORITMOS DE
CIFRADO
8
Existen dos grandes tipos de algoritmos de cifrado:
Simétricos o de clave simétrica o privada: usan una única clave tanto en el
proceso de cifrado como en el descifrado.
Asimétricos o de clave asimétrica o pública: usan una clave para cifrar mensajes
y una clave distinta para descifrarlos. Forman el núcleo de las técnicas de cifrado
modernas (certificados digitales, firma digital, DNIe)
10
• Se usa una misma clave para cifrar y descifrar mensajes.
• Las dos partes que se comunican han de acordar de antemano sobre la clave a usar.
Un buen sistema de cifrado pone toda la seguridad en la clave y ninguna en
el algoritmo: la clave debe ser muy difícil adivinar
Importante: longitud de la clave y conjunto de caracteres que emplee.
Ejemplos de algoritmo de cifrado simétrico:
DES: usa una clave de 56 bits hay 256 claves posibles.
3DES, Blowfish e IDEA: usan claves de 128 bits hay 2128 claves posibles.
RC5 y AES (Advanced Encryption Standard) o Rijndael (AES).
Principales problemas de los sistemas de cifrado simétrico:
El intercambio de claves
¿Qué canal de comunicación seguro han usado para transmitirse las claves?
Más fácil para el atacante intentar interceptar una clave que probar todas las
posibles combinaciones.
El número de claves que se necesitan
Para n personas que necesiten comunicarse entre sí, se necesitan n/2 claves
diferentes por cada pareja.
Funciona con un grupo reducido de personas, imposible con grupos grandes.
PGP (Pretty Good Privacy)
Programa más popular de encriptación y de creación de llaves públicas y privadas
para seguridad en aplicaciones informáticas.
Criptosistema híbrido.
GPG (GNU Privacy Guard)
Herramienta para cifrado y firmas digitales.
Reemplazo de PGP, es software libre licenciado bajo la GPL.
Comando: gpg
Opciones: – c (cifrado simétrico). Generará un archivo con la extensión .asc
– d (descifrado)
Ejemplo: gpg –c archivo
gpg –d [Link]
Cada usuario del sistema ha de poseer una pareja de claves:
o Clave pública: conocida por todos los usuarios.
o Clave privada: custodiada por el propietario y no se dará a conocer.
Claves
Pareja de claves complementaria: lo que cifra una, sólo lo puede descifrar la otra y viceversa.
Estas claves se obtienen mediante métodos matemáticos complicados de forma que por
razones de tiempo de cómputo, es imposible conocer una clave a partir de otra.
Ventajas
Se puede cifrar con una clave y descifrar con la otra.
Desventajas
Para una misma longitud de clave y mensaje se necesita mayor tiempo de proceso.
Las claves deben ser de mayor tamaño que las simétricas (mínimo 1024 bits)
El mensaje cifrado ocupa más espacio que el original.
Algoritmos de técnicas de clave asimétrica:
Diffie-Hellman, RSA, DSA, ElGamal, criptografía de curva elíptica.
Funciones resumen o funciones hash
Los sistemas asimétricos se basan en funciones resumen o funciones hash de un solo
sentido su cálculo directo es viable, pero el de la función inversa resulta casi imposible.
Algoritmos empleados como funciones resumen o hash: MD5 y SHA.
Usos: Analizar la integridad de un archivo o verificar su atenticidad. Resumen.
Cifrado de contraseñas de usuario, arhivo /etc/shadow de GNU/Linux
Firma digital de archivos, mail, etc.
Ejemplo de uso de las funciones resumen.
Analizar la integridad de un archivo descargado mediante la comprobación de su
valor resumen calculado.
En muchas ocasiones, las web de los fabricantes originales muestran junto a su
archivo de instalación el valor resumen calculado, con el que podremos verificar tras
descargar el archivo de instalación su integridad o que no ha sido modificado o es
una falsificación.
Comando md5sum
Calcula el valor resumen MD5 de un fichero.
Ejemplo:
Ejecutamos md5sum [Link] > archivo.md5
Para verificar la integridad del archivo: md5sum –c archivo.md5
Si el archivo no ha sido modificado, mostrará: [Link]: OK
Si el archivo ha sido modificado, mostrará: [Link]: FAILED
Atributo Clave simétrica Clave asimétrica
Años en uso Miles Menos de 50
Velocidad Rápida Lenta
Uso principal Cifrado de grandes volúmenes de Intercambio de claves
datos Firma digital
Claves Compartidas entre emisor y receptor Privada: sólo conocida por 1 persona.
Pública: conocida por todos.
Intercambio de Difícil de intercambiar por un canal La clave pública se comparte por
claves inseguro cualquier canal. La privada nunca se
comparte
Longitud de 56 bits (vulnerable) 1024 bits mínimo
claves 256 bits (seguro)
Algoritmos DES, 3DES, Blowfish, IDEA, AES Diffie-Hellman, RSA, DSA, ElGamal
Servicios de Confidencialida Confidencialida
seguridad d Integridad d Integridad
Autenticación Autenticación, No repudio
Advanced Encryption Standard (AES), también conocido como Rijndael.
Es un esquema de cifrado por bloques adoptado como un estándar de cifrado por
el gobierno de los Estados Unidos.
AES es uno de los algoritmos más populares usados en criptografía simétrica.
Sistema criptográfico de clave pública desarrollado en 1977.
Es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar
como para firmar digitalmente.
La seguridad de este algoritmo radica en el problema de la factorización de
números enteros.
Los mensajes enviados se representan mediante números, y el funcionamiento se
basa en el producto, conocido, de dos números primos grandes elegidos al azar y
mantenidos en secreto.
Se cree que RSA será seguro mientras no se conozcan formas rápidas de
descomponer un número grande en producto de primos. La computación
cuántica podría proveer de una solución a este problema de factorización.
Es un algoritmo de cifrado, es decir, un método para cifrar información, escogido
como un estándar FIPS en los Estados Unidos en 1976, y cuyo uso se ha
propagado ampliamente por todo el mundo.
Hoy en día, DES se considera inseguro para muchas aplicaciones. Esto se debe
principalmente a que el tamaño de clave de 56 bits es corto; las claves de DES se
han roto en menos de 24 horas
Desde hace algunos años, el algoritmo ha sido sustituido por el nuevo AES.
• Ataque de fuerza bruta: Forma de recuperar una clave probando todas las
combinaciones posibles hasta encontrar aquella que permite el acceso.
• Ataque de diccionario: Es un método de cracking que consiste en intentar
averiguar una contraseña probando todas las palabras del diccionario. Más
eficiente que los ataques de fuerza bruta ya que muchos usuarios utilizan
palabras existentes en su idioma para que sea más sencillo de recordar. Pero
este sistema tendrá pocas posibilidades de éxito con contraseñas fuertes que
combinen mayúsculas, minúsculas y números.
• Protección: Una protección sencilla contra los ataques de fuerza bruta y de
diccionario es limitar el número de intentos, bloqueando el sistema cuando se
supere este número.
GPG (GNU Privacy Guard)
Generar par de claves para cifrado asimétrico: gpg –gen-key
Durante el proceso de generación se nos irán haciendo diversas preguntas:
o Tipo de cifrado. La opción DSA and ElGamal nos permite encriptar y firmar.
o Tamaño de las claves. Por defecto se recomienda 2048 (a mayor tamaño más seguridad).
o Tiempo de validez de la clave. 0 indicará que no caduque nunca.
o Frase de paso (o passphrase). Contraseña que nos va a asegurar que nadie más que
nosotros mismo va a poder usar esta clave GPG.
Ver las claves públicas que tenemos disponibles: gpg --list-keys o gpg -k
Ver las claves privadas que tenemos disponibles: gpg --list-secret-keys
Borrar claves:
o 1º borrar la clave privada: gpg –-delete-secret-key ClaveID
o 2º borrar la clave pública: gpg –-delete-key ClaveID
20
GPG (GNU Privacy Guard)
Distribución de la clave pública:
a. Subirla a un servidor de claves públicas (p. ej., el servidor pgp de rediris)
gpg --send-keys --keyserver [Link] ClaveID
b. Enviarla por correo o en soporte portable (USB, CD/DVD…).
La volcamos a un fichero de texto:
gpg --armor --output fichero –-export ClaveID
Hacer una copia de nuestra clave privada para poder recuperarla:
gpg --armor --output fichero –-export-secret-key ClaveID
Importar una clave volcada en un fichero: gpg --import fichero
Crear certificado de revocación: gpg –o [Link] --gen-revoke ClaveID
Importar nuestra relación de claves: gpg --import [Link]
Utiliza los dos algoritmos:
o Algoritmo de clave pública
Para el cifrado en el envío de la clave simétrica (pequeña cantidad de
información). Más seguro.
o Algoritmo de clave simétrica
Para el cifrado del mensaje. Se reduce el coste computacional.
Herramientas SW que usan los algoritmos anteriores:
PGP y GPG.
Protocolos de comunicación que usan los algoritmos anteriores:
SSH, SSL y TLS.
PROCESO:
A y B tienen sus pares de claves respectivas.
A escribe un mensaje a B. Lo cifra con el
sistema de criptografía de clave simétrica. La
clave que utiliza se llama clave de sesión y se
genera aleatoriamente. Para enviar la clave
de sesión de forma segura, ésta se cifra con la
clave púbica de B, utilizando por lo tanto
criptografía de clave asimétrica.
B recibe el mensaje cifrado con la clave de
sesión y ésta misma cifrada con su clave
pública. Para realizar el proceso inverso, en
primer lugar utiliza su clave privada para
descifrar la clave de sesión. Una vez obtenida
la clave de sesión, ya puede descifrar el
mensaje.
Permite al receptor de un mensaje:
Verificar la autenticidad del origen de la información (autenticación)
Verificar que la información no ha sido modificada desde su generación
(integridad)
El emisor del mensaje firmado no puedo argumentar que no lo hizo (no repudio)
Una firma digital está destinada al mismo propósito que una manuscrita, pero la
manuscrita es sencilla de falsificar, mientras la digital es imposible mientras no se
descubra la clave privada del firmante.
La firma digital es un cifrado del mensaje que se está firmando
pero utilizando la clave privada en lugar de la pública.
Firma digital = resultado de cifrar con clave privada el resumen
de los datos a firmar, haciendo uso de funciones resumen o hash.
Diversos modos de envío de documentos firmados:
Unir la firma digital al contenido del documento, el cual no se cifra.
gpg --clear-sign fichero
Tendremos a la salida un archivo [Link], donde el contenido no está cifrado y se
encuentra firmado digitalmente al final.
Unir la firma digital al contenido del documento, el cual se cifra con la clave,
obteniendo un archivo binario.
gpg –s fichero
Documento y firma en archivos separados.
gpg –b fichero
En el archivo [Link] tendremos la firma separada del documento. Para verificar la firma
emplearemos la opción --verify
3
CERTIFICADOS
DIGITALES
Para garantizar la unicidad de las claves privadas
Soportes físicos, como tarjetas inteligentes (SmartCards). Ej: DNIe.
Garantizan la imposibilidad de la duplicación de claves.
Protegidas por un número personal o PIN (sólo lo conoce su propietario).
Para asegurar que una determinada clave pública pertenece a un usuario concreto
Certificados digitales.
CERTIFICADO DIGITAL = documento electrónico (archivo) que asocia una clave
pública con la identidad de su propietario.
Contiene información sobre la identidad de su
propietario (nombre, dirección, mail), la clave
pública, otros atributos (ámbito de uso de la
clave pública, fechas de validez, etc.) y una
firma digital de una autoridad certificadora (en
España, La Casa de la Moneda y Timbre)
El formato estándar es X.509 y su distribución es
posible realizarla:
o Con clave privada (extensión *.pfx o *.p12)
o Con clave pública (extensión *.cer o *.crt)
Aplicaciones de certificados digitales y DNIe: realizar compras y comunicaciones seguras,
trámites con la banca online, con las administraciones públicas (Hacienda, Seg. Social) a
través de Internet, etc.
¿Cómo confiar si un determinado certificado es válido o si está falsificado?
Mediante la confianza en terceras partes.
Idea: dos usuarios pueden confiar directamente entre sí, si
ambos tienen relación con una tercera parte y que ésta
puede dar fe de la fiabilidad de las dos.
Se podrá tener confianza en el certificado digital de un
usuario al que previamente no conocemos si dicho
certificado está avalado por una tercera parte en la que sí
confiamos mediante su firma digital sobre el
certificado.
La Tercera Parte Confiable (TPC o TTP, Trusted Third Party) que se encarga de la firma
digital de los certificados de los usuarios de un entorno de clave pública se conoce
con el nombre de Autoridad de Certificación (AC).
30
¿Cómo puedo garantizar que la clave pública de un usuario es suya y no es la
de un impostor? Cualquiera puede generar un par de claves y pretender ser
otra persona.
Autoridades de Certificación (AC o CA, del inglés Certification
Authority), que asumen la responsabilidad de autenticar la identidad de
esa clave pública y que aparecerá en un documento electrónico llamado
certificado digital.
Por infraestructura de clave pública o PKI
(Public Key Infraestructure) se entiende el
conjunto de herramientas hardware, software,
Infraestructura de clave pública procesos y procedimientos legales que
permiten crear, gestionar, almacenar, distribuir
y revocar certificados digitales.
El modelo de confianza basado en Terceras Partes Confiables es la base de la
definición de las Infraestructuras de Clave Pública (ICP o PKI, Public Key
Infrastructures), formado por:
Autoridad de certificación (CA): emite y elimina los
certificados digitales.
Autoridad de registro (RA): controla la generación de los
certificados, procesa las peticiones y comprueba la
identidad de los usuarios.
Autoridades de repositorio: almacenan los certificados
emitidos y eliminados.
Software para el empleo de certificados.
Política de seguridad en las comunicaciones relacionadas
con gestiones de certificados.
(DNIe)
chip
o Un certificado electrónico para autenticar la personalidad del ciudadano.
o Un certificado electrónico para firmar electrónicamente (con la misma validez
jurídica que la firma manuscrita).
o Certificado de la Autoridad de Certificación emisora.
o Claves para su utilización.
o La plantilla biométrica de la impresión dactilar.
o HW específico: lector de
tarjetas inteligentes.
o SW específico: módulos
criptográficos que permitan el
acceso al chip.
1. Comprobar la veracidad de un sitio web.
2. Instalar certificados en el sistema operativo, en navegadores web o clientes de correo
electrónico Eliminamos el uso de credenciales escritas por teclado.
DIRECCIONES DE INTERÉS
Web de la Fábrica Nacional de Moneda y Timbre, Autoridad de Certificación y
expedición de certificados digitales: [Link]
Camerfirma. Web de las cámaras de comercio con información sobre certificados
digitales: [Link]
Web del DNI electrónico. Ministerio del Interior: [Link]
SOFTWARE
GPG. Completo software de cifrado: [Link]/[Link]
TrueCrypt. Software de cifrado de volúmenes, particiones, etc.: [Link]
Generador de funciones hash-resumen. Cifrado de texto plano mediante diversos
algoritmos como MD5 o SHA: [Link]
OpenSSL: librerías de criptografía, proporciona entre otras aplicaciones, soporte SSL
para entornos web: [Link]