lunes, 21 de marzo de 2022

Criptografía


 La criptografía es el cifrado de información utilizado para proteger archivos, comunicaciones y claves. Aunque el término criptografía nos suele hacer pensar en el mundo de los espías y en agencias como la NSA, realmente está muy presente en nuestro día a día. Cuando nos conectamos a servicios como Gmail, estamos estableciendo una comunicación segura y, por tanto, cifrada entre nuestro ordenador (o nuestro dispositivo móvil) y los servidores de Google. Cuando realizamos una llamada telefónica desde nuestro terminal móvil, la secuencia de datos que generamos también está cifrada y, de esta forma, se evita que alguien no autorizado pueda estar a la escucha e interceptar nuestras comunicaciones.

Criptografía proviene del griego, krypto significa oculto y graphos escribir, es decir, sería algo como escritura oculta. Consiste en un conjunto de técnicas matemáticas que permiten el enmascaramiento o encriptado de mensajes de tal forma que sólo el destino de una comunicación podrá interpretarlo.

Los distintos métodos para ocultar o cifrar la información de partida se conocen como algoritmos de cifrado.

Un poco de historia

Los primeros mensajes cifrados datan del siglo V A.C, fueron los espartanos los primeros que usaron una técnica de ocultación de mensajes. La técnica consistía en enrollar una cinta en un bastón de un determinado grosor y escribir el mensaje longitudinalmente a bastón, de forma que en cada vuelta de la cinta se iba escribiendo una letra, repitiendo esto para varias filas. Sólo si el receptor poseía el bastón o conocía su grosor para elaborar uno igual, podría enrollar la cinta de nuevo y leer el mensaje, en caso de que el bastón fuera distinto las letras aparecían descolocadas y el texto era inteligible.

Posteriormente, griegos y romanos usaron otros métodos de cifrado. Los griegos usaban un sistema de sustitución, que consistía en substituir cada letra por un par de letras o números que indicaban su posición en una tabla (fila, columna). La tabla debía ser conocida por el receptor para poder descifrar el mensaje. El método romano consistía en substituir cada carácter por el que estaba trece posiciones más atrás en su alfabeto.

Cifrado cesar (ROT 13)
Estos métodos se fueron perfeccionando a lo largo del tiempo, cada vez con algoritmos y claves más complejos, será durante la Segunda Guerra Mundial donde se haga imprescindible el uso de máquinas para el cifrado y descifrado de mensajes, con el fin de proteger la información enviada de los enemigos. Esta carrera cifrado/descifrado fue la que acelero en gran medida el desarrollo de los ordenadores

Clasificación

Una primera clasificación de los métodos criptográficos sería:

  • Sistemas de transposición: los caracteres (grupos de caracteres) del mensaje original se cambian de posición. Podrán ser simples, dobles o múltiples según el número de veces que se realice la transposición.
  • Sistemas de substitución: Se sustituyen los caracteres del mensaje original por otros (que pueden ser letras, números o incluso imágenes o sonidos).

Tipos de sistemas de cifrado

Para encriptar el mensaje se emplea una clave o llave que puede ser un número o una secuencia de letras y números.

  • Criptografía simétrica: en la que emisor y receptor comparten una misma clave para el cifrado y descifrado del mensaje.
  • Criptografía asimétrica: se emplean dos claves distintas. Asigna a cada extremo de la comunicación un par de llaves:
    • Clave pública, la emplea el emisor para cifrar el mensaje.
    • Clave privada, la emplea el receptor para descifrar el mensaje.


Criptografía simétrica


En este tipo de sistemas el mensaje es cifrado y descifrado con la misma clave privada, que debe ser conocida por el transmisor y por el receptor.

Esto representa un problema pues es necesario encontrar un modo seguro de comunicar la clave entre en emisor y el receptor.

Si el mensaje cifrado es interceptado y no se dispone de la clave, este será inteligible, pero si por cualquier mecanismo el atacante descubre la clave, el sistema de criptografía se habrá roto.

Es una técnica limitada porque no permite asegurar la identidad de quién genera el mensaje, puesto que la clave la conocen, al menos, 2 personas.

Otro inconveniente es que el emisor debe compartir una clave privada distinta con cada receptor, por lo que si envía mensajes a muchos usuarios distintos será necesario el recordar muchas claves distintas.

VENTAJAS

  • Son rápidos y eficientes, por lo que resultan adecuados para cifrar grandes volúmenes de datos.
  • Pueden cifrar bit a bit (cifrado de flujo), útiles para cifrar a la vez que se envía la información o por bloques de generalmente 64 bits (cifrado de bloque), para volúmenes grandes de información.

INCONVENIENTES

  • Requieren una clave por cada emisor-receptor.
  • Requieren un medio seguro de transmisión de la clave.
  • No son robustos. Pueden romperse por ataques como el de clave relacionada (como ocurre con el cifrado WEP de redes inalámbricas), aprovechando la naturaleza del algoritmo y relaciones entre texto original y claves o por mecanismos de fuerza bruta, que prueban todas las posibles claves (cuanto más larga sea la clave más tiempo se empleará en obtenerla)

ALGORITMO CRIPTOGRÁFICO O DE CIFRADO es una función matemática usada en los procesos de encriptación y desencriptación. El algoritmo se sirve de una clave para encriptar y desencriptar datos


ALGUNOS ALGORITMOS DE CIFRADO CON CLAVE SIMÉTRICA

  • DES (Data Encryption Standard): Nació en los años 70, divide la información en bloques de 64 bits y los cifra con claves de 64 bits (de los que 56 son los que realmente se utilizan para el cifrado y los 8 restantes son para cálculos de paridad (comprobación de errores)). Es altamente vulnerable y se puede llegar a romper en menos de 24 horas.
  • 3DES (TripleData Encryption Standard): Se basa en aplicar DES 3 veces. La clave es de 128 bits y se divide en dos de 64 (claves A y B). A la hora de descifrar se aplicará el algoritmo con la clave A, después la B, y de nuevo la A (el algoritmo se aplica 3 veces). Es más seguro que DES pero más lento y consume más recursos.
  • AES ( Advanced Encryption Standard): Es el algoritmo empleado por el WPA de las redes inalámbricas. Opera con claves de 128, 192 o 256 bits. Opera con bloques.
  • RC5 (River Cipher): Opera con bloques de tamaño variable 832, 64 o 128 bits) y clave también variable. El número de iteraciones tampoco es fijo, aumentando la seguridad a mayor número de iteraciones.
  • IDEA (International Data Encryption Algorithm): Trabaja con bloques de 64 bits y la clave de 128 bits (todos útiles, sin paridad). Igual que DES, IDEA usa el mismo algoritmo para cifrar que para descifrar.


Criptografía asimétrica

La criptografía asimétrica hoy es fundamental para transacciones realizadas a través de Internet, por ejemplo, podemos encontrar páginas que utilizan una conexión segura: emplean un protocolo criptográfico seguro, llamado HTTPS (hypertext transfer protocol secure).

Así mismo el IPv6 es un protocolo seguro, ya que trabaja de manera cifrada. Si se intercepta una comunicación, la información no podrá ser leída sin antes descifrarla.

Los sistemas de cifrado por clave asimétrica usan un par de claves: una privada (que solo conoce el propietario) y otra pública (que es la que se intercambia).

En este caso no habrá problemas con el intercambio de la clave (tal y como ocurría en los sistemas de clave simétrica) pues el atacante no podrá hacer nada sólo con la clave pública, necesitaría también la privada (que sólo la tiene el propietario y no se ha intercambiado en ningún momento).

La idea básica de un sistema de clave pública radica en que no es factible (aun utilizando el mejor computador disponible) determinar la clave privada a partir de la clave pública.

Además, una vez encriptado un mensaje, para cualquier persona que no sea el emisor o el receptor es computacionalmente imposible encontrar el mensaje que lo generó.

Supóngase que dos personas deseasen intercambiar información confidencial; digamos, Bernardo y Carolina.

  1. Si Bernardo envía a Carolina un mensaje cifrado usando su propia llave privada, Carolina lo puede recuperar usando la llave pública de Bernardo, la cual es conocida. Carolina estará segura que el mensaje venía de Bernardo, pues solo él lo pudo cifrar usando su llave privada. Esto garantiza la autenticidad.
  2. Asimismo, si Carolina enviase a Bernardo un mensaje cifrado usando la llave pública de Bernardo, está seguro que sólo Bernardo puede recuperar o leer el mensaje, pues solo él tiene el otro par de la llave necesario para descifrar (la llave privada de Bernardo). Esto garantiza confidencialidad.

Como vemos, estos sistemas nos serán de utilidad para dos fines principales:

  • Confidencialidad: encriptación del mensaje de forma que solo el usuario con la clave privada adecuada lo podrá descodificar).
  • Autenticación, garantizando que el mensaje ha sido emitido por quién dice ser
Veamos estas dos posibilidades.

ENCRIPTACIÓN CON CLAVE ASIMÉTRICA


VENTAJAS

  • La clave privada nunca se distribuye, por lo que no existe el problema de comunicación de la clave que existía en los sistemas con clave simétrica.
  • Solo he de conocer dos claves (la pública, de conocimiento general, y la privada, que conozco yo exclusivamente), independientemente del número de receptores con los que vaya a intercambiar información (evitamos el problema de elevado número de claves cuando el número de receptores era grande que veíamos en los sistemas de clave simétrica).

INCONVENIENTES

  • Requieren mayor tiempo de cifrado, los mensajes generados son más grandes, las claves empleadas también son de mayor tamaño para garantizar la seguridad. Por lo que en general requieren más tiempo y recursos que los sistemas de clave simétrica.
  • Es necesario algún sistema que garantice que la clave pública, que se distribuye libremente, es auténtica (p.ej. PKI (Infraestructuras de clave pública) que son las usadas en los DNIe o con los certificados digitales emitidos por la Fábrica Nacional de Moneda y Timbre o las listas de revocación de certificados).


AUTENTICACIÓN CON CLAVE ASIMÉTRICA



Bernardo desea mandar un mensaje a Carolina asegurando que es el quién lo envía, para ello deberá firmar el mensaje (esta firma digital, al igual que una firma escrita, nos indicará que el mensaje es suyo).
Para esto Bernardo usará su clave privada (que como sólo conoce él, nos asegura que ha sido él quien ha generado la firma).
Normalmente no se cifra el mensaje completo (a menos que también deseemos asegurar su privacidad), lo que se hace es generar una función resumen o hash a partir del mensaje, y será sólo este resumen lo que encriptemos con nuestra clave privada.
Una vez Carolina reciba el mensaje, podrá verificar con su clave pública, mediante la obtención del resumen, que fue Bernardo quién envió el mensaje.

ALGUNOS ALGORITMOS DE CIFRADO CON CLAVE ASIMÉTIRCA

  • RSA (Rivest-Shamir-Adelman): Este algoritmo se basa en la factorización de números enteros. Se puede emplear para firmas digitales, pero no permite cifrar la información. Requiere equipos potentes y más tiempo de cómputo que RSA.
  • DSA (Digital Signature Algorityhm): Algoritmo de firma digital del Gobierno Federal de Estados Unidos. Al igual que RSA permite firmar digitalmente, pero no cifrar. Es más lento que RSA pero también más seguro.
  • ElGamal: Algoritmo de uso libre (no está bajo ninguna patente) que permite tanto firmar como cifrar.


Función Hash


Una función criptográfica hash (usualmente conocida como “hash”) es un algoritmo matemático que transforma cualquier bloque arbitrario de datos en una nueva serie de caracteres con una longitud fija. Independientemente de la longitud de los datos de entrada, el valor hash de salida tendrá siempre la misma longitud. El Hash sirve para autenticar datos: comprobar que el archivo origen y el recibido son el mismo. Estrictamente hablando, el hash no es una forma de cifrado, aunque usa criptografía (funciones hash). Entonces, se toma datos y se crea un hash fuera de él, una cadena de datos con tres propiedades importantes:

  1. Los mismos datos siempre producirán el mismo hash,
  2. Es imposible revertirlo a los datos originales, dado el conocimiento del hash,
  3. Es inviable crear otra cadena de datos que creará el mismo hash (llamado “colisión” en el lenguaje criptográfico).

Un ejemplo de función hash es el código MD5, una secuencia de letras y números que descargamos junto a un archivo para garantizar que el archivo se descargó correctamente. Ejemplo de código MD5: ec5c4971bece420b2584766d675b426a.

Estos sistemas de cifrado se basan en funciones resumen o funciones hash de un solo sentido, que aprovechan propiedades particulares, por ejemplo, los números primos.

Una función en un solo sentido es aquella cuya computación es fácil, mientras que su inversión resulta extraordinariamente difícil. Por ejemplo, es fácil multiplicar dos números primos juntos para obtener un compuesto, pero es difícil factorizar uno compuesto en sus componentes primos. Algunos algoritmos empleados como funciones hash son MD5 y SHA.


Protocolo HTTPS


Hypertext Transfer Protocol Secure (en español: Protocolo seguro de transferencia de hipertexto), más conocido por sus siglas HTTPS, es un protocolo de red basado en el protocolo HTTP, destinado a la transferencia segura de datos de hipertexto, es decir, es la versión segura de HTTP. 


El sistema HTTPS utiliza un cifrado basado en SSL/TLS para crear un canal cifrado (cuyo nivel de cifrado depende del servidor remoto y del navegador utilizado por el cliente) más apropiado para el tráfico de información sensible que el protocolo HTTP. De este modo se consigue que la información sensible (usuario y claves de paso normalmente) no pueda ser usada por un atacante que haya conseguido interceptar la transferencia de datos de la conexión, ya que lo único que obtendrá será un flujo de datos cifrados que le resultará imposible de descifrar.

Era utilizado principalmente por entidades bancarias, tiendas en línea, y cualquier tipo de servicio que requiera el envío de datos personales o contraseñas, pero hoy en día se ha activado para todo tipo de páginas web, generando automáticamente un aviso los navegadores cuando se intenta acceder a una página que aún no utiliza este protocolo y sigue confiando en la versión http (no segura)

La idea principal de https es la de crear un canal seguro sobre una red insegura. Esto proporciona una protección razonable contra ataques eavesdropping y man-in-the-middle, siempre que se empleen métodos de cifrado adecuados y que el certificado del servidor sea verificado y resulte de confianza.

La confianza inherente en HTTPS está basada en una Autoridad de certificación superior que viene preinstalada en el software del navegador. Es el equivalente a decir "Confío en la autoridad de certificación (p.e. VeriSign/Microsoft/etc.) que me dirá en quien debería confiar". 

Los navegadores utilizan un icono (generalmente un candado) en la parte derecha de la barra de direcciones para indicar la existencia de un protocolo de comunicaciones seguro e incluso cambian el color del fondo de la barra de direcciones para identificar páginas web seguras.


No hay comentarios:

Publicar un comentario