viernes, abril 29, 2005

Apuntes de Criptografía III: Algoritmos Simétricos, Red de Feistel.

Siguiente con nuestros breves apuntes de criptografía, hoy me dispongo a hablaros con un poco más de profundidad de los algoritmos simétricos. Existen dos grandes grupos de algoritmos simétricos, los de codificación por flujo o codificación por rondas. En este artículo nos centraremos en un algoritmo por rondas, ya que son lo más usados.

Un algoritmo de cifrado simétrico utiliza, como ya vimos, la misma clave para cifrar o descifrar. El algoritmo que vamos estudiar básicamente sigue los siguientes pasos:
  • Dado la un mensaje de una longitud N - típicamente 64 bits, 128 bits, etc -, se divide en dos bloques de tamaño N/2, A y B.
  • Se toma una función F, la cual es muy difícil de invertir.
  • Se realizan una serie operaciones con la función F y la clave Ki con solo con una de mitades del mensaje – A o B , cada iteración se permute la mitad. Este proceso es repetido n-veces.

Image hosted by Photobucket.com
Red de Feistel

El inventor de esto fue Horst Feistel. Feistel uso este método para su algoritmo LUCIFER, en 1970. En 1974 se propone a la NSA (Agencia de la Seguridad Nacional), como resultado nació DES. No todos los algoritmos modernos de clave simétrica se basan en Feistel, pero marco el principio. Por ejemplo, AES – actual estándar mundial – no se basa en una red Feistel, sino en una red de sustitución – usando S-Cajas - y permutaciones.