Índice·Index Anterior·Previous Siguiente·Next

5.6 ALGORITMOS

La seguridad de un criptosistema no puede estar basada en los algoritmos de codificación y decodificación, pero sí en un valor: la llave. El mecanismo debe ser tan seguro que el mismo autor de un algoritmo no sea capaz de decodificar un mensaje, si no posee la llave. Así, se asume que un criptoanalista conoce todo el sistema con excepción de las llaves utilizadas (ésta es conocida como la premisa de Kerckhoffs, matemático holandés del siglo XIX). Cuando el sistema utiliza llave de desciframiento igual a la de ciframiento (hace que pueda ser deducida en función de ésta) se dice de un sistema de llaves simétricas, la llave secreta. En el caso que estas llaves sean diferentes, se habla de un sistema de llaves asimétricas, o de llave pública.

5.6.1 ALGORITMOS DE LLAVE UNICA O SECRETA (SIMETRICOS)

La criptografía es una cerradura. Aquí aparecen dos conceptos: ocultar el mensaje se llama encriptación y recobrar el mensaje oculto se llama desencriptación. La encriptación es la cerradura del mensaje y la desencriptación es el desatar de ese mensaje. Una persona que posea la llave puede accesar al mensaje. Porque la misma llave es usada para cerrar y abrir el mensaje, este tipo de criptografía se llamó "secreto compartido", porque ambas partes tienen que saber la llave oculta que desata el mensaje. El término más formal para esta metodología es la criptografía simétrica.

Con la criptografía simétrica, se remite el uso de una llave para encriptar el mensaje, entonces envía el mensaje encriptado al receptor. El receptor usa la misma llave para desencriptar el mensaje. Se debe tener una cifra y una llave, que puede cambiar, para ocultar el mensaje. Cuando se toma la cifra y aplica la llave a un mensaje, se puede crear o destrabar el mensaje. Aquí hay algunos ejemplos simples:

Hay una suposición implícita: si se tiene la llave, se está "autorizado" para leer el mensaje o es "autenticado" como el receptor destino. La posesión de una llave simétrica no es suficiente para autenticar a un individuo o corporación.

La parte difícil es la autenticación: asegurar que alguien es quien dice que es. Por ejemplo, cuando se viaja al extranjero, la persona se autentica por medio de su pasaporte, en donde el oficial de aduana compara su cara con la foto y la firma, con la forma que se ha llenado. Pero sobre el Internet, la confianza de identidad es un problema mucho más crítico. Por lo tanto, la simple posesión de una llave no es un buen método de autenticación.

La posesión de una llave no es suficiente para la autenticación. En tiempos antiguos, si un líder quería comunicarse con alguien en lugar lejano, ellos podrían enviar mensajes por medio de couriers. Desafortunadamente, había siempre la posibilidad de que el mensaje llegue a manos equivocadas. Durante las guerras, ésto podría significar la victoria o la derrota. El uso de la criptografía ha hecho mucho más difícil, para personas no autorizadas, leer los mensajes.

Debido al adelanto tecnológico, en el mundo de la informática se ha visto necesario desarrollar cifras potentes, con llaves más largas y complejas. Las llaves se han mejorado para aumentar la dificultad de que puedan ser conocidas, mediante todas las posibilidades, por personas no autorizadas para descifrar el mensaje.

Se presentan serios problemas con la criptografía de llave simétrica, porque si se deduce la llave, se podrá desencriptar el mensaje y también, crear nuevos mensajes usando las llaves. También se podrá saber que se comunica y cambiar la comunicación o personificar a partes autorizadas. En los sistemas simétricos, cuando se establece una comunicación, necesariamente ambas partes deben conocer la llave que encripta y desencripta el mensaje. Esto origina un serio problema, debido a que las llaves de sistemas simétricos de hoy son muy grandes (entre 40 y 128 bits) y generalmente es difícil de recordar, por consiguiente las llaves deben comunicarse por algún medio electrónico. Se podría copiar simplemente la llave al disco flexible y darlos. Esto genera muchas interrogantes sobre cómo se consigue las llaves de la persona que no conoce, qué hace para confiar en ellos para que no divulguen la llave a otra persona, etc.

Se ha desarrollado en el punto de Norma de Cifrado de datos. Un paso de cifrado de DES, tiene dos objetivos básicos: la difusión y la confusión. La difusión se basa en eliminar la redundancia existente en el mensaje original, distribuyéndola por el mensaje cifrado. El propósito de la confusión es tornar la relación entre el mensaje y la llave, tan compleja como sea posible. El DES puede ser quebrado por el método de fuerza bruta, tentándose todas las combinaciones posibles de llave. Como la llave tiene 56 bits, se tiene un total de 256 llaves posibles.

Aquí hay una tabla con algunas de las longitudes de llaves comunes y el número de llaves posibles para cada una:

El quebrantamiento de una llave de 56 bits es posible con el hardware sumamente caro, pero no con las computadoras de propósito general que usan software. La mayoría de los expertos acuerdan que llaves de 128 bits son bastantes seguras para el futuro previsible. Hay otras maneras para romper con los "códigos" o criptoanálisis, pero los algoritmos que son hoy en día de uso común generalmente han sido elegidos, porque ellos son, actualmente, resistentes a métodos conocidos de criptoanálisis.

Existen diversos algoritmos de cifrado de bloques de llave única, entre ellos tenemos:

  • Triple-DES: o DES es aplicado 3 veces, con secuencias de cifrado y descifrado, combinando la utilización de 2 llaves.
  • Lucifer: precursor del DES.
  • Madryga: trabaja con 8 bits, usando or-exclusivo y deslocamiento de bits.
  • NewDES: bloques de 64 bits y llave de 120 bits.
  • FEAL-N: basado en DES, se puede especificar el número de pasos del cifrado. Se utiliza menos de 8 pasos.
  • REDOC II y III: realizan operaciones sobre bytes.
  • LOKI: bloque y llave de 64 bits.
  • Khufu y Khafre: trabajan de forma semejante a DES, usan tablas de sustitución de 256 posiciones de 32 bits, contra las 6 posiciones de 4 bits de DES. Usan llaves de 512 bits y un número de pasos flexibles, múltiplo de 8.
  • IDEA: bloques de 64 bits con llave de 128 bits.
  • MMB: bloques y llave de 128 bits.
  • Skipjack: llave de 80 bits y 32 pasos de procesamiento.

5.6.2 CIFRADO DE BLOQUES

Un algoritmo que realiza cifrado sobre bloques puede operar de diversas maneras.

Cada bloqueo de mensaje original es individual e independientemente cifrado, para producir los bloques de mensaje cifrado. Un bloque típico tiene 64 bits, el que produce un libro de códigos de 264 entradas. Para cada llave posible existe un libro de códigos diferentes.

Una ventaja del método es su simplicidad y la independencia entre los bloques.

Una desventaja es que un criptoanalista puede comenzar a compilar un libro de códigos, así como conoce la llave.

Un problema aún mas grave, es la llamada repetición de bloque, donde un atacante activo puede alterar parte de un mensaje criptografiado, sabe la llave y modifica el contenido. Se puede, por ejemplo, interceptar una transacción bancaria de transferencia de saldo de cualquier persona, seguidamente se puede realizar una transferencia de saldo de una cuenta para la cuenta del atacante e interceptar el mensaje, así se puede identificar los bloques correspondientes al destinatario y de esa forma, sustituir en todos los mensajes del destinatario por el del atacante.

  • Modo de Encadenamiento de Bloques (Cipher Block Chaining - CBC)

El CBC realimenta el cifrado del bloque actual con el resultado de los cifrados de los bloques anteriores. La operación más utilizada es el or-exclusivo con el bloque anterior, de esa forma los bloques iguales serán normalmente cifrados de forma diferente, a parte de que los bloques anteriores sean diferentes del mensaje.

Entretanto, 2 mensajes iguales serán mapeados para los mismos bloques. Dos mensajes con igual inicio serán cifrados de la misma forma, hasta que ocurra la diferencia. La manera empleada para evitar ese problema es la utilización de un vector de inicialización distinto para cada mensaje.

  • Modo de Realimentación de Cifra (CIPHER FEEDBACK - CFB)

Cuando hay necesidad de enviar mensajes que posean tamaño menor que un bloque se usa el método CFB, que trabaja con grupos (8 bits por ejemplo 1 caracter), en este caso la realimentación es hecha sobre el grupo, utilizándose también or-exclusivo.

  • Modo de Encadenamiento de Bloques (BLOCK CHAINING)

La entrada del cifrador es operada con un or-exclusivo de todos los bloques anteriormente cifrados.

  • Modo de encadenamiento propagado (PROPAGATING CIPHER BLOCK CHAINING - PCBC)

La entrada del cifrador es operada con or-exclusivo con los bloques normales y cifrados anteriores.

5.6.3 ALGORITMOS DE LLAVE PUBLICA (ASIMETRICOS)

Los investigadores Whitfield Diffie y Martin Hellman, surgieron con la criptografía de llave asimétrica en 1975 para resolver el problema de poseer una sola llave simétrica. Con este sistema, todos los que quieran comunicarse posiblemente tienen un par de llaves: una llave pública y una llave privada. La llave privada no puede descubrirse desde la llave pública. Para usar la analogía de cerradura, imagine una cerradura que requiere de una llave para cerrarla y otra llave para abrirla.

Se puede observar dos conceptos, la de ciframiento, de conocimiento público, y otra de desciframiento, secreto. Si un usuario desea mandar un mensaje para un usuario B, utiliza la llave de ciframiento que es publicada o tornada accesible a los usuarios, sin que se haya quebrado la seguridad. De esa forma cada usuario tiene una llave de ciframiento pública PB y envía un mensaje para B. Este posee su llave de desciframiento secreta SB, que decodifica el mensaje.

Cada parte de la transacción posee un "par de llaves", que consiste en dos llaves, con una relación muy particular, que permite que una encripte un mensaje que la otra puede desencriptar. Una de estas llaves está disponible al público y la otra es una llave "privada". Un mensaje encriptado con la llave pública de una persona no puede ser desencriptado con la misma llave, pero puede ser desencriptado con la llave privada a la que corresponde. Si se autoriza una transacción con el banco usando su llave privada, el banco puede leerla con la llave pública correspondiente y sabe que sólo ese usuario puede haberla enviado. Esto es el equivalente a una "firma digital".

En la criptografía simétrica, ambas partes tienen la misma llave, que pueden usar para encriptar y desencriptar mensajes. En la criptografía asimétrica, las llaves usadas por las diferentes partes no son las mismas, siempre y cuando el sistema no sea simétrico. Este tipo de sistema también es llamado criptografía de llave pública. Hay varias llaves públicas, diferentes en el criptosistema que usa diferentes algoritmos, que significa la manera en que los componentes de las llaves privadas y públicas se generan diferentes. Hay una sola llave pública en el criptosistema que está hoy en día en una amplia aceptación. Esta se llama RSA, nombrada por sus inventores, Ron Rivest, Adi Shamir y Leonard Adelman.

En la criptografía de llave pública una de sus llaves es "pública" o distribuida ampliamente. Esto no compromete su llave privada, que no puede derivarse desde su llave pública. La llave pública se da a alguien que quiere comunicarse con otro usuario. Alguien puede usar su llave pública para encriptar un mensaje (usando un algoritmo de llave pública como la cifra) y el otro usuario puede desencriptar usando su llave privada. Ahora cada persona tiene su propio par de llaves, para que la probabilidad de que alguien divulgue una llave sea menor, podría descubrirse que la llave ha estado en su posesión cuando se usó. La criptografía de Llave Pública es el primer ingrediente para las firmas digitales.

Ejemplo de Uso: María y Carlos quieren establecer una comunicación bidireccional. Para realizar ésto, cada parte daría su llave pública a la otra parte. María usaría la llave pública de Carlos para pasar el mensaje encriptado a Carlos. Carlos usaría su llave privada para desencriptar el mensaje. Para la respuesta desde Carlos a María, Carlos usaría la llave pública de María para encriptar el mensaje y María usaría su llave privada para desencriptar el mensaje.

Desafortunadamente, la criptografía de llave pública es muy cara computacionalmente, de tal manera que ésto no es como es usado. Los sistemas simétricos son mucho más rápidos, cuando la comunicación es segura, la llave pública se usa para encriptar un "secreto compartido" por una de los partes y entonces la criptografía simétrica se usa para la comunicación.

Como podemos apreciar en la siguiente figura:

El software de María genera una llave simétrica y usa la llave pública de Carlos para encriptarlo, entonces lo envía a Carlos. Carlos entonces usa la llave pública de María para encriptar, la misma llave que ella envió y la envía de regreso. Esto confirma lo que realmente Carlos consiguió con la llave. Ahora ellos pueden usar esta llave para continuar la comunicación con la cifra simétrica más rápida.

Una característica importante del RSA de la criptografía de llave pública, es que la llave puede "abrir" lo que su compañero está "cerrando" o invertir la operación de su compañero. Para la privacidad segura, esto no es de mucho uso. Si usted usó su llave privada para encriptar los datos, alguien podría leer los datos usando su llave pública para desencriptarlo.

Los algoritmos simétricos son ejecutados más rápidamente por el computador que los asimétricos. Generalmente son utilizados en conjunto, de esa forma un algoritmo de llave pública es usado para cifrar una llave generada aleatoriamente, y esa llave es usada para cifrar un mensaje usando un algoritmo simétrico.

La criptografía de llave pública disminuye el riesgo de que una información privada sea interceptada y permite que las partes se identifiquen positivamente una a otra, a través de firmas digitales.

Existen varios métodos de llave pública, entre ellos: Diffie-Hellman, Método de Mochila (Knapsack), Pohlig-Hellman, Rabin, Feige-Fiat-Shamir, etc.

Para que un algoritmo pueda ser analizado del punto de vista de robustez a ataques, son asumidas las siguientes premisas:

  • el criptoanalista tiene acceso al descifrado completo del algoritmo,
  • el criptoanalista tiene acceso a grandes volúmenes de mensajes originales y sus correspondientes mensajes cifrados,
  • el criptoanalista es capaz de escoger qué mensajes serán cifrados y recibir los correspondientes mensajes cifrados.

La mayoría de sistemas utiliza normas para evitar que esas premisas se realicen, el criptosistema que no se base en esas premisas es automáticamente tomado como inseguro.

Algoritmos modernos de criptografía no pueden ser ejecutados por humanos. Algoritmos fuertes y poderosos son desarrollados para que sean ejecutados por computadoras o dispositivos especiales de hardware. La mayor parte de las aplicaciones de criptografía es hecha por software, y varios paquetes criptográficos están disponibles.