6. Cifrado (Criptografía)

6.1. Clave Pública - Clave Privada.

Criptografía.

La criptografía es el desarrollo de un conjunto de técnicas que permiten alterar y modificar mensajes o archivos con el objetivo de que no puedan ser leídos por todos aquellos usuarios que no estén autorizados a hacerlo.

Esto nació en la antigua Grecia, para evitar difundir secretos militares.

Observación: La traducción de la palabra en inglés: encrypt es cifrar, pero se suele utilizar de manera erronea encriptar.

Ejemplo: Telegram cifra entre los extremos los mensajes. Cuando un mensaje va desde un celular a otro pasa por el Servidor, en el caso de estar encriptado en el Servidor NO se puede saber el contenido de estos mensajes, por que están encriptados extremo a extremo

La encriptación se realiza mediante un proceso de cifrado.

Cifrado en la acción por la cual el mensaje original es cambiado o alterado por alguna técnica.

Nada es gratis.

Uno de los principales límites de la “criptografía de clave pública” es que al requerir cálculos muy complejos se convierte en un proceso más lento debido al procesamiento matemático que se realiza.

Existen distintos tipos de Criptografía.

Criptografía simétrica:

La criptografía simétrica se refiere al conjunto de métodos que permiten tener comunicación segura entre las partes siempre y cuando anteriormente se hayan intercambiado la clave correspondiente que llamaremos clave simétrica. La simetría se refiere a que las partes tienen la misma llave tanto para cifrar como para descifrar.
Resumiendo:
Solo utiliza una clave para cifrar y descifrar. Ésta debe ser previamente conocida por todas las partes involucradas.

Aunque no existe un tipo de diseño estándar, quizá el más popular es el de Feistel, que consiste esencialmente en aplicar un número finito de interacciones de cierta forma, que finalmente da como resultado el mensaje cifrado. Este es el caso del sistema criptográfico simétrico más conocido, DES (Sistema de cifrado de datos). Una variante se llama TDES, que resulta de aplicar 3 veces DES.
Existe una clasificación de este tipo de criptografía en tres familias, la criptografía simétrica de:
  • bloques (block cipher).
  • lluvia (stream cipher).
  • de resumen (hash functions).
Aunque con ligeras modificaciones un sistema de criptografía simétrica de bloques puede modificarse para convertirse en alguna de las otras dos formas, e inversamente, sin embargo es importante verlas por separado dado que se usan en diferentes aplicaciones.

Un problema que existe es la distribución o compartir las claves simétricas, si esto se realiza de manera no segura, el resultado NO puede garantizar que realmente sea seguro!!

Criptografía asimétrica o criptografía de clave pública

La criptografía asimétrica (del inglés: asymmetric key cryptography), también conocida como criptografía de clave pública (public key cryptography) o criptografía de dos claves (two-key cryptography), es un sistema criptográfico que se caracteriza por utilizar dos claves, una clave pública y otra privada, para el envío de mensajes o datos informáticos.

La criptografía asimétrica tiene dos usos principales:
    - Autenticación.
    - Confidencialidad.

El nacimiento de la criptografía asimétrica se dio al estar buscando un modo más práctico de intercambiar las llaves simétricas (Diffie y Hellman), proponen una forma para hacer esto, sin embargo no fue hasta que el popular método de Rivest Shamir y Adleman RSA publicado en 1978, cuando toma forma la criptografía asimétrica, su funcionamiento esta basado en la imposibilidad computacional de factorizar números enteros grandes.

Se utiliza para intercambiar claves privadas :-)

Esta metodología tiene como base la utilización de dos claves diferentes, pero vinculadas matemáticamente entre sí, utilizadas para cifrar y descifrar el mensaje. Una de ellas debe ser pública, propia de cada participante pero puesta a disposición de cualquier usuario, sea participante en el intercambio de  información o no.
En cuanto al procedimiento, es el siguiente :

Por lo tanto, si la clave pública se usa para cifrar los datos, solo el usuario con la clave privada puede descifrar los datos.
Si la clave privada del usuario, se usa para cifrar un fragmento de datos, solo la clave pública del usuario descifrará los datos.

La clave Pública se usa para cifrar y descifrar, dependiendo del escenario.

Puesto que las claves públicas se distribuyen libremente, hace falta un esquema de confianza que garantice la autenticidad de las claves públicas, esto se logra con Infraestructuras de clave publica (PKI).

Notar el destinatario puede estar seguro que el contenido NO fue cambiado, ya que usó la clave Publica para poder descifrar.

Los métodos criptográficos garantizan que esa pareja de claves solo se puede generar una vez, de modo que se puede asumir que no es posible que dos personas hayan obtenido casualmente la misma pareja de claves. Esto por ejemplo se usa en sitios Webs.

Ventajas y Desventajas del Cifrado Asimétrico.

La mayor ventaja de la criptografía asimétrica es que la distribución de claves es más fácil y segura ya que la clave que se distribuye es la pública manteniéndose la privada para el uso exclusivo del propietario, pero este sistema tiene bastantes desventajas:

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 (generalmente son cinco o más veces de mayor tamaño que las claves simétricas).
  • El mensaje cifrado ocupa más espacio que el original.
Ventajas:
  • Tiene un alto grado de seguridad debido al sistema y que utiliza una llave para cifrar y otra para descifrar.
  • Ofrece un alto nivel de confidencialidad y autenticidad (o integridad) y garantiza la no alteración del mensaje.

Vocabulario:

PGP

Pretty Good Privacy (PGP -  privacidad bastante buena) es un programa desarrollado por Phil Zimmermann y cuya finalidad es proteger la información distribuida a través de Internet mediante el uso de criptografía de clave pública, así como facilitar la autenticación de documentos gracias a firmas digitales.

Sello Electrónico o Sello Digital.

El certificado de sello electrónico, es el sello estampado de toda la vida y sirve para identificar una empresa o entidad sin la necesidad de incluir datos personales, por lo que solo está disponible para personas jurídicas.

Tipos de Sellos Digitales:

  • P12. Puede instalarse en un gran número de ordenadores o máquinas y estos suelen estar asociados a personas que no van a realizar sellado masivo, aunque también sería posible importarlo a una aplicación que permita este tipo de servicio.
  • CSR. El usuario genera la clave privada en la máquina donde va a instalar el certificado de sello electrónico. Esta es intransferible y no puede reutilizarse, por lo que no puede instalarlo en otra máquina. Suele usarse para procesos críticos y para departamentos técnicos.
  • HW. Va implementado en una tarjeta y mucho más enfocado al cliente que quiere darle la mayor validez jurídica a la firma, ya que hace firma cualificada.

Firma Digital.

La firma electrónica es un conjunto de datos electrónicos que incluyen información personal y única -por lo que no hay posibilidad de repudio - sobre su firmante en el documento electrónico al que va asociada. Es mas bien de uso de personas físicas.

Este sitio es para la creación de una firma digital con validez en nuestro país.


DES.

DES (Data Encryption Standard). A finales de la década de 1990 se lanzaron diferentes desafíos para comprobar el esfuerzo necesario para romper el cifrado DES. Observándose que DES ya no era adecuado como sistema de cifrado. Incluso TDES triple DES, un algoritmo en el que se utiliza DES tres veces, no es seguro frente a ataques de fuerza bruta.

AES

Advanced Encryption Standard.  El NIST (National  Institute of Standards Technology) convocó a un concurso para poder tener un sistema simétrico que sea seguro y pueda usarse al menos en los próximos 20 años como estándar. En la mitad del año de 1998 se aceptaron 15 candidatos, estos se han sometido a  pruebas públicas y por parte del NIST. En el concurso quedaron 5 finalistas que eran: MARS, RC6, Rijndael (pronunciado "Rain Dahl" en inglés), Serpent, y Twofish.

El ganador fué Rijndael (pronunciado "Rain Dahl" en inglés) con un esquema de cifrado por bloques adoptado como un estándar de cifrado por el gobierno de los Estados Unidos, creado en Bélgica. 

El AES fue anunciado por el NIST como FIPS PUB 197 de los Estados Unidos (FIPS 197) el 26 de noviembre de 2001 después de un proceso de estandarización que duró 5 años. Se transformó en un estándar efectivo el 26 de mayo de 2002. Desde 2006, el AES es uno de los algoritmos más populares usados en criptografía simétrica.

El cifrado de datos AES es un algoritmo criptográfico más elegante y eficiente, pero su principal fortaleza reside en la opción de utilizar diferentes longitudes de clave. Pudiéndose elegir entre claves de 128, 192 o 256 bits, lo que lo hace mucho más robusta que la clave de sólo 56 bits empleada en DES.

AES además es un algoritmo eficiente tanto en implementaciones de software como de hardware, cosa que no sucedía con DES. Las implementaciones software de DES no eran eficientes.

Hash.

Una herramienta fundamental en la criptografía son las funciones HASH, usadas principalmente para  resolver el problema de la integridad de los mensajes, así como la autenticidad de mensajes y de su origen.
Una función HASH es también ampliamente usada para la firma digital, ya que los documentos a firmar pueden ser en general demasiado grandes. La función HASH les asocia una cadena de longitud 160 bits que son más manejables para el propósito de firma digital.

La función HASH tiene como entrada un conjunto de elementos, que suelen ser cadenas, y los convierte en un rango de salida finito, normalmente cadenas de longitud fija.

MD5 (técnicamente llamado MD5 Message-Digest Algorithm) es una función de hash criptográfico, veamos como calcularlo desde la terminal de Linux.

Como podemos ver los archivos cadena_de_text.txt y cadena_de_texto1.txt NO son iguales de largos, pero los Hash tienen la misma cantidad de caracteres.