Full text
Instituto de Microelectrónica de Sevilla (Universidad de Sevilla y CNM-CSIC) Vulnerabilidad y análisis diferencial mediante inserción de fallos de cifradores Trivium en FPGA y ASIC Memoria presentada por Francisco Eugenio Potestad Ordóñez para optar al título de Doctor por la Universidad de Sevilla Directores de Tesis Dr. Manuel Valencia Barrero Dr. Carlos Jesús Jiménez Fernández
Lugar y fecha Sevilla, 2019
Instituto de Microelectrónica de Sevilla (Universidad de Sevilla y CNM-CSIC) Vulnerabilidad y análisis diferencial mediante inserción de fallos de cifradores Trivium en FPGA y ASIC Memoria presentada por: Francisco Eugenio Potestad Ordóñez para optar al título de Doctor por la Universidad de Sevilla Directores: Manuel Valencia Barrero Carlos Jesús Jiménez Fernández Sevilla, 2019
A mis padres,
Agradecimientos Me gustaría agradecer a mis tutores Carlos Jesús Jiménez y Manuel Valencia toda su ayuda y tiempo dedicado a lo largo de la realización de esta Tesis, así como la oportunidad ofrecida y confianza depositada en mí para llevar a cabo este trabajo. A Antonio Acosta por darme la oportunidad de poder trabajar en su grupo de investigación. A José Miguel Mora por su ayuda y numerosos consejos a lo largo de estos años. A Ricardo Chaves por darme la oportunidad de realizar mi estancia en Lisboa y poder colaborar con su grupo de investigación. A mis compañeros y amigos del IMSE. A mi familia. A los siguientes proyectos y entidades por su soporte y financiación: CITIES: Circuitos Integrados para Transmisión de Información Especialmente Segura (TEC2010-16870), Ministerio de Ciencias e Innovación. CESAR: Circuitos Microelectrónicos Seguros Frente a Ataques Laterales (TEC2013-45523-R), Ministerio de Economía y competitividad. INTERVALO: Integración y validación en laboratorio de contramedidas frente a ataques laterales en criptocircuitos microelectrónicos (TEC2016- 80549-R), Ministerio de Economía y Competitividad. MISAL: Microelectrónica segura frente a ataques laterales (201450E034), Consejo Superior de Investigaciones Científicas (CSIC). LACRE: LAboratorio de Criptoanálisis HardwarE (201550E039), Consejo Superior de Investigaciones Científicas (CSIC). CRYPTACUS: ICT COST ACTION IC1403: Cryptanalysis in ubiquitous computing systems.
Resumen Las comunicaciones entre dispositivos aumenta día a día y un gran ejemplo de ello es el crecimiento del Internet de las cosas, en inglés Internet of things (IoT). De entre todas las comunicaciones que se producen, parte de ella está compuesta por información sensible susceptible de ser interceptada por terceras partes con fines malintencionados. Con el fin de evitar este gran problema, la comunidad científica se ha centrado en la constante búsqueda y desarrollo de algoritmos criptográficos o criptosistemas, algoritmos orientados tanto a software como a hardware, que permitan asegurar unas comunicaciones donde los canales de transmisión son potencialmente inseguros. A la hora de poder establecer nuevos estándares de seguridad, es necesario estudiar la seguridad ofrecida por los nuevos algoritmos desde el punto de vista de su vulnerabilidad con el objetivo de reducirla. Estas vulnerabilidades de los llamados criptosistemas es posible estudiarlas tomando el rol de una tercera parte que trata de obtener la información secreta del dispositivo y con ello conocer dónde se encuentran sus puntos débiles. Es aquí donde se enmarca la presente Tesis Doctoral. A lo largo de este texto, se realiza un estudio del estado del arte de la criptografía, así como las técnicas más importantes para comprometer la seguridad de los criptosistemas actuales, siendo objeto de estudio el cifrador de flujo Trivium, tanto el diseño original presentado en el portfolio del proyecto eSTREAM, como diferentes variantes de éste. Para poder estudiar la vulnerabilidad de estos criptosistemas y poder recuperar su información secreta, se han diseñado diferentes sistemas de inserción de fallos tanto en tecnología FPGA como en ASIC. Estos sistemas de ataque se han implementado para poder atacar al cifrador mediante la manipulación de su señal de reloj y sus señales de control. Gracias a estos sistemas de ataque experimentales, es posible determinar los puntos débiles de estos criptosistemas y mediante el uso de análisis diferenciales recuperar su información secreta, clave y vector de inicialización. Este estudio, por tanto, presenta la primera rotura de este cifrador de forma experimental, consiguiendo en el 100% de los casos la recuperación de su clave secreta y probando que este criptosistema es vulnerable a los ataques por inserción de fallos.
Capítulo 1 Introducción Paralelamente al desarrollo de los criptosistemas se produce un desarrollo de los ataques contra ellos con objetivos que pueden ser malintencionados como son, entre otros, conocer la información que se transmite o cambiarla sin que lo conozca el remitente de la misma. Estos ataques se realizan tanto contra el algoritmo de cifrado como contra el sistema criptográfico. Uno de los objetivos más buscados por los atacantes es averiguar las claves que sustentan el cifrado y que se suponen son un secreto solo compartido por los usuarios. Por su parte, la comunidad científica busca desarrollar los algoritmos y criptosistemas para minimizar sus vulnerabilidades. En la actualidad y debido a la apreciable longitud de las claves utilizadas en los algoritmos, los ataques matemáticos a estos algoritmos ya no son prácticos por el gran consumo de recursos y de tiempo que se necesitarían para comprometer su seguridad. Sin embargo, los ataques a las implementaciones de dichos algoritmos están demostrando ser mecanismos bastante efectivos. Por tanto, para que los sistemas criptográficos sean robustos, no sólo deben ser resistentes los algoritmos, sino también dispositivos físicos que los implementan. En esta Tesis estamos interesados en las implementaciones hardware de los algoritmos y, en particular, en las implementaciones electrónicas con tecnologías de alta densidad de integración, tanto ASIC (Applied System Integrated Circuit) como FPGA (Field-Programmable Gate Array). Los ataques a las implementaciones físicas de los criptosistemas obtienen información del circuito durante su funcionamiento. Esta información se puede obtener de forma pasiva (midiendo el consumo de potencia, radiación electromagnética, etc), de forma activa (provocando errores en el funcionamiento del circuito) o de forma invasiva (accediendo a puntos internos del circuito). Dado que con la información obtenida podría ponerse en peligro la seguridad del dispositivo, con el fin de prevenir los ataques surge la necesidad de estudiar las vulnerabilidades de los dispositivos criptográficos implementados en diferentes tecnologías. Para ello es necesario tomar el rol de un posible atacante y crear sistemas que permitan atacar las implementaciones para conocer sus vulnerabilidades y, así, poder corregirlas en diseños futuros. En cuanto al sistema de cifrado, este trabajo de Tesis se ha centrado en cifradores de flujo, concretamente, en el denominado Trivium. De esta forma, la Tesis tiene como principal objetivo atacar implementaciones FPGA y ASIC de cifradores de flujo Trivium con el fin último de llegar a conocer las claves secretas de manera experimental. 2
1.1 Presentación Debe indicarse, por una parte, que en la literatura especializada no existen reportados trabajos que cubran el proceso completo de ataque activo y recuperación de clave de forma experimental para el cifrador Trivium, ni para otros cifradores exceptuando el cifrador de bloques AES. Existen diferentes trabajos que proponen mecanismos para llevar a cabo el proceso, pero en ellos se obtienen los resultados vía simulación o de forma teórica, sin llegar a romper el criptosistema de forma real. Por otra parte, para alcanzar ese objetivo principal es necesario conseguir otros hitos entre los que podemos señalar los de disponer de implementaciones de cifradores de flujo Trivium en FPGA y en ASIC, diseñar e implementar sistemas de ataques sobre ambas tecnologías, estudiar su vulnerabilidad frente a ataques, realizar un análisis diferencial a partir de datos experimentales y recuperar la clave secreta. Ciñéndonos al cifrador Trivium, estudios teóricos sobre el algoritmo de cifrado presentados en la literatura constatan vulnerabilidades del algoritmo si se es capaz de introducir un solo error en el registro de estados del cifrador. En nuestro trabajo de Tesis pretendemos demostrar la viabilidad de forma experimental de dichos estudios, llevando a la práctica las suposiciones teóricas. Para ello nos planteamos desarrollar sistemas de ataques del tipo activo no invasivo con los que se procurará la inyección de fallos en el funcionamiento del cifrador Trivium mediante la manipulación de señales temporales, bien de la propia señal de reloj, bien de la temporización de las señales de control. Tras demostrar la vulnerabilidad del cifrador estaremos en condiciones de aplicar a los datos experimentales obtenidos un análisis diferencial que permitirá la obtención de la clave secreta y, de aquí, la ruptura de la seguridad del cifrador. Es nuestro propósito llevar a cabo estos estudios tanto al cifrador Trivium estándar, como también a versiones multi-bit y de baja potencia de dicho cifrador, con la finalidad de probar la eficacia de los sistemas diseñados y probar que es posible comprometer la seguridad de los cifradores Trivium en todas sus versiones. Este trabajo de Tesis, por tanto, se encuentra dentro del muy pequeño grupo de trabajos experimentales que intentan probar en la práctica las suposiciones teóricas de recuperación de clave de un criptosistema mediante el uso de ataques por inserción de fallos de forma experimental. 3
Capítulo 1 Introducción 1.2. Objetivos El principal objetivo de este trabajo de investigación es el estudio del comportamiento de implementaciones hardware de los cifradores de flujo Trivium, en sus diferentes versiones, frente a ataques activos no invasivos por inserción de fallos, el análisis de su vulnerabilidad y la ruptura del cifrador mediante la realización de un análisis diferencial de fallos. A continuación se desglosa en objetivos más concretos la consecución de este objetivo principal: 1. Actualizar el estado de conocimientos del campo del criptoanálisis y, en particular, lo relacionado con el cifrador de flujo Trivium. Se trata de analizar los diferentes sistemas de cifrado y las técnicas reportadas en la literatura para atacar las implementaciones físicas de los algoritmos criptográficos. A su vez, estudiar las técnicas de análisis que permiten aprovechar los ataques experimentales para poder recuperar la información secreta a partir de los fallos generados. Esto debe permitir clasificar las referencias bibliográficas sobre recuperación de información secreta, enfatizando en la diferencia entre los trabajos teóricos y los experimentales. Estos estudios deben finalizar con un análisis bibliográfico específico de los trabajos reportados sobre el cifrador Trivium. 2. Trabajar con cifradores de flujo Trivium reales. De las distintas opciones de cifrado, se trabajará con cifradores de flujo, en concreto, con el cifrador de flujo Trivium, del que se explorarán diferentes versiones. Se analizará en profundidad la estructura del cifrador Trivium y su funcionamiento, se afrontarán sus diseños bajo diferentes consideraciones (p. ej., la forma serie o paralela de introducir la clave y el vector de inicialización, si el Trivium es mono-bit o multi-bit, etc.) y se implementarán para tecnologías FPGA y ASIC. 3. Determinar las formas de introducir experimentalmente fallos en cifradores Trivium. Dado que los estudios reportados por la comunidad internacional sobre la vulnerabilidad de estos cifradores frente a la inserción de fallos, como presentaremos en el próximo capítulo, son sólo teóricos, un objetivo parcial es analizar las estrategias para introducir fallos de forma experimental. Entre éstas, la Tesis se centrará en los ataques activos no invasivos con el fin de llevarlos a cabo tanto sobre implementaciones FPGA del cifrador Trivium como sobre implementaciones ASIC. 4
1.3 Contenido 4. Implementar sistemas de ataques. Una vez establecidas las posibles formas de introducir errores en la operación del cifrador, se diseñarán e implementarán sistemas que permitan llevar a cabo estos ataques de forma experimental. Dichos sistemas, además de inducir el fallo, posibilitarán analizar el comportamiento de los cifradores de flujo frente a ataques. 5. Analizar la vulnerabilidad de las implementaciones del cifrador Trivium. Se procurará establecer los puntos débiles de este tipo de cifradores y la posibilidad de explotarlos a la hora de generar trazas de datos útiles para los análisis diferenciales que permitan recuperar su información secreta. La vulnerabilidad se explorará mediante experimentos de inserción de fallos tanto en FPGA como ASIC. 6. Implementar un sistema experimental de recuperación de clave. Una vez estudiadas las vulnerabilidades de los cifradores, se llevará a cabo el montaje de un sistema completo que permita el ataque experimental al cifrador y el análisis diferencial de las trazas generadas a partir de los fallos introducidos experimentalmente con el fin último de recuperar la clave secreta del cifrador. 7. Obtener conclusiones. Se tratará tanto de exponer los principales resultados obtenidos del trabajo como de extraer de ellos las principales conclusiones. Por su especial relevancia, adelantamos que en este trabajo de Tesis se muestra por primera vez que es posible romper el sistema de cifrado Trivium de forma experimental. 1.3. Contenido La memoria de esta Tesis se ha dividido en seis capítulos, tal como se muestra en el siguiente resumen. Se debe señalar que su organización obedece a los pasos seguidos en la metodología de trabajo. Capítulo 1: Introducción. Es el presente capítulo donde, además de motivar la realización de la presente Tesis y puntualizar sus objetivos, presentamos la estructura de esta Memoria. 5
Capítulo 1 Introducción Capítulo 2: Criptografía, cifradores y criptoanálisis. Se realiza un análisis en profundidad del estado del problema que se pretende abordar. Se estudia el marco teórico, así como el contexto en el que se encuadra la problemática a abordar en la Tesis. Además, en este capítulo se presenta el sistema criptográfico utilizado, haciendo un análisis de los estudios teóricos y un repaso a los diferentes tipos de ataques posibles a la implementación de los sistemas criptográficos. Tras esto se presenta la técnica de análisis, el tipo de ataque y las propuestas de ataque elegidas para llevar a cabo el desarrollo de esta Tesis. Capítulo 3: Inserción de fallos en implementaciones FPGA de cifradores Trivium. En este capítulo se presenta la implementación del sistema de ataque en FPGA. El sistema de ataque utilizado ha consistido en la manipulación de la señal de reloj del cifrador. Para ello se han utilizado las familias de FPGA Spartan 3E y Spartan 6, las placas de desarrollo Nexys 3 y los diseños del cifrador Trivium estándar, estándar con carga en serie, estándar con carga en paralelo y de baja potencia. Finalmente se presentan las conclusiones obtenidas a partir de las pruebas realizadas tras aplicar el sistema de ataque diseñado a las diferentes versiones del cifrador. Capítulo 4: Inserción de fallos en implementaciones ASIC de cifradores Trivium. En este capítulo se lleva a cabo la implementación de dos sistemas de ataques sobre implementaciones ASIC del cifrador Trivium. Los sistemas de ataques utilizados han consistido por un lado en la manipulación de la señal de reloj del cifrador y por otro lado la manipulación de las señales de control. Para ello se ha utilizado el equipo de test Agilent 93000. En cuanto a los diseños del cifrador Trivium utilizados, se han considerado tanto las versiones estándar como las de baja potencia y salidas multi-bit. En este capítulo se presentan los datos más relevantes obtenidos en los ataques. Los resultados completos se recogen en el Anexo de esta memoria. Por último, en este capítulo se presentan las conclusiones obtenidas tras atacar a las diferentes implementaciones del cifrador. 6
1.3 Contenido Capítulo 5: Criptoanálisis en cifradores Trivium con datos experimentales. En este capítulo se realiza la descripción, montaje y utilización de un sistema de criptoanálisis, el cual utiliza análisis diferenciales de los datos obtenidos para recuperar la información secreta (registro de estados interno) de forma experimental de cifradores Trivium estándar. Además, se ha realizado el diseño de un cifrador de flujo Trivium inverso mediante el cual es posible obtener la clave secreta y vector de inicialización a partir de un registro de estados interno conocido. Por último en este capítulo se describe el proceso para recuperar la clave secreta de forma experimental a partir de ataques realizados sobre implementaciones ASIC del cifrador Trivium estándar. Capítulo 6: Conclusiones y líneas futuras. En este capítulo se resumen los principales resultados aportados por este trabajo de Tesis, se analiza el cumplimiento de los objetivos y se presentan las principales conclusiones obtenidas tras el trabajo de investigación realizado. Además, se plantean posibles líneas de investigación futuras surgidas a partir de los resultados obtenidos a lo largo de la realización de la presente Tesis. Esta Memoria también contiene una sección con la bibliografía utilizada para el desarrollo de esta Tesis y un Anexo que incluye de forma más exhaustiva los resultados obtenidos tras la inserción de fallos sobre las implementaciones ASIC, de todos los diseños del cifrador Trivium. Estos resultados, no presentados en el Capítulo 4, son para las versiones Trivium x2 estándar, Trivium x2 Low Power, Trivium x8 estándar, Trivium x8 Low Power, Trivium x16 estándar y Trivium x16 Low Power. 7
2. Criptografía, cifradores y criptoanálisis En este capítulo, se expone una visión general del estado del arte de la las implementaciones hardware de circuitos criptográficos, centrándose en los algoritmos de clave privada, concretamente en el cifrador de flujo Trivium. Además en este capítulo se presentan las ideas principales del criptoanálisis, así como los diferentes tipos de análisis teóricos que permiten llevarlo a cabo y los tipos de ataques laterales a los que está expuesto cualquier dispositivo que incorpore capacidades criptográficas. De entre todos los métodos de análisis teóricos, en el caso del cifrador Trivium y en concreto para esta Tesis Doctoral, el más importante es el denominado Análisis Diferencial de Fallos o Differential Fault Analysis (DFA) en inglés. Este método ha sido ampliamente utilizado en una gran cantidad de dispositivos criptográficos y en especial con el cifrador Trivium, donde gracias a su aplicación es posible recuperar de forma teórica la información secreta del dispositivo criptográfico. Una vez introducida la idea general de los ataques a los sistemas criptográficos, se presentan las propuestas para llevar a cabo ataques laterales de forma experimental. 2.1. La criptografía La criptografía como medio para proteger la información escrita es un arte tan antiguo como la propia escritura. Durante siglos permaneció estrechamente vinculada a entornos militares y diplomáticos, puesto que eran los únicos que tenían auténtica necesidad de ella. En la actualidad la situación ha cambiado de forma radical: vivimos inmersos en un mundo de comunicaciones electrónicas, teniendo al alcance un número ilimitado de dispositivos que transmiten y almacenan información. Gran parte de las actividades cotidianas se traducen 9
Capítulo 2 Criptografía, cifradores y criptoanálisis en intercambio de datos entre personas, dispositivos o instituciones, además del emergente campo de Internet de las cosas (IoT) [1] , [2]. Así pues, es necesario proteger este intercambio continuo de información y es entonces cuando la criptografía pasa de ser una exigencia de campos muy concretos a convertirse en una necesidad real del hombre de la calle, ya que una falta de protección en su información privada supondría una grave amenaza para su intimidad y su integridad. El proceso general de un procedimiento criptográfico de cifrado y descifrado, o criptosistema, puede resumirse tal y como se muestra en la Figura 2.1. En este ejemplo puede observarse de forma esquemática la transmisión de información de un emisor a un receptor. La importancia de la criptografía es que en cualquier momento una tercera parte, denominado atacante, puede acceder al mensaje intercambiado y tratar de obtener la información sensible con diferentes fines. CIFRADO DESCIFRADO Dato Criptograma Dato Interceptación o ataque ¿Dato? DESCIFRADO Figura 2.1.: Proceso de un criptosistema frente a un posible ataque. El atacante, una vez capturado el mensaje cifrado, lleva a cabo un procedimiento de desencriptado1, es decir, intenta a partir del dato cifrado, y sin conocimiento de la clave, recuperar el mensaje original. El escenario en el que se desarrolla este trabajo, se sitúa en el peor de los casos. El atacante tiene acceso al mensaje cifrado y conoce el algoritmo de cifrado, esto es, tiene información del dispositivo que cifra la información y por tanto sólo tiene como barrera la clave que está utilizando dicho dispositivo. 1Según DRAE en castellano no existe “encriptar" sino "cifrar". En casi toda la Tesis se usa reiteradamente el anglicismo encriptar y sus derivados. A lo largo del presente texto se van a utilizar ambas palabras indistintamente por su importancia en este campo científico. 10
2.1 La criptografía Es aquí donde entra en juego el desarrollo de sistemas que permitan un elevado nivel de seguridad, es decir, sistemas que proporcionen la transmisión segura de información, donde se reduzca al máximo la vulnerabilidad de las comunicaciones. Tanto las comunicaciones inalámbricas como las cableadas presentan vulnerabilidades frente a los ataques. Por un lado la tecnología inalámbrica, por su propia naturaleza, utiliza un medio inseguro. Mientras que, por otro lado, una comunicación cableada puede ser más segura, pero en un escenario donde un atacante tiene acceso al cable de transmisión, también presenta una gra- ve vulnerabilidad. Estas consideraciones hacen que la seguridad sea un factor significativo que debe ser desarrollado. Teniendo en cuenta lo descrito se puede afirmar que no existe una comunicación segura al cien por cien. Es por esto que a lo largo de la historia se han ido desarrollando y optimizando los sistemas que permitan minimizar los riesgos. En concreto, a través de la criptografía es posible dar solución a diferentes ámbitos de aplicación, garantizando que la información transmitida posea unas cualidades fundamentales, siendo estas confidencialidad, integridad, autenticidad, disponibilidad y no repudio [3]. En este sentido la confidencialidad consiste en lograr que la información permanezca secreta y solo pueda ser conocida por aquellos que tienen autorización para ello. La integridad abarca la necesidad de que la información haya sido manipulada o alterada desde su origen hasta su destino. Mientras que la autenticidad obliga a que tanto el origen como la información transmitida sean auténticos, asegurando que no se produzcan suplantaciones. En el caso de la disponibilidad se trata de la capacidad de un sistema a ser accesible y utilizable por los usuarios autorizados cuando estos lo requieran. Por último, el no repudio consiste en una autenticación que con un alto nivel de seguridad puede ser garantizado como genuino. Considerando esto, existen dos grandes grupos de algoritmos para cifrar información: los basados en claves públicas y los basados en clave privada [4]. A este último grupo es al que pertenecen los que utilizan los cifradores de flujo para garantizar una comunicación segura. En la siguiente Figura 2.2 puede apreciarse una clasificación general de los criptosistemas actuales. Dado que el objetivo del presente trabajo está enfocado a un dispositivo basado en un algoritmo de clave privada, se explicarán brevemente los algoritmos 11
Capítulo 2 Criptografía, cifradores y criptoanálisis tanta cantidad de secuencia aleatoria como bits tenga el mensaje original. Por tanto se trata de un procedimiento de cifrado incondicionalmente seguro, pero inviable para su implementación práctica. A partir de aquí, el procedimiento fue modificado para convertirlo en un procedimiento viable. Para ello, en lugar de una secuencia aleatoria, se utiliza una secuencia pseudoaleatoria obtenida a partir de un generador pseudoaleatorio que, a partir de una clave corta conocida por el cifrador y descifrador, genere simultáneamente en emisión y recepción un secuencia pseudoaleatoria de la longitud deseada. Esta modificación del cifrado Vernam es lo que se conoce como cifrador de flujo. Aspectos generales Según lo descrito, el cifrado de flujo se presenta como una alternativa viable del cifrado Vernam, ya que goza de un buen nivel de seguridad. En la Figura 2.6 se puede apreciar una representación esquemática del cifrado de flujo. Como puede observarse, realizando una operación XOR del texto plano con el flujo cifrado, es posible obtener el texto cifrado. ii i i i i Figura 2.6.: Representación de un cifrado de flujo. Se trata de un sistema cuyo emisor y receptor, poseen una clave corta (secreta) y un algoritmo público, que genera una secuencia pseudoaleatoria. El sistema es más seguro cuanto más se aproxime la secuencia a una secuencia aleatoria. Para generar la secuencia, la única información secreta que tienen que compartir emisor y receptor es la clave. 18
2.1 La criptografía La idea fundamental del cifrado de flujo consiste en generar una secuencia larga e imprevisible de dígitos binarios a partir de una clave corta elegida de forma aleatoria. Se trata de un sistema cómodo, sencillo y rápido. Características Es difícil evaluar cuándo una secuencia binaria es lo suficientemente segura para su utilización, ya que no existen pautas que ayuden a garantizarlo. Sin embargo se pueden establecer ciertas características que ayudan a verificar su correcta aplicación [13]: Período: La longitud de la secuencia cifrante debe ser al menos como la longitud de la secuencia que hay que cifrar. En la práctica es fácil generar secuencias con períodos del orden de 1038 bits o incluso superiores. Distribución de bits: En [14], Golomb formula tres postulados donde establece qué debe satisfacer una secuencia binaria finita para poder ser denominada secuencia pseudoaleatoria. Estos son "Propiedad del balance", "Propiedad de funcionamiento" y "Propiedad de doble nivel de correlación", denominados R-1, R-2 y R-3 respectivamente. Imprevisibilidad: La secuencia debe poseer esta propiedad, lo que quiere decir que dada una secuencia de cualquier longitud, una tercera persona no debería poder predecir el siguiente dígito con una probabilidad superior a 1/2. Una medida de imprevisibilidad de una secuencia es su complejidad lineal, donde esta debe ser lo más grande posible, siendo al menos la mitad de la longitud del período. Test de aleatoriedad: Generalmente el punto de partida de un ataque criptográfico sobre estos cifradores se basa en la posibilidad de distinguir la secuencia cifrante de una secuencia perfectamente aleatoria. Para ello se aplica una serie de test estadísticos que eliminan las secuencias que no poseen las propiedades estadísticas que deben poseer las secuencias aleatorias. Los generadores más conocidos para la obtención de secuencias pseudoaleatorias son los que se basan su estructura en registros de desplazamiento realimentados no linealmente. Los registros de desplazamiento realimentados son estructuras básicas para la generación de secuencias binarias, constituidas por: 19
Capítulo 2 Criptografía, cifradores y criptoanálisis Lceldas de memoria conectadas de forma serie. Una función de realimentación Fque permite expresar cada elemento ai de la secuencia con i>Len función de los Lelementos anteriores. Si la función Fes lineal se habla de un registro de desplazamiento con realimentación lineal (LFSR, Linear Feedback Shift Register), si no es lineal, se habla de un registro de desplazamiento con realimentación no lineal (NLFSR, Non Linear Feedback Shift Register). Por otro lado se denomina estado del registro interno al contenido binario de los registros en cada ciclo de reloj. El estado inicial del registro es el contenido en el momento de empezar el proceso de generación, el cual debe ser iniciado con una semilla. 2.1.3. Proyecto eSTREAM El Proyecto eSTREAM comenzó en noviembre de 2004, siendo una iniciativa de la Comunidad Europea, dentro de la segunda Red Europea de excelencia en Criptografía ( ECRYPT II) [15, 16]. Su objetivo era seleccionar un algoritmo de cifrado de flujo que pudiera considerarse como estándar de cifrado de flujo. Tras 6 meses de la convocatoria, se presentaron 34 algoritmos de cifrado de flujo, siendo éstos evaluados por una comisión de reconocido prestigio internacional. Tras sucesivas rondas eliminatorias, 16 algoritmos llegaron a la fase final, de los cuales 8 estaban orientados a su implementación software, Perfil 1 (SW), y otros 8 estaban orientados a implementaciones hardware, Perfil 2 (HW). La Tabla 2.1 recoge los nombres de estos 16 algoritmos. Más tarde en 2008, la comisión al cargo de la evaluación de los algoritmos candidatos presentó el resultado de sus deliberaciones, cuyo resultado fue un portfolio de 8 algoritmos, la mitad de ellos software y la otra hardware. Tras esto, el proyecto ha ido siendo sometido a revisiones, la última en enero de 2012. En esta ocasión el resultado fue de 4 algoritmos software y 3 hardware. La Tabla 2.2 recoge los nombres de estos finalistas. De estos finalistas, los importantes para esta Tesis son los de perfil hardware, en concreto, el cifrador de flujo Trivium que es sobre el que se han realizado los ataques. A continuación se realiza una breve descripción de los tres finalistas hardware. 20
2.1 La criptografía Tabla 2.1.: Listado de los algoritmos en fase final del proyecto eSTREAM. Perfil 1 (SW) Perfil 2 (HW) CryptMT (v.3) DECIM (v.2) Dragon Edon80 HC (HC-128) F-FCSR (F-FCSR-H v2) LEX (LEX-128) Grain (Grain-128) NLS (NLS v.2) MICKEY (MICKEY 2.0) Rabbit Moustique Salsa20 Pomaranch (v.3) Sosemanuk Trivium Tabla 2.2.: Finalistas del proyecto eSTREAM (portfolio 2012). Perfil 1 (SW) Perfil 2 (HW) HC (HC-128) Grain v1 Rabbit MICKEY (MICKEY 2.0) Salsa20/12 Trivium Sosemanuk – Grain v1 El cifrador Grain se puede describir como una familia de cifradores de flujo síncronos con notable eficiencia hardware [17]. La versión inicial utilizaba una clave de 80 bits y un vector de inicialización de 64 bits, pero las primeras pruebas del proyecto eSTREAM pusieron en duda su seguridad. Tras esto se revisaron las especificaciones y se presentó Grain v1, que son en realidad dos propuestas de cifradores de flujo, uno que utiliza una clave de 80 bits (con un vector de inicialización IV de 64 bits) y otro que utiliza una clave de 128 bits (con un IV de 80 bits). Elegante y simple, consta de dos registros de desplazamiento, uno con realimentación lineal y otro con realimentación no lineal. Estos registros y los bits de salida están unidos mediante funciones booleanas muy sencillas. Como los demás cifradores de flujo, se necesita una fase de inicialización antes de poder generar una secuencia válida de bits. 21
Capítulo 2 Criptografía, cifradores y criptoanálisis MICKEY 2.0 Su nombre es un acrónimo de “Mutual Irregular Clocking KEY stream generator” el cual describe el comportamiento esencial del cifrador [18]. Formado por dos registros de desplazamiento realimentados de 100 bits, uno lineal y otro no lineal, cada uno de ellos está temporizado irregularmente bajo el control del otro. Los mecanismos específicos de temporización contribuyen a la fuerza criptográfica del cifrador al tiempo que ofrece garantías de período y pseudoaleatoriedad. La especificación de su estado consiste en que cada clave puede utilizar hasta 240 vectores de inicialización (IV) del mismo tamaño, pudiendo producir con ello 240 bits de flujo por cada par de clave e IV. Este cifrador puede ser implementado con pocos recursos hardware, haciéndolo un buen candidato para aplicaciones de baja potencia. Sin embargo, el mecanismo de temporización irregular significa que no podría ser paralelizado fácilmente. Trivium El cifrador Trivium, cuyos autores son C. De Cannière y B. Preneel [19], es un generador de secuencia síncrono orientado a su implementación hardware, diseñado para encontrar un equilibrio entre simplicidad, seguridad y velocidad. Posee una estructura simple y elegante, considerándose un ejemplo de cómo el diseño de un cifrador puede ser simplificado sin sacrificar su seguridad, velocidad o flexibilidad. En la sección siguiente se estudia con más detenimiento este cifrador de flujo, siendo descritas algunas variantes de diseño en el Capítulo 3, las cuales han sido utilizadas durante la realización de la presente Tesis en las implementaciones sobre tecnologías FPGA y ASIC. 22
2.2 Cifrador de flujo Trivium 2.2. Cifrador de flujo Trivium Se trata de un cifrador de flujo síncrono diseñado para generar un flujo cifrado de hasta 264 bits a partir de una clave de 80 bits y un IV de 80 bits. A diferencia de otros generadores que posteriormente han ampliado en sucesivas versiones la longitud de sus parámetros, el cifrador Trivium no ha modificado lo más mínimo su diseño inicial y mantiene intactas las especificaciones requeridas. Su funcionamiento consta de dos fases bien diferenciadas: fase de inicialización y fase de generación de flujo cifrado. El estado interno del generador de flujo, compuesto por 288 bits, se inicia utilizando la clave secreta y el IV, junto a otros 125 ceros y 3 unos en posiciones preestablecidas, dejando pasar los primeros 1152 ciclos de reloj. A partir de ese ciclo de reloj comienza la fase de generación, produciendo como salida un bit de cifrado en cada ciclo de reloj. En concreto, el procedimiento puede describirse tal y como se muestra a continuación en el siguiente Algoritmo 1. El algoritmo se inicia introduciendo los 80 bits de la clave en las posiciones 0 a 79 y los 80 bits del vector de inicialización en las posiciones 93 a 172, completando el resto de las posiciones con ceros, excepto los bits s285 ,s286 ys287 que se ponen a 1. Luego se rota el registro de estados 4 veces completamente (1152 ciclos de reloj en total) antes de poder generar una secuencia válida de bits de cifrado. Algoritmo 1 Trivium 1: (S0, S1, ..., S92)←(k0, k1, ..., k79,0, ..., 0) 2: (S93, S94, ..., S176)←(iv0, iv1, ..., iv79,0, ..., 0) 3: (S177, S178, ..., S287)←(0, ..., 0,1,1,1) 4: for i={1}to n do 5: t1←S65⊕S90S91⊕S92⊕S170 6: t2←S161⊕S174S175⊕S176⊕S263 7: t3←S242⊕S285S286⊕S287⊕S68 8: (S0, S1, ..., S92)←(t3, S1, ..., S92) 9: (S94, S95, ..., S177)←(t1, S94, ..., S176) 10: (S178, S179, ..., S288)←(t2, S178, ..., S287) 11: end for En la Figura 2.7, se muestra la representación esquemática del cifrador Trivium con sus tres registros de desplazamiento y sus realimentaciones. Estos registros son registros de desplazamiento con realimentaciones no lineales (NLFSR). 23
Capítulo 2 Criptografía, cifradores y criptoanálisis 065 92 69 68 91 90 a3 k3 a1 161 176 171 170 175174 a1 k1 242 287 264 263 243 286285 a2 k2 Key stream k1 k2 k3 t3 t1 t2 93 a2 a3 177 Figura 2.7.: Esquema del cifrador Trivium con sus tres registros internos. Por último, en cuanto al aspecto de implementación y seguridad, se puede afirmar que el cifrador Trivium tiene un algoritmo orientado al hardware que pretende ser compacto en entornos con restricciones sobre el número de puertas lógicas, eficiente sobre arquitecturas con limitaciones en cuanto a recursos computacionales y rápido en aplicaciones que requieran una alta velocidad de cifrado. Este algoritmo reúne todas esas características y, hasta el momento, se ha mostrado como el más rápido de todos los presentados en eSTREAM [15]. Respecto a su seguridad, puede decirse que, hoy en día, se considera inmune a los ataques del tipo correlación, guess and determine y ataques algebraicos conocidos. Esto tiene todavía mayor mérito teniendo en cuenta que, dada su simplicidad y velocidad, la vulnerabilidad del cifrador Trivium ha estado y sigue estando en el punto de mira de la comunidad criptográfica internacional. 2.3. Criptoanálisis El criptoanálisis es la rama de la criptografía que estudia cómo puede ser puesta en peligro la integridad de los algoritmos y los circuitos criptográficos. Se trata de un aspecto fundamental en el desarrollo de algoritmos criptográficos 24
2.3 Criptoanálisis seguros, ya que para diseñar un sistema de cifrado robusto y fiable, es necesario que los desarrolladores de dicho sistema sean capaces de entender y definir dónde se encuentran las debilidades potenciales del mismo con el fin de eliminar dichas vulnerabilidades [20]. En la Figura 2.8 se presenta un esquema general del ámbito del criptoanálisis sobre los criptosistemas de clave simétrica. Como puede verse, existen dos grande ramas, por un lado los análisis de vulnerabilidades a nivel de algoritmo y, por otro lado, los análisis de vulnerabilidad a nivel de las implementaciones físicas del dispositivo criptográfico. En la primera de las ramas se analiza la seguridad del propio algoritmo matemático que implementa el sistema criptográfico. Se entiende por nivel de seguridad a la habilidad que posee un algoritmo para proteger la información privada. Cada sistema tendrá su propio nivel de seguridad de acuerdo tanto a su formulación matemática para llevar a cabo la encriptación, como a la longitud de su clave. Cuantos más bits tiene su clave, más seguro es el dispositivo criptográfico. Teniendo en cuenta los recursos computacionales actuales, una longitud de clave menor a 56 bits implicaría que el sistema no fuese seguro dado que podría ser atacado por fuerza bruta con un coste asumible. En el caso de la criptografía lightweight, el NIST recomienda una longitud mínima de clave de 112 bits con el objetivo de mantener un equilibrio entre una complejidad hardware y un nivel de seguridad razonable [21]. CRIPTOANÁLISIS CRIPTOSISTEMAS SIMÉTRICOS ANÁLISIS VULNERABILIDAD ALGORITMO ANÁLISIS VULNERABILIDAD IMPLEMENTACIÓN FÍSICA NO VIABLE - MATEMÁTICAMENTE SEGUROS - INDUCCIÓN DE FALLOS - ATAQUES CANAL LAT. TEÓRICO VULNERABILIDAD MATEMÁTICA Y RECUPERACIÓN DE CLAVE EXPERIMENTAL VULNERABILIDAD FÍSICA Y RECUPERACIÓN DE LA CLAVE 1 2 Figura 2.8.: Criptoanálisis en sistemas criptográficos simétricos. Teniendo en cuenta esto, los análisis o ataques sobre los propios algoritmos que implementan los sistemas criptográficos actuales son escasamente viables, ya que matemáticamente las funciones que implementan los nuevos dispositivos criptográficos y la longitud mínima de clave establecida los hacen seguros 25
Capítulo 2 Criptografía, cifradores y criptoanálisis frente a este tipo de prácticas. Sin embargo, los que sí han demostrado ser eficientes son los análisis sobre las implementaciones físicas. En el esquema de la Figura 2.8 este tipo de análisis se sitúa en la segunda rama del criptoanálisis de los criptosistemas simétricos. Son numerosas las técnicas para llevar a cabo un criptoanálisis sobre una implementación física, desde los ataques invasivos hasta los conocidos como ataques laterales. Dada la gran cantidad de trabajos y métodos en función del tipo de dispositivo criptgráfico (ya sean cifradores de bloque o flujo por ejemplo), hemos distinguido dos grupos de trabajos. El primer grupo incluye aquellos trabajos que utilizan un análisis de vulnerabilidad teórico fundamentado en un modelo del dispositivo (Figura 2.8, 1). El segundo grupo de trabajos basa su análisis de vulnerabilidad en implementaciones reales donde se prueba experimentalmente la posibilidad de conseguir los supuestos asumidos de forma teórica (Figura 2.8, 2). La gran mayoría de los trabajos reportados en la bibliografía se encuentran en el primero de estos dos grupos, asumiendo que los supuestos teóricos son aplicables a los circuitos mediante la utilización de alguna de las técnicas de ataque existentes. Sin embargo, los trabajos que pueden ser clasificados en el segundo de los grupos (marcado en la Figura 2.8, 2 en rojo) son escasos. La implementación de un análisis práctico a veces no es factible debido a los requisitos del sistema desarrollado y a la cantidad de variables que hay que tener en cuenta a la hora de llevar un análisis teórico a la práctica. Son numerosos los ejemplos de la dificultad o controversia existente a la hora de llevar a la práctica los análisis teóricos. Por ejemplo, en uno de los primeros trabajos en este campo [22], los autores afirman que “El uso de modelos de fallos transitorios es considerado irrealista, pero nosotros creemos que un ataque basado en fallos inducidos por radiación es posible.”. Otro ejemplo más actual se puede encontrar en [23], donde los autores afirman que un ataque mediante el uso de fallos experimentales es difícil de implementar y que por tanto su trabajo es una primera aproximación de forma teórica. Es debido a esto que el número de trabajos llevados a la práctica de forma satisfactoria es despreciable frente a los desarrollados asumiendo de forma teórica el escenario del análisis y del ataque. Por lo tanto, para poder tener una visión general tanto de los ataques experimentales como de los análisis teóricos, en la siguientes subsecciones se analizan las principales técnicas que permiten llevar a cabo de forma práctica el criptoanálisis de un criptosistema 26
2.3 Criptoanálisis y las técnicas de análisis teóricas empleadas para estudiar la vulnerabilidad de un criptosistema. 2.3.1. Descripción de las técnicas de ataque a los circuitos Los ataques a la implementación son aquellos que tratan de aprovechar las características físicas de tales implementaciones para extraer información que permita obtener las claves de los algoritmos utilizados, rompiendo así su seguridad. Los riesgos para el sistema de cifrado se basan fundamentalmente en la existencia de ciertos canales a través de los cuales puede salir información sensible de la zona considerada segura del dispositivo, o en la posibilidad de generar fallos en el circuito electrónico para, mediante el análisis de los efectos que esos fallos tienen en el comportamiento del sistema, deducir información sobre las claves. Las distintas técnicas para realizar estos ataques difieren significativamente en términos de coste, tiempo, equipamiento y experiencia necesitados. Hay diferentes formas de organizar los tipos de ataques físicos, distinguiendo un primer criterio donde se encuentran los ataques pasivos y los ataques activos. A su vez, otro criterio es el que los divide entre ataques invasivos, ataques semiinvasivos y ataques no invasivos. En la Tabla 2.3 se muestra una clasificación de los ataques físicos más comunes. Cabe destacar que los ataques físicos son menos generales que los análisis teóricos clásicos, puesto que son específicos para cada tipo de implementación, pero a menudo son mucho más potentes. Según [24], los ataques a implementaciones físicas pueden ser clasificados como: 1. Ataques activos: El ataque activo es aquel donde las entradas y/o el entorno del dispositivo criptográfico es manipulado (alterado) con el objetivo de obtener un funcionamiento anormal. La obtención de la clave se lleva a cabo explotando dicho comportamiento anormal del dispositivo. 2. Ataques pasivos: El ataque pasivo es el que observa el comportamien- to durante el procesado del algoritmo, sin modificarlo, dentro de sus especificaciones. La clave se obtiene observando alguna de las propiedades físicas del dispositivo, como por ejemplo el tiempo de ejecución o el consumo de potencia. 27
Capítulo 2 Criptografía, cifradores y criptoanálisis el Differential Power Analysis (DPA) [32, 69] y pasa a ser llamado Differential Fault Intensity Analysis (DFIA). En los trabajos [46, 47] se llevan a cabo unos análisis diferenciales donde se combinan los supuestos de inyecciones de fallos con el análisis diferencial de potencia para poder recuperar la clave de los sistemas bajo prueba. Por otro lado, es posible encontrar que la técnica del DFA también es aplicada a las funciones hash para comprometer su seguridad como el que se presenta en [70]. Estos son claros ejemplos del amplio uso y versatilidad de este método para poder estudiar la vulnerabilidad de diferentes tipos de sistemas criptográficos. En el caso de los cifradores de flujo, esta técnica es ampliamente utilizada para estudiar su vulnerabilidad [71]. En concreto para los mencionados anteriormente del proyecto eSTREAM (Mickey, Grain y Trivium), la técnica del DFA también ha sido empleada sobre ellos. En [72, 73] se proponen una serie de ecuaciones lineales con el objetivo de, tras definir de forma teórica el modelo de inyección de fallos, permitir el acceso al estado interno del cifrador Mickey y por tanto romper el sistema obteniendo su clave secreta. En cuanto al cifrador de flujo Grain, en [74] se presentó un análisis teórico con el objetivo de determinar una serie de ecuaciones lineales que permitiesen recuperar el estado interno de este cifrador y con ello su clave. Otro buen ejemplo del uso del DFA sobre este cifrador es el trabajo presentado en [75], donde se describe un sistema teórico más real en cuanto al número de inyecciones de fallos sin restricciones de tiempo y localización en el interior de los registros del cifrador. Más recientemente se presentó en [76] un nuevo análisis diferencial para los cifradores de flujo basados en registros de desplazamientos no lineales, como son los finalistas del proyecto eSTREAM, aplicándolo al cifrador Grain. Finalmente, para el cifrador de flujo Trivium se han presentado diversos trabajos teóricos [77–82]. En estos trabajos los autores presentan la posibilidad de recuperar la clave de este cifrador siempre que se inyecte un único fallo en su registro de estados interno. Estos trabajos se discuten en mayor detalle más adelante en la Sección 2.4. A continuación se realiza un estudio y clasificación de los tipos de trabajos más significativos reportados en la literatura donde se hace uso de ataques experimentales a circuitos que, a su vez, son combinados con análisis diferenciales, con el objetivo de poder tener una visión general acerca del uso de este tipo de técnicas de forma concreta. 34
2.3 Criptoanálisis 2.3.4. Aplicaciones concretas de ataques sobre circuitos Una vez presentadas las técnicas de ataque para inyectar errores en circuitos físicos y presentada la técnica de análisis diferencial basada en escenarios de ataque teórico, el siguiente paso es analizar los trabajos donde se presentan ataques prácticos sobre dispositivos criptográficos. Los trabajos presentados en la subsección anterior tienen en común el empleo de escenarios de ataque teóricos haciendo uso de suposiciones sobre cómo deben ser los fallos insertados. En ninguno de estos estudios se utilizan ataques reales sobre implementaciones físicas para comprobar la viabilidad real de poder conseguir insertar los fallos propuestos. Para comprender mejor esta situación hay que considerar la Figura 2.9. En esta figura pueden observarse dos grandes grupos de trabajos, los llevados a cabo de forma teórica y los que son realizados de forma experimental. La gran mayoría de los trabajos reportados en la bibliografía sobre análisis de fallos, como los referenciados hasta ahora, suelen llegar hasta la determinación de la vulnerabilidad del sistema criptográfico de forma teórica, dejando en manos de terceros la comprobación de los ataques de forma experimental (Figura 2.9, Grupo A). En un segundo grupo se encuentran un pequeño conjunto de trabajos que llevan a la práctica las suposiciones teóricas presentadas en algunos trabajos teóricos, pero no llegan a montar el setup experimental completo y dan por hecho que el paso final de recuperación de la clave es inmediato. (Figura 2.9, Grupo B). Sin embargo, son muy escasos los trabajos que desarrollan el flujo completo, es decir, aquellos que implementan un setup de medida, aplican los ataques requeridos por las suposiciones teóricas, capturan experimentalmente las trazas y llevan a cabo el análisis diferencial obteniendo la clave (Figura 2.9, Grupo C). Hay que resaltar que aunque algunos autores puedan considerarlo inmediato, hay una diferencia muy grande entre los trabajos que se encuadran en el grupo B y en el grupo C. Como ejemplo, en el caso del cifrador Trivium, un supuesto teórico indispensable para el DFA es el inyectar un solo fallo en su registro interno en un ciclo determinado. Pero además esta inyección debe ser en diferentes posiciones para el mismo ciclo de reloj en cada ataque. Esta suposición llevada a la práctica puede considerarse viable desde el momento en que el diseñador es capaz de inyectar un solo fallo en un instante determinado. Pero, esto no implica que pueda ser capaz de inyectarlo o replicarlo en sucesivos ataques sobre el número de posiciones diferentes que el análisis posterior requiere. Esto podría implicar la imposibilidad de llevar a cabo el supuesto teórico y 35
Capítulo 2 Criptografía, cifradores y criptoanálisis Selección de sistema criptográfico Análisis Matemático Utilización de suposiciones Demostración vulnerabilidad Demostración de suposiciones experimentalmente Montaje de setup completo Captura de trazas Análisis Diferencial Recuperación clave experimentalmente Grupo A Grupo B Grupo C Téorico Experimental Figura 2.9.: División por grupos de los trabajos reportados, tanto teóricos como experimentales. obligaría al diseñador a desarrollar nuevas estrategias de inserción de fallos que le permitiesen conseguir el objetivo3. Es por esto que, para demostrar la vulnerabilidad de la implementación de un cifrador, es necesario realizar pruebas experimentales y llevar estas pruebas hasta el punto de obtener la clave secreta a partir de los resultados experimentales. Sólo así, además de demostrar la vulnerabilidad del cifrador, podrán conocerse los puntos débiles para el ataque DFA y proponer contramedidas eficaces para este tipo de ataques. La mayor parte de los trabajos que presentan el proceso completo de recuperación de clave mediante el uso de un setup experimental lo hacen sobre el cifrador AES. Esto es debido a que se trata de un cifrador estandarizado y ampliamente utilizado, el cual es posible encontrar implementado de serie en muchas tecnologías y su algoritmo es de sobra conocido y accesible. A continuación se describen los trabajos más representativos en cuanto a aplicación de ataques. DFA on AES El primero de los trabajos de criptoanálisis sobre el cifrador AES-128 es el titulado DFA on AES [62] presentado por Christophe Giraud. En este trabajo 3Este ejemplo es un adelanto del estudio realizado en el Capítulo 5 de esta Tesis, donde se estudian las variables a tener en cuenta para llevar a cabo un ataque real sobre el cifrador Trivium aplicable a un DFA. 36
2.3 Criptoanálisis se realizan dos modelos de fallos para hacer el análisis diferencial, mediante los cuales es posible recuperar la clave secreta del cifrador. Por un lado se encuentra un modelo a partir del cual es posible realizar el DFA siempre que se introduzca un único bit erróneo en un resultado intermedio del proceso de cifrado. Mediante este modelo pueden recuperar la clave con una media de 50 textos cifrados erróneos. Por otro lado, el segundo modelo planteado es capaz de recuperar la clave a partir de la inyección un byte erróneo en un resultado intermedio. Este ataque lo consideran más realista desde el punto de vista práctico y es capaz de recuperar la clave con una media de 250 textos cifrados erróneos. Para llevar a cabo la inserción de fallos de forma práctica utilizan una cámara con flash modificada y un ordenador personal. El cifrador AES se encuentra implementado en una smart card, pero el código del AES implementado es conocido para para poder facilitar el ataque. El ataque lo realizan disparando el flash de la cámara sobre la superficie del chip. Al llevar a cabo el experimento, el autor encuentra el problema de no obtener “buenos” textos cifrados erróneos (no puede obtener las suposiciones teóricas de fallos fácilmente) y por tanto el experimento debe repetirse mas de 1000 veces. El autor considera que si tuviese al alcance mejores herramientas posiblemente la eficacia de estas inyecciones sería mayor. Este trabajo representa un claro ejemplo de lo expuesto anteriormente. Se trata de un trabajo con buena base teórica, donde se asumen modelos de fallos teóricos, que una vez que se trasladan a la práctica encuentran la dificultad de la realización física. Esta dificultad lleva a la imposibilidad de conseguir el escenario planteado teóricamente en el primer modelo y muy difícilmente el del segundo. Si tenemos en cuenta el esquema anteriormente descrito Figura 2.9, este trabajo se enmarcaría en el Grupo B. Practical Fault Attack on a Cryptographic LSI with ISO/IEC 18033-3 block ciphers El segundo de los trabajos recopilados es el presentado por Fukunaga y Takahashi [43]. Este trabajo lleva a cabo de forma experimental ataques sobre los cifradores AES, DES, Camellia, CAST-128, SEED y MISTY1 [83–86]. Concretamente la inserción de fallos se lleva a cabo mediante la inyección de pequeños pulsos en la señal de reloj mediante un sistema de ataque. De los cifradores 37
Capítulo 2 Criptografía, cifradores y criptoanálisis atacados consiguen recuperar la clave del cifrador AES mediante un modelo teórico de DFA presentado previamente por Piret [87]. Para llevar a cabo el experimento de forma práctica utilizan una placa SASEBO- R, controlando la FPGA de control mediante un ordenador. La parte práctica de este trabajo describe cómo los autores son capaces de introducir un error en un estado intermedio de los cifradores y por tanto asumen que es posible aplicarlo a un ataque teórico. En este trabajo realmente se utiliza una parte práctica para probar la suposición de una inyección de fallo pero tras ello hacen un análisis por fuerza bruta basándose en el trabajo de Piret, concluyendo que sería altamente posible llevar a cabo el ataque completo experimentalmente. Este trabajo, al igual que el anterior, se encuentra en el Grupo B de este tipo de estudios. Presentan un sistema de inyección de fallos y prueban que es posible conseguir dicha inserción, pero más tarde no completan el proceso y se centran en la parte teórica asumiendo el escenario del ataque teórico. Realizan por fuerza bruta el análisis basado en supuestos y no llegan a implementar el ataque completo, realizando las inyecciones de fallos necesarias para determinar la probabilidad de conseguir un texto cifrado erróneo o el número de intentos necesarios que permitirían obtener toda la información. When clocks fail: On critical paths and clock faults Otro de los trabajos más interesantes es el presentado por Michel Agoyan y otros [44]. Como su propio título indica, este trabajo estudia el efecto de las inyecciones de fallos mediante la manipulación de la señal de reloj, haciendo un estudio completo de los efectos que provocan dichas inyecciones. Para ello, montan un setup donde utilizan una placa FPGA como generador de fallos a través del reloj y otra donde se implementa el cifrador AES, todo ello controlado por un PC. Con este trabajo tratan de probar la parte práctica del primero de los trabajos estudiados en esta sección [62]. El análisis que llevan a cabo se basa en la posibilidad de conseguir la inyección de un solo bit erróneo en una ronda intermedia. En [62], el autor no podía conseguirlo. Por lo tanto, en este trabajo se presenta la posibilidad de llevar a cabo de forma experimental las suposiciones teóricas de un estudio anterior. Este ataque práctico concluye que es posible inyectar un solo bit erróneo pero no es sencillo y que debe ajustarse muy bien el ataque para poder conseguirlo. A pesar de esto, este trabajo constituye uno de los mejores ejemplos de 38
2.3 Criptoanálisis recuperación de clave desde un análisis teórico hasta el montaje de un setup experimental, perteneciendo al grupo C. DFA of the advanced encryption standard using a single fault En este trabajo realizado por Tunstall, Mukhopadhyay y Ali [88] se presenta un modelo teórico de la inserción de fallos y análisis diferencial. Estos autores llevan a cabo el experimento sobre una FPGA y sobre un microcontrolador, utilizando un programa en C para realizar el DFA. La inyección de fallos se realiza nuevamente mediante la manipulación de la señal de reloj y en el microprocesador utilizando una bajada en la tensión de alimentación. En las pruebas experimentales lo que tratan de probar es la posibilidad de conseguir experimentalmente sus suposiciones teóricas del modelo de fallo. Para ello realizan experimentalmente los ataques sobre las implementaciones físicas y prueban que pueden cambiar el texto cifrado. Como comentario a los resultados experimentales, estos autores añaden que es posible cumplir su suposición teórica de inserción de fallos para uno de sus modelos, pero que la probabilidad de éxito para el segundo de sus modelos es muy baja y que por tanto sería complicado conseguirlo. Concluyen con que estos ataques son probables en unas circunstancias muy específicas, pero reconocen que no pueden saber cómo de efectivos serían estos ataques en otros microcontroladores. En este trabajo la implementación física se lleva a cabo para probar las suposiciones teóricas pero una vez determinada su posibilidad no continúan su estudio completo. Este es otro ejemplo de cómo los autores en este campo prueban las suposiciones pero no completan el proceso dando una probabilidad estadística de inserciones o de rotura de un sistema implementado físicamente, por lo que pertenecería al grupo B. Transient-Steady Effect Attack on Block Ciphers Como último trabajo descrito en esta sección se encuentra el presentado por Yanting Ren y otros [45], donde se presenta un nuevo ataque denominado Transient-Steady Effect attack (TSE). Este ataque se basa en el fenómeno descrito por el que la salida de un circuito combinacional tiene un valor transitorio antes de cambiar a su valor correcto. Los autores generan un modelo de 39
Capítulo 2 Criptografía, cifradores y criptoanálisis fallo para este fenómeno, de forma que manipulando la señal de reloj y capturando los valores transitorios son capaces de recuperar la clave. Sin embargo, para poder aplicar este ataque, es necesario que el cifrador (en este caso el AES) transmita a la salida estos valores transitorios de las señales. Para llevar a cabo experimentalmente el ataque utilizan una FPGA y un generador de funciones. Utilizando un PLL generan las señales de reloj necesarias para producir los fallos. El proceso de inyección de fallos lo realizan internamente, porque por los pads de entrada del dispositivo no se pueden introducir señales con una frecuencia muy alta. Una vez conseguido internamente, prueban a hacerlo de forma externa bajando la tensión de alimentación de la placa, consiguiendo con ello reducir las frecuencias a las que se introducen fallos. Con este sistema demuestran la posibilidad de implementar su modelo de fallo basado en este nuevo fenómeno y son capaces de recuperar la clave experimentalmente. Este trabajo representa uno de los mejores ejemplos de cómo llevar a la práctica un ataque experimental considerando todas las variables hasta recuperar la clave. Este caso se encontraría en el Grupo C, según la clasificación realizada anteriormente. Como puede observarse, el número de trabajos que implementan el setup de medida completo y recuperan la clave de un cifrador son extremandamente escasos. Además hay que tener en cuenta que todos estos trabajos son llevados a cabo sobre el cifrador AES y no sobre cifradores lightweight diseñados para ser mucho más eficientes, rápidos e implementados con unas grandes restricciones de recursos. Esto hace más difícil encontrar este tipo de estudios sobre cifradores lightweight, por lo que en este campo hay mucho trabajo por realizar. En concreto, sobre el cifrador Trivium solo se encuentran estudios teóricos de DFA, donde todos los modelos de fallos están basados en suposiciones, pero en ningún caso se ha probado su viabilidad. A continuación se estudian los principales trabajos relacionados con este cifrador. 2.4. Revisión bibliográfica del DFA sobre el cifrador Trivium En esta sección se analizan las propuestas existentes en la literatura que realizan ataques diferenciales sobre cifradores de flujo, centrándose únicamente 40
2.4 Revisión bibliográfica del DFA sobre el cifrador Trivium en los ataques propuestos sobre el cifrador Trivium. Los artículos recopilados describen tanto el escenario de ataque como los supuestos de partida. Pero, hay que destacar que se trata de propuestas de ataques teóricos y de desarrollo matemático. En nuestro análisis no es necesario incluir los desarrollos matemáticos que los justifican, ya que el principal objetivo de esta Tesis es introducir de forma experimental fallos en implementaciones FPGA y ASIC del cifrador Trivium y utilizarlos más adelante en el sistema DFA presentado en [77], del cual por simplicidad no se mostrarán sus formulaciones matemáticas. A continuación se describen los aspectos de más interés de cada una de las propuestas. Más información se puede encontrar directamente en las referencias bibliográficas de cada uno de los artículos. 2.4.1. Differential Fault Analysis of Trivium Se trata del primero de los artículos presentados por Hojsík y Rudolf [77], presentando el ataque DFA sobre el cifrador Trivium. En él, se introduce una técnica de ataque activo no invasivo en la que se parte del supuesto en el cual el atacante es capaz de insertar un fallo en el estado interno del cifrador, es decir, cambiar un único bit de dicho estado interno. El artículo presenta dos formulaciones diferentes para realizar el ataque, basados en la misma idea principal, siendo el segundo método el más eficiente. Uno de los principales supuestos que se asumen en este estudio es que el atacante puede obtener una parte del flujo cifrado de salida del Trivium, denominado zi ∞ (i=1), producido por un estado interno Ist0arbitrario pero fijo y el producido por un estado interno Is0 t0denominado z0 i ∞ (i=1). El número de bits necesitados depende de ciertos requisitos, pero gira en torno a los 280 bits. Por otro lado el atacante tiene que poder inyectar el fallo en repetidas ocasiones para un mismo estado interno Ist0donde el valor de t0es fijo pero arbitrario. En el escenario contemplado el cifrador de flujo Trivium tiene que funcionar en repetidas ocasiones con el mismo vector de incialización, en inglés Initialization Vector (IV), y clave (K), siendo por tanto la inyección del fallo siempre sobre el mismo estado interno Ist0. Teniendo en cuenta que tanto el dispositivo cifrante como el descifrador utilizan el mismo par de IV y clave, el proceso sería aplicable a cualquiera de estos dos dispositivos. 41
Capítulo 2 Criptografía, cifradores y criptoanálisis Tabla 2.4.: Número de inyecciones de fallos necesitados (m) para obtener un número de bits del estado interno (T). T 20 40 60 80 100 120 140 180 220 240 280 288 m 10.1 20.3 28.4 35.4 39.8 41.9 42.4 42.7 42.9 43.0 43.1 43.1 El resultado del ataque es la determinación del estado interno, el cual puede ser utilizado para obtener la clave y el IV. Esto es posible debido a la reversibilidad del algoritmo del cifrador Trivium y al hecho de que, al inicializar el cifrador, gran parte de los bits del estado interno son puestos a valores fijos y conocidos. Tras determinar Ist0, se podría hacer funcionar el cifrador Trivium de forma inversa. Para resumir lo expuesto anteriormente, se puede decir que se asumen los siguientes requisitos para poder llevar a cabo los ataques: Siendo t0arbitrario pero fijo entero positivo e Ist0el estado interno de Trivium arbitrario pero fijo en el instante t0. Se considera que un atacante: Es capaz de obtener los nprimeros bits consecutivos del flujo cifrado zi producidos por el estado interno Ist0. Es capaz de inyectar un fallo en una posición aleatoria del estado interno Ist0. Es capaz de repetir la inyección del fallo en una posición aleatoria de Ist0,mveces. Es capaz de obtener los nprimeros bits consecutivos del flujo cifrado z0 i producidos por el estado interno Is0 t0para todas las inyecciones de fallo. El número de bits del flujo correcto y erróneo necesitados, n, difiere para las dos formulaciones del ataque. Para la primera de de ellas es de n= 160 y para la segunda n= 280. En la Tabla 2.4 se muestra el número de bits del estado interno recuperados (T) en función del número de inyecciones de fallos (m). Este número fue calculado por los autores como la media de 1000 ataques. Se puede observar que para una media de 43.1 inyecciones de fallos se puede recuperar el estado interno por completo, rompiendo así el algoritmo del cifrador Trivium. 42
2.4 Revisión bibliográfica del DFA sobre el cifrador Trivium 2.4.2. Floating Fault Analysis of Trivium Este artículo, presentado también por Hojsík y Rudolf [78], introduce una mejora esencial en el ataque DFA de su primer artículo, obteniendo unos mejores resultados en el número de inyecciones necesitadas para romper el cifrador Trivium. En el primer artículo, el DFA necesitaba una media de 43.1 inyecciones de fallos para obtener todos los bits del estado interno, mientras que en este artículo la modificación de la formulación matemática reduce el número de inserciones de fallos necesarias para obtener todos los bits del estado interno a una media de 3.2 (este dato está obtenido tras repetir el experimento 10000 veces). En el mejor de los casos se puede obtener la clave con solo 2 inyecciones. La idea principal del ataque es una simple transformación de las ecuaciones polinómicas, obtenidas durante el ataque, en ecuaciones lineales. Este procedimiento se basa en lo que denominan ”floating description of Trivium” y en algunas de las propiedades de propagación de fallos en la evolución del estado interno. Por otro lado, se siguen asumiendo los prerrequisitos del DFA exceptuando el número de bits de flujo cifrado correcto y erróneo necesitados, siendo en esta ocasión n= 800. Con este número de bits los resultados obtenidos tras 10000 experimentos son de un 2% de probabilidad de acierto para m= 2 (donde m son las inyecciones de fallos), 78.5% para m= 3,99, 8 % para m= 4 y para m= 5 el ataque siempre revela la clave. 2.4.3. Fault Analysis of Trivium En este artículo de Yupu, Juntao, Qing y Yiwei [79] parten del artículo de Hojsík y Rudolf [78] anteriormente descrito y del que mantienen algunos de sus supuestos, pero presentan algunas novedades. Para empezar tienen en cuenta los siguientes supuestos establecidos por Hojsík y Rudolf: La necesidad de inyectar un fallo en el estado interno en un tiempo fijado. Tras cada inyección de fallo, puede cambiar únicamente un 1 bit del estado interno. Sin embargo para este trabajo, los autores consideran que para cualquier cifrador de flujo, el estado interno se actualiza muy deprisa, haciendo difícil que 43
Capítulo 2 Criptografía, cifradores y criptoanálisis 2.6. Conclusiones En este capítulo se ha llevado a cabo una descripción detallada del estado del arte de la criptografía, los cifradores y el criptoanálisis. Para ello se ha realizado una presentación general de la criptografía como marco para poder introducir el ámbito principal de esta Tesis Doctoral, es decir, el análisis de vulnerabilidad de los cifradores de flujo. En concreto, se ha descrito el principal sistema criptográfico objeto de estudio de esta Tesis, el cifrador de flujo Trivium. Una vez descrita la elección del sistema criptográfico, se ha podido ver que, debido al desarrollo matemático de los algoritmos y la longitud de las claves secretas, atacar un dispositivo criptográfico por su vulnerabilidad matemática es un proceso obsoleto. Este hecho ha llevado a estudiar las implementaciones físicas de los propios algoritmos matemáticos para poder determinar sus vulnerabilidades. Para poder estudiar estas vulnerabilidades, se ha considerado una de las técnicas más influyentes en este ámbito, es decir, el análisis diferencial de fallos o DFA. Como se ha podido ver a lo largo del capítulo, los trabajos presentados en la literatura sobre el DFA son en su gran mayoría estudios teóricos basados en modelos de fallos teóricos (incluidos los relativos al cifrador Trivium), siendo muy escasos aquellos que realizan un ataque completo de recuperación de clave experimentalmente. Hasta donde sabemos, en el caso del cifrador Trivium no existen trabajos en la literatura que realicen ataques experimentales a su implementación. Es por esto que se encuentra la necesidad de estudiar las técnicas prácticas de inserción de fallos para poder diseñar un sistema de ataque que permita llevar a la práctica un escenario de ataque teórico sobre el cifrador Trivium. Con ello es posible demostrar la viabilidad de los estudios previos y determinar la vulnerabilidad de este tipo de cifrador. Para ello, tras estudiar las técnicas de ataques más comunes sobre circuitos para conseguir la inserción de fallos, se ha determinado que el conjunto de técnicas más interesantes para nuestro objetivo son las que engloban los denominados ataques activos no invasivos. Esta selección se lleva a cabo debido a que son las técnicas más eficientes a la hora de poder inyectar fallos en los cifradores, son válidas para implementar un sistema de ataque válido tanto para FPGA como ASIC y su coste en recursos es muy inferior en comparación con los demás métodos. 50
2.6 Conclusiones A partir de aquí, se han estudiado los trabajos reportados donde se aplica el DFA sobre el cifrador Trivium y se han podido determinar las principales características de los escenarios de ataque teóricos con el fin de poderlos trasladar a la práctica. De estas características, la más importante es la de inyectar un solo error efectivo en el interior del cifrador. Esta inserción debe realizarse repetidamente para un mismo instante de tiempo en pruebas sucesivas, teniendo que capturar el flujo cifrado correcto y erróneo a la salida del sistema. Considerando todo el estudio realizado, para poder conseguir el objetivo de inserciones de fallos en el cifrador Trivium, se han elegido dos técnicas de inyección de fallos. Por un lado se encuentra la técnica mediante la cual se manipula la señal de reloj del sistema con pequeños pulsos de reloj, y por otro lado, se encuentra la técnica mediante la cual es posible manipular la señal de control del sistema para provocar un funcionamiento anómalo. 51
3. Inserción de fallos en implementaciones FPGA de cifradores Trivium 3.1. Introducción En este capítulo se presenta el análisis de vulnerabilidad del cifrador Trivium implementado en FPGA frente a ataques activos no invasivos mediante la manipulación de la señal de reloj. A lo largo de este capítulo se realizará el estudio de la vulnerabilidad de varios diseños del cifrador Trivium frente a ataques: el cifrador Trivium con carga de clave e IV en paralelo, con carga en serie y un modelo del cifrador de consumo de baja potencia. De estos diseños, el de carga en serie ha sido diseñado a lo largo de la realización de la presente Tesis Doctoral, así como sus variantes. Por otro lado, para poder estudiar las vulnerabilidades se presenta un sistema de ataque donde se realizan inducciones de pulsos cortos en la señal de reloj del sistema en diferentes ciclos de reloj y para diferentes configuraciones. Gracias a este análisis de vulnerabilidades es posible establecer los puntos débiles del cifrador Trivium implementado en FPGA, los cuales pueden servir también para el estudio de vulnerabilidad sobre tecnología ASIC y por consiguiente para el diseño de contramedidas frente a este tipo de ataques. Para llevar a cabo estos análisis se han utilizado dos familias de FPGA y así poder obtener conclusiones generales acerca del comportamiento del sistema. Además, para poder ver si el rutado y colocación de los componentes afecta en la vulnerabilidad, en la FPGA se incluyen dos cifradores que funcionan en paralelo y que son sometidos a las mismas pruebas bajo las mismas condiciones. Así mismo, el trabajo descrito en este capítulo se trata de una continuación 53
Capítulo 3 Inserción de fallos en implementaciones FPGA de los Trabajos Final de Grado y de Máster [89, 90], donde se presentaban resultados preliminares de análisis de vulnerabilidad de los cifradores y diseños preliminares de los sistemas de ataque. Siendo a lo largo del desarrollo de la presente Tesis Doctoral donde se ha mejorado y profundizado en el desarrollo de los mismos para obtener los resultados presentados. El contenido de este capítulo no se muestra porque se encuentra publicado en C.V. 1. 3.2. Conclusiones A largo de este capítulo se ha presentado el estudio de las características de los diferentes diseños del cifrador Trivium implementado en FPGA, así como un estudio de los métodos que permiten implementar un ataque activo no invasivo que hace uso de la manipulación de la señal de reloj. Tras ello, se ha presentado el diseño de un sistema de ataque a través del cual es posible inyectar fallos en los registros internos de los cifradores y el cual es posible utilizar en diferentes familias de FPGA. Los resultados obtenidos tras realizar la implementación del sistema de ataque lateral activo al cifrador Trivium, tanto con el diseño de carga en paralelo, como los de carga serie y baja potencia, permiten concluir que se produce una diferencia en los comportamientos de un diseño frente al otro, tanto en la misma, como en diferentes familias de FPGA, cuando se llevan a cabo los ataques con el sistema diseñado. El conjunto de resultados no sólo demuestra que este cifrador en sus diferentes versiones es vulnerable frente a ataques por modificación de la señal de reloj, sino que sus vulnerabilidades dependen de sus puntos más críticos, los cuales son los biestables realimentados o utilizados para las operaciones lógicas, así como las celdas vecinas. El sistema de ataque diseñado ha permitido la inyección de errores efectivos en todos los cifradores en diferentes ciclos de inserción, para todas las diferentes claves secretas. Esto demuestra la independencia del sistema de ataque de la selección de clave y vector de inicialización, puesto que la capacidad y eficiencia del sistema han demostrado ser elevadas en todos los casos. En el caso del cifrador de baja potencia, se ha podido ver que la capacidad y eficiencia del sistema es menor debido a la menor capacidad de inserción 54
3.2 Conclusiones de fallos efectivos. Igualmente se ha conseguido la inyección de fallos efectivos en sus registros y por tanto se ha demostrado su vulnerabilidad al igual que ocurre con los otros diseños. Por último, se ha podido demostrar que con unas herramientas básicas y con un coste prácticamente nulo, se puede comprometer la seguridad del cifrador Trivium en sus diferentes versiones. Mientras que hasta donde se ha podido ver, la versión del cifrador con carga serie y con contador externo presenta una mayor resistencia a los ataques, ya que se trata del cifrador cuya frecuencia máxima de operación es la mayor entre los diferentes diseños del cifrador Trivium. 55
4. Inserción de fallos en implementaciones ASIC de cifradores Trivium En este capítulo se presenta el estudio y desarrollo de los ataques realizados sobre diferentes cifradores de flujo Trivium implementados en tecnología ASIC. Al igual que en las implementaciones FPGA, en ASIC, los cifradores Trivium también operan a frecuencias muy elevadas y por tanto comparten los problemas a la hora de generar los pulsos de reloj que permiten la inducción de fallos. Por otra parte, al contrario que en FPGA, en ASIC no es posible montar el sistema de ataques de forma interna en el propio chip donde se encuentran los cifradores Trivium y debido a esto es necesario montar un sistema de ataque externo a la implementación. El sistema de ataque, pues, deberá generar señales muy rápidas que se puedan inyectar en el ASIC y hacerlo de forma muy precisa para que pueda inyectarse un fallo en el cifrador Trivium. Esta Tesis se ha desarrollado en el Instituto de Microelectrónica de Sevilla, donde se cuenta con el equipo de test Agilent 93000, que aunque no está diseñado para el propósito de realizar ataques, se llevaron a cabo diferentes configuraciones y test que permitieron su utilización para tal efecto y con el cual se ha desarrollado nuestro sistema de ataque sobre ASIC. En este capítulo se presenta la descripción del ASIC donde se encuentran los diferentes cifradores de flujo Trivium, la configuración del equipo de test, así como la creación de un detallado plan de test para llevar a cabo los ataques. Por último se presentan los resultados obtenidos tras la aplicación del sistema de ataque por inducción de pulsos en la señal de reloj y manipulación de la señal de control, cerrando el capítulo con las conclusiones obtenidas a partir de dichos resultados. 57
Capítulo 4 Inserción de fallos en implementaciones ASIC 4.1. Descripción de la implementación ASIC A la hora de llevar a cabo las pruebas de inserción de fallos sobre los cifradores Trivium se utilizó un circuito en tecnología ASIC diseñado en el marco del proyecto CITIES1anterior al inicio de este trabajo de investigación. Este ASIC contiene internamente tres grupos de circuitos, uno de los cuales es el utilizado para la realización de ataques por inserción de fallos. El grupo de circuitos que concierne a la realización de los ataques por inserción de fallos consta de las siguientes caracerísticas: Contiene ocho diseños diferentes del cifrador Trivium. Estos diseños son la versión estándar del cifrador y las versiones de generación de flujo cifrado multi-bit de dos, ocho y dieciséis bits y versiones de baja potencia también para Triviums con salidas de uno, dos, ocho y dieciséis bits. A diferencia de la versión estándar, los modelos multi-bit son versiones del cifrador capaces de generar un flujo cifrado de dos, ocho y dieciséis bits en cada ciclo de reloj. El mecanismo de carga de clave y vector de inicialización sobre el ASIC se realiza de forma serie. Los datos transferidos desde el exterior en modo serie se almacenan en dos registros de 80 bits, uno para la clave y otro para el vector de inicialización. Posteriormente el contenido de estos registros es cargado en paralelo en el registro de estado de todos los Triviums. Implementación de dos cifradores idénticos por cada modelo. Con el objetivo de poder estudiar el comportamiento de los cifradores y su dependencia del rutado frente a un mismo ataque y condiciones de ataque, se encuentran implementados dos cifradores del mismo modelo por cada diseño del cifrador Trivium enumerado anteriormente. Señales de control compartidas. Las señales de control utilizadas son comunes a todos los cifradores implementados en el circuito, es decir, 1Este proyecto es anterior a la realización del presente trabajo de investigación y por tanto queda fuera del ámbito de esta memoria. Aún así, la utilización del circuito para la obtención de resultados hace necesaria una breve descripción de su implementación y características. 58
4.1 Descripción de la implementación ASIC cuando se inicializan todos, se inicializan a la vez, cuando funcionan todos, funcionan a la vez y cuando se paran, todos los cifradores se paran. Multiplexado de las salidas. Dado que todos los cifradores funcionan con las mismas señales de entrada, para poder ver las señales de cada cifrador a la salida del circuito, se utiliza una multiplexación que permite seleccionar entre las salidas de un cifrador u otro. Muestreo del estado interno de cada cifrador. Para poder comprobar los resultados de los ataques de inserción de fallos sobre los cifradores, se tiene acceso al registro de estados de cada uno de los cifradores. Este acceso se consigue muestreando el registro interno de un cifrador Trivium en un registro intermedio de 288 bits y sacando de forma serie el contenido del registro intermedio por una de las salidas del ASIC. Para poder muestrear los registros de estados internos se debe de tener en cuenta lo siguiente: 1. Se debe seleccionar la versión deseada del cifrador a muestrear. 2. El muestreo de las dos copias en paralelo del modelo del cifrador se realiza con un reloj “clk2” independiente del general. 3. La salida de datos de los dos registros anteriores se realiza de forma serie por dos pines de salida. En la Figura 4.1 puede observarse una representación de una parte del circuito ASIC que contiene a dos cifradores iguales. Los cifradores funcionan en paralelo con las señales generales de entrada de reloj y control, mientras que la salida serie de los registros intermedios lo hacen con la señal clk2. Como puede verse, el registro de estados de cada cifrador se copia en dos registros intermedios comunes para todos los cifradores y éstos son muestreados con el reloj clk2. Este diseño permite por tanto tener acceso al registro de estado del cifrador que se desee mediante el uso de una señal de selección. 59
Capítulo 4 Inserción de fallos en implementaciones ASIC En un segundo momento hay que crear y definir las formas de onda de entrada, donde la más importante para el objetivo de inserción de errores es la señal de reloj. Con ayuda de la ventana de temporización pueden definirse varias ventanas temporales, cada una de las cuales generará un comportamiento temporal diferente. Estas definiciones pueden observarse en la Figura 4.5, donde pueden verse las diferentes ventanas de definición de formas de ondas necesarias para realizar las pruebas. Cada una de estas ventanas tendrá una etiqueta para poder asociarla a señales y a ciclos concretos de un patrón de test. Así para el caso concreto de la señal de reloj se han generado tres ventanas temporales diferentes para CLK_FT y una para CLK2_FT. Como puede verse en la Figura 4.5, la señal denominada CLK_FT tiene definido el valor 3 para la columna “DevCyc”. Esto significa que la señal con la etiqueta CLK_FT tendrá tres formas de onda diferentes y que en función del valor seleccionado en el test, se utilizará una forma de onda u otra. En el caso mostrado en la imagen, esta señal cuenta con siete flancos, identificados por su número. En la posición de cada uno de ellos (menos en el caso del 2) se ha configurado para que se produzca una transición de 0 a 1 o de 1 a 0. Esta configuración será utilizada solo en aquellos ciclos en los que se quiera provocar un fallo. Además las posiciones de las transiciones se pueden parametrizar y así ajustar dinámicamente los valores a los necesarios para introducir los errores. La segunda señal denominada CLK2_FT, la cual posee una sola definición de señal, se ha configurado para que tenga una transición de valor en el flanco 2 de 0 a 1. Esta es la utilizada para el funcionamiento normal del reloj en la salida de datos de los registros intermedios. Por otro lado se encuentran las configuraciones de las tensiones. Estas configuraciones permiten definir las tensiones de entrada del anillo de pads y del core del circuito, así como los valores de tensión para los niveles lógicos cero y uno, tanto de los pines de entrada como los de salida del circuito. Por último, para la carga de patrones se pueden utilizar dos métodos, por un lado la carga de patrones obtenidos desde simulación mediante otra herramienta software, o por el contrario, haciendo uso de la función Golden Device. En el primer caso los patrones son generados de forma externa y son cargados en la herramienta SmarTest. En el segundo caso los patrones se generan a partir de un test propio de la herramienta SmarTest que permite realizar una generación de patrones esperados ideales a partir de unos patrones de entrada. Con este último solo es posible obtener las salidas esperadas, puesto que las entradas deben de proporcionarse al sistema para poder realizar este test. 66
4.2 Equipo de test Agilent 93000 Figura 4.5.: Ventana definición señales de temporización. Aplicaciones utilizadas para la obtención de resultados Para comprender la metodología de inserción de fallos en las implementaciones mediante el uso de este equipo, es necesario conocer las funciones que ofrece este. Dado que las posibilidades que permite este equipo son muy amplias, por simplicidad, en este texto se hace referencia exclusivamente a las opciones utilizadas, presentándose por tanto en mayor detalle aquellas que son útiles para la obtención de los resultados. Una vez configurado el sistema y cargados unos vectores de test para las entradas se realiza un test denominado Golden Device. Este test, cuya ventana puede apreciarse en la Figura 4.6, permite pasar los datos capturados por el equipo a datos esperados. Por ello, este test debe realizarse en unas condiciones que garanticen que el circuito funcione correctamente. Para el test Golden Device los parámetros de entrada utilizados son los mismos que en los casos donde se ataca el circuito, salvo que no está alterada la señal de reloj y permitiendo por tanto obtener el comportamiento ideal de los cifradores a lo largo del test completo. Los resultados de este test, son los utilizados para realizar la comparación con los resultados tras la realización de los ataques. 67
Capítulo 4 Inserción de fallos en implementaciones ASIC Figura 4.6.: Ventana de test Golden Device del equipo. Otra aplicación básica en este equipo es el test funcional. De entre todos los posibles test que ofrece la herramienta, el test funcional es el más importante de todos, puesto que es el que va a permitir obtener todos los resultados de los ataques. Este tipo de test funcional consiste en una prueba donde se aplican los patrones de entrada al circuito y se comparan los datos recibidos con los datos esperados, siendo los patrones de entrada y salida esperados los obtenidos a partir del test Golden Device. Mediante dicha comparación se determina si el test ha pasado o si por el contrario ha fallado. Con el test funcional es posible determinar si se han producido fallos en el interior del circuito y a partir de este resultado volcar los datos de salida a fichero para su posterior tratamiento. Una tercera aplicación muy utilizada de este equipo es la función denominada resultados, que de forma gráfica muestra en una pantalla un diagrama temporal de las entradas y las salidas. También muestra las diferencias con las salidas esperadas. En la Figura 4.7, puede verse representado el resultado obtenido y esperado de las pruebas. Esta función es muy útil debido a que, en nuestro caso, permitirá determinar de forma interactiva si han sido introducidos errores y por tanto se ha producido un ataque satisfactorio o si por el contrario no se han inducido errores, si ha habido un error de muestreo o si el pulso en la señal de reloj ha sido filtrado. 68
4.2 Equipo de test Agilent 93000 Figura 4.7.: Ventana de resultados de test. Por último, se encuentra la función de representación de resultados en forma- to tabla mediante una lista de patrones y resultados. En la Figura 4.8 puede observarse una captura de la ventana de esta función. Esta aplicación permite visualizar en formato tabla los resultados y los patrones de entrada, permitiendo además un volcado de datos a un fichero para su posterior tratamiento para determinar el número de fallos introducidos y posiciones en los registros de estados internos de los cifradores. Figura 4.8.: Ventana de lista de patrones y resultados. 69
Capítulo 4 Inserción de fallos en implementaciones ASIC 4.3. Creación del plan de test Siguiendo la línea de trabajo de la presente tesis, se ha utilizado la manipulación de la señal de reloj para insertar fallos en los cifradores Trivium implementados en la tecnología ASIC. En esta ocasión, aprovechando las características que ofrece el equipo de test, se ha combinado la inserción de pequeños pulsos de reloj con la variación de la tensión de alimentación y temperatura. Además de estas combinaciones, se ha llevado a cabo otro tipo de ataque haciendo uso de las señales de control de los cifradores junto con la señal de reloj del sistema. Teniendo en cuenta el amplio abanico de variables para cada test, es necesario plantear de forma muy clara los pasos a seguir para poder estructurar todo el conjunto de pruebas. El flujo de trabajo se presenta en la Figura 4.9. Como puede verse, en un primer paso hay que definir las señales o formas de onda utilizadas para las pruebas. Después de esta primera definición, se encuentra la realización de test funcionales (con sus correspondientes generaciones de patrones) para corroborar el correcto funcionamiento, así como la determinación de las frecuencias óptimas para la inyección de errores. Tras esto, el siguiente punto consiste en la toma de datos y análisis de los mismos. Definición de formas de onda Generación de patrones y test funcionales Determinación de frecuencias de funcionamiento Toma de datos y análisis Configuración del equipo Figura 4.9.: Flujo principal de trabajo para la realización de las pruebas. 4.3.1. Definición de formas de onda A la hora de realizar las pruebas de inserciones de fallos sobre los cifradores, es necesario definir una serie de señales o formas de onda de las señales de entrada. Dado que los ataques se realizan mediante la manipulación de la señal de reloj, al igual que ocurría en FPGA, es muy importante tener una gran precisión a la hora de generar las señales de reloj. Esta precisión engloba, además, a las señales de captura de datos y a las señales que se generan para inducir errores en los cifradores. El equipo de test Agilent 93000 permite la definición de formas de onda que pueden ser replicadas el número de veces que sea necesario, permitiendo de 70
4.3 Creación del plan de test este modo generar por ejemplo una señal de reloj mediante el uso repetido de un único patrón. Para mostrar esto de forma gráfica se presenta la Figura 4.10. Como puede observarse en esta figura, es posible definir una señal mediante la utilización de flancos denominados desde d0 a d7 (en este caso solo se utilizan d0 y d1). En función de los valores que se le den a estos flancos, quedará definida la forma de onda de la señal. Figura 4.10.: Definición y utilización de forma de onda para la generación de una señal de reloj. En la Figura 4.10 a), se ha presentado a modo de ejemplo la definición de una forma de onda mediante dos flancos, d0 a valor bajo y d1 a valor alto. La selección de esta misma forma de onda de modo secuencial es lo que permite la generación de la señal de reloj en este equipo de test, Figura 4.10 b). Además es posible la utilización de variables que modifiquen de forma dinámica los flancos, por ejemplo, es posible la utilización de una variable denominada “Tx” que multiplique los valores de tiempo en los que se producen los flancos, cambiando así de forma dinámica las formas de onda. Teniendo en cuenta lo expuesto hasta ahora, se han definido diferentes formas de onda para la generación de las señales de reloj, así como dos formas de onda especiales para la inducción de pulsos cortos en dicha señal. En el caso de la señal de reloj normal se ha utilizado la forma de onda mostrada en la Figura 4.10 a), pero en el caso de la inducción del pulso corto se ha llevado a cabo el diseño de unas formas de onda especiales. Centrémonos en la definición de estas formas de ondas especiales de las que trataremos dos casos, uno con solamente un pulso corto (Figura 4.11) y otro con dos pulsos cortos (Figura 4.12). En el primer caso encontramos una forma de onda que presenta 71
Capítulo 4 Inserción de fallos en implementaciones ASIC un pulso corto en función de la variable “T2” y en el segundo caso otra forma de onda que presenta dos pulsos cortos en función de esta misma variable. La necesidad de este último caso se debe al hecho ya mencionado de que, al filtrar los pads del chip pulsos de muy alta frecuencia, es preciso generar dos pulsos consecutivos para que llegue al interior del cifrador al menos uno en condiciones de inducir un fallo. En el primer caso, Figura 4.11, se tiene una forma de onda definida por los flancos d3, d4, d5 y d6, cuyos valores están multiplicados por la variable “T2”. Esta variable permite la modificación de la posición de los flancos, haciendo que estos se encuentren más cercanos unos a otros y por tanto aumentar o disminuir el tiempo de los pulsos. Así puede obtenerse un pulso de reloj formado por los cuatro flancos. Por otro lado, la señal completa está definida por una variable denominada “T”, global a todas las formas de onda, la cual establece el ancho completo de todas las señales de patrones del sistema. Esta forma de onda viene definida por los valores de los flancos dados en 4.1. Esta señal será utilizada en los casos en los cuales la frecuencia de operación de los cifradores no sea muy elevada. d3 d4 d5 d6 T T2 Figura 4.11.: Definición de la forma de onda de la señal con un sólo pulso. d3= 0; d4= 0,25T2;d5= 0,5T2;d6= 0,75T2(4.1) En el segundo caso, Figura 4.12, se tiene una forma de onda definida por los flancos d0, d3, d4, d5, d6 y d7, siendo sus valores temporales una fracción de la variable “T2”. En este caso, la señal presenta dos pulsos cortos que permiten, como se explicó anteriormente, que los pads de entrada del circuito toleren uno de estos dos pulsos. Al contrario que el caso anterior, esta señal será 72
4.3 Creación del plan de test utilizada en los casos de mayor frecuencia de operación donde un pulso puede ser filtrado. Esta señal viene definida por los valores de los flancos dados en 4.2. d0 d3 d4 d5 T T2 d6 d7 Figura 4.12.: Ventana de definición de la señal con dos pulsos. d0= 0; d3= 0,15T2;d4= 0,3T2;d5= 0,45T2;d6= 0,6T2;d7= 0,75T2 (4.2) Con esto quedan definidas las formas de onda que se van a utilizar para generar la señal de reloj. La utilización de una u otra dependerá del caso en que se encuentre el sistema bajo prueba, ya sean pruebas que utilicen una frecuencia muy elevada o de pruebas donde la frecuencia no es llevada al límite de poder filtrar los pulsos inducidos. Caso especial: manipulación de la señal de control Este caso se puede considerar especial debido a que la señal de control no se manipula para generar un pulso pequeño, sino para adelantar o retrasar el instante de cambio de dicha señal. Este planteamiento sigue la misma metodología que los anteriores, en cuanto que utiliza una forma de onda donde se modifica una variable denominada “T3” (Figura 4.13). El objetivo de esta variable es acercar o alejar los flancos de la señal de control al flanco de subida de la señal de reloj. Esto permite actuar sobre el instante de tiempo que hay entre el flanco de reloj y el cambio de las señales de entrada de los biestables, lo que se puede traducir en violaciones de tiempo de setup. De esta forma, 73
Capítulo 4 Inserción de fallos en implementaciones ASIC la manipulación de los flancos de la señal de control puede provocar que al detener y activar el cifrador se inyecten errores en los registros internos, dado que la señal de control no se encuentra balanceada como lo está la señal de reloj que utiliza lineas especiales de propagación. En la Figura 4.13 puede observarse la definición de la forma de onda que permite la manipulación de la señal de control en función del valor de la variable “T3” que modifica el flanco d2 desde 0 hasta T. T d2*T3 CLK Figura 4.13.: Ventana de definición de la señal de control manipulable bajo señal de reloj. 4.3.2. Características del plan de test Una vez realizada la configuración y definidas las formas de ondas, el siguiente paso consiste en la generación de patrones y realización de test funcionales que permitan verificar el correcto funcionamiento de los diferentes circuitos de cifradores incluidos en el ASIC. En la Figura 4.14 se ha representado el desglose de la etapa de generación de patrones y test funcionales para las pruebas de inserciones de errores. Esta etapa tiene como primer proceso el planteamiento de test y determinación de secuenciación de las señales de entrada que modelan cada una de los test a realizar, como son los ciclos de carga de clave secreta e IV, la secuenciación de procesos de carga, el funcionamiento y muestreo, etc. Tras esto, se establece qué claves y vectores de inicialización se utilizarán en las pruebas, así como los ciclos donde se inyectarán los pulsos de reloj que permitirán la inducción de errores, el muestreo de resultados, etc. Llegados a este punto es posible generar los patrones de funcionamiento que permitan la realización de cada uno de los test a realizar. En el siguiente paso se aplicarán estos patrones de test para llevar a cabo los tests. 74
4.3 Creación del plan de test Planteamiento de test y determinación de secuenciación de señales Utilización de patrones y estructura de test Selección de Key/IV, ciclos de funcionamiento y de inserción Generación de patrones y test funcionales Comprobación de la repetibilidad de los resultados Comprobación de la veracidad de los resultados Figura 4.14.: Desglose de la etapa de generación de patrones y test funcionales. Los siguientes pasos están destinados a la comprobación de la repetibilidad de resultados así como a la comprobación de la veracidad de los datos capturados. Es decir, se comprueba funcionalmente que los fallos producidos y detectados en los cifradores de flujo son reales. Esta comprobación se basa en el hecho de que si un error introducido en un instante determinado no genera el mismo registro interno cientos de ciclos después que el que puede generar una simulación funcional, este error será un falso positivo o un error de captura. Con este proceso se asegura la veracidad de las inserciones y del funcionamiento del sistema de inserción de fallos ya que un error real debe ser propagado a lo largo del tiempo en el interior del cifrador. Los test que se han realizado sobre los circuitos tienen las siguientes características. 1. Realizar pruebas funcionales. Aunque los chips ya han sido probados, se vuelve a comprobar su correcto funcionamiento a frecuencias bajas con una tensión nominal, mínima y máxima. 2. Funcionar un número de ciclos determinado y capturar datos. El test debe permitir funcionar al sistema una serie de ciclos establecidos y tras la inserción del pulso, detener el reloj y capturar los registros para su posterior procesamiento. Esta característica permite observar si siempre se repite el mismo fallo bajo unas mismas condiciones. Este proceso se realiza para cada situación y debe obtener tanto el número de fallos como la posición de los fallos. Estos dos análisis se tendrán que hacer mediante procesamiento de datos posteriores. 75
Capítulo 4 Inserción de fallos en implementaciones ASIC Tabla 4.3.: Límites de tiempo entre flancos de subida para T2cuando se utilizan dos pulsos de reloj para inducir fallos. Caso 1: Tensión nominal. Caso 2: Tensión mínima. Caso 1 Caso 2 Trivium Máx. (ns) Mín. (ns) Máx. (ns) Mín. (ns) Estándar 7.5 6.95 16 12 Low Power 8.92 6.92 22 15 x2 Estándar 7.1 7 14 11 x2 Low Power 9 7 21 18 x8 Estándar 8.8 6.9 16 14 x8 Low Power 14.7 13 29 27 x16 Estándar 9.8 7.4 21 17 x16 Low Power 17.1 14.5 32.5 31.5 Caso especial: manipulación señal de control. Para el caso especial donde la forma de onda manipulada es la señal de control, se realizaron test para conocer el rango de tiempos de cambio respecto a la señal de reloj solo a temperatura ambiente y tensión nominal. Esto se debe a que si se tienen en cuenta los casos antes considerados, el más desfavorable para inducir errores en los cifradores es el de tensión nominal. Por lo tanto, analizando la posibilidad de inserción de un único error en los cifradores bajo la condición de tensión nominal es suficiente para concluir que con tensión mínima también es posible. En la Tabla 4.4 se puede observar el rango de tiempos, cerca del flanco de subida de reloj, en torno al cual debe producirse el cambio en la señal de control para poder inyectar errores en los cifradores de flujo2. Cabe destacar que en este caso, el valor de la variable T3, en nanosegundos hace referencia a la proximidad en tiempo del flanco de bajada de la señal de control respecto del flanco activo de reloj del sistema. Esta proximidad provocaría una violación de tiempos de setup en diferentes biestables del circuito que se traducirían en inyecciones de errores en los registros de desplazamiento. 2Las pruebas de inserción de errores utilizando este método, sólo se han realizado sobre la implementación estándar ya que el comportamiento y resultados, al igual que en los casos anteriores, es extrapolable a los demás cifradores. 82
4.3 Creación del plan de test Tabla 4.4.: Límites de los valores de tiempo de la variable T3para inducir errores mediante la señal de control. Trivium T3(ns) Mín. T3(ns) Máx. Estándar 15.05 16.05 Los valores recogidos en la Tabla 4.4 representan el mínimo y máximo valor de la variable T3que debe multiplicar al flanco de bajada “d2” de la señal de control para que se produzca una inserción de fallo en los registros internos del cifrador por violaciones de tiempos. En la Figura 4.16 puede verse este resultado de forma gráfica. Las franjas verdes representan los valores de tiempo de T3para los cuales, si se produce el flanco de bajada de la señal de control, no produciría un funcionamiento anómalo del dispositivo, mientras que la franja roja representa el intervalo de tiempos en los cuales se inducirían errores en el registro. d2*T3 CLK T3 = 0 ns T3 = 15.05 ns T3 = 16.05 ns Control Figura 4.16.: Representación del rango de tiempos de T3para los cuales es posible inducir fallos mediante la señal de control. Conclusiones en cuanto a la selección de rangos de tiempo para inducción de fallos. Una vez determinados los rangos temporales en torno a los cuales se deben de mover los pulsos de reloj para la inserción de errores, se puede observar que la opción de utilizar dos pulsos cortos de reloj es más eficiente que la de un solo pulso. Este hecho se debe, como ya se explicó anteriormente, a que en el caso de un pulso existe la posibilidad de que se produzca un filtrado de la señal por 83
Capítulo 4 Inserción de fallos en implementaciones ASIC parte de los pads del circuito. Sin embargo en el caso de operación de tensión mínima, el uso de un solo pulso de reloj es suficiente, puesto que el valor de T2necesario disminuye notablemente. 4.3.4. Captura de datos y análisis Tras definir las señales, flujo de test y rangos de tiempos en los pulsos de la señal de reloj para llevar a cabo los ataques, la siguiente etapa consiste en la realización de los test específicos, captura de datos y análisis de resultados. En la Figura 4.17 puede apreciarse el conjunto de la etapa de captura de datos. Como puede observarse en esta etapa, los test realizados pasan a ser específicos en cuanto al periodo de reloj seleccionado respecto de los rangos determinados anteriormente. A partir de este punto y una vez determinado el tiempo del pulso insertado en la señal de reloj, se realizan los tests mediante carga de clave e IV, funcionamiento de número de ciclos (variable o no en función de si se está repitiendo la misma prueba o no) con un reloj lento que garantice el correcto funcionamiento e inserción del pulso de reloj. La captura de datos se realiza muestreando el registro de estado de los cifradores a un registro interno con una señal de reloj “clk2” diferente a la de los cifradores Triviums. El contenido de este registro interno se saca al exterior de forma serie mediante un pin de salida durante 288 ciclos de reloj, uno por cada bit del registro interno. Estos datos son exportados a diferentes ficheros para posteriormente ser analizados en conjunto. Toma de datos y análisis Test Funcionamiento - inserciónparada- captura Copia de datos a Script Análisis de datos en Matlab Selección de frecuencia de ataque Figura 4.17.: Etapa de toma y procesado de datos de las pruebas El análisis de datos se lleva a cabo mediante la utilización de la herramienta Matlab con la creación de una serie de scripts que permiten la lectura, limpieza datos innecesarios y comparación de datos de interés. En la Figura 4.18 puede observarse el flujo seguido a la hora de obtener los resultados finales de cada ataque. En este proceso se lleva a cabo una lectura de ficheros de datos, obtenidos a partir del ataque en el equipo 93000, una limpieza en cuanto a da- 84
4.4 Resultados obtenidos tos del fichero innecesarios y por último una comparación mediante un script que muestra por pantalla el número de fallos inyectados y la posición de los mismos en los registros de estados interno de los cifradores. Procesado de datos Lectura de ficheros 93000 Matlab Limpieza de datos Cabecera x xxx 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 Comparación de datos golden fallos ? = Resultado del ataque ≠ Fallo insertado Figura 4.18.: Procesamiento de datos y obtención de resultados finales. 4.4. Resultados obtenidos A partir de lo explicado anteriormente, se ha obtenido un conjunto de resultados, de los cuales en este capítulo solo se presentan los correspondientes al cifrador Trivium Estándar y Trivium Low Power. La totalidad de los resultados obtenidos se puede consultar en el Apéndice A. Respecto a la variación de parámetros, solo se presentan los resultados obtenidos en condiciones de tensión de alimentación nominal y mínima. Algunos resultados se muestran haciendo uso de la herramienta “Shmoo Plot”, como por ejemplo los mostrados en la subsección de resultados variando tensión de alimentación y periodo de reloj. Esta herramienta permite visualizar de forma gráfica los errores inyectados cuando se van variando estos dos parámetros. Por otro lado, los resultados obtenidos cuando se manipula la señal de control se presentan en una subsección diferente al final de este apartado. Teniendo en cuenta que los resultados preliminares y los obtenidos sobre implementaciones en FPGA mostraban que los biestables que tendían a fallar eran los de realimentación, debido a sus mayores retrasos temporales, se estudió qué ciclos de reloj permitían la inserción de fallos en cada uno de estos bits realimentados. Este estudio contempla el hecho de que un biestable cambie su valor en el ciclo de inserción del pulso de reloj, puesto que, en caso de no hacerlo, no se le puede introducir un fallo. 85
Capítulo 4 Inserción de fallos en implementaciones ASIC En la Figura 4.19 puede observarse una representación de los casos mencionados. Por un lado se puede apreciar el “Caso a” donde la inducción del pulso de reloj se realiza en un instante donde el próximo valor del biestable de realimentación coincide con su valor actual. Como consecuencia de esto, aunque el nuevo valor en su entrada incumpla las restricciones temporales del biestable debido a los retrasos de las líneas de realimentación, no se puede producir un fallo en el biestable porque no tiene que cambiar su valor. Esto hace que la inyección de fallos no sea efectiva. Por el contrario en el “Caso b” el valor que debería realimentar al biestable llega tarde y el biestable no actualiza su valor (de cero a uno) y por tanto se mantiene el valor antiguo, es decir cero. Esto provoca una inserción de error efectiva y por consiguiente que el error se propague en los ciclos posteriores a través del registro de estados interno. Para contemplar estos casos, se realizó un análisis de las transiciones de los biestables en varios ciclos de inserción para asegurar que todos los ciclos seleccionados contenían todos los casos posibles, es decir, que todas las realimentaciones tuviesen transición, de cero a uno o de uno a cero, en cada ciclo de inserción. d d d dq q q q clk 1 1 11 11 0 Inducción de pulso x 0 d d d dq q q q clk 1 1 01 10 0 Inducción de pulso x 0 Caso a Caso b delay delay Figura 4.19.: Representación de inserción en función de la realimentación. 86
4.4 Resultados obtenidos 4.4.1. Resultados obtenidos sobre Trivium Estándar Transiciones de biestables en varios ciclos de inserción Para llevar a cabo este análisis, se seleccionó una clave e IV fijos para poder analizar las transiciones de los biestables realimentados en diferentes ciclos de reloj. En la Tabla 4.5 se presentan los ciclos de reloj seleccionados y las transiciones en los biestables de realimentación del registro de estados interno, es decir, los bits 0, 93 y 177. De entre todos los ciclos de reloj posibles, se han tenido en cuenta aquellos donde al menos en uno de los biestables realimentados se produzca transición y un caso donde no se produzca transición en ninguno de ellos. Además, se tienen en cuenta diferentes ciclos de reloj donde el biestable que presenta transición es el mismo. Esto último se realiza con el objetivo de poder analizar el comportamiento del biestable realimentado bajo un mismo ataque donde se varíe el ciclo de inserción. Por tanto, la Tabla 4.5 permite determinar el por qué fallan unos biestables de realimentación y otros no debido a que la inserción de errores depende de si se produce un cambio de valor de dichos biestables en el ciclo elegido. Tabla 4.5.: Transición en los bits de realimentación en varios ciclos de reloj. Bits realimentación Ciclo 0 93 177 1307 No No No 1312 Si Si No 1351 No No Si 1352 No No Si 1402 No No Si 1403 No Si No 1545 Si Si Si 1546 No Si Si Resultado con tensión nominal Se han realizado varias pruebas de inyección de fallos utilizando los períodos de reloj de la Tabla 4.6 en condiciones de tensión nominal (1.2 V). Estos 87
Capítulo 4 Inserción de fallos en implementaciones ASIC valores están comprendidos entre los obtenidos en la sección 4.3.3 donde se determinaba el rango de periodos de reloj válidos para conseguir la inyección de errores en los registros internos. Tabla 4.6.: Periodos de reloj del ancho de pulso T2para cada test con tensión nominal. Test 1 Test 2 Test 3 Test 4 Test 5 Periodo (ns) 7.045 7.035 7.03 7.025 6.95 Haciendo uso de estos periodos de reloj, en la Tabla 4.7 se presenta el número de fallos insertados en el registro de estado interno del cifrador por cada ciclo de inserción. Esta tabla presenta resultados para dos copias del mismo cifrador, ya que el ASIC incorpora dos implementaciones de cada cifrador para poder evaluar si el routing influye o no en la inyección de fallos. Trv 1 yTrv 2 se corresponden con los resultados para cada una de estas implementaciones. En esta tabla se puede ver cómo se produce una dependencia del número de fallos inyectados en función del ancho del pulso utilizado. A medida que se utiliza un periodo de reloj para el pulso cada vez más pequeño, aumenta el número de fallos insertados hasta el punto de fallar un gran número de ellos. En concreto, en los casos del Test 4 y del Test 5, se puede apreciar un aumento brusco en el número de fallos inyectados respecto de los demás test. La Tabla 4.8 muestra las posiciones de los fallos insertados, es decir, los biestables específicos de cada uno de los cifradores, que han fallado tras la inducción del pulso en la señal de reloj. Por otro lado, hay que tener en cuenta que, en los casos en los que se producen numerosos fallos a la vez, no se muestran las posiciones de los bits por simplicidad de los resultados. En su lugar, en la tabla aparece un “∗”. Los casos donde no se han podido inyectar fallos se representan mediante “-”. Teniendo en cuenta estos resultados, se puede ver cómo los biestables con realimentaciones tienden a fallar antes que los demás biestables. Por ejemplo, en cada uno de los test, en los ciclos de inserción 1312 y 1545, los biestables que han fallado son las posiciones realimentadas 0 y 93, presentando ambas copias una tendencia a fallar en las mismas posiciones. Además puede apreciarse cómo la posición menos vulnerable es la 177 donde no se han podido inyectar fallos en estas pruebas. 88
4.4 Resultados obtenidos Tabla 4.7.: Número de fallos insertados en Trivium Estándar en cada ciclo. Test 1 Test 2 Test 3 Test 4 Test 5 Ciclo Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 1307 0 0 0 0 0 0 127 127 127 127 1312 2 1 1 1 2 1 2 1 2 1 1351 0 0 0 0 0 0 0 0 0 60 1352 0 0 0 0 0 0 122 61 122 122 1402 0 0 0 0 0 0 0 0 138 138 1403 0 0 0 0 0 0 0 0 1 0 1545 1 0 1 0 1 0 1 0 1 0 1546 0 0 0 0 0 0 0 0 142 142 Tabla 4.8.: Posiciones de los fallos insertados en Trivium Estándar en cada ciclo. Test 1 Test 2 Test 3 Test 4 Test 5 Ciclo Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 1307 - - - - - - * * * * 1312 0/93 0 93 0 0/93 0 0/93 0 0/93 0 1351 - - - - - - - - - * 1352 - - - - - - * * * * 1402 - - - - - - - - * * 1403 - - - - - - - - 93 - 1545 93 - 93 - 93 - 93 - 93 - 1546 - - - - - - - - * * Por otro lado, estos resultados muestran implícitamente que la correcta selección del ciclo de inserción permite obtener mejores resultados dado que, como puede observarse, existen ciclos de inserción más efectivos que otros, es decir, ciclos de inserción donde para cada test es posible inyectar fallos, mientras que en otros no es posible inyectarlos. Por último, como resultado más importante, puede observarse que es posible inyectar un solo fallo efectivo en los registros internos, utilizando diferentes periodos de reloj y ciclos de inserción para am- 89
Capítulo 4 Inserción de fallos en implementaciones ASIC bos cifradores implementados. Con ello se puede concluir que, con esta técnica de ataque, este tipo de cifradores es vulnerable frente a este tipo de ataques cuando son implementados en ASIC. Resultado con tensión mínima Una vez presentados los resultados con tensión nominal, se presentan los resultados correspondientes a tensión de alimentación mínima (0.8V). Para estas pruebas, se han utilizado los valores de periodos de reloj presentados en la Tabla 4.9. Como puede observarse, los periodos de reloj son prácticamente el doble que para el caso de tensión nominal (1.2V). Por otro lado, los ciclos de inserción utilizados son los mismos que para las pruebas realizadas a tensión nominal, puesto que no se ha cambiado la clave ni el IV. Tabla 4.9.: Periodo de reloj del ancho de pulso T2para cada test con tensión mínima. Test 1 Test 2 Test 3 Test 4 Test 5 Periodo (ns) 15 14.5 14 12.5 9 En la Tabla 4.10 se presentan los resultados del número de fallos inyectados para cada uno de los ciclos de inserción y cifrador. Al igual que anteriormente puede apreciarse como a medida que el periodo de reloj disminuye del Test 1 al Test 5, aparecen mayor número de inyecciones de fallos en los registros internos. Al igual que anteriormente, en la Tabla 4.11 se muestran las posiciones de los bits que han fallado durante las pruebas, es decir, los bits donde se han inyectado errores. Como puede observarse, la dinámica continúa siendo la misma, es decir, se sigue produciendo una tendencia de fallo en los biestables de realimentación. Por otro lado, cabe destacar que en estas pruebas, no sólo han fallado los biestables realimentados, sino también aquellos cercanos a estos. Este hecho muestra que tanto los biestables realimentados como sus vecinos tienden a presentar mayor debilidad que el resto de biestables de los registros. 90
4.4 Resultados obtenidos Tabla 4.10.: Número de fallos insertados en Trivium Estándar en cada ciclo con tensión mínima. Test 1 Test 2 Test 3 Test 4 Test 5 Ciclo Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 1307 0 0 0 0 0 0 0 0 1 1 1312 0 0 0 1 2 1 2 2 2 2 1351 0 0 0 0 0 0 1 1 2 1 1352 0 0 0 0 0 0 0 0 1 1 1402 0 0 0 0 0 0 1 2 2 2 1403 0 0 0 0 1 0 1 1 3 3 1545 0 1 0 1 1 1 3 2 4 4 1546 0 0 1 0 1 0 3 2 3 3 Tabla 4.11.: Posiciones de los fallos insertados en Trivium Estándar en cada ciclo. Test 1 Test 2 Test 3 Test 4 Test 5 Ciclo Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 1307 - - - - - - - - 94 0 1312 - - - 0 0/93 0 0/93 0/93 0/93 0/93 1351 - - - - - - 94 94 94/177 94 1352 - - - - - - - - 0 0 1402 - - - - - - 177 1/177 1/177 1/177 1403 - - - - 93 - 93 93 0/93/178 0/93/178 1545 - 1 - 1 93 1 93/94/177 1/93 * * 1546 - - 94 - 94 - 0/93/94 0/94 0/94/178 0/94/178 Como puede observarse, mediante el uso de tensión mínima, el rango de variación del periodo de reloj necesario para inyectar fallos es más grande que en el caso de tensión nominal. Esto trae consigo que sea posible introducir fallos en un mayor número de ciclos de inserción, siendo estos en muchos casos inserciones efectivas de un solo error. Por otro lado, al igual que en el caso de tensión nominal, el comportamiento de ambos cifradores en paralelo es similar, es decir, tienden a fallar de igual forma frente a un mismo ataque. 91
Capítulo 4 Inserción de fallos en implementaciones ASIC aumentando la probabilidad a medida que se disminuyen tanto el periodo de reloj como la tensión de alimentación. Esta figura muestra que a tensión nominal, la frecuencia necesaria para la inserción de errores debe de ser más alta que en los casos donde se disminuye la tensión de alimentación. Por otro lado, la diferencia de resultados entre pequeñas variaciones de T2, muestran que para una misma situación de ataque (en cuanto a tensión), produce resultados diferentes, es decir, ataques efectivos o no efectivos. Tabla 4.18.: Posiciones de los fallos insertados en Trivium LP en cada ciclo. Ciclo Test 1 Test 2 Test 3 Test 4 Test 5 1307 - - - - - 1312 - - - * * 1351 - - 93 * * 1352 - - - - * 1402 - - - * * 1403 - - - - * 1545 93 93 0/93 0/93 * 1546 - 93 93 93 93 Vdd Core (V) 1.199 1.988 T2 (ns) 8.9 8.884 1.2 8.864 8.852 8.836 8.82 8.804 8.788 8.772 8.756 8.74 8.724 8.708 0000001000101010111100010101011111011101111111 11 1111 00 00 00 00 00 0000000000000000000000000000 00001000000000100000000100010101011 11 1111 001010 1 10 01 01 0111011111 Figura 4.22.: Shmoo plot de Trivium LP modificando tensión de alimentación y periodo T2 98
4.4 Resultados obtenidos 4.4.3. Resumen de resultados del resto de cifradores utilizados A lo largo de este capítulo se han presentado los resultados para el cifrador Trivium estándar y Trivium Low Power. En el Apéndice A, se recogen el resto de los resultados obtenidos para los cifradores Trivium x2 estándar, Trivium x2 Low Power, Trivium x8 estándar, Trivium x8 Low Power, Trivium x16 estándar y Trivium x16 Low Power. De este conjunto de datos, a continuación se describen los aspectos más relevantes que se desprenden de los resultados obtenidos tras someter a cada uno de los cifradores al sistema de inserción de fallos por alteración de la señal de reloj con tensión nominal3. Como primer aspecto importante de estos resultados, hay que tener en cuenta que al tratarse de cifradores cuyos registros de estados internos han sido duplicados, el número de realimentaciones aumenta a medida que se duplican dichos registros. Esto trae consigo que se presenten un mayor número de posiciones vulnerables o puntos débiles en los registros internos de los cifradores cuando se realizan ataques por alteración de la señal de reloj. Teniendo en cuenta esto, se ha podido ver que para los ataques realizados en los ciclos de inserción seleccionados, es posible insertar fallos en diferentes posiciones de los registros de estados interno, habiendo conseguido inserciones de fallos efectivas de un solo biestable. Estas inserciones de fallos efectivas se consiguen al igual que en los casos presentados en este capítulo, es decir, siempre que se ajuste lo suficiente el periodo de reloj del pulso inducido en la señal de reloj. Este aspecto hay que tenerlo en cuenta debido a que estos cifradores poseen una estructura de reloj muy compleja y por tanto, al manipular la señal de reloj, se puede pasar fácilmente de inyectar un solo error efectivo a provocar el cambio en la gran mayoría de biestables. Sin embargo, al tener los cifradores dichas estructuras de reloj complejas, sus frecuencias máximas de funcionamiento son menores que en el caso del cifrador Trivium estándar (salvo el cifrador Trivium x2 estándar) y por tanto no es necesario utilizar periodos de reloj para los pulsos inducidos demasiado pequeños. Así, los periodos de reloj para inyectar fallos son menos exigentes, permitiendo utilizar un mayor rango de tiempos para la inserción de fallos. De entre todos los cifradores cuyos resultados se presentan en el Apéndice A, es el cifrador Trivium x2 estándar el único que ha presentado un periodo de 3Como se explicó anteriormente, los ataques realizados a tensión nominal son el caso más desfavorable y por tanto si es posible la inserción de fallos en este escenario es extrapolable al caso donde la tensión de alimentación es mínima. 99
Capítulo 4 Inserción de fallos en implementaciones ASIC reloj para los pulsos similar al cifrador Trivium estándar, véase Tabla A.1. Los resultados de los experimentos realizados sobre este cifrador no han logrado insertar fallos efectivos en el interior de su registro interno. Para las pruebas realizadas se obtienen dos resultados posibles, por un lado, la imposibilidad de inyectar fallos efectivos de un solo biestable y, por otro lado, obtener múltiples inserciones de fallos en un mismo ataque, es decir, errores no efectivos. Estos resultados pueden verse en la Tabla A.3 donde, como puede observarse para los diferentes test, se pasa de no inyectar fallos a inyectar un gran número de ellos. Este número de fallos se corresponde con el total de transiciones posibles en dicho ciclo de reloj presentados en la Tabla A.2. Esto se debe a que este cifrador puede estar implementado de forma más balanceada en cuanto a sus señales de datos que los demás, haciendo que la inserción de fallos sea más difícil. Sin embargo, cabe destacar que los periodos de reloj utilizados pueden ser más ajustados, realizando pruebas más exhaustivas como por ejemplo en combinación con una tensión de alimentación mínima, y que esto lleve a la inducción de fallos efectivos en los registros internos. Teniendo en cuenta los resultados obtenidos, el cifrador Trivium x2 estándar ha sido el cifrador cuya resistencia a este tipo de ataques ha presentado ser mayor. En cuanto al resto de cifradores, se puede observar en sus respectivas tablas que sus periodos de reloj de los pulsos necesarios para la inyección de fallos son mayores que los del cifrador Trivium estándar, siendo en los casos de los cifradores Low Power mayores que en sus versiones estándar. A pesar de esto, en todos estos cifradores ha sido posible inyectar un solo error efectivo en numerosos casos y por tanto presentan vulnerabilidades frente a este tipo de ataques. 4.5. Conclusiones En este capítulo se ha llevado a cabo el análisis de la vulnerabilidad de cifradores Trivium implementados en ASIC frente a la inserción de fallos por la alteración de la señal de reloj y en menor medida, de señales de control. Para ello se ha hecho uso del equipo de test Agilent 93000 mediante el cual se han llevado a cabo las diferentes pruebas e implementaciones de ataques. Estos ataques han consistido en la manipulación de la señal de reloj mediante la inducción de pulsos cortos, los cuales provocan un mal funcionamiento del 100
4.5 Conclusiones cifrador, traducido en inserciones de fallos en los registros internos de los cifradores bajo test. Además, se ha realizado otro ataque por inserción de fallos mediante el desfase temporal de la señal de control de los cifradores, consiguiendo de este modo una violación de tiempos de setup de los biestables que componen los registros internos de los cifradores. Los ataques mediante la alteración de la señal de reloj se han llevado a cabo junto con la manipulación de las condiciones de funcionamiento de temperatura y tensión de alimentación. Las pruebas realizadas donde se manipulaba la temperatura, han demostrado que su alteración junto con la inducción de pulsos de reloj no presentan diferencias significativas respecto de los ataques realizados a temperatura nominal. Sin embargo, los ataques realizados junto con la manipulación de la tensión de alimentación han demostrado ser muy efectivos. Se ha podido comprobar que a medida que la tensión de alimentación disminuye, es posible insertar fallos efectivos de forma más fácil, es decir, utilizando periodos de reloj para el pulso inducidos mayores. Además, se ha podido observar que, alimentando con tensión nominal, pequeños cambios en el periodo de reloj del pulso inducido provocan un gran cambio en cuanto al número de fallos insertados, mientras que alimentando con tensión mínima es posible modificar el periodo de reloj del pulso notablemente sin que esto se traduzca en un gran número de inserciones de fallos. Mediante el uso de los ataques diseñados, se ha comprobado que los cifradores Trivium implementados en ASIC presentan vulnerabilidades localizadas en los biestables realimentados de sus registros internos o sus celdas vecinas, donde ha sido posible insertar fallos efectivos de un solo biestable. Estas vulnerabilidades son dependientes del ciclo de inserción del pulso de reloj, dado que dependen de si en dicho ciclo de reloj se produce una transición, de uno a cero o de cero a uno, de sus biestables realimentados. Dichas vulnerabilidades son debidas al hecho de que los biestables realimentados son aquellos que presentan un mayor retraso en sus líneas de transmisión de datos. En el caso donde se hace uso de la manipulación de la señal de control como forma de ataque, los biestables que tienden a fallar son siempre los de las mismas posiciones en el interior de los registros, siendo estos diferentes a los biestables realimentados. Esto demuestra que mediante el uso de esta técnica es posible insertar fallos efectivos de un solo biestable en posiciones que no se encuentran realimentadas, donde los retrasos en las líneas de transmisión de 101
Capítulo 4 Inserción de fallos en implementaciones ASIC datos son mayores que los de otros biestables del registro interno y donde las señales de control no se encuentran totalmente balanceadas. Por otro lado, se ha comprobado que los dos cifradores idénticos implementados en paralelo para cada modelo de cifrador presentan un comportamiento similar frente a estos ataques, siendo posible inyectar fallos efectivos en ambos para cada modelo de cifrador, exceptuando el cifrador Trivium x2 estándar. Este caso en particular del Trivium x2 estándar ha presentado mayor robustez frente a estos ataques con las pruebas llevadas a cabo. Además, otro factor importante a tener en cuenta ha sido el aumento de vulnerabilidad de los modelos de los cifradores cuyos registros son divididos por diseño, aumentando sus realimentaciones y por tanto sus puntos débiles. Por lo tanto, se puede concluir que, mediante el uso de las técnicas de inserción de fallos por alteración de la señal de reloj y por desfase temporal de la señal de control es posible inyectar errores de un solo fallo efectivo en los registros internos de los cifradores implementados en la tecnología ASIC. Además, se ha podido demostrar que estas técnicas en combinación con la modificación de la tensión de alimentación facilitan la inyección de fallos efectivos, permitiendo concluir que este tipo de cifradores es vulnerable mediante este tipo de ataques. 102
5. Criptoanálisis en cifradores Trivium con datos experimentales 5.1. Introducción En este capítulo se presenta la realización experimental de un ataque DFA (Differential Fault Analysis) sobre implementaciones ASIC del cifrador Trivium. La consecución de este ataque conlleva la unión de varios elementos. Por un lado, el mecanismo experimental para la inserción de fallos y la captura de los bits del flujo cifrado necesarios. Por otro lado, un programa informático que a partir de los flujos cifrados sea capaz de obtener el mayor número de posiciones del registro interno del cifrador en un instante de la realización del ataque. Finalmente se necesita también un modelo de funcionamiento inverso del cifrador Trivium para obtener el estado interno inicial y así conocer la clave secreta y el IV. El montaje de todo este sistema requiere la combinación de herramientas de desarrollo de varios tipos, tales como programas de simulación VHDL, el entorno Matlab y el entorno de programación Eclipse. Los puntos de partida de este capítulo son por una parte los análisis teóricos de vulnerabilidad del cifrador Trivium presentados en la literatura y recogidos en el Capítulo 2 de esta memoria y, por otra parte, el mecanismo de inserción de fallos desarrollado para implementaciones ASIC que se ha mostrado en el Capítulo 4 de esta memoria. El capítulo se encuentra estructurado de la siguiente forma: en un primer apartado se describe el escenario general y los requisitos que se exigen para poder realizar el ataque DFA. A continuación se describe el sistema DFA desarrollado para, en el apartado siguiente, comprobar dicho sistema con datos obtenidos mediante simulación. Posteriormente se pasa a describir el plan de 103
Capítulo 5 Criptoanálisis en cifradores Trivium con datos experimentales ataque así como las modificaciones que han sido necesarias introducir a los ataques para conseguir que sea efectivo y explotable. Por último se presentan los resultados obtenidos y las conclusiones derivadas de este estudio. El contenido de este capítulo no se muestra porque se encuentra publicado en C.V. 6. 5.2. Conclusiones En este capítulo se ha presentado el sistema de ataque experimental mediante la manipulación de la señal de reloj y criptoanálisis sobre implementaciones ASIC del cifrador de flujo Trivium. Por un lado, se ha llevado a cabo la construcción del sistema completo para poder hacer uso del sistema DFA teórico presentado en [77, 78] junto con datos obtenidos experimentalmente. Además se ha diseñado un cifrador Trivium inverso el cual permite volver hacia atrás los ciclos necesarios para determinar la clave secreta una vez conocido el registro interno del cifrador atacado en cualquier instante. Una vez construido el sistema se ha llevado a cabo una combinación entre un sistema para el análisis diferencial DFA teórico junto con ataques por simulaciones, para posteriormente utilizarlo con ataques experimentales a la implementación ASIC de dos cifradores Trivium. Utilizando simulaciones se ha podido ver que la ruptura del sistema de cifrado Trivium es posible a partir de 12 inyecciones de errores (utilizando fuerza bruta) o 16 usando únicamente inyecciones de fallos, mientras que haciendo uso de implementaciones reales es necesario el uso de unas 32 inyecciones de errores en total, siendo realmente útiles 22 inyecciones. Por otro lado, se ha comprobado la imposibilidad de inyectar más de 3 errores en un mismo ciclo de reloj que permitan la ruptura del sistema dada la estructura del cifrador y su comportamiento frente a este tipo de ataques. Debido a esto, se ha presentado un nuevo método para la inserción de fallos que permite realizar las inyecciones necesarias aprovechando las características propias del cifrador. Con esta nueva visión de ataque se ha podido solventar la problemática en cuanto a las inyecciones de fallos en un mismo ciclo de reloj y se ha llevado a cabo el ataque de forma experimental, consiguiendo con ello el número de inyecciones necesarias para poder realizar el DFA. 104
5.2 Conclusiones Los ataques experimentales han demostrado que es posible recuperar el registro de estados interno en el instante T0+ 800 tras los ataques y que por tanto el sistema es vulnerable. En cuanto al tiempo empleado para el ataque completo es de unas 6 horas, ocupando la práctica totalidad la fase del proceso experimental, la cual no está automatizada. Teniendo en cuenta que se podría automatizar, el realizar el ataque completo para obtener la clave secreta se reduciría a unos pocos minutos. En definitiva, se ha podido demostrar que el cifrador de flujo Trivium implementado en ASIC es vulnerable a los ataques de inserción de fallos mediante la manipulación de la señal de reloj de forma experimental. La clave ha sido recuperada en el 100% de los casos, tanto experimentalmente como en las simulaciones, siendo el coste de estos ataques mínimo en cuanto a tiempo requerido y recursos. 105
6. Conclusiones y líneas futuras Los principales resultados obtenidos mediante la realización de la presente Tesis Doctoral pueden resumirse en los siguientes puntos: En este trabajo de Tesis Doctoral se han realizado aportaciones en el campo de la seguridad de implementaciones hardware de criptosistemas con bajos recursos (lightweight cryptography), en particular sobre cifradores Trivium implementados tanto en FPGA como en ASIC. En concreto, se han desarrollado sistemas de ataques experimentales que permiten comprometer su seguridad y se ha montado un sistema de criptoanálisis sobre el cifrador Trivium que permite, a partir de los datos obtenidos de forma experimental, romper el cifrador recuperando su clave secreta. En lo que conocemos de la comunidad científica internacional, se trata de la primera vez que se ha logrado recuperar la clave secreta del cifrador Trivium de forma experimental. Los trabajos realizados en la presente Tesis Doctoral han generado una serie de aportaciones a la criptografía de bajos recursos usando cifradores Trivium. De ellas se pueden destacar los principales resultados y conclusiones: Se ha realizado una amplia revisión del estado del arte de la criptografía de bajos recursos cuyo análisis ha permitido concretar las principales especificaciones del trabajo, como son: •Establecer el cifrador de flujo Trivium como criptosistema hardware objeto de la investigación. Las tecnologías de implementación utilizadas han sido tanto FPGA como ASIC, siendo las versiones del cifrador Trivium utilizadas la estándar, las multi-bit y las de bajo consumo. •Seleccionar como principal mecanismo de inserción de fallos la manipulación temporal de las entradas del cifrador (ataques del tipo activo no invasivo), combinándolo además con la manipulación de la tensión de alimentación y la temperatura. 107
Apéndice A Resultados obtenidos para cada uno de los cifradores Trivium Teniendo en cuenta que cada diseño del cifrador es diferente en cuanto a su estructura interna, es decir, sus realimentaciones dependen de diferentes posiciones en el interior del registro y sus desplazamientos internos varían en función de un diseño a otro, los ciclos de inserción para cada cifrador serán diferentes. Debido a esto, se realizó un estudio de cuales son los ciclos de inserción óptimos para cada cifrador (los ciclos donde se producen las transiciones de valor de los biestables realimentados) con el objetivo de poder estudiar la vulnerabilidad de cada uno de estos puntos y sus celdas vecinas. Con ello se consigue que los ciclos de inserción utilizados contemplen todos los casos donde hay un cambio de valor en los biestables realimentados, que como se ha podido ver son los más débiles frente a los ataques estudiados. Por lo tanto, el valor de los ciclos de inserción se encuentra personalizado para cada uno de los diseños del cifrador. 114
A.1 Trivium x2 Estándar A.1. Trivium x2 Estándar Tabla A.1.: Periodos de reloj del ancho de pulso T2para cada test. Test 1 Test 2 Test 3 Test 4 Test 5 Periodo (ns) 6.990 6.970 6.950 6.940 6.930 Tabla A.2.: Número de transiciones de los biestables en cada ciclo de reloj. Ciclo inserción Total 0 →1 1 →0 1307 141 70 71 1312 146 74 72 1351 143 71 72 1352 139 70 69 1402 136 68 68 1403 136 68 68 1545 131 64 67 1546 136 67 69 115
Apéndice A Resultados obtenidos para cada uno de los cifradores Trivium Tabla A.3.: Número de fallos insertados en Trivium x2 en cada ciclo. Test 1 Test 2 Test 3 Test 4 Test 5 Ciclo Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 1307 0 0 0 0 0 0 0 0 71 0 1312 0 0 0 0 146 146 146 146 146 146 1351 0 0 0 0 143 143 143 143 143 143 1352 0 0 0 0 0 0 0 0 0 0 1402 0 0 0 0 136 136 136 136 136 136 1403 0 0 0 0 136 136 136 136 136 136 1546 0 0 0 0 0 0 0 0 0 0 1550 0 0 0 0 69 0 69 136 32 136 Tabla A.4.: Posiciones de los fallos insertados en Trivium x2 en cada ciclo. Test 1 Test 2 Test 3 Test 4 Test 5 Ciclo Tr 1 Tr 2 Tr 1 Tr 2 Tr 1 Tr 2 Tr 1 Tr 2 Tr 1 Tr 2 1307 - - - - - - - - * - 1312 - - - - * * * * * * 1351 - - - - * * * * * * 1352 - - - - - - - - - - 1402 - - - - * * * * * * 1403 - - - - * * * * * * 1546 - - - - - - - - - - 1550 - - - - * - * * * * 116
A.2 Trivium x2 Low Power A.2. Trivium x2 Low Power Tabla A.5.: Periodos de reloj del ancho de pulso T2para cada test. Test 1 Test 2 Test 3 Test 4 Test 5 Periodo (ns) 8.85 8.8 8.5 8.2 7 Tabla A.6.: Número de transiciones de los biestables en cada ciclo de reloj. Ciclo inserción Total 0 →1 1 →0 1307 75 37 38 1315 73 36 37 1352 67 34 33 1354 70 36 34 1403 62 30 32 1406 75 37 38 1548 64 32 32 1553 77 39 38 117
Apéndice A Resultados obtenidos para cada uno de los cifradores Trivium Tabla A.7.: Número de fallos insertados en Trivium x2 LP en cada ciclo. Test 1 Test 2 Test 3 Test 4 Test 5 Ciclo Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 1307 1 0 1 0 1 0 2 0 4 3 1315 1 0 1 0 1 0 2 1 74 74 1352 0 0 0 0 0 0 0 0 2 1 1354 0 0 0 0 1 0 1 0 35 2 1403 0 0 1 0 1 0 1 1 2 2 1406 0 0 0 0 0 0 0 0 2 4 1548 0 0 0 0 0 1 1 1 1 64 1553 0 0 0 0 0 0 0 0 2 2 Tabla A.8.: Posiciones de los fallos insertados en Trivium x2 LP en cada ciclo. Test 1 Test 2 Test 3 Test 4 Test 5 Ciclo Tr 1 Tr 2 Tr 1 Tr 2 Tr 1 Tr 2 Tr 1 Tr 2 Tr 1 Tr 2 1307 1 - 1 - 1 - 0/1 - 0/1/94/177 0/1/177 1315 1 - 1 - 1 - 0/1 0 * * 1352 - - - - - - - - 96/179 96 1354 - - - - 3 - 3 - * 3/95 1403 - - 177 - 177 - 177 177 94/177 94/177 1406 - - - - - - - - 3/96 2/3/96/179 1548 - - - - - 95 95 95 95 * 1553 - - - - - - - - 93/178 93/178 118
A.3 Trivium x8 Estándar A.3. Trivium x8 Estándar Tabla A.9.: Periodos de reloj del ancho de pulso T2para cada test. Test 1 Test 2 Test 3 Test 4 Test 5 Periodo (ns) 8 7.7 7.5 7.1 6.96 Tabla A.10.: Número de transiciones de los biestables en cada ciclo de reloj. Ciclo inserción Total 0 →1 1 →0 1307 149 74 75 1315 150 75 75 1352 144 73 71 1354 144 70 74 1403 140 69 71 1406 135 70 65 1548 148 75 73 1553 140 70 70 119
Apéndice A Resultados obtenidos para cada uno de los cifradores Trivium Tabla A.11.: Número de fallos insertados en Trivium x8 en cada ciclo. Test 1 Test 2 Test 3 Test 4 Test 5 Ciclo Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 1306 0 0 1 0 2 0 2 1 150 149 1312 0 0 0 0 0 0 2 1 2 1 1351 0 0 0 0 2 1 2 1 4 4 1353 1010101213 1402 0 0 1 0 1 0 1 0 140 139 1403 0 0 0 0 0 0 3 1 3 2 1546 0 0 0 1 1 2 2 2 4 75 1550 1 0 1 0 2 0 2 0 139 140 Tabla A.12.: Posiciones de los fallos insertados en Trivium x8 en cada ciclo. Test 1 Test 2 Test 3 Test 4 Test 5 Ciclo Tr 1 Tr 2 Tr 1 Tr 2 Tr 1 Tr 2 Tr 1 Tr 2 Tr 1 Tr 2 1306 - - 178 - 9/178 - 9/178 94 * * 1312 - - - - - - 93/97 97 93/97 97 1351 - - - - 1/184 99 1/184 1 0/1/5/184 0/95/99/182 1353 183 - 183 - 183 - 183 100/181 183 94/100/181 1402 - - 2 - 2 - 2 - * * 1403 - - - - - - 1/3/183 98 1/3/183 3/98 1546 - - - 98 97 97/98 97/184 97/98 9/97/98/184 * 1550 178 - 178 - 5/178 - 5/178/183 - * * 120
A.4 Trivium x8 Low Power A.4. Trivium x8 Low Power Tabla A.13.: Periodos de reloj del ancho de pulso T2para cada test. Test 1 Test 2 Test 3 Test 4 Test 5 Periodo (ns) 13.9 13.7 13.5 13.3 13.1 Tabla A.14.: Número de transiciones de los biestables en cada ciclo de reloj. Ciclo inserción Total 0 →1 1 →0 1307 77 37 40 1315 67 34 33 1352 66 35 31 1354 73 36 37 1403 73 38 35 1406 62 31 31 1548 73 36 37 1553 73 38 35 121
Apéndice A Resultados obtenidos para cada uno de los cifradores Trivium Tabla A.15.: Número de fallos insertados en Trivium x8 LP en cada ciclo. Test 1 Test 2 Test 3 Test 4 Test 5 Ciclo Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 Trv 1 Trv 2 1333 0 0 0 0 0 0 2 1 2 2 1472 1 0 2 0 2 1 2 4 6 5 1474 0 0 1 0 1 1 5 2 6 2 1475 0 0 0 0 0 0 0 0 2 1 1510 0 0 0 0 2 0 3 2 6 4 1511 0 0 2 0 3 0 4 1 6 3 1547 0 0 0 0 0 0 0 0 3 0 1550 0 0 0 0 0 0 1 0 2 1 Tabla A.16.: Posiciones de los fallos insertados en Trivium x8 LP en cada ciclo. Test 1 Test 2 Test 3 Test 4 Test 5 Ciclo Tr 1 Tr 2 Tr 1 Tr 2 Tr 1 Tr 2 Tr 1 Tr 2 Tr 1 Tr 2 1333 - - - - - - 2/103 4 2/103 3/4 1472 1 - 1/2 - 1/2 4 1/2 2/4/8/9 * * 1474 - - 1 - 1 1 * 1/4 * 1/4 1475 - - - - - - - - 97/178 4 1510 - - - - 1/97 - 1/2/97 1/97 * * 1511 - - 0/2 - 0/1/2 - 0/1/2/179 1 * 0/1/2 1547 - - - - - - - - 3/10/179 - 1550 - - - - - - 0 - 0/178 0 122
A.5 Trivium x16 Estándar A.5. Trivium x16 Estándar Tabla A.17.: Periodos de reloj del ancho de pulso T2para cada test. Test 1 Test 2 Test 3 Test 4 Test 5 Periodo (ns) 9 8.7 8.5 8.1 7.51 Tabla A.18.: Número de transiciones de los biestables en cada ciclo de reloj. Ciclo inserción Total 0 →1 1 →0 1307 153 78 75 1315 140 72 68 1352 152 75 77 1354 149 75 74 1403 140 68 72 1406 141 72 69 1548 145 75 70 1553 139 66 73 123
Bibliografía [37] H. Bar-El, H. Choukri, D. Naccache, M. Tunstall, and C. Whelan, “The Sorcerer’s Apprentice Guide to Fault Attacks,” Proceedings of the IEEE, vol. 94, no. 2, pp. 370–382, 2006. [38] A. Barenghi, L. Breveglieri, I. Koren, and D. Naccache, “Fault Injection Attacks on Cryptographic Devices : Theory, Practice, and Countermeasures,” Proceedings of the IEEE, vol. 100, no. 11, pp. 3053–3076, 2012. [39] C. Giraud and H. Thiebeauld, “A survey on fault attacks,” Card Research and Advanced Applications VI, pp. 159–176, 2004. [40] S. Govindavajhala and A. W. Appel, “Using Memory Errors to Attack a Virtual Machine,” Proc. the IEEE Symp. Security and Privacy (SP), pp. 154–156, 2003. [41] A. Barenghi, G. Bertoni, L. Breveglieri, M. Pellicioli, and G. Pelosi, “Low voltage fault attacks to AES,” IEEE International Symposium on Hardware-Oriented Security and Trust (HOST’10), pp. 7–12, 2010. [42] P. Street and W. Lafayette, “Low Cost Attacks on Tamper Resistant Devices,” Security Protocols, pp. 125–136, 1998. [43] T. Fukunaga and J. Takahashi, “Practical Fault Attack on a Cryptographic LSI with ISO / IEC 18033-3 Block Ciphers,” Workshop on Fault Diagnosis and Tolerance in Criptography, pp. 84–92, 2009. [44] M. Agoyan and J. Dutertre, “When clocks fail: On critical paths and clock faults,” Smart Card Research and Advanced Application, pp. 182– 193, 2010. [45] Y. Ren, A. Wang, and L. Wu, “Transient-Steady Effect Attack on Block Ciphers,” Cryptographic Hardware and Embedded Systems, Springer, vol. 2, pp. 433–450, 2015. [46] N. F. Ghalaty, B. Yuce, M. Taha, P. Schaumont, and V. Tech, “Differential Fault Intensity Analysis,” Workshop on Fault Diagnosis and Tolerance in Criptography, pp. 49–58, 2014. [47] N. F. Ghalaty, B. Yuce, and P. Schaumont, “Differential fault intensity analysis on PRESENT and LED block ciphers,” in International Workshop on Constructive Side-Channel Analysis and Secure Design. Springer, 2015, pp. 174–188. [48] A. Kaminsky, M. Kurdziel, and S. Radziszowski, “An overview of cryptanalysis research for the Advanced Encryption Standard,” in Military 130
Bibliografía Communications Conference (MILCOM’2010). IEEE, 2010, pp. 1310– 1316. [49] E. Biham and A. Shamir, “Differential cryptanalysis of DES-like cryptosystems,” Journal of CRYPTOLOGY, vol. 4, no. 1, pp. 3–72, 1990. [50] E. Biham and A. Shamir, “Differential cryptanalysis of Feal and N-hash,” Workshop on the Theory and Application of of Cryptographic Techniques, pp. 1–16, 1991. [51] A. Shimizu and S. Miyaguchi, “Fast data encipherment algorithm FEAL,” in Workshop on the Theory and Application of of Cryptographic Techniques. Springer, 1987, pp. 267–278. [52] E. Biham and A. Shamir, “Differential cryptanalysis of the full 16-round DES,” in Differential Cryptanalysis of the Data Encryption Standard. Springer, 1993, pp. 79–88. [53] E. Biham and A. Shamir, “Differential cryptanalysis of the Data Encryption Standard,” Springer, 1997. [54] D. Boneh, R. A. DeMillo, and R. J. Lipton, “On the importance of checking cryptographic protocols for faults,” in International conference on the theory and applications of cryptographic techniques (EUROCRYPT’97). Springer, 1997, pp. 37–51. [55] R. L. Rivest, A. Shamir, and L. Adleman, “A method for obtaining digital signatures and public-key cryptosystems,” Communications of the ACM, vol. 21, no. 2, pp. 120–126, 1978. [56] R. Anderson and M. Kuhn, “Low cost attacks on tamper resistant devices,” in International Workshop on Security Protocols. Springer, 1997, pp. 125–136. [57] J. J. Hoch and A. Shamir, “Fault Analysis of Stream Ciphers,” International association for Cryptologic Research, pp. 240–253, 2004. [58] R. Rivest, “The RC4 Encryption Algorithm, RSA Data Security,” Inc., 1992. [59] E. Dawson, A. Clark, J. Golic, W. Millan, L. Penna, and L. Simpson, “The LILI-128 keystream generator,” in Proceedings of first NESSIE Workshop, 2000. 131
Bibliografía [60] P. Hawkes and G. Rose, “Primitive specification and supporting documentation for SOBER-t32 submission to NESSIE,” in Proceedings of the first open NESSIE workshop, 2000, pp. 13–14. [61] P. Dusart, “Differential Fault Analysis on A.E.S.” Applied Cryptography and Network Security, pp. 293–306, 2003. [62] C. Giraud, “DFA on AES,” Lecture Notes in Computer Science, vol. 3373, pp. 27–41, 2005. [63] C. H. Kim, “Differential fault analysis against AES-192 and AES-256 with minimal faults,” in Fault Diagnosis and Tolerance in Cryptography (FDTC’10). IEEE, 2010, pp. 3–9. [64] G. Wang and S. Wang, “Differential Fault Analysis on PRESENT Key Schedule,” 2010 International Conference on Computational Intelligence and Security, pp. 362–366, 2010. [65] N. Bagheri, R. Ebrahimpour, and N. Ghaedi, “New differential fault analysis on PRESENT,” EURASIP Journal on Advances in Signal Processing, pp. 1–10, 2013. [66] K. Jeong and C. Lee, “Differential fault analysis on block cipher LED-64,” in Future Information Technology, Application, and Service. Springer, 2012, pp. 747–755. [67] H. Tupsamudre, S. Bisht, and D. Mukhopadhyay, “Differential fault analysis on the families of SIMON and SPECK ciphers,” in Fault Diagnosis and Tolerance in Cryptography (FDTC), 2014 Workshop on. IEEE, 2014, pp. 40–48. [68] H. Alkhzaimi and M. M. Lauridsen, “Cryptanalysis of the SIMON Family of Block Ciphers,” IACR Cryptology ePrint Archive, vol. 2013, p. 543, 2013. [69] E. Tena-Sánchez and A. J. Acosta, “Dpa vulnerability analysis on trivium stream cipher using an optimized power model,” in Circuits and Systems (ISCAS), 2015 IEEE International Symposium on. IEEE, 2015, pp. 1846–1849. [70] P. Luo, Y. Fei, L. Zhang, and A. A. Ding, “Differential fault analysis of SHA3-224 and SHA3-256,” in Fault Diagnosis and Tolerance in Cryptography (FDTC), 2016 Workshop on. IEEE, 2016, pp. 4–15. 132
Bibliografía [71] E. Biham and O. Dunkelman, “Differential Cryptanalysis in Stream Ciphers,” IACR Cryptology ePrint Archive, vol. 2007, p. 218, 2007. [72] S. Karmakar and D. Chowdhury, “Differential Fault Analysis of MICKEY-128 2.0,” Workshop on Fault Diagnosis and Tolerance in Cryptography (FDTC’13), pp. 52–59, 2013. [73] S. Karmakar and D. Chowdhury, “Differential Fault Analysis of MICKEY Family of Stream Ciphers.” IACR Cryptology ePrint Archive, 2014. [74] S. Banik, S. Maitra, and S. Sarkar, “A differential fault attack on the Grain family of stream ciphers,” Cryptographic Hardware and Embedded Systems (CHES’12), pp. 122–139, 2012. [75] S. Sarkar, S. Banik, and S. Maitra, “Differential Fault Attack against Grain Family with Very Few Faults and Minimal Assumptions,” IEEE Transactions on Computers, vol. 64, no. 6, pp. 1647–1657, 2015. [76] Y. Watanabe, Y. Todo, and M. Morii, “New Conditional Differential Cryptanalysis for NLFSR-based Stream Ciphers and Application to Grain v1,” in 11th Asia Joint Conference on Information Security (AsiaJ- CIS’16). IEEE, 2016, pp. 115–123. [77] M. Hojsík and B. Rudolf, “Differential Fault Analysis of Trivium,” Fast Software Encryption, Springer, pp. 158–172, 2008. [78] M. Hojsík and B. Rudolf, “Floating Fault Analysis of Trivium,” Progress in Cryptology, Springer, pp. 239–250, 2008. [79] Y. Hu, J. Gao, Q. Liu, and Y. Zhang, “Fault analysis of Trivium,” Designs, Codes and Cryptography, Springer, vol. 62, no. 3, pp. 289–311, 2012. [80] M. Saied, E. Mohamed, and S. Bulygin, “Improved Differential Fault Analysis of Trivium,” COSADE’11, pp. 147–158, 2011. [81] P. Dey and A. A. B, “Improved Multi-Bit Differential Fault Analysis of Trivium,” Progress in Cryptology-INDOCRYPT, Springer, vol. 48, no. 2, pp. 37–52, 2014. [82] M. Saied, E. Mohamed, and J. Buchmann, “Mutant Differential Fault Analysis of Trivium MDFA,” Information Security and Cryptology- ICISC’15, pp. 433–446, 2015. [83] K. Aoki, T. Ichikawa, M. Kanda, M. Matsui, S. Moriai, J. Nakajima, and T. Tokita, “Camellia: A 128-bit block cipher suitable for multiple 133
Bibliografía platforms design and analysis,” in International Workshop on Selected Areas in Cryptography. Springer, 2000, pp. 39–56. [84] C. M. Adams, “Constructing symmetric ciphers using the CAST design procedure,” Designs, Codes and cryptography, vol. 12, no. 3, pp. 283–316, 1997. [85] J. Lee, J. Park, S. Lee, and J. Kim, “The SEED encryption algorithm,” Encryption Algorithm, 2005. [Online]. Available: http: //tools.ietf.org/html/rfc4269 [86] M. Matsui, “New block encryption algorithm MISTY,” in International Workshop on Fast Software Encryption. Springer, 1997, pp. 54–68. [87] G. Piret and J.-J. Quisquater, “A differential fault attack technique against SPN structures, with application to the AES and KHAZAD,” in International Workshop on Cryptographic Hardware and Embedded Systems (CHES’03). Springer, 2003, pp. 77–88. [88] M. Tunstall, D. Mukhopadhyay, and S. Ali, “Differential fault analysis of the Advanced Encryption Standard using a single fault,” Information Security Theory and Practice. Security and Privacy of Mobile Devices in Wireless Communication, pp. 224–233, 2011. [89] Francisco Eugenio Potestad Ordóñez, “Sistema para ataques a cifradores Triviums implementados en FPGAs,” Trabajo Final de Grado, Universidad de Sevilla, 2018. [90] Francisco Eugenio Potestad Ordóñez, “Análisis de vulnerabilidad de cifradores de flujo en FPGAs,” Trabajo Final de Máster, Universidad de Sevilla, 2014. 134
Notación IsRegistro de estados interno del cifrador. Ist0Registro de estados interno sin fallo insertado en instante inicial. Is0 t0Registro de estados interno con fallo insertado en instante inicial. t0Instante inicial del ataque o ciclo seleccionado para el ataque. T3Variable temporal para manipulación de señales de control. T2Variable temporal para manipulación de señales de reloj. ziFlujo cifrado. zi ∞ (i=1) Flujo cifrado correcto. z0 i ∞ (i=1) Flujo cifrado incorrecto. 135
Nomenclatura AES Advanced Encryption Standard ASIC Application-Specific Integrated Circuits BUFGMUX Multiplexor especial para señales de reloj CAST Carlisle Adams and Stafford Tavares CITIES Circuitos integrados para transmisión de información especialmente segura Delay Retardo DES Data Encryption Standard DFA Differential Fault Analysis DFIA Differential Fault Intensity Analysis DIB Device Interface Board DPA Differential Power Analysis ECRYPT European Network of Excellence in Cryptology eSTREAM European Stream Cipher Project Flip-Flop Biestable FPGA Field Programmable Gate Array GND Ground HW Hardware 137
Nomenclatura IO Input/Output IoT Internet of Things ISE Integrated Synthesis Environment IV Initialization Vector K Key Key Stream Flujo cifrado LED Light Encryption Device LFSR Linear Feedback Shift Register LP Low Power LUT Look Up Table MB MegaByte MDFA Mutant Differential Fault Analysis MHz Megahercios MICKEY Mutual Irregular Clocking KEY stream generator MISTY Mitsubishi Improved Security Technology NIST National Institute of Standards and Technology NLFSR Non Linear Feedback Shift Register ns Nanosegundo PLL Phase Locked-Loop RC4 Rivest Cipher 4 Routing Rutado RSA Rivest-Shamir-Adleman 138
Nomenclatura SASEBO Side-channel Attack Standard Evaluation BOard SAT Satisfiability SOBER-t32 Seventeen Octet Byte Enabled Register 32-bit words SOC System On Chip SW Software TDES Triple Data Encryption Standard TSE Transient-Steady Effect attack VHDL VHSIC Hardware Description Language 139