viernes, 4 de noviembre de 2016

CRIPTOGRAFIA


1. ¿Por qué cifrar?

La información es poder: los planos de un nuevo motor de coche eléctrico, la estrategia electoral de un partido político o la fórmula de un nuevo medicamento. Todos son ejemplos de información que interesa a terceras personas: una empresa de la competencia, un partido rival.

Nuestra era de la información y las comunicaciones necesita el cifrado más que nunca, porque cada vez existen más medios de almacenamiento (memorias portables de todo tipo) y, sobre todo, más mecanismos de comunicación:

- Voz mediante teléfono (fijo/móvil) con tecnología analógica (fijo) y digital (GSM, UMTS, RDSI, VoIP), así como el aumento constante de videoconferencias.
- Mensajería electrónica breve (SMS, Skype, WhatsApp) o completa (correo electrónico, burofax).
- Datos por línea digital (ADSL, fibra, HFC) o inalámbrica (wifi, UMTS, LTE).
- Apertura de las redes internas de las empresas para que puedan trabajar sus trabajadores (VPN de teletrabajo), sus clientes (acceso web) y otras empresas (VPN de empresas), todo a través de Internet.


Todas esas conversaciones utilizan redes compartidas con otros usuarios que no somos nosotros y administradas por otras empresas que no son la nuestra. Las operadoras de telecomunicaciones pueden darnos confianza utilizando protocolos seguros; pero para las empresas no es suficiente (las operadoras de telecomunicaciones también son sobornables y «hackeables») y por eso aplican cifrado en todas partes (incluso dentro: podemos tener empleados «traidores»); también los usuarios particulares deberían preocuparse de hacerlo porque su privacidad les pertenece (llamadas personales, correos intercambiados con sus contactos, movimientos bancarios, etc.).


2. Criptografía


La palabra criptografía viene del griego cripto (que significa «ocultar») y graphos (que significa «escribir»). Se podría traducir por: cómo escribir mensajes ocultos. En la antigüedad se utilizaba sobre todo durante las guerras, para comunicar estrategias, de manera que, aunque el mensajero fuera interceptado por el enemigo, el contenido del mensaje estaba a salvo.

La criptografía consiste en tomar el documento original y aplicarle un algoritmo cuyo resultado es un nuevo documento. Ese documento está cifrado: no se puede entender nada al leerlo directamente. Podemos, tranquilamente, hacerlo llegar hasta el destinatario, que sabrá aplicar el algoritmo para recuperar el documento original.



Las claves son combinaciones de símbolos (letras, números, signos de puntuación, etc.). Por tanto, nuestra seguridad está expuesta a los ataques de fuerza bruta: probar todas las combinaciones posibles de símbolos. Para evitarlo tomaremos estas medidas:

- Utilizar claves de gran longitud (512-1024-2048-4096 bytes), de manera que el atacante necesite muchos recursos computacionales para cubrir todo el rangorápidamente.
- Cambiar regularmente la clave. De esta forma, si alguien quiere intentar cubrir todo el rango de claves, le limitamos el tiempo para hacerlo.
- Utilizar todos los tipos de caracteres posibles: una clave compuesta solo de números (diez valores posibles) es más fácil de adivinar que una con números y letras (36 valores posibles).
- No utilizar palabras fácilmente identificables: palabras de diccionario, nombres propios, etc.
- Detectar repetidos intentos fallidos en un corto intervalo de tiempo. Por ejemplo, la tarjeta del móvil se bloquea si fallamos tres veces al introducir el PIN.


Las claves no son el único punto débil de la criptografía; pueden existir vulnerabilidades en el propio algoritmo o en la implementación del algoritmo en alguna versión de un sistema operativo o un driver concreto. Estas vulnerabilidades las estudia el criptoanálisis.


3. Criptografía Simétrica y Asimétrica

Un ejemplo de criptografía simétrica es la autenticación de un móvil GSM: por qué sabe que es nuestro número, aunque metamos la tarjeta SIM en otro teléfono. El procedimiento es el siguiente:




- Nuestra tarjeta SIM contiene un identificador T y una clave K.
- Ese identificador T y la clave K aparecen asociados a nuestro contrato en los servidores de autenticación de la operadora de la que somos clientes.
- Cuando encendemos el teléfono, se conecta a la red de la operadora y solicita entrar con el identificador T. Su servidor de autenticación recibe la petición y genera un número aleatorio A (llamado desafío), que nos lo envía.
- Una vez recibido, en nuestro teléfono aplicamos un determinado algoritmo simétrico sobre ese número A, utilizando la clave K. El resultado es el número B. Enviamos el número B al servidor de autenticación.
- Cuando lo recibe, él también aplica el mismo algoritmo con la misma clave. Si el resultado es igual a B, se confirma que somos los dueños del identificador T. Nos asigna nuestro número 6XX, y ya podemos hacer y recibir llamadas.
- Si cambiamos de teléfono, no importa porque el número va asociado a la SIM. Con esta solución estamos protegidos de una posible captura de tráfico inalámbrico mediante un sniffer de red:
- Podría capturar el número A. Pero es un simple número aleatorio: sin el algoritmo y la clave, el atacante no podrá generar la respuesta correcta B.
- Podría capturar también el número B y ya tendría la respuesta correcta cuando el servidor envía el número A. Pero la probabilidad de que el servidor repita el mismo número A para este abonado es muy baja. Es decir, si el atacante elabora una tarjeta SIM preparada para responder B cuando le pregunten A, es muy poco probable que tenga éxito.



El problema principal de la criptografía simétrica es la circulación de las claves: cómo conseguimos que el emisor y el receptor tengan la clave buena. No podemos utilizar el mismo canal inseguro por el que enviaremos el mensaje (la inseguridad nos ha llevado a cifrar). Hay que utilizar un segundo canal de comunicación, que también habría que proteger, y así sucesivamente. Por ejemplo, en el correo de bienvenida a una empresa puede aparecer la contraseña de la wifi de la oficina; cuando se cambie, se envía otro correo, etc.

El segundo problema es la gestión de las claves almacenadas. Si en una empresa hay diez trabajadores y todos tienen conversaciones privadas con todos, cada uno necesita establecer nueve claves distintas y encontrar nueve canales seguros para actualizarlas cada vez (en total 81 claves y 81 canales). Si aparece un trabajador nuevo, ahora son 100 claves y 100 canales. Y las empresas pueden tener muchos trabajadores: 500, 5 000, 50 000... ¿Cada vez que cambie mi clave tengo que avisar a 49 999 compañeros? Es poco manejable.


La criptografía asimétrica resuelve los dos problemas de la clave simétrica:

- No necesitamos canales seguros para comunicar la clave que utilizaremos en el cifrado. Podemos adjuntarla en nuestros correos, añadirla al perfil de nuestras redes sociales, «postearla» en un blog, incluso repartirla en octavillas por la calle.
- No hay desbordamiento en el tratamiento de claves y canales. Si somos nueve empleados, solo necesitamos nueve claves y un solo canal: la intranet de la empresa, un correo destinado a toda la empresa, etc. Y si aparece un empleado nuevo, serán diez claves y el mismo canal.



Sin embargo, los algoritmos asimétricos tienen sus propios problemas:

- Son poco eficientes: tardan bastante en aplicar las claves para generar los documentos cifrados, sobre todo porque las claves deben ser largas para asegurar la independencia matemática entre ellas.
- Utilizar las claves privadas repetidamente es arriesgado porque algunos ataques criptográficos se basan en analizar paquetes cifrados. Estos paquetes serían capturados en la red o directamente el atacante podría elaborar un software malicioso que generase paquetes de tamaño y contenido elegidos cuidadosamente y conseguir enviarlos a nuestro servidor para que los devolviera cifrados con su clave privada.
- Hay que proteger la clave privada. No basta con dejarla en un fichero de una carpeta del disco duro en la cuenta de nuestro usuario; cualquier otro usuario con permisos de administrador podría llegar hasta él. Por este motivo, las claves privadas se guardan todas juntas en un fichero llamado keyring (archivo de llaves,
llavero), y este fichero está protegido mediante cifrado simétrico. Es decir, para poder usar la clave privada, hay que introducir una clave que descifra el llavero y permite leerla.


Necesitamos una segunda medida de protección de la clave privada: la copia de seguridad del llavero. Si el disco duro se estropea, perderemos el fichero que contiene la clave privada y no podremos volver a utilizarla. Por tanto, debemos incluirlo en la política de backup de la empresa, y confiamos en que, aunque alguien más tenga acceso al backup (cintas, discos, etc.), la clave simétrica todavía protege el llavero.
- Hay que transportar la clave privada. En cifrado simétrico, si hemos enviado el fichero cifrado a otra máquina y queremos descifrarlo, basta con recordar la clave e introducirla. Pero en la clave privada esto es imposible (son cientos de símbolos sin sentido). Debemos transportar el llavero, con el riesgo que supone (si lo perdemos, podrían intentar un ataque de fuerza bruta contra el cifrado simétrico).




4. Cifrar y Firmar

La primera utilidad de la criptografía es ocultar el mensaje para aquellos que no son destinatarios del mismo. Es decir, garantizar la confidencialidad de la comunicación cifrando el documento original.

La segunda utilidad es conseguir determinar la autenticidad del emisor. ¿Cómo podía estar seguro el general romano de que ese mensaje con las nuevas órdenes venía de otro general romano, y no de algún enemigo? Si el enemigo conocía el algoritmo de cifrado y la clave actual, podía intentar engañarle mediante un mensaje falso pero correctamente cifrado.
En criptografía asimétrica, el mecanismo de firma garantiza que el emisor es quien dice ser. 


El emisor cifra ese resumen con su clave privada y lo envía al destino, junto con el documento original.
En el destino se hacen dos operaciones:


- Aplicar la misma función hash al documento para obtener su resumen.
- Descifrar el resumen recibido, utilizando la clave pública del emisor.


Si ambos resúmenes coinciden, el destino puede estar seguro de que el emisor del documento es el mismo que el dueño de la clave pública que acaba de aplicar para descifrar el resumen recibido.

Por supuesto, si queremos que el documento original no pueda ser interceptado en la transmisión desde el emisor al receptor, debemos cifrarlo. Para ello usaremos la clave pública del receptor. El procedimiento completo sería:

- El emisor aplica la función hash al original para generar el resumen.
- El emisor toma su clave privada para aplicar el algoritmo asimétrico al documento resumen. El resultado es un documento resumen cifrado.
- El emisor toma la clave pública del receptor para aplicar el algoritmo asimétrico al documento original y al documento resumen. El resultado es un documento conjunto cifrado que se envía al receptor.


En el receptor, utiliza su clave privada para descifrar los documentos y la clave pública del origen para comprobar la firma.




5. PKI. DNIe

La solución a este problema es la implantación de una PKI (Public Key Infrastructure, infraestructura de clave pública). Ahora, en la comunicación segura entre cliente y servidor aparecen nuevos interlocutores:

- La Autoridad de Certificación (CA [Certificate Authority]), cuya misión es emitir certificados. Hasta ahora los generábamos nosotros mismos con una herramienta en el ordenador.
- La Autoridad de Registro (RA [Registration Authority]), que es la responsable de asegurar que el solicitante del certificado es quien dice ser. Por ejemplo, en los certificados necesarios para presentar la declaración de la renta, la solicitud se puede hacer por Internet, pero para recogerlos hay que presentarse con el DNI en una oficina de la Administración.
- La Autoridad de Validación (VA [Validation Authority]) es la responsable de comprobar la validez de los certificados digitales emitidos. En la práctica suele coincidir con la CA.
- Los repositorios. Son almacenes de certificados. Los principales son el repositorio de certificados activos y el repositorio de listas de revocación de certificados (certificados que, por cualquier motivo, fueron expresamente desactivados antes de caducar). El funcionamiento es el siguiente:
- Durante el inicio de la sesión, el servidor envía su clave pública al cliente para que cifre el diálogo que van comenzar (autenticación usuario/contraseña, etc.); pero el cliente, antes de utilizarla, desconfía: necesita comprobar que el servidor es quien dice ser.
- El servidor lo ha supuesto y ha enviado, junto con su clave pública, la firma digital de esa clave. Esa firma digital ha sido realizada por una CA oficial utilizando la clave privada de esa CA.
- El cliente puede verificar la firma recibida utilizando la clave pública de la CA (en este punto puede necesitar conectar con la VA). Si la firma es correcta, la clave pública del servidor también lo es y podemos iniciar la sesión segura con toda confianza.
Por tanto, para que funcione la autenticación de una clave pública mediante PKI, se necesitan dos pasos previos:


- El servidor ha conseguido que una CA le firme su clave pública. Por ejemplo: VeriSign, FNMT, etc.
- El cliente dispone de la clave pública de esa CA dentro de su llavero de claves asimétricas.

Como casi todo en seguridad informática, la PKI no es perfecta. Todavía tenemos dos vulnerabilidades:

- Un virus en nuestro ordenador puede alterar el depósito de claves, e importar sin nuestro consentimiento claves públicas de CA fraudulentas. Una conexión segura a servidores respaldados por esas CA no es fiable.
- Un ataque a los servidores de una CA podría robar su clave privada. Desde ese momento, el atacante puede firmar las claves públicas de servidores peligrosos y los clientes se conectarían a ellos confiando en que es una firma legal.



A modo de ejemplo de PKI vamos a estudiar el DNI electrónico (DNIe), recientemente implantado en nuestro país. Tiene el mismo tamaño que el DNI anterior y también aparecen escritos los datos de identificación de la persona. La diferencia es un pequeño chip que lo convierte en una tarjeta inteligente. El chip permite conocer:



- Datos generales de la persona, los mismos que están impresos en la tarjeta.
- Datos biométricos de la persona, como su huella dactilar digitalizada.
- Claves de cifrado asimétrico. El DNIe incluye claves distintas para firmar y para cifrar, por los motivos que ya conocemos: utilizar mucho una clave la expone a análisis criptográficos. Si al final alguien consigue nuestra clave de cifrado, por lo menos que no pueda firmar contratos en nuestro nombre.


Video resumen de la Criptografia:




No hay comentarios:

Publicar un comentario