martes, 9 de julio de 2013

Cifrado por Bloques - FEAL(Fast data Encipherment ALgorithm)

En criptografía, FEAL (Fast data Encipherment ALgorithm) o (Algoritmo de encriptación rápida de datos) esta basado en el cifrado por bloques y fue propuesto como alternativa al algoritmo DES (Data Encryption Standard) o (Encriptación estándar de datos), diseñado para ser mucho más rápido a nivel de software.

Características:
  • Basado en el cifrado por bloques.
  • Consta de un cifrado de 64 bit por bloque.
  • Las llaves son igualmente de 64 bit.
  • Utiliza xor, sustitución, permutación y rotación(esta última es utilizada principalmente para las versiones FEAL-N y FEAL-NX) como métodos de cifrado.
  • Su principal función es dividir el texto de entrada en 2 y trabajar con ellos por separado con sub-llaves.
Inicialmente se implemento el algoritmo como FEAL-4, ya que este realizaba 4 "rondas" para cifrar el texto, se pensaba que para poder "quebrar" la seguridad de este algoritmo, eran necesarios entre 100 y 10,000 "textos planos elegidos" para obtener las llaves y decifrar el texto cifrado, pero Sean Murphy (1990) demostró que con solo 20 era suficiente para realizar el ataque y tener éxito..

Después de demostrar esto, se aumento el número de "rondas" a 8 con lo cual se dificulta el ataque, requiriendo alrededor de 10,000 por medio de un ataque estadístico, poco tiempo después, se demostró que para que el algoritmo fuese más efectivo que el DES, era necesario aumentar el número de "rondas" por lo cual se re-nombro por FEAL-N y actualmente se utiliza el FEAL-NX, el cual usa cifrado de 128 bit.

Funcionamiento.

Componentes:

  1. Llave de 64 bit
  2. Texto plano (texto legible)
  3. Función NO-Lineal

Inicialmente tenemos una llave de 64 bits, la cual puede ser generada pseudo-aleatoriamente, posteriormente esta llave es separada en sub-llaves de forma independiente y aleatoriamente, basándolo en esa primera llave.




la intención del uso del schedule y las sub-llaves, es que, si un atacante obtiene la sub-llave, no sea posible obtener la llave original.






La base del algoritmo, es dividir el Texto a cifrar en dos, posteriormente con las ultimas dos sub-llaves se ejecuta un xor a la mitad del texto de lado derecho, así como a la del lado izquierdo.

El resultado del lado derecho, es nuevamente modificado por medio de xor con el resultado del lado izquierdo y posteriormente una vez más es modificado por medio de xor pero, en esta ocasión, es comparado con la primer sub-llave generada.

Continuando con el flujo, el resultado de esta última operación es sometida a una función No-Lineal, donde es sometida a sustitución, permutación y rotación, para cifrar el texto, al finalizar nuevamente es aplicado un xor al resultado de la función comparandolo con el resultado inicial de la entrada izquierda, el resultado de esta es enviada al lado derecho y se inicia nuevamente el ciclo, mientras que el resultado inicial del lado derecho es enviado al lado izquierdo.

Para la última ronda, el resultado del lado derecho es comparado con xor junto con el resultado final del lado izquierdo, enviando dos salidas, la del lado derecho y la del lado izquierdo.

Con esto tenemos nuestro texto cifrado.





                                                 


En el caso de la función No-Lineal utilizada durante el algoritmo, puede ser utilizado únicamente la sustitución o la permutación pero actualmente se implementa la rotación como medida de cifrado, todo esto con la intención de hacer el algoritmo más seguro, trabajando directamente con los bits.

Gx(a,b) = (a + b + x (mod 256)) <<<2

Función de rotación No-Lineal para FEAL

Describiendo mejor esta función, la entrada de la misma correspondería a 32 bit, por ende, la salida será igualmente de 32 bit. Durante el proceso de la función, todo es separado en bloques de 8 bit y calculada con el modulo de 256, con la intención de que los resultados no sobrepasen el valor de un caracter en ASCII,  enseguida el resultado es "rotado" 2 posiciones, dejando los primeros 2 valores binarios del resultado al final del mismo.

Cabe mencionar que el núcleo del Algoritmo, radica en la función de rotación.


Referencias bibliográficas:

Wikipedia, ‎Yobo,19 March 2012,
Handbook of Applied Cryptography, Capitulo 7.5 "FEAL", ultima actualización July 8, 2011
TheAmazingKing.com, Jon King, Cryptography FEAL-4



2 comentarios:

  1. Ortografía... :/

    <<<2 :P (es << 2)

    En las referencias, pon primero el autor, si hay, luego el título, luego cómo y cuándo ha sido publicado y al final la URL si es un sitio web.

    Evita mezclar inglés con español cuando no es indispensable por falta de terminología establecida en español.

    ¿f es lo mismo que G?

    ¿Quién lo usa? ¿En qué aplicaciones?

    ¿Se conocen ataques o debilidades?

    5 pts.

    ResponderEliminar
    Respuestas
    1. Definitivamente la ortografía es algo a tener en cuenta.

      "<<< 2" hago referencia a "rotar"/"cambiar" 2 posiciones el byte ej. 01001101 <<< 2 = 00110101.

      Con respecto a los ataques y debilidades, al inicio del texto comento 2 de los ataques efectivos y con que cantidad promedio es factible el tipo de ataque :)

      Eliminar