jueves, 18 de octubre de 2012

FEAL ( Fast data Encipherment ALgorithm)

Para esta estrada vamos a explicar algunos datos acerca del algoritmo de bloques FEAL (fast data encipherment algorithm).

Historia
Al parecer fue publicado por primera vez en 1987 (la versión FEAL-4) por Akihiro Shimizu y Shoji Miyaguchi, los dos son japonéses, en la Eurocrypt 87.
FEAL-8, se concibió como software para microprocesadores de 8 bits en las tarjetas IC (“Tarjetas con chip”) , el principal impulso de desarrollado de FEAL-8 es que era más rápido que el DES.

Ha habido varias revisiones diferentes de FEAL, aunque todas en cifras de Feistel  y hacen uso de la misma función de redondeo base y operan en bloques de 64-bits. Uno de los primeros diseños actualmente se denomina FEAL-4, tiene cuatro rondas y una clave de 64 bits.

Posteriormente se publicó lo que hoy se conoce como FEAL-8 en 1988 por los mismos autores de FEAL-4, esto debido a que la primera versión mostró debilidades, que se mencionan mas adelante en el apartado de ataques/vulnerabilidades.

Posteriormente debido a la mismas situaciones de vulnerabilidad se vieron en la necesidad de publicar FEAL-N donde N era el numero de rondas y lo elegía el usuario.

Después publicaron tambien FEAL-NX que prácticamente era lo mismo que FEAL-N, solo que eran diferentes en el tamaño de sus llaves/keys/claves, FEAL-N manejaba llaves de 64bits y FEAL-NX llaves de 128bits.

La versión más reciente es FEAL-32X.

¿Cómo funciona?
Como ya se había mencionado, este algoritmo se basa en el tipo de Feistel. 
El inventor de este algoritmo fue Horst Feistel. Feistel usó 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.

Los principales pasos del funcionamiento de un algoritmo tipo Feistel:
  • Dado 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.
  • El bloque A es una de las entradas de la función F, la otra entrada es una sub clave Ki.
  • La función F es una serie de operaciones, lo cual la vuelve una función difícil de modificar.
  • El bloque B es una de las entradas de la función XOR, la otra entrada es la salida de la función F.
  • Se realizan una serie operaciones con la función F y la clave solo con una de mitades del mensaje A o B, en cada iteración se permuta la mitad usada. Este proceso es repetido n-veces.
  • Finalmente se combinan los bloques A y B para producir el texto cifrado. 
Una red de Feistel es un método general de transformación de cualquier función (usualmente llamada función F) dentro de una permutación.


FEAL al basarse en el tipo Feistel, es muy parecido y en lo unico que difieren es en la cantidad de rounds en los que se realizará el proceso. En la imagen se muestra el proceso para la implementacion del FEAL-N.

 
Actualmente se usa FEAL-32X, que como su nombre lo indica se maneja con 32 rounds y llave de 128 bits, además de 64 bits de plaintexts.
 Su esquema general:
 
El generador de claves de este algoritmo crea 40 subclaves, las cuales son separadas en tres grupos.
Para el cifrador las claves desde K0 a K31 alimentan cada una de las rondas en forma ascendente. Las claves K32 a K35 son concatenadas para realizar una operación XOR con el texto plano. Luego de realizar cada una de las rondas las claves K36 a la K39 son concatenadas para realizar una operación XOR con el texto saliente de la última ronda, el resultado de esta operación es el texto cifrado. 

Para el descifrador las claves desde K0 a K31 alimentan cada una de las rondas en orden descendente. Las claves K36 a K39 son concatenadas para realizar una operación XOR con el texto cifrado. Luego de realizar cada una de las rondas las claves K32 a la K35 son concatenadas para realizar una operación XOR con el texto que saliente de la última ronda, el resultado de esta operación es el texto plano.

La función f es equivalente a f (α , β). Donde α y β son entradas y se dividen de la siguiente manera (αi y βi son de 8-bits de longitud). 

S0 y S1 se definen como:
S0 (X1, X2) = Rot2 ((X1 + X2) mod 256)
S1 (X1, X2) = Rot2 ((X1 + X2 + 1) mod 256)

Donde X1 y X2 son bloques de 8 bits y Rot2 (T) es el resultado de un 2-bits izquierda.
α = (α0,α1,α2,α3)     β = (β0,β1)
f = (α0,α1,α2,α3), se calculan en secuencia.
f1= α1 ⊕ β0
f2= α2 ⊕ β1
f1= f1 ⊕ α0
f2= f2 ⊕ α3
f1= S1 (f1 , f2)
f2= S0 (f1 , f2)
f0= S0 (α0 , f1)
f3= S1 (α3 , f2)


Ejemplo:

El algoritmo usará bloques de tamaño 8 caracteres. Tendrá dos vueltas y en cada vuelta realizará una operación de sustitución S y una permutación P sobre la 1ª mitad.
Sustitución: Ci = (Mi +1 ) mod 27
Permutación: Ci = Π3241 (el carácter 1º pasa a la 4ª posición en el criptograma, el 4º a la 3ª, el 2º a la 2ª y el 3º a la 1ª)
Mensaje: M = STAR WARS LA MISION CONTINUA
 n = 27

C = SBTX BUST PJÑT NBJM VÑBJ ÑPUD

Para obtener el plaintext de nuevo, se hace prácticamente lo mismo, a diferencia que ahora el mensaje que se usaría el inicio sería el ciphertext obtenido.


Ataques/Vulnerabilidades
  • En artículo, den Boer en  1988 describe un ataque que requiere 100-10000 plaintexts y lo publica en la Eurocrypt 88.
  • Sean Murphy en 1990 realizó una mejora al ataque publicado por den Boer y en esta ocasión solo se necesitan 20 plaintext.
  • Un criptoanálisis lineal puede romper FEAL-4 con 5 plaintexts (conocidos) y esta vulnerabilidade fue encontrada por Matsui y Yamagishi en 1992.  Estos mismos tipos publicaron vulnerabilidades para FEAL-6 con 100 plaintexts y para FEAL-8 con 215 plaintexts.
  • Un ataque diferencial puede romper FEAL-N/NX con menos de 31 rondas y fue descubierto por Biham y Shamir en 1991.
  • En 1994, Ohta y Aoki presentaron un ataque criptoanalítico lineal para FEAL-8 que usaba 212 plaintexts.
--------------------------------------------------------------------------------------------------------------
Enlaces: 


1 comentario:

  1. Has intentado acceder a una página restringida

    URL: www.buenastareas.com/ensayos/Cifradores-De-Bloque/2072209.html

    Van 5 de 7.

    ResponderEliminar