lunes, 18 de marzo de 2013

CIFRADO FEISTEL


Cifrado por Bloques

La criptografía simétrica (o privada) es el sistema de criptografía más antiguo. Se utiliza desde los tiempos de Julio Cesar hasta la actualidad.
Se caracteriza por usar la misma clave para encriptar y desencriptar.

Toda la seguridad está basada en la privacidad de esta clave secreta, llamada simétrica porque es la misma para el emisor y el receptor.

Cifrado de producto

Los  algoritmos  de  cifrado  simétricos  se  apoyan  en  los  conceptos  de confusión (tratar de ocultar la relación que existe entre el texto claro, el  texto  cifrado  y  la  clave,  es  decir,  realizar  sustituciones  simples)  y difusión (trata de repartir la influencia de cada bit del mensaje original
lo más posible entre el mensaje cifrado, es decir, realizar permutaciones) que se combinan para dar lugar a los denominados cifrados de producto.

Estas técnicas consisten básicamente en trocear el mensaje en bloques de tamaño fijo, y aplicar la función de cifrado a cada uno de ellos.

Principios de cifrado convencional

Un esquema de cifrado tiene 5 ingredientes:
Texto “en claro”
Algoritmo de cifrado
Clave secreta
Texto cifrado
Algoritmo de descifrado

La seguridad depende de secreto de la clave, no del algoritmo
Estrategia de ataque:
Solo texto cifrado y algoritmo
Texto claro conocido
Fundamentos
Opera sobre un bloque de texto plano de n bits para producir un texto cifrado de n bits.
Típicamente, la longitud de un bloque es de 64 bits.
Pueden adaptarse para funcionar como cifradores de flujo (más generales y mayor aplicabilidad)
Para  que  sea  reversible  (descifrado),  cada  entrada  debe  producir  un bloque de texto cifrado único

Redes Feistel

Horst Feistel fue uno de los primeros no militares investigadores en el campo de la criptografía.
En  1973  se  publicó  un  artículo  llamado  “Cryptography  and  Computer Privacy” en la revista llamada “Scientific American”, en el que trató de cubrir los aspectos más importantes de la máquina de cifrado e introdujo lo que hoy se conoce como la "Red de Feistel”.

Esta estructura presenta unas características muy interesantes entre las que destaca que la codificación y la decodificación sean muy similares o en ciertos casos idénticos (autoreversivilidad). A la hora de implementar los sistemas en hardware, esta propiedad consigue reducir la complejidad y el coste de los circuitos, siendo sólo necesario modificar la clave.



Muchos  de  los  cifrados  de  producto  tienen  en  común  que  dividen  un bloque de longitud n en dos mitades, L y R. Se define entonces un cifrado de  producto  iterativo  en  el  que  la  salida  de  cada  ronda  se  usa  como entrada para la siguiente según la relación

Este tipo de estructura se denomina Red de Feistel, y es empleada en multitud de algoritmos, como DES, Lucifer, FEAL, CAST, Blowfish, etc.

Para descifrar bastará con aplicar el mismo algoritmo, pero con las Ki en orden inverso.

La propuesta de Feistel propuso alterna sustituciones y permutaciones, es una aplicación práctica de una propuesta de Claude Shannon en 1945 para desarrollar un cifrado producto que alterna funciones de confusión.

Difusión y confusión

Difusión: Pretende disipar la estructura estadística del texto plano en el texto cifrado

El cambio de un bit en el texto plano afecta al valor de muchos dígitos del texto cifrado, cada bit del texto cifrado se ve afectado por muchos dígitos  del  texto  plano,  esto  se  consigue  aplicando  repetidamente permutaciones antes de las funciones de sustitución empleadas.

Confusión:  Pretende  hacer  la  relación  entre  las  estadísticas  del  texto cifrado  y  el valor  de  la clave  lo  más  compleja  posible, para  evitar  el descubrimiento de la clave.

La manera en que se utiliza la clave para cifrar el texto debe ser tan compleja  que  sea  difícil  deducir  la  clave  y  se  consigue  mediante  la utilización de un algoritmo de sustitución complejo.

Funcionamiento de una Red Feistel

  1. Se divide el bloque inicial en dos partes: izquierda (L) y derecha (R).
  2. A la parte derecha se le aplica una función f que aporte la confusión y  la  difusión  adecuada.  En  esta función  un  lugar  importante  lo ocupa  la clave  (ki),  ésta  debe  permanecer  en  secreto  y  sólo  la deben conocer el emisor y el receptor del mensaje.
  3. El resultado de esta función es aplicado a la parte izquierda del bloque mediante un XOR
  4. Se intercambian las dos partes y se itera el proceso, esta vez con los papeles cambiados.
La estructura de la decodificación es exactamente la misma que la de la codificación. Comprobamos que simplemente con cambiar las claves de orden podemos obtener el bloque original y en ningún momento se ha necesitado la inversa de la función f.

El último intercambio no se suele hacer, o si se hace (por ejemplo con una  implementación  mediante  iteración)  se  deshace.  Normalmente  se toma un número de rondas mayor o igual a tres y suele ser par. La red de 16  rondas  mostrada  corresponde  a  la  utilizada  por  el  sistema  DES, también es la que utiliza Blowfish.


Reversibilidad del algoritmo

El algoritmo debe ser reversible: supongamos que se trata de una caja negra  que  tiene  como  entrada  un  bloque  y  como  salida  el  bloque codificado. Tiene que ser posible enlazar ese bloque codificado con una caja negra idéntica en estructura (cambiando las claves lógicamente) que aplicado al bloque codificado nos devuelva el bloque original.

EJEMPLO
 

Bibliografía

Handbook  of  Applied  Cryptography,  A.  Menezes,  P.  van  Oorschot,  S. Vanstone
Libro electrónico de seguridad informática y criptografía, Dr. Jorge Ramió Aguirre, Dr. Josep María Miret Biosca

Enlaces de internet.

www.schneier.com/blowfish.html
www.kriptopolis.com
www.rsasecurity.com
www.monografias.com/trabajos20/cifrado-en-bloques/cifradoen- bloques.shtml.
http://cs-exhibitions.uni-klu.ac.at/index.php?id=261.
http://es.knowledger.de/0105290/CifraDeFeistel.
http://spi1.nisu.org/recop/al01/alberto/tema2.html.

No hay comentarios:

Publicar un comentario