Implementaciones del Algoritmo DES con Clave Variable y Clave Fija Utilizando FPSLIC Sánchez Reíllo R, García Lorenz M, López Ongil C, Entrena L, Jenaro Rodríguez, J. Universidad Carlos III de Madrid, Leganés, Spain Dpt. Tecnología Electrónica, Grupo de Microelectrónica {rsreillo, lorenz, celia, entrena}@ing.uc3m.es entrena}@ing.uc3m.es
[email protected] http://www.uc3m.es
Resumen. En la actualidad existe un alto interés en proporcionar gran seguridad a todo tipo de sistema y dispositivo. Para securizar la transmisión de información, se pueden utilizar muy variados algoritmos de cifrado. Estos algoritmos pueden estar im plementados plementados en software o en hardware, hardware, dependiendo dependiendo del sistema que los vaya a utilizar. Las soluciones hardware son imprescindibles en dispositivos de baja capacidad computacional y/o altos requisitos de velocidad. En este artículo, se estudia la implementación en una FPGA del algoritmo DES, en dos variantes: con clave variable y con clave fija. La de clave fija permite desarrollar sistemas de clave variable mediante técnicas de reconfiguración dinámica. Para llevar a cabo dichas implementaciones se ha utilizado la tecnología FPSLIC de Atmel, que permite combinar prestaciones de FPGA con las de un microcontrolador, para realizar macrofunciones basadas en el núcleo del algoritmo DES implementado.
1 Introducción Actualmente existe una sensibilidad muy alta frente a la seguridad de todo Sistema de Información. Hay casos en los que el grado de seguridad es un requisito imprescindible, y ésta se puede buscar a muchos niveles: acceso físico a los Centros de Proceso de Información, control del acceso lógico a la información, creación de medidas para evitar la interceptación de información de forma que no pueda ser legible y/o manipulable, etc. Si lo que se quiere proteger es el almacenamiento y/o la transmisión de información en formato digital, la solución radica, fundamentalmente, en el uso de algoritmos de cifrado. Un algoritmo de cifrado realiza una transformación matemática de la información, utilizando una o varias claves secretas [1, 2]. De esta forma, el resultado queda ilegible a no ser que se conozca la/s clave/s y operaciones realizadas, para deshacer la transformación y recuperar la información original. Los distintos tipos de algoritmos de cifrado se pueden clasificar en dos grupos principales. Por un lado se encuentran los de cifrado simétrico (también conocidos como de clave secreta), donde la clave de cifrado y descifrado debe ser compartida por emisor y receptor de la información. Por otro lado se encuentran los de cifrado asimétrico (o de clave pública) donde la seguridad está basada en que cada usuario tiene un par de claves: una secreta que solamente él conoce, y una pública conocida por todo el mundo.
Típicamente los algoritmos de clave pública proporcionan un mayor grado de seguridad, a costa de un coste computacional más alto. Pero siempre hay que tener en cuenta que la seguridad nunca es absoluta (“al 100%”), ni universal, ya que la seguridad depende del ámbito donde se vaya a aplicar. Como ejemplo de lo primero, cabe recordar que con el paso del tiempo, aquellos algoritmos que se consideraban totalmente seguros porque se necesitarían cientos de miles de años para descifrar por fuerza bruta, 20 años después se consiguen romper en sólo 3 meses [3]. Como ilustración de la no existencia de universalidad en el grado de seguridad necesario, cabe decir que, si lo que se está transmitiendo es la información sobre una transacción electrónica que supone un pago y cuya validez temporal es, como mucho, de un mes, los requisitos serán menores que si lo que se transmite es el perfil sanitario de una persona, que puede tener validez de por vida. En ambos casos se puede adquirir el mismo grado de s eguridad con algoritmos de muy distinta potencia de cálculo. Para operaciones donde la validez de la información no es tan amplia en el tiempo, necesitándose una solución de bajo coste y de alta velocidad, los algoritmos de clave secreta, como el DES, son totalmente válidos. En muchas ocasiones se trata de aplicaciones de bajo coste que no pueden plantearse la posibilidad de integrar un microprocesador que realice operaciones criptográficas. Para estos casos resulta imprescindible una solución hardware, que además proporciona una mayor velocidad de proceso y menor área. Se pueden encontrar distintas implementaciones hardware en la bibliografía, tanto del algoritmo DES, como de otros de clave secreta como el IDEA [4] o el AES [5, 6]. En este artículo se ilustrarán las implementaciones del algoritmo DES realizadas por los autores, así como sus distintas variantes buscando dos objetivos: demostrar la viabilidad de realizar un diseño de dicho algoritmo mediante técnicas reconfigurables, y realizar procesos criptográficos más complejos utilizando el módulo DES creado. Para llevar a cabo esto, se ha utilizado la familia FPSLIC de Atmel, que integra en un mismo chip un microprocesador RISC y una FPGA, con facilidades de interconexión entre ellos [7]. El artículo está estructurado de la siguiente forma. En la próxima sección se da una visión general sobre el algoritmo DES, para posteriormente, en la sección 3, pasar a detallar los principales elementos de las implementaciones realizadas. La sección 4 mostrará los resultados obtenidos, finalizando el artículo con las conclusiones obtenidas.
2 El Algoritmo DES El Data Encryption Standard , más conocido por su acrónimo DES, tiene su origen en el año 1973, cuando el Nacional Buerau of Standards (NBS) de EE.UU. organizó un concurso para solicitar un medio de securizar los datos informáticos durante su transmisión y almacenamiento. En 1974, IBM presentó a dicho concurso su sistema LUCIFER, que convenientemente modificado fue seleccionado para convertirse en el DES. Dentro de las modificaciones, se encontraron las sugerencias de la NSA (Nacional Security Agency) de EE.UU. sobre la longitud de la clave de dicho algoritmo, la cual a día de hoy se ha demostrado como excesivamente corta. En 1981, el ANSI (American Nacional Standards Institute) adoptó el DES con el nombre de DEA (Data Encryption Algorithm), dentro de su norma ANSI X3.92 [2]. El DES es un algoritmo de cifrado de bloque de datos, con un tamaño de bloque de 64 bits (8 bytes), y una clave secreta de 56 bits, que se obtiene de una clave de entrada de 64
bits (8 bytes). Su funcionamiento está basado en los criptosistemas de Feistel, donde el bloque de datos se divide en dos mitades y en cada iteración del proceso de cifrado se traba ja, alternativamente, con cada una de esas dos mitades. Más concretamente, el DES realiza los siguientes pasos (Fig.1): 1. Una permutación inicial fija (por tanto sin valor añadido a la seguridad) 2. Se divide el bloque de datos en dos mitades, la derecha y la izquierda. 3. Se realizan 16 iteraciones de la siguiente operación: a. Se suma (en módulo 2) la parte izquierda con el resultado de aplicar a la parte derecha una función f(k i), donde uno de los parámetros es la subclave k i. b. Se intercambian la parte izquierda con la derecha, siendo la izquierda el resultado de la operación anterior 4. En la iteración número 16, se omite el intercambio y se realiza una permutación final, inversa de la inicial. B l o q u e d e D a to s d e E n t r a d a : B = b 1 , . .. , b 6 4
P e r m u t a c i ó n i n i c i a l f i ja
I ( 0 ) = i1 ( 0 ) , . . . , i 3 2 ( 0 )
+
D ( 0 ) = d 1 (0 ) , . . . , d 3 2 (0 )
f(k1)
I ( 1 ) = i1 ( 1 ) , . . . , i 3 2 ( 1 )
D ( 1 ) = d 1 (1 ) , . . . , d 3 2 (1 )
I ( 1 4 ) = i1 ( 1 4 ) , . . . , i3 2 ( 1 4 )
D (1 4 ) = d 1 ( 1 4 ) , .. . , d 3 2 ( 1 4 )
+
f(k15)
I ( 1 5 ) = i1 ( 1 5 ) , . . . , i3 2 ( 1 5 )
+
D (1 5 ) = d 1 ( 1 5 ) , .. . , d 3 2 ( 1 5 )
f(k16)
I ( 1 6 ) = i1 ( 1 6 ) , . . . , i3 2 ( 1 6 )
D (1 6 ) = d 1 ( 1 6 ) , .. . , d 3 2 ( 1 6 )
Perm utación final fija
B l o q u e d e D a t o s d e S a l id a
Fig. 1. Diagrama de Bloques del Algoritmo de Cifrado DES
La permutación inicial es simplemente la recolocación de todos y cada uno de los bits del bloque de datos, siguiendo el orden establecido en una tabla. Por otro lado, como se puede apreciar en la Fig. 1, se utilizan 16 subclaves, una para uso de la función f en cada iteración. Estas subclaves son obtenidas a partir de la clave secreta mediante una serie de transformaciones:
1.
Primero se extrae de la clave de 64 bits, una de 56 bits, ignorando el octavo bit de cada byte. 2. La clave de 56 bits se divide en dos mitades de 28 bits. 3. Cada mitad se desplaza circularmente uno o dos bits (dependiendo de la iteración en la que se encuentre, fijado mediante una tabla). 4. Para cada iteración, se seleccionan 48 de los 56 bits resultantes, formando la subclave de dicha iteración. A esta operación se la conoce con el nombre de compression permutation, ya que no sólo se reduce el número de bits, sino que éstos se permutan de posición. El orden de permutación lo da una tabla definida previamente. Para realizar la función f(k i), se expande la parte derecha de la iteración de 32 a 48 bits con una nueva permutación (operación conocida como expansion permutation). Después se realiza un XOR con los bits de la subclave correspondiente. Una vez realizado esto, se procede a una operación de substitución de bits que, basándose en 8 matrices (conocidas como S-box), se toman bloques de 6 bits del resultado de la XOR y se substituyen por 4 bits de salida), reduciendo de nuevo el tamaño del resultado a 32 bits. Por último se realiza una permutación directa regida por una tabla (conocida como P-box). El esquema de una iteración del algoritmo DES se puede ver en la Fig. 2. I(i-1)
D(i-1)
Clave
Desplazamiento Circular
Expansion Permutation
Desplazamiento Circular
Compression Permutation
+
Sustituciones S-box
Permutación (P-box)
+
I(i)
D(i)
Clave
Fig. 2. Diagrama de Bloques de la iteración i-ésima del Algoritmo de Cifrado DES
En cuanto a la operación de descifrado, ésta es exactamente la misma que la del cifrado, pero tomando las subclaves en orden inverso, de la K 16 a la K 1, por lo que no es necesario duplicar el hardware. Detalles mayores del algoritmo, así como las tablas predefinidas se pueden encontrar en la bibliografía existente, tales como [1] o [2]. Por último comentar que, siendo un algoritmo tan antiguo, el DES ya se encuentra superado, no considerándose en la actualidad como seguro. Sin embargo, los núcleos del DES se siguen utilizando, debido a la proliferación de variantes del DES como el Triple DES y sus variantes multi-bloque como ECB y CBC DES (o su equivalente en Triple DES). Aún así, el NIST (Nacional Institute for Standards and Technology) de EE.UU. ha seleccionado (tras
un concurso público) un nuevo sistema de cifrado de clave secreta como el estándar, denominándolo AES ( Advanced Encryption Standard ).
3.
Implementaciones hardware realizadas
A la hora de plantear una implementación del algoritmo, se pueden utilizar diversas alternativas: un sistema combinacional puro, un sistema en pipeline, o un sistema basado en un autómata. Para reducir área y facilitar operaciones alternadas con clave variada, se ha optado por la tercera opción, donde las iteraciones se realizan con el control de un autómata. En cuanto a la creación de las subclaves se podrían plantear dos estrategias. La primera de ellas se basa en la creación desde un inicio de dichas subclaves y su almacenamiento en 16 registros de 48 bits. Esto permitiría una mayor velocidad de proceso, a costa de una mayor área. La segunda estrategia será la de calcular dinámicamente las subclaves a partir de la clave secreta cargada inicialmente. Esta estrategia ha sido la elegida para la elaboración del trabajo aquí expuesto.
3.1.
Algoritmo con Clave Variable
La primera de las implementaciones realizadas trata de reflejar fielmente lo expuesto anteriormente, es decir, un componente al que se le introduzca la clave y el bloque de datos de entrada y que proporcione el bloque de datos cifrado. De esta forma se ha creado la siguiente jerarquía de componentes: •
Algoritmo DES (con bloque de datos de 64 bits y clave de 56 bits) Permutación inicial o Autómata de control de iteraciones o Expansion Permutation Obtención de subclave: • 2 registros de desplazamiento circular Compression Permutation • Substituciones S-box Permutación P-box Permutación final o § §
§ §
Al mismo tiempo, para facilitar su implementación en una FPGA comercial, y favorecer su uso dentro de la tecnología FPSLIC, se ha reducido el número de pines necesarios (de los 189 iniciales, a solamente 32), creando una capa jerárquica superior que implementa un bus de entrada de datos/clave y un bus de salida, con un protocolo de sincronismo hardware (STB# - ACK#), quedando el componente como muestra la Fig. 3.
Dato_entrada(7:0) Clave(7:0) STB# Dato_salida(7:0)
Cifrar/Descifrar#
D ES
Dato/Clave# Habilitación_Entrada
A C K # Salida_Valida
CLK Reset
Fig. 3. Módulo de Clave Variable
3.2.
Algoritmo con Clave Fija
Una de las posibilidades que se pueden plantear es la de crear un componente para una clave específica. En teoría, al disponer de una clave fija, el cálculo de las subclaves se convertirían en constantes, y por tanto, las operaciones a realizar en cada una de las iteraciones pasarían también a ser constantes. Esto produciría una simplificación significativa en el circuito, pudiendo plantear la posibilidad de desarrollar una solución con técnicas de reconfiguración dinámica, es decir, que el contenido de la FPGA se actualizase cada vez que se cargase una clave, manteniéndose así hasta el próximo cambio de clave [8]. Esta implementación se consigue configurando como constante la clave en los listados VHDL, y eliminando las entradas de las capas superiores relativos a dicha clave, quedando el componente final como se puede observar en la Fig. 4. Dato_entrada(7:0) STB# Dato_salida(7:0)
Cifrar/Descifrar# Habilitación_Entrada
DE S
CL K
AC K # Salida_Valida
Reset
Fig. 3. Módulo de Clave Fija
3.3.
Macrofunciones criptográficas con DES
Como se ha comentado en la sección anterior, para mejorar las prestaciones del algoritmo DES se han desarrollado variantes de cifrado múltiple (Triple DES) y de cifrado de multi bloque (ECB y CBC). Estas variantes realizan operaciones DES consecutivas sobre los datos, incrementando las prestaciones y/o la seguridad. Por ejemplo, el cifrado Triple DES
se basa en aumentar el tamaño de la clave de 8 a 16 bytes. Después esa clave la divide en dos partes (K 1 y K 2) de 8 bytes cada una. De esta forma, el cifrado Triple DES resulta de realizar en cascada las siguientes operaciones: • Cifrar el bloque de datos original (los 64 bits) con un DES con la clave K 1 • Descifrar el resultado con un DES inverso de clave K 2 Cifrar el nuevo resultado con un DES de clave K 1 • En el caso de descifrar con Triple DES, se realizaría la operación inversa: • Descifrar con K 1 • Cifrar con K 2 Descifrar con K 1 • En las implementaciones objeto de este artículo, estas operaciones se realizarán de forma software utilizando el micro RISC que contiene el FPSLIC, evitando un nuevo desarrollo hardware.
4.
Resultados
Una vez desarrolladas y simuladas correctamente las dos implementaciones, se ha procedido a realizar la síntesis en una FPSLIC ( Field Programmable System Level Integrated Circuit )de la empresa Atmel. Este dispositivo se basa en su familia de FPGAs AT40K a la que ha añadido un microprocesador RISC AVR de 8 bits y 20 MIPS ( Mega Instruction per Second ) además de una memoria de programa de 36Kbytes [7]. Al estar basado en las FPGAs AT40K, el dispositivo también permite la reconfiguración dinámica. Para el caso en que se quiera realizar esta reconfiguración, el propio microprocesador es fácil de usar, ya que tiene acceso directo a la memoria de configuración de la FPGA. Al realizar la implementación, se han obtenido los resultados que se reflejan en la Tabla 1. En dicha tabla se puede apreciar también la reducción de componentes que se consiguen entre las dos implementaciones desarrolladas.
Clave Variable Clave Fija Reducción
LUTs
Biestables
581 191 67,1%
302 246 18,5%
Instancias Totales 959 513 46,5%
Frec. Máx. CLK 87,7 MHz 87,7 MHz 0%
Tabla 1. Resultados principales obtenidos en las dos implementaciones y variación. El resto de los parámetros son constantes entre las dos versiones.
Con estos resultados se puede apreciar una infrautilización del AT94K40, que dispone de 2304 LUTs y 2862 biestables. Para el caso de Clave Variable se podría optar por utilizar el AT94K10, mientras que para el de Clave Fija se podría contemplar el uso de AT94K5, reduciendo drásticamente el coste del sistema final. Por otro lado, la frecuencia de reloj máxima obtenida nos muestra que el núcleo encargado de realizar el algoritmo criptográfico, podría llegar a procesar una operación completa en 182ns (5,48MHz), despreciando el tiempo en las permutaciones finales e iniciales y el tiempo de carga y descarga de los datos. Por tanto se obtiene una conversión cada 182ns. Teniendo en cuenta que en cada operación
se procesan 64 bits, esto daría una potencia máxima de procesado de información de 350Mbits/s o 43,75MBytes/s. Todos estos resultados muestran un rendimiento muy elevado, comparado con resultados previos publicados en [1] y [ 6].
Conclusiones En este articulo se refleja el trabajo realizado para implementar el algoritmo DES en una FPGA. Se ha analizado la diferencia de r esultados entre un componente con clave variable y uno con clave fija. La reducción de área obtenida (un 46,5%) con una implementación de clave fija demuestra el viabilidad de realizar un diseño basado en reconfiguración dinámica. En dicho diseño se cambiaría la configuración de la FPGA siempre que cambiase la clave. Trabajos futuros versarán sobre esta nueva implementación, así como en realizar trabajos análogos con otros algoritmos tanto de clave secreta (por ejemplo el AES) como de clave pública (por ejemplo RSA o ECC).
References 1. 2. 3. 4.
5. 6. 7. 8.
Schneier, B: Applied Cryptography. Ed. John Wiley & Sons. 1996 Fúster Sabater, A., Guía Martínez, D., Hernández Encinas, L., Montoya Vitini, F., Muñoz Masqué, J.: Técnicas Criptográficas de Protección de Datos. Ed. Rama. 2000. http://www.rsalabs.com González, I., Gómez, F.J., López-Buedo, S., Martínez, J.I., Deschamps J-P., Boemo, E. y Martínez, J.: Implementación del Algoritmo Criptográfico IDEA en Virtex usando JBits. II Jornadas de Computación Reconfigurable y Aplicaciones, pp. 155 – 160. 2002. National Institute of Standards and Technology. http://www.nist.gov OPENCORES. http://www.opencores.org Atmel: AT94K Field Programmable System Level Integrated Circuit. Atmel Data Sheet 2.001. Lysaght P., Dunlop J.: Dynamic reconfiguration of FPGAs. European FPL’93 Oxford, 1993.pp 82-94
Este artículo fue publicado en el libro de actas "Computación reconfigurable y FPGAs" páginas: 251-258 de la III Jornada sobre computación reconfigurable y aplicaciones 2003 (JCRA’03). ISBN: 84-600-9928-8, pages. 251-258. This article was published in the book "Computación reconfigurable y FPGAs" of the reconfigurable computation & FPGAs workshop at the Autónoma University of Madrid (JCRA’03) ISBN: 84-60099-28-8, pag. 251-258.
Autor del proyecto: Julio Jenaro Rodríguez
(
[email protected],
[email protected])