Criptografía

1.- DEFINICIONES

  • Del griego kryptos (ocultar) y grafos (escribir), literalmente escritura oculta, la criptografía es el arte o ciencia de cifrar y descifrar información utilizando técnicas matemáticas que hagan posible el intercambio de mensajes de manera que sólo puedan ser leídos por las personas a quienes van dirigidos.
    es.wikipedia.org/wiki/Criptografía
  • Técnica para codificar la información de forma que solo pueda ser interpretada por quienes tengan acceso a las claves de su codificación.
    teleenfermeria.iespana.es/teleenfermeria/tecnoglosario.htm

La finalidad de la criptografía es garantizar el secreto en la comunicación entre dos entidades y la autenticidad tanto de las entidades como del mensaje.

Las dos técnicas más sencillas de cifrado, en la criptografía clásica son la sustitución, que supone el cambio de significado de los elementos alfanuméricos del mensaje y la trasposición, que supone una reordenación de los mismos. La gran mayoría de los cifrados clásicos son combinaciones de estas dos operaciones básicas.

El descifrado es el proceso inverso que recupera el mensaje a partir del criptograma y la clave de cifrado. El protocolo criptográfico especifica los detalles de cómo se utilizan los algoritmos y las claves (y otras operaciones primitivas) para conseguir el efecto deseado. El conjunto de protocolos, algoritmos de cifrado, procesos de gestión de claves y actuaciones de los usuarios, en conjunto es lo que constituyen un criptosistema, que es con lo que el usuario final trabaja e interactúa.

Existen dos grandes grupos de cifrados:

  1. los algoritmos que utilizan una única clave tanto en el proceso de cifrado como en el de descifrado, se denominan cifrados simétricos o de clave simétrica y son la base de los algoritmos de cifrado clásico.
  2. los que utilizan una clave para cifrar mensajes y una clave distinta para descifrarlos, se denominan cifrados asimétricos y forman el núcleo de las técnicas de cifrado modernas.

2.- CIFRADO SIMÉTRICO

Como ejemplo de sistema simétrico está Enigma. Éste fue un sistema empleado por Alemania durante la Segunda Guerra Mundial, en el que las claves se distribuían a diario en forma de libros de códigos. Cada día, un operador de radio, receptor o transmisor, consultaba su copia del libro de códigos para encontrar la clave del día. Todo el tráfico enviado por ondas de radio durante aquel día era cifrado y descifrado usando las claves del día.

Inglaterra usó máquinas para adivinar las claves durante aquella guerra y aunque el citado sistema alemán Enigma estaba provisto de un amplio abanico de claves, los ingleses diseñaron máquinas de cómputo especializado, los Bombes, para probar las claves de un modo mecánico hasta que la clave del día era encontrada. Esto significaba que algunas veces encontraban la clave del día unas pocas horas después de que ésta fuera puesta en uso, pero también que otros días no podían encontrar la clave correcta. Los Bombes no fueron máquinas de cómputo general, sino los precursores de las computadoras (ordenadores) de hoy en día.

Algunos ejemplos actuales de algoritmos simétricos son 3DES y AES.

El principal problema de los sistemas de cifrado simétrico estriba en el intercambio de claves. Una vez que el remitente y el destinatario han intercambiado las claves pueden usarlas para comunicarse con seguridad, pero ¿qué canal de comunicación seguro han usado para transmitirse la clave?

Otro problema es el número de claves que se necesitan. Si tenemos un número n de personas que necesitan comunicarse entre ellos, entonces se necesitan n(n-1)/2 claves para cada pareja de personas que tengan que comunicarse de modo privado. Para solucionar este problema podemos recurrir a la criptoghrafía asimétrica o a la criptografía híbrida.

3.- CIFRADO ASIMÉTRICO

Se basan en el uso de claves públicas con las que no es necesario que remitente y receptor se pongan de acuerdo en la clave a emplear. Antes de iniciar la transmisión el remitente puede conseguir una copia de la clave pública del receptor, cualquiera tiene acceso a dicha clave y por eso se denomina pública.

Los sistemas de cifrado de clave pública se basan en funciones-trampa de un solo sentido que aprovechan propiedades particulares, es decir, aquellas cuya computación es fácil, mientras que su inversión resulta extremadamente difícil.

En criptografía, una infraestructura de clave pública (o, en inglés, PKI, Public Key Infrastructure) es una combinación de hardware, software, políticas y procedimientos de seguridad que permiten la ejecución con garantías de operaciones criptográficas como:

  • Autenticación de usuarios y sistemas (login)
  • Identificación del interlocutor
  • Cifrado de datos digitales
  • Firma digital
  • Asegurar las comunicaciones
  • Garantía de no repudio (negar que cierta transacción tuvo lugar)

La mayor ventaja de la criptografía asimétrica es que se puede cifrar con una clave y descifrar con la otra, pero este sistema tiene bastantes 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.
  • El mensaje cifrado ocupa más espacio que el original.

4.- CIFRADO HÍBRIDO

La criptografía híbrida emplea el cifrado de clave pública para compartir una clave para el cifrado simétrico. El mensaje que se esté enviando en el momento, se cifra usando la clave y enviándolo al destinatario. Ya que compartir una clave simétrica no es seguro, la clave usada es diferente para cada sesión.

Un sistema de cifrado híbrido no es más fuerte que el de cifrado asimétrico o el de cifrado simétrico de los que hace uso, independientemente de cuál sea más débil. En PGP y GnuPG el sistema de clave pública es probablemente la parte más débil de la combinación. Sin embargo, si un atacante pudiera descifrar una clave de sesión, sólo sería útil para poder leer un mensaje, el cifrado con esa clave de sesión. El atacante tendría que volver a empezar y descifrar otra clave de sesión para poder leer cualquier otro mensaje.

Herramientas como PGP, SSH o la capa de seguridad SSL para la jerarquía de protocolos TCP/IP utilizan un criptografía asimétrica para intercambiar claves de criptografía simétrica, y la criptografía simétrica para la transmisión de la información.

La función hash es un algoritmo matemático unidireccional que permite calcular un valor resumen de los datos a ser firmados digitalmente. Cuando la entrada es un documento, el resultado de la función es un número que identifica casi inequivocamente al texto. Si se adjunta este número al texto, el destinatario puede aplicar de nuevo la función y comprobar su resultado con el que ha recibido. Existen funciones “hash” específicamente diseñadas para satisfacer estas dos importantes propiedades. SHA y MD5 son dos ejemplos de este tipo de algoritmos.

5.- ALGORITMOS

La palabra algoritmo deriva del nombre del matemático árabe Al Juarismí, que vivió entre los siglos VIII y IX. Designa el conjunto de procedimientos, instrucciones y/o funciones mediante las cuales se logran ciertos objetivos. Se aplica normalmente al núcleo del proceso ideado para resolver una tarea concreta. Por ejemplo, el código para comprimir los datos de un archivo.

5.1.- MD5 (Message-Digest Algorithm 5, Algoritmo de Resumen del Mensaje 5)

Es un algoritmo de reducción criptográfico de 128 bits diseñados por el profesor Ronald Rivest del MIT y ampliamente usado.

A pesar de su amplia difusión actual, la sucesión de problemas de seguridad detectados desde que, en 1996, Hans Dobbertin anunciase una colisión de hash plantea una serie de dudas acerca de su uso futuro.

5.2.- SHA ( Secure Hash Algorithm, Algoritmo de Hash Seguro )

Es un sistema de funciones hash criptográficas relacionadas de la Agencia de Seguridad Nacional de los Estados Unidos y publicadas por el (NIST). El primer miembro de la familia fue publicado en 1993 es oficialmente llamado SHA pero hoy día se le llama SHA-0 para evitar confusiones con sus sucesores. Dos años más tarde el primer sucesor de SHA fue publicado con el nombre de SHA-1. Existen cuatro variantes más que se han publicado desde entonces cuyas diferencias se basan en un diseño algo modificado y rangos de salida incrementados: SHA-224, SHA-256, SHA-384, y SHA-512 (conocidos todos ellos como SHA-2).

5.1.- DES ( Data Encription Standart, Estándar de Encriptación de Datos )

Es el algoritmo prototipo del cifrado por bloques, toma un texto en claro de una longitud fija de bits (64) y lo transforma mediante una serie de operaciones en otro texto cifrado de la misma longitud. Utiliza una clave criptográfica de igual tamaño para modificar la transformación, de modo que el descifrado sólo puede ser realizado por aquellos que conozcan la clave concreta utilizada en el cifrado. La clave mide 64 bits, aunque en realidad, sólo 56 de ellos son empleados por el algoritmo. Los ocho bits restantes se utilizan únicamente para comprobar la paridad, y después son descartados. Por tanto, la longitud de clave efectiva en DES es de 56 bits, y así es como se suele especificar. Por esta razón se considera inseguro para muchas aplicaciones, las claves DES se han roto en menos de 24 horas.

Aqui podemos ver la estructura básica del algoritmo. Hay 16 fases idénticas o rondas. También hay una permutación inicial y final denominadas PI y PF, que son funciones inversas por lo que no son criptográficamente significativas, pero se incluyeron para facilitar la carga y descarga de bloques sobre el hardware de los 70. Antes de las rondas, el bloque es dividido en dos mitades de 32 bits y procesadas alternativamente. Este entrecruzamiento se conoce como esquema Feistel y asegura que cifrado y descifrado sean procesos similares (la diferencia es que las subclaves se aplican en orden inverso cuando al descifrar). Esto simplificó la implementación sobre hardware, al no necesitar algoritmos distintos para cifrar y descifrar. El símbolo rojo “” representa la operación OR exclusivo (XOR). La función F mezcla la mitad del bloque con parte de la clave. La salida de la función F se combina entonces con la otra mitad del bloque, y los bloques son intercambiados antes de la siguiente ronda.

Tras la última ronda, las mitades no se intercambian; ésta es la característica de la estructura de Feistel que hace que el cifrado y el descifrado sean procesos parecidos.

La función F opera sobre medio bloque (32 bits) cada vez y consta de cuatro pasos:

  1. Expansión: la mitad del bloque de 32 bits se expande a 48 bits mediante la permutación de expansión E, duplicando algunos de los bits.
  2. Mezcla: esultado se combina con una subclave mediante XOR. Dieciséis subclaves (una para cada ronda )se derivan de la clave inicial mediante la generación de subclaves descrita más abajo.Figura 2 —La función Feistel (Función-F) de DES
  3. Sustitución: tras mezclarlo con la subclave, el bloque es dividido en ocho trozos de 6 bits para ser procesados por las cajas S o cajas de sustitución. Cada una de las ocho cajas S reemplaza sus seis bits de entrada con cuatro bits de salida, de acuerdo con una trasformación no lineal, especificada por una tabla de búsqueda. Las cajas S constituyen el núcleo de la seguridad de DES, sin ellas el cifrado sería lineal y fácil de romper.
  4. Permutación: finalmente, las 32 salidas de las cajas S se reordenan de acuerdo a una permutación fija; la caja P

SubclavesA la izquierda vemos el algoritmo que se encarga de proporcionar las subclaves.

1.- Se seleccionan 56 bits de los 64 mediante la Elección Permutada 1 (Permutation Choice-1 o PC1), los ocho restantes se utilizarán como bits d paridad.

2.- Los 56 bits se dividen en dos mitades de 28 bits y cada mitad se trata independientemente.

3.- En rondas sucesivas, ambas mitades se desplazan hacia la izquierda uno o dos bits (dependiendo de cada ronda) y se seleccionan 48 bits de subclave mediante la Elección Permutada 2 (PC-2), 24 bits de la mitad izquierda y 24 de la derecha.

Los desplazamientos (indicados por “<<<” en el diagrama) implican que se utiliza un conjunto diferente de bits en cada subclave, cada bit se usa aproximadamente en 14 de las 16 subclaves.

La generación de claves para descifrado es similar pero en orden inverso. Por tanto los desplazamientos se hacen hacia la derecha, en lugar de hacia la izquierda.

Existen resultados analíticos que demuestran debilidades teóricas, aunque son inviables en la práctica. Aunque existan ataques teóricos ( el criptoanálisis diferencial (CD), el criptoanálisis lineal (CL) y el ataque de Davies. ) se cree que es seguro en la práctica. Actualmente se usa su variante de Triple DES. El ataque más eficiente contra este algoritmo de cifrado a día de hoy sigue siendo la fuerza bruta. Aún así el algoritmo ha sido sustituido por el nuevo AES (Advanced Encryption Standard).

5.2.- TRIPLE DES

3DES consiste en la aplicación de DES tres veces consecutivas con diferentes claves en cada vez. Ha sido ampliamente reconocido como seguro por ahora, aunque es bastante lento. La variante más simple del Tripe DES funciona de la siguiente manera:

C = E_{DES}^{k_3}\Bigg(D_{DES}^{k_2}\bigg(E_{DES}^{k_1}(M)\bigg)\Bigg)

Donde M es el mensaje a cifrar y k1, k2 y k3 las respectivas claves DES.

Este método de cifrado es inmune al ataque por “man-in-the-midle”, doblando la longitud efectiva de la clave, pero además es preciso triplicar el número de operaciones de cifrado, haciendo este método de cifrado más seguro que DES.

5.3.- AES ( Advanced Encryption Standard, Estándar Avanzado de Encriptación )

En 2001, tras un concurso internacional, el NIST escogió un nuevo algoritmo: el AES (Advanced Encryption Standard), para reemplazar a DES y 3DES. El algoritmo elegido para ser el AES fue propuesto por sus diseñadores bajo el nombre de Rijndael.

Rijndael es una red de sustitución-permutación, no una red de Feistel. AES es rápido tanto en software como en hardware, es relativamente fácil de implementar, y requiere poca memoria. Como nuevo estándar de cifrado, se está utilizando actualmente a gran escala.

AES opera en una matriz de 4×4 de bytes, llamada state (algunas versiones de Rijndael con un tamaño de bloque mayor tienen columnas adicionales en el state). Para el cifrado, cada ronda de la aplicación del algoritmo AES (excepto la última) consiste en cuatro pasos:

  1. SubBytes — en este paso se realiza una sustitución no lineal donde cada byte es reemplazado con otro de acuerdo a una tabla de búsqueda.

    SubBytes

  2. ShiftRows — en este paso se realiza un transposición donde cada fila del state es rotado de manera cíclica un número determinado de veces.

    ShiftRows

  3. MixColumns — operación de mezclado que opera en las columnas del «state», combinando los cuatro bytes en cada columna usando una transformación lineal.

    MixColumnsMixColumns

  4. AddRoundKey — cada byte del «state» es combinado con la clave «round»; cada clave «round» se deriva de la clave de cifrado usando una iteración de la clave.

    AddRoundKey

La ronda final reemplaza la fase MixColumns por otra instancia de AddRoundKey.

Referencias:

5.4.- RSA ( Rivest, Shamir y Adleman )

El sistema criptográfico con clave pública RSA es un algoritmo asimétrico cifrador de bloques, que utiliza una clave pública, la cual se distribuye (en forma autenticada preferentemente), y otra privada, la cual es guardada en secreto por su propietario.

Cuando se envía un mensaje, el emisor busca la clave pública de cifrado del receptor y una vez que dicho mensaje llega al receptor, éste se ocupa de descifrarlo usando su clave oculta.

Los mensajes enviados usando el algoritmo RSA se representan mediante números y el funcionamiento se basa en el producto de dos números primos grandes (mayores que 10100) elegidos al azar para conformar la clave de descifrado.

El algoritmo RSA funciona de la siguiente manera:

  1. Generamos aleatoriamente dos números primos grandes p y q.
  2. Calculamos n como producto de p y q: n = p * q
  3. Se calcula Ø: Ø(n)=(p-1)(q-1)
  4. Se calcula un número natural e de manera que MCD(e, Ø(n))=1 , es decir e debe ser primo relativo de Ø(n). Es lo mismo que buscar un numero impar por el que dividir Ø(n) que de cero como resto.
  5. Mediante el algoritmo extendido de Euclides se calcula d: e.d mod Ø(n)=1 Puede calcularse d=((Y*Ø(n))+1)/e para Y=1,2,3,… hasta encontrar un d entero.
  6. El par de números (e,n) es la clave pública.
  7. El par de números (d,n) es la clave privada.
  8. Cifrado: La función de cifrado es C = M^e mod n
  9. Descifrado: La función de descifrado es M = C^d mod n

RSA es mucho más lento que DES y que otros sistemas simétricos.

6.- FIRMA DIGITAL

Una de las ramas de la criptografía que más ha revolucionado el panorama actual de las tecnologías informáticas es el de la firma digital: tecnología que busca asociar al emisor de un mensaje con su contenido de forma que aquel no pueda posteriormente repudiarlo.

La firma digital de un documento es el resultado de aplicar cierto algoritmo matemático, denominado función hash, a su contenido, y seguidamente aplicar el algoritmo de firma (en el que se emplea una clave privada) al resultado de la operación anterior, generando la firma electrónica o digital.

La Ley de Firma digital, que puede ser diferente en cada país, define tres tipos de firma:

  • Simple. Incluye un método de identificar al firmante
  • Avanzada. Además de identificar al firmante permite garantizar la integridad del documento. Se emplean técnicas de PKI
  • Reconocida. Es la firma avanzada ejecutada con un DSCF (dispositivo seguro de creación de firma) y amparada por un certificado reconocido (certificado que se otorga tras la verificación presencial de la identidad del firmante)

Se definen además tres modalidades de firma:

  • Firma básica. Incluye el resultado de operación de hash y clave privada, identificando los algoritmos utilizados y el certificado asociado a la clave privada del firmante.
  • Firma fechada. A la firma básica se añade un sello de tiempo calculado a partir del hash del documento firmado por una TSA (Time Stamping Authority)
  • Firma validada o firma completa. A la firma fechada se añade información sobre la validez del certificado procedente de una consulta de CRL o de OCSP realizada a la Autoridad de Certificación.

La firma completa libera al receptor de la firma del problema de ubicar al Prestador de Servicios de Certificación y determinar los procedimientos de validación disponibles.

6.1 CERTIFICADOS DIGITALES

Un Certificado Digital es un documento mediante el cual un tercero confiable (una Autoridad de Certificación) garantiza la vinculación entre la identidad de un sujeto o entidad y su clave pública.

Un certificado emitido por una entidad de certificación autorizada, además de estar firmado digitalmente por ésta, debe contener por lo menos lo siguiente:

  • Nombre, dirección y domicilio del suscriptor.
  • Identificación del suscriptor nombrado en el certificado.
  • El nombre, la dirección y el lugar donde realiza actividades la entidad de certificación.
  • La clave pública del usuario.
  • La metodología para verificar la firma digital del suscriptor impuesta en el mensaje de datos.
  • El número de serie del certificado.
  • Fecha de emisión y expiración del certificado.

Los encargados de autorizar la creación de una Autoridad de certificación o Prestador de Servicios de Certificación en España son el Ministerio de Industria, Turismo y Comercio y la Agència Catalana de Certificació.

7.- PROTOCOLOS

Se denomina protocolo a un conjunto de normas y/o procedimientos para la transmisión de datos que ha de ser observado por los dos extremos de un proceso comunicacional (emisor y receptor). Estos protocolos “gobiernan” formatos, modos de acceso, secuencias temporales, etc.

7.1.- SSL (Secure Socket Layer, Capa de Conexión Segura)

Protocolo desarrollado por la empresa Netscape, que permite la creación de un canal cifrado entre un servidor Web y el navegador de un cliente, por el cual se puede transmitir información de forma segura en uno y otro sentido. Proporciona autenticación y privacidad de la información entre extremos sobre Internet mediante el uso de criptografía.

7.2 OpenSSL

Es un proyecto de software desarrollado por los miembros de la comunidad Open Source para libre descarga y está basado en SSLeay desarrollado por Eric Young y Tim Hudson. Consiste en un robusto paquete de herramientas de administración y librerías relacionadas con la criptografía, que suministran funciones criptográficas a otros paquetes como OpenSSH y navegadores web (para acceso seguro a sitios HTTPS). Estas herramientas ayudan al sistema a implementar el Secure Sockets Layer (SSL), así como otros protocolos relacionados con la seguridad , como el Transport Layer Security (TLS). Este paquete de software es importante para cualquiera que esté planeando usar cierto nivel de seguridad en su máquina con un sistema operativo Libre basado en GNU/Linux. OpenSSL también nos permite crear certificados digitales que podremos aplicar a nuestro servidor, por ejemplo Apache.

7.3.- TLS (Transport Layer Security, Seguridad para Capa de Transporte)

Es un protocolo de seguridad creado por la Internet Engineering Task Force (IETF), que toma como base el SSL y otros protocolos. Los expertos consideran que en poco tiempo se va a transformar en el estándar para las transacciones electrónicas seguras. La primera definición de TLS apareció en el RFC 2246: “The TLS Protocol Version 1.0″.

7.4.- SSH (Secure SHell)

Es el nombre de un protocolo y del programa que lo implementa. Sirve para acceder a máquinas remotas a través de una red y manejarlas por completo. Además permite copiar datos de forma segura, gestionar claves RSA para no escribir claves al conectar a las máquinas y pasar los datos de otras aplicaciones por un canal seguro tunelizado mediante SSH.

7.5.- SET (Secure Electronic Transaction)

Es un protocolo estándar para proporcionar seguridad a una transacción con tarjeta de crédito sobre Internet. Surge de una solicitud de estándar de seguridad por VISA y MasterCard en febrero de 1996 y la especificación inicial involucró a un amplio rango de compañías, tales como GTE, IBM, Microsoft, Netscape, RSA y VeriSign. Utiliza técnicas certificados digitales y claves públicas para permitir a las entidades llevar a cabo una autenticación entre sí y además intercambiar información de manera segura. Este protocolo no tuvo la aceptación esperada puesto que necesitaba software específico del lado del cliente y a partir del año 2000 comenzaron a promocionar un nuevo estándar para reemplazar SET, denominado 3-D Secure.

Por otro lado las implementaciones actuales de e-commerce que solo utilizan el protocolo SSL presentan un bajo costo y simplicidad en su implementación sin ofrecer la misma calidad de servicios criptográficos que las nuevas alternativas.

8 APLICACIONES

8.1.- PGP (Pretty Good Privacy)

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.

PGP es más fácil de utilizar que muchos otros criptosistemas, pero como ocurre siempre en el campo de la criptografía, su implementación y su utilización influyen muchísimo en la seguridad lograda. Existe la posibilidad de que haya errores en la implementación, y si se utiliza descuidadamente es posible desproteger fácilmente un archivo de texto protegido. Cualquier criptosistema puede ser inseguro, independientemente de lo bueno que sea su diseño.

8.2.- GPG (GNU Privacy Guard)

Es una herramienta para cifrado y firmas digitales, que viene a ser un remplazo de PGP pero con la principal diferencia que es software libre licenciado bajo la GPL. GPG utiliza el estandar del IETF denominado OpenPGP.

8.3.- John the Ripper:

John the Ripper es una herramienta de seguridad que permite a los administradores de sistemas comprobar que las contraseñas de los usuarios son suficientemente buenas. Es capaz de autodetectar el tipo de cifrado de entre muchos disponibles y se puede personalizar su algoritmo de prueba de contraseñas, esto ha hecho que sea uno de los más usados en este campo. Aunque esté catalogada como herramienta de cracking, John the Ripper es una utilidad para administradores, muy sencilla y que no comporta peligro para el usuario si la usa de forma adecuada.Usa un ataque por diccionario: tiene un diccionario con palabras que pueden ser contraseñas típicas, y las va probando todas. Para cada palabra, la cifra y la compara con el hash a descifrar. Si coinciden, es que la palabra era la correcta.

La mayoría de las contraseñas son palabras de diccionario. Pero John the Ripper también prueba con variaciones de estas palabras: les añade números, signos, mayúsculas y minúsculas, cambia letras, combina palabras, etc.

Además ofrece el típico sistema de fuerza bruta en el que se prueban todas las combinaciones posibles, sean palabras o no. Éste es el sistema más lento, y usado sólo en casos concretos, ya que los sistemas anteriores (el ataque por diccionario) ya permiten descubrir muy rápidamente las contraseñas débiles.

((Esta página aún no esta acabada, queda mucho que decir sobre la criptografía))

¿Habrá en estos momentos en algún lugar del mundo, estudios secretos con computadores y esquemas cuánticos que al se estratégicos y vitales para alguno países y organismos, su conocimiento esté vedado para el resto la comunidad científica y, más aún, para la sociedad en general?

Ahí lo dejo por ahora.

Escribe un comentario