Full text
Instituto de Microelectrónica de Sevilla (Universidad de Sevilla y CNM-CSIC) DISEÑO Y CARACTERIZACIÓN DE CRIPTOCIRCUITOS SEGUROS Y RESISTENTES A ATAQUES FÍSICOS (DESIGN AND CHARACTERIZATION OF SECURE AND RESILENT CRYPTOCIRCUITS AGAINST SIDE CHANNEL ATTACKS) Memoria presentada por: Erica Tena Sánchez para optar al título de Doctora por la Universidad de Sevilla Sevilla, 2019
Director de Tesis Antonio José Acosta Jiménez Lugar y fecha Sevilla, 2019
A mis padres,
Agradecimientos Han sido muchas las personas que me han acompañado durante este viaje, pero en primer lugar, me gustaría comenzar agradeciendo a mi director, Antonio José Acosta Jiménez, el haberme dado la oportunidad de realizar esta Tesis y el ofrecerme todo su apoyo y experiencia durante estos años. Vamos equipo!! Me gustaría hacer un agradecimiento especial a José Miguel Mora, por toda su ayuda, dedicación desinteresada y apoyo, sobre todo durante mi última etapa de la Tesis. Estoy segura de que el resultado final de la Tesis no hubiera sido el mismo sin su colaboración. A Javier Castro por guiarme al inicio de este camino y por todas las horas dedicadas para poder poner en marcha esta Tesis. To Ricardo Chaves for his time, dedication, and for accepting me in Lisbon during my stay. A Juan Núñez por su colaboración en parte del Capítulo 4 y por su apoyo con cualquier duda que me ha surgido a lo largo de estos años. A Piedad Brox, por darme la oportunidad de conocer el IMSE y por su ayuda y amistad durante todos estos años. A todos mis compañeros del IMSE, que son muchos después de estos años, y que me resultaría imposible enumerarlos a todos. Muchas gracias a todos. A mi familia. A los siguientes proyectos y entidades por su soporte y financiación: MOBY-DIC: Model-based synthesis of digital electronic circuits for embedded control (FP7-ICT-2009-4-248858), Comisión Europea.
CITIES: Circuitos Integrados para Transmisión de Información Especialmente Segura (TEC2010-16870), Ministerio de Ciencia 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. CRIPTO-BIO: Diseño microelectrónico para autenticación cripto-biométrica (P08-TIC-03674), Junta de Andalucía. 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). V Plan Propio de Investigación de la Universidad de Sevilla. CRYPTACUS: Cryptanalysis in ubiquitous computing systems, COST ACTION IC1403, EU Framework Programme Horizon 2020.
Resumen A diario personas de todo el mundo hacen uso de dispositivos electrónicos en los que almacenan o con los que intercambian información privada. La confidencialidad y privacidad es un derecho frente a posibles intrusos, por lo que la seguridad en las nuevas tecnologías es un factor de transcendental importancia que exige la atención de la comunidad científica. Los dispositivos electrónicos considerados “seguros”, de facto cualquier dispositivo electrónico de uso en telecomunicaciones o que maneje información relevante, hacen uso de la criptografía para garantizar la confidencialidad, autenticación e integridad de los datos procesados. Estos dispositivos criptográficos implementan algoritmos matemáticamente seguros, pero que, debido a su implementación física, pueden revelar información sensible por las fugas de información durante su operación, que pueden ser aprovechadas por un atacante para revelar la clave secreta del dispositivo. Estos ataques, conocidos como ataques de canal lateral, o simplemente ataques laterales, son muy efectivos y explotan información como puede ser el consumo de potencia, emisión electromagnética o tiempos de ejecución, entre otros, para revelar la clave secreta. La comunidad científica ha centrado su esfuerzo en el diseño de contramedidas para evitar este tipo de ataques. El objetivo principal de esta Tesis es aumentar la seguridad de dispositivos criptográficos hardware frente ataques laterales. Para conseguir este objetivo se han realizado las 3 siguientes macro tareas: 1. Medidas de vulnerabilidad de un dispositivo criptográfico (realización de ataques y métricas de seguridad). 2. Propuestas de contramedidas. 3. Evaluación de su seguridad.
Para la medida de vulnerabilidad de los dispositivos criptográficos, se han implementado tanto ataques basados en el consumo de potencia, como ataques electromagnéticos o el uso de otras métricas como por ejemplo el t-test. Para probar la efectividad de los ataques, se han realizado sobre sistemas de clave privada, utilizándose como demostradores cifradores de bloque (AES y una parte del algoritmo KASUMI) y cifradores de flujo (Trivium). Estas medidas se han realizado tanto en entornos de simulación como de forma experimental, sobre implementaciones ASIC o FPGA. Además, se han evaluado diferentes métricas y test alternativos para poder evaluar la seguridad en diferentes etapas de diseño, así como el poder determinar el nivel de seguridad sin tener que llevar a cabo un ataque completo. Por otra parte, se han propuesto diferentes metodologías de diseño de contramedidas frente ataques laterales aplicadas a diferentes niveles de abstracción. Las propuestas a nivel de transistor consisten en modificar las estructuras de las celdas lógicas diseñadas para poder obtener un consumo de potencia igual independientemente del dato procesado. A nivel de puerta se proponen diferentes técnicas que varían la temporización del circuito, modificando así los niveles de seguridad alcanzados por los criptocircuitos diseñados. Estas contramedidas, son complementarias y por tanto ambas aplicables en un mismo diseño. Finalmente, cumplidas las dos tareas anteriores, se ha pasado a una etapa de diseño donde se han integrado en un ASIC los casos de estudio que implementan bloques criptográficos aplicando las contramedidas propuestas a lo largo del desarrollo de la Tesis. La caracterización de los diferentes casos de estudio determinará de forma experimental la ganancia en seguridad obtenida por cada contramedida.
Abstract Every day, people all over the world use electronic devices to store or exchange private information with each other. Confidentiality and privacy is a right against possible intruders, so security in new technologies is an important factor that requires the attention of the scientific community. Electronic devices considered "secure", in fact any electronic device for use in telecommunications or handling relevant information, make use of cryptography to ensure the confidentiality, authentication and integrity of the data processed. These cryptographic devices implement mathematically secure algorithms, but due to their physical implementation, they can reveal sensitive information due to data leaks during their normal operation, which can be exploited by an attacker to reveal the device’s secret key. These attacks, known as side channel attacks, are very effective and exploit information such as power consumption, electromagnetic radiation or timing, among others, to reveal the secret key. The scientific community has focused its efforts on the design of countermeasures to prevent this type of attack. The main objective of this Thesis is to increase the security of hardware cryptographic devices against side channel attacks. To achieve this objective, the following 3 tasks have been carried out: 1. Vulnerability measurements of a cryptographic device (execution of attacks and security metrics). 2. Proposals for countermeasures. 3. Security assessment. To measure the vulnerability of cryptographic devices, attacks based on power consumption, electromagnetic attacks or the use of other metrics such as t-test have been implemented. To test the effectiveness of the attacks, they have been performed on private key systems, using block cipher demonstrators (AES and a part of
Índice general 2.3.4. Fortaleza comparativa del sistema de ataques al AES: variación de la temperatura . . . . . . . . . . . . . . . . . . . . . . 45 2.3.5. Otros mecanismos de medida de vulnerabilidad: t-test . . . . 46 2.4. Ataque DPA al cifrador de flujo Trivium . . . . . . . . . . . . . . . . 50 2.5. Optimización del ataque DPA al cifrador Trivium . . . . . . . . . . . 51 2.6. Conclusiones ............................... 51 3. Diseño de contramedidas DPA a nivel de transistor 55 3.1. Estado del arte de contramedidas DPA . . . . . . . . . . . . . . . . . 56 3.2. Métricas para evaluación de seguridad y rendimiento de celdas DPL 63 3.3. Diseño de celdas DPL resistentes a DPA . . . . . . . . . . . . . . . . 65 3.3.1. Desarrollo del bloque DPUN . . . . . . . . . . . . . . . . . . 66 3.3.2. Desarrollo del bloque DPDN . . . . . . . . . . . . . . . . . . 71 3.4. Vulnerabilidades de las celdas DPL . . . . . . . . . . . . . . . . . . . 76 3.5. Metodología de optimización del DPDN . . . . . . . . . . . . . . . . 76 3.6. Metodología de diseño para celdas de más de dos entradas . . . . . . 77 3.7. Medida del nivel de seguridad de celdas DPL seguras frente ataques DPA.................................... 77 3.7.1. Selección del cifrador . . . . . . . . . . . . . . . . . . . . . . . 77 3.7.2. Planteamiento del ataque DPA a Sbox9 . . . . . . . . . . . . 78 3.7.3. Ataque DPA a las optimizaciones single-switch ydual-switch 79 3.8. Conclusiones ............................... 80 4. Diseño de contramedidas DPA a nivel lógico y mejora de prestaciones 83 4.1. Trabajoprevio .............................. 84 4.2. Impacto de técnicas de minimización lógica y uso de puertas con diferente fan-in ............................... 86 4.3. Arquitectura de criptocircuitos seguros para aplicaciones de alta velocidad................................... 86 4.4. Medida del nivel de seguridad de contramedidas aplicadas a nivel lógico 87 4.4.1. Ataque DPA a las implementaciones con minimización lógica y diferente fan-in ......................... 88 4.4.2. Ataques DPA a las implementaciones de alta velocidad . . . . 88 4.5. Conclusiones ............................... 88 ii
Índice general 5. Diseño del demostrador criptográfico ASIC_CESAR 91 5.1. Especificaciones y flujo de diseño del prototipo ASIC CESAR . . . . 93 5.2. Diseño de las celdas de la librería CESAR . . . . . . . . . . . . . . . 97 5.2.1. Metodología de diseño de la librería . . . . . . . . . . . . . . 98 5.3. Diseño de las Sbox9 . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5.4. Diseño del bloque de control . . . . . . . . . . . . . . . . . . . . . . . 108 5.4.1. Bloque “topSbox” . . . . . . . . . . . . . . . . . . . . . . . . 109 5.4.2. Bloque “controlASIC” . . . . . . . . . . . . . . . . . . . . . . 111 5.4.3. Bloque “topASIC” . . . . . . . . . . . . . . . . . . . . . . . . 116 5.4.4. Flujo de diseño del circuito de control . . . . . . . . . . . . . 119 5.5. Diseñofinal................................ 122 5.6. Diseño de PCB y setup de medida . . . . . . . . . . . . . . . . . . . 125 5.7. Conclusiones ............................... 128 6. Conclusiones finales y líneas futuras 131 Final conclusions and future work 135 A. Ataque DPA a AES con contramedidas de masking 141 A.1. Contramedida: Masking . . . . . . . . . . . . . . . . . . . . . . . . . 141 A.2. Resultados obtenidos de forma experimental . . . . . . . . . . . . . . 142 B. Análisis de dimensiones de los transistores de las celdas SABL 147 C. Efecto de la variación de la temperatura en ataques DPA por simulación a Sbox9 155 D. Librería CESAR 157 E. Implementación de las Sbox9 159 CV Abreviado 161 Bibliografía 165 iii
Índice de figuras 1.1. Conceptos básicos de la criptografía. . . . . . . . . . . . . . . . . . . 4 1.2. Clasificación de ataques. . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3. Diferentes consumos de potencia del inversor CMOS dependiendo de las transiciones de entrada/salida y por tanto del dato de entrada. . 14 2.1. Posibles medidas de seguridad a realizar sobre las celdas DPL según la fase de diseño. Xsignifica aplicable y Xno aplicable. . . . . . . . 21 2.2. Esquema básico de funcionamiento de un cifrador. . . . . . . . . . . 26 2.3. Esquema simplificado del ataque DPA. . . . . . . . . . . . . . . . . . 29 2.4. Setup experimental de un ataque DPA. . . . . . . . . . . . . . . . . 30 2.5. Organigrama de la captura de datos para un ataque DPA experimental. 31 2.6. Bloques de datos del plaintext (d) y clave (k). . . . . . . . . . . . . . 33 2.7. Carga del plaintext enelestado. .................... 35 2.8. Función AddRoundKey(). . . . . . . . . . . . . . . . . . . . . . . . . 35 2.9. Función SubBytes(). . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.10. Función ShiftRows(). . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.11. Función MixColumns(). . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.12. Última ronda de ataque en AES. . . . . . . . . . . . . . . . . . . . . 38 2.13. Elementos PCB SAKURA. . . . . . . . . . . . . . . . . . . . . . . . 39 2.14. Esquemático de ataque experimental. . . . . . . . . . . . . . . . . . . 41 2.15. Resultados del ataque al AES para el byte 0. . . . . . . . . . . . . . 42 2.16. Resultados del ataque al AES para el byte 0 en función de los plaintext aplicados. ................................. 43 2.17. Esquemático de ataque experimental con sonda electromagnética. . . 44 2.18. Resultados del ataque EM al AES para el byte 0. . . . . . . . . . . . 45 2.19. Resultados del ataque EM al AES para el byte 0 en función de los plaintext aplicados............................. 46 v
Índice de Figuras 2.20. Resultado del t-test para el test1 “fixed vs random”. ......... 49 2.21. Resultado del t-test para el test1 “fixed vs random”. ......... 50 2.22. Resultado del t-test para el test1 y test 2 “fixed vs random” superpuestos. .................................. 51 3.1. Niveles de abstracción en cryptocircuitos: nivel de transistor. . . . . 56 3.2. Clasificación de contramedidas masking................. 58 3.3. Clasificación de contramedidas hiding. ................. 59 3.4. Estilo lógico dinámico y de doble raíl: a) función lógica DPDN en transistores NMOS, y b) función lógica DPUN en transistores PMOS. 61 3.5. Medidas de celdas DPL posibles de realizar según la fase de diseño. Xsignifica realizable y Xno realizable. . . . . . . . . . . . . . . . . 64 3.6. DPUN del estilo lógico SABL. . . . . . . . . . . . . . . . . . . . . . . 68 3.7. Esquemático de la red DPDN del Inversor. . . . . . . . . . . . . . . . 69 3.8. Simulación del inversor SABL. . . . . . . . . . . . . . . . . . . . . . 69 3.9. DPUN del estilo lógico DDCVSL. . . . . . . . . . . . . . . . . . . . . 70 3.10. Simulación del inversor FLDS. . . . . . . . . . . . . . . . . . . . . . 71 3.11. Red DPDN inicial para los casos: a) inversor/buffer, b) XOR/XNOR, yc)AND/NAND. ............................ 73 3.12. Red DPDN AND/NAND modificada para conectar el nodo n1 a q[1] . 75 3.13. Red DPDN AND/NAND modificada para tener el mismo número de transistores en serie por cada rama diferencial [1] . . . . . . . . . . . 75 3.14. Ecuaciones de la Sbox9. . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.15. Flujo de ataque DPA sobre la SBox. . . . . . . . . . . . . . . . . . . 79 4.1. Niveles de abstracción en criptocircuitos: nivel de puerta. . . . . . . 84 5.1. Niveles de abstracción: nivel físico. . . . . . . . . . . . . . . . . . . . 92 5.2. División del ASIC CESAR. . . . . . . . . . . . . . . . . . . . . . . . 92 5.3. Flujo de diseño digital: a) convencional y b) el seguido en esta Tesis. 96 5.4. Flujo de diseño de librería CESAR. . . . . . . . . . . . . . . . . . . . 99 5.5. Esquemático de la celda XOR/XNOR2 tipo SABL. . . . . . . . . . . 100 5.6. Layout de la celda XOR/XNOR2 tipo SABL. . . . . . . . . . . . . . 100 5.7. Grafo de Euler correspondiente al DPDN de la celda XOR/XNOR2. 101 vi
Índice de Figuras 5.8. Ejemplo de emplazamiento de los transistores Ay¯ Aen XOR/XNOR2 tipoSABL. ................................ 101 5.9. Abstract de la celda XOR/XNOR2 tipo SABL. . . . . . . . . . . . . 103 5.10. Flujo de diseño del demostrador Sbox9. . . . . . . . . . . . . . . . . 105 5.11. Layout de las Sbox9. . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 5.12. Esquema del ASIC CESAR. . . . . . . . . . . . . . . . . . . . . . . . 108 5.13. Esquema del circuito de test “topSbox”. . . . . . . . . . . . . . . . . 110 5.14. Esquema de relojes empleado. . . . . . . . . . . . . . . . . . . . . . . 111 5.15. Esquema del bloque “controlASIC”. . . . . . . . . . . . . . . . . . . . 112 5.16. División de los datos de entrada serie. . . . . . . . . . . . . . . . . . 113 5.17. Diagrama de estados del bloque “controlASIC”. . . . . . . . . . . . . 114 5.18. Esquemático del bloque “topASIC”. . . . . . . . . . . . . . . . . . . . 116 5.19. Posición de test en función de la señal testPos. ............ 118 5.20. Flujo de diseño digital. . . . . . . . . . . . . . . . . . . . . . . . . . . 120 5.21. Layout del bloque de control. . . . . . . . . . . . . . . . . . . . . . . 122 5.22. Layout del ASIC CESAR. . . . . . . . . . . . . . . . . . . . . . . . . 122 5.23. Bonding ASICCESAR. ......................... 122 5.24.ASICCESAR. .............................. 124 5.25. Layout del ASIC CESAR. . . . . . . . . . . . . . . . . . . . . . . . . 124 5.26.PlacaCESAR. .............................. 125 5.27. Esquemático de la placa CESAR. . . . . . . . . . . . . . . . . . . . . 126 5.28. Esquemático de la parte de medida de consumo. . . . . . . . . . . . 127 A.1. Diagrama de bloques del AES implementado con masking. . . . . . . 142 A.2. Valores de correlación para el AES sin contramedidas. . . . . . . . . 144 A.3. Correlación para cada clave vs patrones de entrada aplicados para el AES sin contramedidas. . . . . . . . . . . . . . . . . . . . . . . . . . 144 A.4. Valores de correlación para el AES con masking. ........... 145 A.5. Correlación para cada clave vs patrones de entrada aplicados para el AES con masking. ............................ 145 B.1. Esquemático de la celda SABL XOR/XNOR2. . . . . . . . . . . . . 147 B.2. Esquemático de la celda SABL AND/NAND2. . . . . . . . . . . . . 148 B.3. Análisis paramétrico del NED respecto de la anchura del transistor M de la puerta SABL XOR/XNOR2. . . . . . . . . . . . . . . . . . . 149 vii
Índice de Figuras B.4. Análisis paramétrico del NSD respecto de la anchura del transistor M de la puerta SABL XOR/XNOR2. . . . . . . . . . . . . . . . . . . . 150 B.5. Análisis paramétrico del NED respecto de la anchura del transistor M de la puerta SABL AND/NAND2. . . . . . . . . . . . . . . . . . . 151 B.6. Análisis paramétrico del NSD respecto de la anchura del transistor M de la puerta SABL AND/NAND2. . . . . . . . . . . . . . . . . . . . 152 viii
Índice de tablas 2.1. Medidas utilizadas en esta Tesis en cada fase de diseño. . . . . . . . 25 3.1. Características y rendimiento de lógicas DPL full-custom. . . . . . . 62 3.2. Métricas utilizadas para las propuestas incluidas en esta Tesis en cada fasedediseño............................... 65 3.3. Funcionamiento de la red DPDN XOR/XNOR . . . . . . . . . . . . 73 3.4. Funcionamiento de la red DPDN AND/NAND de la Figura 3.11-c . 74 3.5. Funcionamiento de la red DPDN AND/NAND de la Figura 3.13 . . 76 4.1. Resumen de los factores de multiplicación respecto a la Sbox9. . . . 89 4.2. Resumen de los factores de multiplicación respecto a la Sbox7. . . . 89 5.1. Información de los layout de la librería CESAR. . . . . . . . . . . . . 102 5.2. Numero de celdas y dimensiones de las Sbox9. . . . . . . . . . . . . . 106 5.3. Entradas y salidas del bloque topSbox del ASIC CESAR. . . . . . . . 110 5.4. Selección de las fases de operación. . . . . . . . . . . . . . . . . . . . 112 5.5. División de los datos de entrada serie. . . . . . . . . . . . . . . . . . 113 5.6. Entradas y salidas del bloque controlASIC del ASIC CESAR. . . . . 115 5.7. Entradas y salidas del bloque topASIC del ASIC CESAR. . . . . . . 117 5.8. Bit de salida en modo test en función de testBit. ........... 119 5.9. Relación de pines y señales de entrada/salida. . . . . . . . . . . . . . 123 B.1. Dimensiones de los transistores de las celdas SABL_XOR/XNOR y SABL_AND/NAND(L=100nm) . . . . . . . . . . . . . . . . . . . . 153 ix
Algoritmos 2.1. Pseudocódigo del algoritmo AES [2] . . . . . . . . . . . . . . . . . . 34 2.2. Pseudocódigo de la expansión de clave del AES [2] . . . . . . . . . . 34 xi
Capítulo 1 Introducción al hardware criptográfico hardware criptográfico demande más eficiencia energética e integración que permita mayor portabilidad, mejores prestaciones hardware, y sobre todo seguridad. A la vista de este escenario sumamente complejo, se está dedicando mucho tiempo a la investigación de nuevos algoritmos e implementaciones seguras que puedan cumplir con las restricciones impuestas por el mercado proponiendo nuevos algoritmos que mejoren las prestaciones y seguridad de estándares fijados por el NIST (National Institute of Standards and Technology) [7]. El NIST fue fundado en 1901 y ahora forma parte del Departamento de Comercio de los Estados Unidos, siendo su principal misión promover la innovación y competitividad industrial en los Estados Unidos. Dentro de los tópicos del NIST se encuentra la ciberseguridad, y más concretamente la criptografía, donde una de sus principales tareas es la estandarización de algoritmos criptográficos. En el año 1977 el NIST aprobó como estándar el algoritmo Data Encryption Standard (DES) [8] y a principios del año 1997, el NIST puso en marcha una iniciativa para desarrollar un nuevo estándar de encriptación llamado Advanced Encription Standard (AES) [9] que sucedería al ya presentado DES y sus diferentes actualizaciones como por ejemplo el TripleDES. El proceso de selección propuesto por el NIST fue un concurso público, donde cualquier persona podía presentar un algoritmo candidato que cumpliera con los requisitos exigidos por la convocatoria. Para la selección del algoritmo finalista, el NIST no realizó la evaluación por sí mismo, sino que coordinó a la comunidad experta en este campo para criptoanalizar y evaluar los costes de implementación de cada uno de los algoritmos presentados. El proceso de evaluación consistía en varias rondas de clasificación, durante el cual se organizaron varias conferencias donde los investigadores presentaban sus conclusiones tras diferentes evaluaciones. En la última conferencia, tras realizar un cuestionario, el algoritmo Rijndael resultó finalista, siendo presentado como el AES en el año 2000. En los últimos años, debido al gran uso de dispositivos portables donde el uso de las baterías y sus limitados recursos de computación imponen fuertes restricciones en las implementaciones, se están buscando soluciones de bajo coste, referidos como Lightweight Cryptography [10,11]. La Lightweight Cryptography busca dar soluciones criptográficas a dispositivos con recursos limitados, proponiendo nuevos algoritmos e implementaciones eficientes de muy bajo consumo. 2
Introducción al hardware criptográfico Entre los años 2004 y 2008, ECRYPT (European Network of Excellence in Cryptology) lanzó el proyecto eSTREAM [12] con el propósito de promover el diseño de cifradores de flujo eficientes y compactos adecuados para su adopción generalizada. El proyecto lanzó un concurso que, al igual que en el caso del AES, fue público y con varias rondas de clasificación. Tras su finalización en 2008, se propusieron como finalistas los algoritmos Grain v1 [13], MICKEY v2 [14] y Trivium [15]. En Agosto de 2018, el NIST ha iniciado un proceso para solicitar, evaluar y estandarizar algoritmos criptográficos lightweight que son adecuados para su uso en entornos restringidos donde el rendimiento de los estándares criptográficos actuales del NIST no es aceptable [16]. El NIST ha decidido crear un portfolio de algoritmos criptográficos lightweight, diseñados para uso limitado en aplicaciones y entornos donde las operaciones criptográficas son realizadas por dispositivos restringidos que no pueden usar los estándares NIST existentes. Las propuestas de los posibles algoritmos podrán enviarse hasta el 25 de febrero de 2019, teniendo a continuación 12 meses de evaluación pública donde finalmente se seleccionarán los finalistas para una posible estandarización. Según Elsevier Scopus, la mayor base de datos de investigación, en caso de hacer la búsqueda de la palabra “criptografía” en su base de datos, retorna una búsqueda de mas de 40 mil documentos. Un gran subconjunto de estos documentos trata de soluciones conceptuales, algorítmicas, de software y de hardware que pueden tenerse en cuenta para Lightweight Cryptography. Frente a tan vasta literatura, se aprecia claramente las necesidades actuales en el mundo de la criptografía y qué problemas necesitan solución. En la sección 1.1 se hará una breve introducción a los conceptos básicos de la criptografía. A continuación, en la sección 1.2, hablaremos sobre la seguridad en los dispositivos criptográficos, presentando después técnicas de protección frente ataques no invasivos en la sección 1.3. Finalmente se muestran las conclusiones en la sección 1.4. El contenido de este capítulo ha derivado en las publicaciones [CV.2] y [CV.3]. 3
Capítulo 1 Introducción al hardware criptográfico 1.1. Conceptos básicos de la criptografía Los algoritmos criptográficos buscan convertir datos secretos en código ininteligible para personas no autorizadas, protegiendo aquella información secreta del robo o alteración, y habilitando la autentificación. Para poder comprender las siguientes secciones, vamos a definir los siguientes conceptos. Nos referiremos a plaintext (pt) cuando se habla del mensaje plano que se quiere encriptar y ciphertext (ct) como el mensaje obtenido tras el cifrado. Fijémonos en la Figura , donde Alice es la persona que quiere transmitir los datos de forma segura y Bob es el receptor del mensaje. Alice posee un plaintext y una clave que usa para encriptar la información generando el ciphertext. Esta información es transmitida por un medio no seguro hasta llegar a Bob. Bob a su vez posee su clave personal que usa para desencriptar el ciphertext y recuperar el mensaje legible (pt) enviado por Alice. El proceso de encriptación y desencriptación está detallado en la Figura 1 de CV. 3. ALICE Emisor BOB Receptor Plaintext (pt) Encrypt Ciphertext (ct) Secret Key Secure Key Exchage Plaintext (pt) Decrypt Secret Key Figura 1.1.: Conceptos básicos de la criptografía. Para poder alcanzar estos objetivos, la criptografía hace uso de diferentes tipos de algoritmos clasificados en 3 categorías dependiendo del mecanismo de encriptado y el número de claves usadas en el proceso de encriptación (una, dos o ninguna clave), correspondientes a los esquemas de Secret Key Cryptography (SKC), Public Key Criptography (PKC) y Hash de la Figura 2 de CV. 3, respectivamente. 4
1.1 Conceptos básicos de la criptografía 1.1.1. Funciones Hash Los algoritmos Hash tienen como entrada un plaintext de longitud arbitraria y lo transforman en un ciphertext con una longitud prefijada sin usar ninguna clave. Estos algoritmos solo funcionan en un único sentido, es decir, una vez transformado el plaintext es imposible recuperar el texto original o la longitud del mismo. Su principal uso es el de proporcionar una huella del contenido de un fichero, a menudo utilizado para verificar que el fichero no ha sido alterado por un intruso o virus, permitiendo así comprobar la autenticidad del origen de un mensaje asegurando a su vez la integridad del mismo. Unos de los algoritmos Hash más utilizados son Message Digest (MD) [17] y los SHAs [18]. 1.1.2. Criptografía de clave secreta (SKC, Secret Key Cryptography) También llamada criptografía de clave simétrica, se usa la misma clave para el proceso de encriptado y desencriptado (KeyA = KeyB). Sólo el emisor y receptor del mensaje conocen la clave secreta, por lo que se entiende que en la práctica el canal de comunicación establecido entre ambos es seguro. Los algoritmos SKC se pueden clasificar en dos subgrupos en función de cómo se encripte el plaintext: cifradores de flujo si cifran bit a bit o cifradores de bloque si se encripta el plaintext por bloques, ver Figura 1 de CV. 2. Los cifradores de flujo o stream ciphers generan un keystream (flujo cifrado) bit a bit a partir de una clave y vector inicial, que posteriormente se utiliza como entrada a una operación XOR junto con el plaintext. Estos cifradores implementan algún tipo de realimentación haciendo que el keystream varíe continuamente produciendo diferentes ciphertexts para el mismo plaintext dependiendo de la clave, el vector inicial y el ciclo de encriptación [13,15,19]. Existen numerosos stream ciphers, como puede ser el One-Time Pad (OTP) [19], donde el plaintext y un generador de números aleatorios proporcionan las entradas para la operación XOR bit a bit, generando así el ciphertext. Este cifrador se ha usado extensamente, pero hoy en día ha tenido que ser descartado debido a que la clave utilizada en la encriptación tenía que tener la misma longitud que 5
Capítulo 1 Introducción al hardware criptográfico el texto a cifrar. Debido a la gran demanda de dispositivos de muy bajo consumo y área reducida, se propuso en 2004 el proyecto eSTREAM [12], donde se pedían propuestas de algoritmos lightweight orientados a implementaciones hardware. En este concurso, unos de los algoritmos finalistas y posteriormente más estudiados fueron el cifrador Grain [13] y Trivium [15]. El diseño hardware de Grain está orientado a aplicaciones donde el área, consumo de potencia y memoria son muy limitados. En el caso de Trivium, está diseñado para tener una estructura lo más simplificada posible sin sacrificar la seguridad, velocidad o flexibilidad en la implementación. Otros de los algoritmos lightweight orientados a implementaciones hardware presentados en eSTREAM son Mickey, Moustique y F-FCSR-H v2 entre otros [14,20,21]. Por otra parte nos encontramos con los cifradores de bloque o block ciphers, los cuales encriptan un bloque completo de datos cada vez. En general, el mismo bloque del plaintext se encripta obteniendo el mismo ciphertext de salida si se usa la misma clave. Unos de los block ciphers más utilizados son el Data Encryption Standard (DES) [8] y el AES [9]. El DES fue diseñado en los años 70 y fue utilizado por el gobierno de los Estados Unidos, consta de una longitud de clave de 56 bits y opera con bloques de datos de 64 bits. En 1997, el NIST inició un proceso público para seleccionar un nuevo cifrador seguro para aplicaciones del gobierno de los Estados Unidos. El cifrador elegido en el concurso fue el AES, que se escogió como el sucesor oficial del 3-DES, variante del DES, en noviembre de 2001. El cifrador AES encripta bloques de datos de 128 bits con claves que pueden ser de 128, 192 o 256 bits. Como en el caso de los cifradores de flujo, debido a la demanda de dispositivos lightweight, se están presentando recientemente nuevos cifradores de bloque lightweight, como pueden ser el Present [22] (cifrador de bloque ultra-lightweight 2.5 veces menor en tamaño que el AES). La criptografía de clave secreta ocriptografía simétrica utiliza la misma clave para el proceso de encriptado y desencriptado, codificando el plaintext bit a bit con los cifradores de flujo, y por bloques de datos con los cifradores de bloque, planteándose el envío de la clave por un canal no seguro como su principal desventaja. 6
1.1 Conceptos básicos de la criptografía 1.1.3. Criptografía de clave pública (PKC, Public Key Cryptography) Llamada también criptografía de clave asimétrica, usa un par de claves diferentes para los procesos de encriptado y desencriptado (KeyA 6=KeyB). En este caso la clave KeyA es pública y puede ser utilizada por cualquier persona que desee enviar información privada que solo puede ser desencriptada por el único poseedor de la clave KeyB, asegurando de esta forma la confidencialidad del envío. Por otro lado, cualquier poseedor de la clave pública KeyA podría desencriptar un mensaje cifrado previamente por el único poseedor de la clave KeyB, consiguiendo por tanto la identificación y autentificación del remitente. En 1976 se introduce la PKC [23], que permite junto con el uso de cifradores simétricos, el intercambio de claves secretas incluso en canales de comunicación inseguros o públicos, para salvar la principal desventaja de los cifradores SCK. Los algoritmos PKC que están en uso hoy en día para intercambio de claves o firmas digitales, incluyen el RSA [24] y todos aquellos basados en ECC (Elliptic Curve Cryptography) [25, 26] entre otros. El RSA es el algoritmo más implementado, cuyas claves pueden variar entre los 1024 a 4096 bits, previniendo así ataques por fuerza bruta. Unos años más tarde de la presentación del RSA comenzaron los basados en ECC, los cuales requieren claves de menor tamaño para ofrecer los mismos niveles de seguridad. 1.1.4. Implementación Hardware de algoritmos criptográficos La selección del algoritmo específico a utilizar dentro de estas tres familias, dependerá de la aplicación, el nivel de seguridad que queremos alcanzar, y del coste de implementación y diseño del mismo. Una vez seleccionado el algoritmo, la siguiente decisión importante a tomar es la forma de implementarlo físicamente. Los algoritmos de PKC son más complejos que los de SKC y, para tener el mismo nivel de seguridad necesitan claves con mayor número de bits. En cuanto a velocidad, los cifradores SKC son mucho más rápidos, por lo que son adecuados para cifrar grandes cantidades de datos. Debido a que las propuestas de mejora en seguridad presentadas en esta tesis son aplicables a cualquier tipo de algoritmo, nos centraremos en SKC por su simplicidad y por su extendido uso en aplicaciones de bajo consumo. Una vez escogido el algoritmo adecuado para nuestra aplicación, el siguiente paso es determinar la implementación optima del mismo. Los algoritmos pueden imple- 7
Capítulo 1 Introducción al hardware criptográfico mentarse en diferentes niveles de abstracción, desde software/hardware de propósito general, hasta hardware específico. Nos centraremos en algoritmos especialmente diseñados para implementaciones hardware, siendo sus prestaciones mucho más elevadas manteniendo los mismos niveles de seguridad. Dependiendo de las prestaciones requeridas nos decantaremos por una opción u otra, siendo las implementaciones hardware las que mejores prestaciones ofrecen a cambio de aumentar el coste de desarrollo. En las implementaciones de crypto-hardware empotradas, el algoritmo de encriptación suele incluirse en una FPGA (Field Programmable Gate Array) o ASIC (Application-Specific Integrated Circuit) como parte de un sistema completo. En muchos casos, para obtener la implementación hardware de un sistema criptográfico, se realiza una síntesis digital de una descripción del algoritmo en un lenguaje hardware (HDL, Hardware Description Language). Sin embargo, la implementación resultante puede no ser suficientemente buena en cuanto a prestaciones y/o seguridad, y por ese motivo, el diseñador está obligado a seleccionar cifradores orientados a implementaciones hardware, especialmente en los casos en los que los recursos son limitados (criptografía lightweight). Por ejemplo, en [27] se presenta un estudio sobre implementaciones del cifrador Trivium para aplicaciones de muy bajo consumo. 1.2. Seguridad en los cifradores Tradicionalmente, la seguridad en dispositivos criptográficos estaba exclusivamente vinculada a la fortaleza del algoritmo, que consistía en la capacidad que tenía el cifrador para mantener la información privada protegida. El nivel de seguridad estaba determinado por la formulación matemática del cifrador y la longitud de la clave, a mayor longitud de clave, mayor seguridad. Con la capacidad de cómputo existente hoy en día, los cifradores cuyas claves sean inferiores a 56 bit se consideran no seguros ya que son vulnerables frente ataques de fuerza bruta1. En el caso de criptografía lightweight, el NIST determina que el nivel de seguridad mínimo expresado 1En 1998 el DES Cracker de la EFF (Electronic Frontier Foundation) [28], conocido como “Deep Crack”, rompió la clave del DES en menos de 56 horas. Motivo por el cual se consideró no seguro y quedó obsoleto el algoritmo DES (Data Encryption Standard) [8] seleccionado por el NIST como estándar, cuya longitud de clave era de 56 bit. 8
1.2 Seguridad en los cifradores en numero de bits sería de 112 bits para poder alcanzar un buen compromiso entre prestaciones y seguridad [10], es decir, significa que el atacante tendría que realizar 2112 operaciones para romper el cifrador. Como estimación del tiempo de ataque por fuerza bruta, consideremos 1 computador trabajando a 10GHz, que pueda realizar una comprobación de la clave cada ciclo de reloj (lo cual es extremadamente complejo). Permitiría probar 1011 claves/s, tendría que probar un total de 2112 = 5,19·1033 claves, con lo que tardaría 5,19 ·1022s, es decir 1,65 ·1015 años en probar todas las posibles claves. Si la edad del universo es de aproximadamente 13,7·109años, quiere decir que un atacante necesitaría millones de veces la edad del universo para obtener la clave. Sin embargo, aunque los algoritmos criptográficos son matemáticamente seguros, sus implementaciones físicas pueden sufrir fugas de información que pueden ser utilizadas por terceros para revelar la información secreta. A mediados de los 90, Kocher demostró que se puede obtener información precisa sobre la clave secreta simplemente observando el circuito durante su modo de funcionamiento normal [29]. Desde entonces, se han publicado numerosas técnicas de ataque a dispositivos criptográficos [2,30], con el fin de revelar la clave secreta de los dispositivos, con fines alevosos. Estos ataques difieren entre sí en términos de coste, tiempo, equipamiento y la experiencia del atacante. Es por ello por lo que hay varios criterios de clasificación para los ataques a dispositivos criptográficos, principalmente si los ataques son activos o pasivos, y el segundo dependiendo de la interfaz usada en el ataque [2] y [CV.3]. Una primera clasificación puede realizarse en función de si el ataque es activo o pasivo (observar la Figura 1.2): Ataque pasivo: El dispositivo funciona dentro de sus especificaciones y la clave secreta se revela observando alguna propiedad física del dispositivo, como por ejemplo el tiempo de ejecución o el consumo de potencia. Ataque activo: El dispositivo criptográfico es manipulado para que funcione de una manera anormal con el objeto de usar este comportamiento erróneo para obtener la clave secreta. 9
Capítulo 1 Introducción al hardware criptográfico Ataques de canal lateral Ataques por inserción de fallos PASIVOS ACTIVOS INVASIVOS NO-INVASIVOS Ataques por ingeniería inversa Figura 1.2.: Clasificación de ataques. Los dispositivos criptográficos presentan diferentes interfaces físicas, algunas de las cuales se podrá acceder de una forma sencilla, mientras otras requieren un equipo especial. Según esto, los ataques se pueden clasificar de tres formas: Ataques invasivos: Este tipo de ataques modifica de alguna forma el dispositivo criptográfico, sin límite en cuanto a dichas modificaciones, con el fin de revelar la clave secreta. Se accede directamente al dispositivo, haciendo un contacto directo, como por ejemplo, situando una sonda de medida sobre una pista del circuito. Son ataques muy efectivos, pero se necesita una instrumentación costosa y sofisticada, lo que puede suponer una limitación y dejan huella. Ataques semi-invasivos: En este caso, también se altera el dispositivo pero no se realiza ningún contacto directo con la superficie del chip. Ejemplos de este tipo de ataques son: uso de rayos X, campos electromagnéticos, o luz, para inducir un fallo y obtener información. La dificultad de estos ataques reside en encontrar el lugar exacto donde atacar sobre la superficie del chip. Ataques no invasivos: En un ataque no invasivo, el dispositivo criptográfico no es alterado y se utilizan únicamente las interfaces accesibles. Por ello, no 10
1.2 Seguridad en los cifradores se deja evidencia alguna de haber realizado un ataque de este tipo. Una de las ventajas es que la mayoría de ataques no invasivos se pueden realizar con una equipación relativamente poco costosa y son extremadamente potentes, lo que suponen un principal riesgo a tener en cuenta para los diseñadores. Dentro de los ataques no invasivos nos encontramos con los ataques activos (ataques activos no invasivos), llamados ataques por inserción de fallos (Fault-injection Attacks, FA)2, y con los ataques pasivos (ataques pasivos no invasivos) llamados ataques de canal lateral (Side-Channel Attacks, SCA). 1.2.1. Ataques por inserción de fallos Los FA están clasificados como ataques activos no invasivos. En un FA el atacante inserta un fallo en el dispositivo criptográfico durante la encriptación para hacer que dé un resultado erróneo, es decir, diferente al que daría en un modo de funcionamiento normal. Usando el resultado esperado y el erróneo, los atacantes pueden revelar la clave secreta con la que está operando el dispositivo. Estos ataques se presentaron en 1997, donde se realizaba un FA al algoritmo RSA utilizando el teorema CRT (Chinese Remainder Theorem) [31]. Desde entonces, se han presentado en la literatura numerosos ataques sobre diferentes implementaciones de algoritmos criptográficos, en los cuales consiguen recuperar la clave secreta [32– 34]. A continuación se enumeran algunas técnicas de producción del fallo en los FA. Variaciones de tensión de alimentación: una de las formas más fáciles y baratas de producir el fallo es alimentar el circuito con una tensión diferente a la recomendada o insertar un pico en la tensión de alimentación. De esta forma, la tensión de alimentación variará lo suficiente para causar un funcionamiento incorrecto del sistema, dando a la salida un resultado distinto al esperado [35]. Variaciones en la señal de reloj externa: pueden producir un fallo en la fase de enriptado/desencriptado del criptocircuito. Un ejemplo de este ataque se presenta en [36–38], donde consiguen de forma tanto teórica [36] como experimental [37,38] insertar un fallo en el cifrador de flujo Trivium a traves de un glitch en la señal de reloj. También se presentan varios ataques a los cifradores 2No forman parte del contenido de la Tesis. 11
Capítulo 1 Introducción al hardware criptográfico queremos determinar si el sistema es vulnerable o por el contrario queremos saber exactamente el punto y condiciones de la fuga de información. 1.4. Conclusiones La criptografía busca convertir datos secretos en código ininteligible para agentes o entidades no autorizadas, protegiendo aquella información secreta del robo o alteración, y habilitando la autentificación. Para este fin se pueden utilizar diferentes tipos de algoritmos dependiendo de la aplicación y del nivel de seguridad requerido, que pueden ser funciones Hash, cifradores de clave pública/asimétrica o cifradores de clave secreta/simétrica. Debido a la evolución de la tecnología en las últimas décadas, cada vez se utilizan más dispositivos wearables, que demandan seguridad y consumo de potencia muy bajos. Las implementaciones hardware de los cifradores son los diseños más compactos y que mejores prestaciones ofrecen, si son comparados con las soluciones software. La seguridad de los sistemas criptográficos reside no sólo en la fortaleza del algoritmo criptográfico y la longitud de la clave, sino que también depende de la implementación física. Esto se debe a que existen ataques que explotan la dependencia del dato procesado por el cifrador durante la encriptación con características fisicas del hardware diseñado, para poder revelar la clave secreta. Dentro de estos ataques destacan los ataques de canal lateral conocidos como SCAs, que son ataques de canal lateral pasivos no invasivos. Los SCAs son los ataques que más riesgo entrañan para los diseñadores de sistemas criptográficos seguros debido a que son ataques que no dejan evidencia ninguna en el dispositivo, además de ser extremadamente efectivos. Desde su proliferación, ha habido numerosas propuestas de contramedidas frente a este tipo de ataques. Las más populares y que mejores niveles de seguridad ofrecen sin degradar en exceso el rendimiento del diseño, son las técnicas de hiding aplicadas a nivel de transistor, objeto de análisis en esta Tesis. 18
2. Vulnerabilidad de circuitos criptográficos frente a ataques de canal lateral Desde los primeros ataques de potencia [30], han sido numerosas las propuestas de nuevos y más elaborados ataques, a la vez que diferentes técnicas para la medida de vulnerabilidad de los circuitos criptográficos [2,30,43,45,56]. Los cifradores de bloque han recibido considerablemente más atención [8, 9, 22] que los cifradores de flujo [13,15], aunque se han presentado varios trabajos donde se estudia la vulnerabilidad de estos cifradores, ya sea por ataques SCA, o por medio de test alternativos para la medida de seguridad como puede ser el t-test [57]. Dentro de los ataques SCA los más efectivos son los basados en el análisis de consumo [30,56] y en menor medida los basados en emisión electromagnética [43,45], más concretamente los que procesan un número elevado de trazas como son los DPA y DEMA. Dentro de los ataques DPA y DEMA, nos encontramos con diferentes técnicas para la detección de la clave correcta como puede ser la obtención de la diferencia de las trazas de consumo (primera propuesta de “Differential” Power/Electomagnetic Analysis DPA/DEMA [30]) o el cálculo de valores de correlación entre el consumo medido con unos valores hipotéticos de consumo (llamado a veces “Correlation” Power/Electromagnetic Analysis CPA/CEMA) [2]. Debido a que los llamados ataques CPA/CEMA son únicamente una variante de los DPA/DEMA, vamos a designar a todos los ataques como DPA/DEMA tal y como sugieren en [2]. En esta Tesis, debido a su mayor efectividad, nos decantaremos por los ataques DPA que utilizan la correlación para determinar la clave correcta. Para el estudio de la vulnerabilidad de los dispositivos criptográficos, vamos a comenzar por analizar los ataques a un cifrador de bloque AES, ampliamente utilizado 19
Capítulo 2 Vulnerabilidad de circuitos criptográficos frente a SCAs y atacado en la literatura [2,51,58]. Vamos a implementar de forma experimental ataques DPA y DEMA, así como un t-test, para ver la realizabilidad y efectividad de estos ataques. Posteriormente vamos a proponer nuevos ataques sobre un cifrador de flujo Trivium que mejorarán en gran medidas las propuestas presentadas hasta la fecha en la literatura. Los resultados mostrados en este capítulo se presentaron en [CV.8], [CV.13] y [CV.16]. 2.1. Métricas para evaluación de seguridad Antes de comenzar con el estudio de los SCAs, vamos a determinar qué métricas utilizar para medir el nivel de seguridad de los circuitos criptográficos. En primer lugar, tenemos que tener en cuenta que podemos realizar los ataques en distintos momentos durante la fase de diseño del circuito, por simulación, o a distintos niveles (celdas a nivel de transistor, nivel de bloques), incluso experimental sobre el circuito ya realizado en un ASIC o FPGA. Además, tenemos que determinar si estamos midiendo la seguridad para detectar posibles vulnerabilidades y poder aplicar contramedidas para evitar fugas de información, o simplemente demostrar que un sistema es vulnerable, sin importar los detalles exactos del punto o condiciones de fuga. En la literatura nos encontramos con numerosas métricas propuestas que se adaptan a cada fase del diseño y nivel de descripción. En primer lugar, en la fase de diseño de celdas seguras, podemos hacer unas primeras estimaciones que nos den una aproximación de la robustez que tiene la celda frente a SCAs, pero decididamente sólo se demuestra dicha resistencia realizando un ataque completo. Entonces nos podemos preguntar ¿por qué realizamos estas estimaciones si podemos realizar un ataque? La respuesta es muy simple, la realización de un ataque DPA no es inmediata, hay que realizar el diseño de al menos una parte del dispositivo criptográfico, el montaje de todo el experimento, simulaciones o medidas en el laboratorio muy costosas, almacenamiento de gran cantidad de datos y procesado de los mismos. Además, en la fase de diseño de la celda, nos podemos encontrar con numerosas propuestas para mejorar la seguridad, por lo que si queremos probar todas las alternativas nos encontraríamos con un número demasiado elevado de posibles combinaciones que 20
2.1 Métricas para evaluación de seguridad tendríamos que evaluar. Esto supondría que tendríamos que diseñar no solo las celdas correspondientes, sino también los bloques criptográficos, para tantas propuestas como posibles combinaciones de ellas hayamos planteado, y realizar las medidas y procesado posterior convirtiéndose en una tarea inabordable. En la Figura 2.1 se muestran unos indicadores de métricas aplicables en cada fase de diseño y nivel de abstracción, frente a ataques DPA. A su vez, estas métricas pueden ser aplicables en entornos de simulación y/o experimentales, siendo algunas de ellas no realizables o inadecuadas dependiendo del tipo de implementación que tengamos, por lo que la elección de la métrica de seguridad a utilizar es de suma importancia. Diseño Celda 1Diseño Circuito 2 Esquemático Esquemático Layout Layout ASIC · NED · NSD · Ataque · MTD · T-test 3 Sbox · NED · NSD · Ataque · MTD · T-test · NED · NSD · Ataque · MTD · T-test · NED · NSD · Ataque · MTD · T-test · NED · NSD · Ataque · MTD · T-test Figura 2.1.: Posibles medidas de seguridad a realizar sobre las celdas DPL según la fase de diseño. Xsignifica aplicable y Xno aplicable. 21
Capítulo 2 Vulnerabilidad de circuitos criptográficos frente a SCAs 2.1.1. Métricas indirectas de seguridad Las medidas que vamos a mostrar a continuación nos permiten, mediante una pequeña simulación eléctrica, determinar la robustez de una celda individual, sin la necesidad de realizar el diseño de un sistema completo, y por supuesto nos permitirá comparar las características de seguridad de diferentes alternativas, descartando aquellas menos robustas. De esta forma, podemos determinar en una primera fase de diseño, qué contramedidas propuestas son válidas y pueden pasar a una segunda etapa desechando las que peores métricas muestren. De las simulaciones eléctricas obtendremos la corriente de polarización, que procesaremos para obtener de cada transición la energía por ciclo (E) calculada a partir de la corriente (IAV ) medida: IAV =1 TCLK TCLK /2 ˆ −TCLK /2 iDD(t)dt (2.1) E=VDD ·IAV ·TCLK (2.2) Tras calcular la energía por ciclo, podemos obtener: Min: Valor mínimo de energía. Máx: Valor máximo de energía. µ: Valor medio de energía. σ: Desviación estándar de valores de energía. Las medidas más utilizadas en la literatura y que mejor definen el nivel de seguridad de una celda frente a ataques de potencia son las siguientes [59], [CV.5]: 22
2.1 Métricas para evaluación de seguridad NED (Normalized Energy Deviation): NED =Max −Min Max (2.3) NSD (Normalized Standard Deviation): NSD =σ µ(2.4) La interpretación es la siguiente, una celda completamente segura presentaría NED=0 y NSD=0, indicando que el consumo es el mismo para todas las transiciones y por tanto independiente del dato. En su defecto, la celda es más segura cuando menor sea el valor del NED yNSD. Ambas métricas están concebidas para utilizarse en una primera fase, donde se busca descartar las contramedidas que peores resultados de seguridad muestren. Si bien el NED y NSD son aplicables de igual forma en las siguientes fases de diseño, tanto en un entorno de simulación como experimental, no resultan adecuadas y es recomendable el uso de otras métricas. 2.1.2. Métricas directas de seguridad Una vez seleccionadas las propuestas, se pasa a una segunda fase, donde se implementarán los bloques constitutivos del algoritmo criptográfico que sean más vulnerables a los ataques de canal lateral con las celdas propuestas. En esta fase, ya se pueden realizar ataques DPA, tanto en entornos de simulación como experimentales, que nos mostrarán con más exactitud el nivel de seguridad alcanzado. De los ataques DPA podemos extraer diferentes informaciones cuantitativas para evaluar la seguridad. Se puede determinar si el ataque ha sido satisfactorio o no comparando la clave obtenida en el ataque con la fijada en el circuito criptográfico. Una vez obtenido un ataque satisfactorio, se puede calcular el MTD (Measurements To Disclose the key), para cuantificar el nivel de seguridad [60], ampliamente utilizado en la literatura [61,62]. 23
Capítulo 2 Vulnerabilidad de circuitos criptográficos frente a SCAs El MTD nos indica el número mínimo de patrones de entrada que hay que aplicar en el ataque para que siempre se pueda detectar la clave correcta. Por lo que, con mayor MTD mayor nivel de seguridad alcanza el criptocircuito y por tanto la contramedida propuesta. Por lo tanto, aunque a nivel de circuito se pueden obtener los valores de NED y NSD, vamos a descartar estas medidas ya que no aportan información complementaria y nos proporciona información más exacta el MTD. 2.1.3. Métricas de vulnerabilidad Existen otras técnicas que sólo buscan determinar si un sistema es vulnerable o no, como puede ser el t-test [57]. Estas técnicas tienen ventajas e inconvenientes. Como principal ventaja tenemos que es mucho más sencilla de implementar y nos ahorramos el laborioso trabajo de desarrollar la estrategia de ataque, determinando si el sistema es seguro o no lo es. Por el contrario, estas técnicas no sirven para comparar dos contramedidas propuestas, ya que sólo dan información de si una implementación es segura, pero no permite determinar el grado de seguridad alcanzado. Además, no son adecuadas para su implementación en entornos de simulación, siendo aplicables por tanto en setups experimentales. Es por esto por lo que en esta Tesis se van a utilizar las métricas definidas en la Tabla 2.1 para poder evaluar las contramedidas propuestas en las diferentes fases de diseño. En resumen, en cuanto a medida del nivel de seguridad de los diseños criptográficos, vamos a utilizar por tanto el NED, NSD para celdas lógicas y ataques DPA para bloques criptográficos completos. Tras realizar numerosas pruebas, aplicaremos ocasionalmente el t-test en aquellos sistemas resistentes, ya que si bien no sirve para comparar dos implementaciones entre sí, podremos determinar si las implementaciones tienen fuga de información aunque no podamos saber cuál de las propuestas es la más segura. 24
2.2 Ataques DPA: Bases Tabla 2.1.: Medidas utilizadas en esta Tesis en cada fase de diseño. NED NSD Ataque MTD T-test1 Celda 3 3 7 7 7 Circuito 7 7 3 3 7 ASIC 7 7 3 3 7 1Se ha explorado parcialmente, algunos resultados aparecen en la Sección 2.3.5. 2.2. Ataques DPA: Bases El objetivo de un ataque DPA consiste en revelar la clave secreta de los dispositivos criptográficos utilizando una gran cantidad de trazas de consumo de potencia de alimentación medidas de los dispositivos mientras encriptan o desencriptan datos para esa clave secreta. En la Figura 2.2, se puede ver un esquema muy básico del funcionamiento de un cifrador. A grandes rasgos, en un ataque DPA1vamos a tener una clave secreta (Key) que queremos averiguar. Para ello, se medirán las trazas de consumo de potencia del criptocircuito, que podrá estar implementado en ASIC, FPGA, o incluso un esquemático por simulación, durante la encriptación de los plaintexts que le pasemos como datos de entrada. Con la información de las trazas de consumo y los datos de entrada y/o salida (ciphertext) del sistema criptográfico y un modelo de consumo de potencia adecuado se realizarán análisis estadísticos para determinar con qué clave está trabajando el dispositivo. El ataque será satisfactorio en caso de recuperar la clave secreta. Para realizar un ataque DPA, no es necesario conocer en detalle el dispositivo criptográfico a atacar, sino que basta con saber el algoritmo que implementa. En el caso de los ataques DPA, no son importantes cada uno de los valores de consumo en cada 1En esta Tesis, nos referiremos a ataques DPA de primer orden como ataques DPA, quedando fuera del estudio de esta Tesis los ataques de orden superior. 25
Capítulo 2 Vulnerabilidad de circuitos criptográficos frente a SCAs CIFRADOR 0110010 0101110 1010110 1101011 1010101 0000011 Plaintext Ciphertext Key?? D=(d1, d2,…,dd) K=(k1, k2,…,kl) C=(c1, c2,…,cd) Figura 2.2.: Esquema básico de funcionamiento de un cifrador. instante durante el periodo de encriptación del que se tiene la traza de consumo. Los ataques DPA intentan asociar una parte de la función de encriptado en un instante determinado de tiempo que depende del dato que se está procesando. Por lo tanto, se puede decir que los ataques DPA se focalizan exclusivamente en la dependencia de los datos con la traza de consumo medida. Ahora planteamos la estrategia a seguir en la realización de un ataque DPA para obtener la clave secreta que utiliza el dispositivo criptográfico. Como información de partida tenemos el algoritmo que implementa el dispositivo, que es de dominio público y por tanto conocido, el plaintext y el ciphertext, accesibles por el atacante, y por último el consumo de potencia del dispositivo durante el encriptado. El ataque consta de 5 pasos que se describen a continuación [2]. 1. Selección de una operación ejecutada por el algoritmo durante la encriptación que implique la clave y el texto de entrada o salida. Dado que el algoritmo es conocido por el atacante, el primer paso de un ataque DPA es escoger una operación que se realice en el algoritmo en el que conozcamos parte de la información que use tanto datos de texto de entrada o salida (suponemos por simplicidad que la dependencia es con la entrada d) como datos de la clave (k), es decir una función f(d,k), donde des una matriz conocida compuesta por datos de entrada, y kes otra matriz con todos los posibles valores de la clave. 26
2.2 Ataques DPA: Bases 2. Medida de las trazas de consumo. En este paso se ejecuta la operación del dispositivo criptográfico donde mediremos el consumo de potencia de éste durante su ejecución. Para cada bloque de datos de entrada se va construyendo la matriz D= (d1, d2, ..., dd), donde dise corresponde con cada dato conocido en la iésima ronda de ejecución. Durante cada una de esas ejecuciones se mide el consumo de potencia del dispositivo y se almacena la traza de consumo correspondiente a dicha transición. Se construye entonces la matriz T, teniendo para cada dato de entrada disu traza de consumo ti= (ti,1, ti,2, ..., ti,n)correspondiente, siendo nla longitud de la traza (número total de puntos muestreados en la medida del consumo). Con esto podemos definir las dimensiones de T, que tendrá dfilas y ncolumnas.En la medida de las trazas y en la construcción de la matriz, hay que tener especial cuidado en tener todas las trazas bien alineadas, ya que la relación de los datos de entrada con los resultados de consumo dependen de la operación que se esté realizando en un instante de tiempo determinado. 3. Calcular los valores hipotéticos intermedios. El siguiente paso en el ataque DPA es calcular los valores hipotéticos intermedios para cada una de las posibles claves k. Para ello hay que centrarse en una operación del algoritmo en la que intervengan los valores de entrada y la clave f(d, k). Para cada uno de los datos de entrada dise calcularán los valores que tomará el algoritmo en el punto de ataque f(di, kj)para cada una de las posibles claves kjde la matriz K= (k1, k2, ..., kl), donde les el número total de posibles claves. De este paso obtenemos la matriz de valores hipotéticos V, que se define como: Vi,j =f(di, kj)con i= 1,2..., d yj= 1,2, ..., l. La matriz Vtendrá tantas filas como datos de entrada dtengamos, y tantas columnas como posibles claves. 4. Asignar los valores hipotéticos intermedios a valores de consumo de potencia. En este paso hay que transformar los valores de Va la matriz H, que contendrá los valores hipotéticos de consumo de potencia para cada dato y clave. La matriz Htendrá las mismas dimensiones que la matriz V. Para asignar a los datos valores de potencia hay que utilizar unos modelos de potencia cuya elección determinará en gran medida el éxito del ataque [2]. Los 3 modelos de potencia más conocidos son [2]: 27
Capítulo 2 Vulnerabilidad de circuitos criptográficos frente a SCAs Algoritmo 2.1 Pseudocódigo del algoritmo AES [2] Entrada: AES_Algorithm (byte in[16], byte out[16], word w[44]) 1: byte state[4,4] 2: state = in 3: AddRoundKey(state, w[0,3]) 4: for round = 1 step 1 to 9 do 5: SubBytes(state) 6: ShiftRows(state) 7: MixColumns(state) 8: AddRoundKey(state, w[round ·4,(round + 1) ·4 - 1]) 9: end for 10: SubBytes(state) 11: ShiftRows(state) 12: AddRoundKey(state, w[40,43]) 13: out=state Algoritmo 2.2 Pseudocódigo de la expansión de clave del AES [2] Entrada: AES_KeyExpansion (byte key[16]) 1: RC[1,2,...,10] = (’01’,’02’,’04’,’08’,’10’,’20’,’40’,’80’,’1B’,’36’) 2: Rcon[i] = (RC[i],’00’,’00’,’00’) 3: for round = 0 step 1 to 3 do 4: w[i] = (key[4 ·i], key[4 ·i + 1], key[4 ·i + 2], key[4 ·i + 3]) 5: end for 6: for round = 4 step 1 to 43 do 7: temp = w[i - 1] 8: if (i mod 4 == 0) then 9: temp = SubWord(RotWord(temp)) xor Rcon[i/4] 10: end if 11: w[i] = w[i-4] xor temp 12: end for 34
2.3 Medidas de vulnerabilidad sobre el cifrador de bloque AES s0s4s8s12 s1s5s9s13 s2s6s10 s14 s3s7s11 s15 state d0d4d8d12 d1d5d9d13 d2d6d10 d14 d3d7d11 d15 plaintext Figura 2.7.: Carga del plaintext en el estado. de 11 veces el tamaño de la clave inicial, es decir, 11 bloques de clave diferentes que se utilizarán para el cifrado. Función AddRoundKey() Realiza la operación XOR del bloque de estados con la clave expandida de cada ronda (ver Figura 2.8). s0s4s8s12 s1s5s9s13 s2s6s10 s14 s3s7s11 s15 b0b4b8b12 b1b5b9b13 b2b6b10 b14 b3b7b11 b15 k0k4k8k12 k1k5k9k13 k2k6k10 k14 k3k7k11 k15 state roundKey newState Figura 2.8.: Función AddRoundKey(). Función SubBytes En esta función se aplica la transformación del bloque de estados con la Sbox8 del AES byte a byte como se muestra en la Figura 2.9. Un bloque Sbox (Substitution Box), es un componente básico de los algoritmos de clave simétrica que se utiliza 35
Capítulo 2 Vulnerabilidad de circuitos criptográficos frente a SCAs para romper la relación existente entre el plaintext y el ciphertext, transformando el dato a la entrada de la Sbox de nbits a un dato de salida de la misma longitud. s0s4s8s12 s1s5s9s13 s2s6s10 s14 s3s7s11 s15 b0b4b8b12 b1b5b9b13 b2b6b10 b14 b3b7b11 b15 state newState Sbox Figura 2.9.: Función SubBytes(). Función ShiftRows La función ShiftRows(), que se muestra en la Figura 2.10, simplemente rota cada una de las filas de la matriz del estado. La primera fila del estado del AES no varía, mientras que la segunda rota una posición, la tercera fila rota 2 posiciones y la última rota 3 posiciones, siempre realizando la rotación hacia la izquierda. La elección del número de posiciones rotadas por fila está relacionada con los requisitos de difusión del algoritmo. s0s4s8s12 s1s5s9s13 s2s6s10 s14 s3s7s11 s15 s0s4s8s12 s5s9s13 s1 s10 s14 s2s6 s15 s3s7s11 state newState Figura 2.10.: Función ShiftRows(). 36
2.3 Medidas de vulnerabilidad sobre el cifrador de bloque AES Función MixColumns La función MixColumns() multiplica el estado S por una matriz de datos fijos, tal y como se muestra en la Figura 2.11. s0s4s8s12 s1s5s9s13 s2s6s10 s14 s3s7s11 s15 state newState b0b4b8b12 b1b5b9b13 b2b6b10 b14 b3b7b11 b15 2 3 1 1 1 2 3 1 1 1 2 3 3 1 1 2 Figura 2.11.: Función MixColumns(). 2.3.2. Ejemplo de ataque DPA El primer paso en la realización del ataque DPA es la selección del punto de ataque. El punto crítico de este algoritmo se encuentra en la operación SubBytes, es decir, en la salida de la Sbox8 del AES [2]. En este punto tenemos que intervienen tanto la clave como el plaintext que componen el estado y se transforman después de la operación SubBytes a un nuevo estado. Como el AES opera en diferentes rondas, tenemos varios instantes de ataque a lo largo de la encriptación, ya que la operación SubBytes se realiza 10 veces. Los puntos escogidos como ataque suelen ser la primera y la última ronda, ya que en la primera tenemos como dato el plaintext y en la última ronda el ciphertext. En el caso de atacar la primera ronda, se tiene que el estado actual es el resultado de la operación AddRoundKey entre el plaintext y la primera clave expandida. Aunque el ataque es viable en esta ronda, se han reportado ataques más efectivos realizándolos en la última ronda, siendo esta la más extendida entre los atacantes. 37
Capítulo 2 Vulnerabilidad de circuitos criptográficos frente a SCAs Para evitar el nivel de seguridad que supone el uso de claves largas (128 bits, 2128 posibles claves), se aplica la estrategia de divide y vencerás, atacando byte a byte, recuperando en cada ataque 8 bits (256 posibles claves) hasta recuperar los 128 bits de clave. En el caso de la última ronda tenemos que el ciphertext se mezcla con la clave expandida de la última ronda, tal y como se muestra en la Figura 2.12. Podemos apreciar en la ecuación de b0 que la operación ShiftRows no afecta en la primera fila del estado. El estado intermedio de la encriptación (B), se va obteniendo aplicando las funciones del cifrador a la inversa. De este modo, tendremos los valores antes y después de la Sbox, que son los que se utilizarán para calcular la distancia de Hamming y por consiguiente, el consumo hipotético de potencia de la Sbox durante la encriptación en la última ronda de operación. c0c4c8c12 c1c5c9c13 c2c6c10 c14 c3c7c11 c15 k0k4k8k12 k1k5k9k13 k2k6k10 k14 k3k7k11 k15 AddRoundKey() Ciphertext RoundKey ShiftRows() SubBytes() b0b4b8b12 b1b5b9b13 b2b6b10 b14 b3b7b11 b15 Sbox8 State b0 = InvSbox8(c0 k0) Figura 2.12.: Última ronda de ataque en AES. Una vez escogido el punto de ataque del cifrador al que se va a atacar, el siguiente paso es medir las trazas de consumo durante la encriptación de un número elevado de plaintexts para la misma clave secreta. Para mostrar este ejemplo de ataque al cifrador AES, vamos a realizar un ataque experimental sobre una implementación del AES en FPGA. Los elementos utilizados en el setup de medida son los siguientes: ordenador, FPGA SAKURA-G (Side-channel AttacK User Reference Architecture) [63], osciloscopio y fuente de alimentación. Sincronizando todos los equipos, 38
2.3 Medidas de vulnerabilidad sobre el cifrador de bloque AES FPGA Principal (AES) FPGA Control Power USB to PC Figura 2.13.: Elementos PCB SAKURA. podremos medir de forma precisa el consumo de potencia del cifrador durante la encriptación, obteniendo la clave secreta tras procesar los datos almacenados. A continuación explicamos con detalle los pasos y cada uno de los elementos que componen el ataque. 1. FPGA (SAKURA-G) Para la implementación del AES y comunicación con el ordenador vamos a utilizar la placa SAKURA-G. La placa SAKURA está especialmente diseñada para realizar ataques SCA. Dispone de dos FPGAs, una denominada como FPGA de control (una Spartan- 6 XC6SLX9 de Xilinx) y la otra FPGA principal (Spartan-6 XC6SLX75 de Xilinx), tal y como se muestra en la Figura 2.13. En la FPGA de control se implementa la parte de la comunicación entre la PCB (Printed Circuit Board) y el ordenador (a través de un puerto USB). Además de ser la encargada de recibir los plaintext del ordenador y transmitir de vuelta los ciphertexts generados por la FPGA principal, se encarga de generar todas las señales de control para el bloque AES. La FPGA de control es, en resumen, la intermediaria entre el ordenador y la FPGA principal que contiene el cifrador. 39
Capítulo 2 Vulnerabilidad de circuitos criptográficos frente a SCAs La FPGA principal es la encargada de implementar el circuito criptográfico, en este caso, el algoritmo AES. Como se trata de un ejemplo de ataque, la implementación del AES utilizada es la proporcionada por los propios diseñadores de la placa SAKURA. Para poder medir el consumo de la FPGA principal donde está implementado el AES, la SAKURA dispone de dos medios diferentes: podemos medir la diferencia de voltaje en los bornes de la resistencia R12, redondeada en color verde en la Figura 2.13, o podemos utilizar el amplificador indicado en la Figura 2.13 con color rojo. Como con la segunda opción solo necesitaremos un canal del osciloscopio y no precisa realizar ningún procesado adicional, tomaremos esta opción como la más adecuada para nuestro caso de estudio. 2. Osciloscopio Vamos a disponer de un osciloscopio (modelo Tektronik DPO3034 de 2.5GS/s) para medir las trazas de consumo de nuestro circuito. Como vamos a utilizar la salida del amplificador, necesitaremos dos sondas: una para el punto de medida de consumo de la FPGA principal, y otra para la señal de disparo. 3. Fuente de alimentación Se va a utilizar una fuente de alimentación externa (modelo TTi PL330DP) para alimentar la PCB y la FPGA SAKURA-G a 5V. La fuente, aunque programable, se va a conectar de forma manual al inicio del experimento debido a que no se necesita realizar ninguna variación en la configuración a lo largo del test. 4. Ordenador Utilizaremos el ordenador (Intel core i7 de 8GB de memoria RAM con sistema operativo Windows 7 Professional) para diferentes tareas. En primer lugar será el encargado de gestionar el paso de adquisición de trazas con un script. En una segunda parte, una vez almacenados todos los datos tras la encriptación, un segundo script lanzará el ataque sobre estos datos determinando la clave secreta. Para la adquisición de las trazas, se utiliza un script en Python. Con este script en primer lugar se realizará la configuración del osciloscopio y la conexión con 40
2.3 Medidas de vulnerabilidad sobre el cifrador de bloque AES la placa SAKURA, como se muestra en la Figura 2.14. A continuación, se le aplicarán plaintexts aleatorios (en este experimento 5000) y se medirán las trazas de consumo durante la encriptación. Una vez finalizada la captura de datos, se almacenan los cipehrtexts y las trazas de consumo en dos matrices para su posterior procesado en Matlab. El proceso de medida de las 5000 trazas tarda en torno a 15 minutos. SAKURA-G Config. Config. AES Control Data Figura 2.14.: Esquemático de ataque experimental. Mediante un programa en Matlab, se leerán los datos almacenados de trazas de consumo y ciphertext y se procesarán para determinar la clave correcta. En primer lugar se ha seleccionado como punto de ataque la salida de 8 bits de la Sbox8 del AES en su última ronda. A continuación, se han medido las trazas de consumo de potencia durante la encriptación. En este punto, el script de Matlab carga las matrices de datos. Seguidamente determina a partir de los ciphertext aplicados y todas las posibles claves (256), todos los valores hipotéticos intermedios (en la Figura 2.12 la matriz B). Aplicando la distancia de Hamming, se calcula la matriz de valores hipotéticos de consumo del AES para cada encriptación y todas las posibles claves. Finalmente, se realizará la función de correlación entre las trazas de consumo medidas con los valores hipotéticos de consumo obtenidos. Aquella clave que muestre mayor valor de correlación destacando sobre las demás será la correspondiente a la 41
Capítulo 2 Vulnerabilidad de circuitos criptográficos frente a SCAs Puntos muestreados Correlación Clave correcta Figura 2.15.: Resultados del ataque al AES para el byte 0. clave correcta. El ataque en Matlab tarda apenas 2 segundos para cada byte de la clave. Este proceso en Matlab se repetirá 16 veces para cada byte de la matriz de clave, obteniendo finalmente todos los valores de k0,k1, ..., k15. El ataque completo se realiza por tanto en torno a los 16 minutos. Resultados del ataque DPA Los resultados del ataque experimental sobre una implementación del AES en FPGA se muestran a continuación. En la Figura 2.15 se muestran los valores de correlación para cada una de las 256 posibles claves de un byte de la matriz de claves. Se puede apreciar que la clave correcta destaca claramente sobre las demás, que se mantienen dentro de un rango de aproximadamente ±0.07. En la Figura 2.16 se pueden ver los valores de correlación en el punto de máxima correlación obtenido, en función 42
2.3 Medidas de vulnerabilidad sobre el cifrador de bloque AES Plaintexts Correlación Clave correcta Figura 2.16.: Resultados del ataque al AES para el byte 0 en función de los plaintext aplicados. del número de plaintexts aplicados. Al aplicar pocos patrones de entrada, no somos capaces de determinar cuál es la clave correcta. Sin embargo, aplicando en torno a los 200 plaintexts, conseguimos que la clave correcta se separe de las incorrectas mostrando un ataque satisfactorio. Esto nos demuestra que, aunque el algoritmo AES es matemáticamente seguro, su implementación física en la FPGA nos da información a través del consumo de potencia durante la encriptación que nos sirve para determinar la clave secreta. Además de medir el consumo de potencia, se puede tener acceso a otro tipo de información como pueden ser los tiempos de ejecución o emisión electromagnética, entre otros. Como ejemplo de la efectividad de los ataques SCA, se muestra a continuación un breve ejemplo de ataque DEMA experimental sobre la misma implementación del AES. 43
Capítulo 2 Vulnerabilidad de circuitos criptográficos frente a SCAs +4.5 -4.5 Puntos muestrados Valor t Figura 2.21.: Resultado del t-test para el test1 “fixed vs random”. nuevo cifrador que nos permita aprender más sobre este tipo de ataques. Como el AES es un cifrador de bloque, vamos a optar en este caso por un cifrador de flujo, Trivium, del que no se han reportado ataques experimentales y que además no tiene ataques teóricos que recuperan la clave completa sin tener que realizar ninguna hipótesis final [15,53,66]. 2.4. Ataque DPA al cifrador de flujo Trivium El estudio presentado en esta sección se muestra en CV. 16. 50
2.5 Optimización del ataque DPA al cifrador Trivium +4.5 -4.5 Puntos muestrados Valor t Figura 2.22.: Resultado del t-test para el test1 y test 2 “fixed vs random” superpuestos. 2.5. Optimización del ataque DPA al cifrador Trivium El estudio presentado en esta sección se muestra en CV. 13. 2.6. Conclusiones Para medir el nivel de seguridad de los circuitos criptográficos existen diferentes métricas y técnicas de evaluación. Para una primera fase de diseño se utilizarán medidas indirectas como son el NED y NSD que nos permiten tener una aproximación del nivel de seguridad esperado a través de una pequeña simulación eléctrica. Sin embargo, para determinar de forma precisa el nivel de seguridad alcanzado, es mejor 51
Capítulo 2 Vulnerabilidad de circuitos criptográficos frente a SCAs implementar otras técnicas como pueden ser ataques DPA/DEMA. El inconveniente de estas medidas es que no son inmediatas, hay que implementar el cifrador completo o la parte crítica, y además diseñar la estrategia de ataque. Si nos encontramos con un número elevado de posibles propuestas, esta tarea puede resultar inabordable y tendremos que optar en primer lugar por medidas como NED y NSD para realizar un primer filtrado de potenciales implementaciones seguras. El t-test nos ayuda a determinar si las propuestas son vulnerables o no. Para entender las medidas de vulnerabilidad presentadas, se han propuesto de forma experimental un ataque DPA, un ataque DEMA y un t-test sobre el cifrador AES implementado sobre una FPGA. Tanto los ataques DPA como DEMA han resultado efectivos recuperando la clave en ambos casos. A su vez, el t-test nos ha mostrado que la implementación del AES no era segura ya que sobrepasaba los valores umbrales fijados. Aunque las tres medidas son válidas para determinar si un diseño es seguro, vamos a optar por implementar a partir de ahora ataques DPA por varios motivos. El primero de ellos es que los ataques DPA se pueden realizar de forma experimental o por simulación de forma relativamente sencilla, sin embargo los ataques DEMA por simulación serían muy costosos e inabordables. Por otra parte los ataques DPA nos permiten comparar dos implementaciones y determinar cual de ellas es más segura. En cambio, los t-test no son adecuados para implementarlos por simulación y solo determinan si una implementación es segura, es decir, no indican el nivel de seguridad alcanzado frente a un ataque y, por tanto, no permiten comparar una implementación con otra. Para evaluar la robustez de los ataques se han realizado, a diferentes temperaturas y con variación de la clave, ataques DPA y DEMA sobre una implementación AES en FPGA, variando la temperatura en 10, 25, 50 y 70ºC, para dos claves K1 y K2 diferentes. Los resultados han mostrado que los ataques DPA son más efectivos que los DEMA, mientras que las variaciones de temperatura y clave no muestran una influencia decisiva. Hemos podido apreciar que para una misma temperatura, el nivel de seguridad alcanzado para dos claves diferentes varía, por lo que se aconseja que las medidas de seguridad se determinen para el mayor número de claves posibles promediando finalmente el resultado. Una vez estudiados los ataques DPA en un cifrador de bloque ampliamente utilizado y atacado, pasamos a proponer nuevas estrategias de ataque, en este caso para 52
2.6 Conclusiones un cifrador de flujo: Trivium. Se ha planteado una nueva estrategia de ataque donde modelando exclusivamente el consumo de la puerta XOR previa al estado S94, se consigue revelar la clave secreta sin realizar ninguna hipótesis. El ataque se ha implementado por simulación recuperando la clave correcta para varios ejemplos. Finalmente, se ha propuesto una mejora para optimizar el ataque al Trivium, basada en la identificación del patrón resultante en las curvas de correlación. Con esta técnica, se consigue reducir el número de patrones aplicados en un 91.25% si lo comparamos con la técnica original de detección del valor de máxima correlación. 53
3. Diseño de contramedidas DPA a nivel de transistor La seguridad de un criptocircuito viene determinada por la elección del algoritmo criptográfico y la longitud de la clave, ya que los algoritmos tienen que ser matemáticamente seguros y utilizar una clave lo suficientemente larga para evitar ataques por fuerza bruta. Por ejemplo, en algoritmos lightweight, el NIST indica que claves con menos de 56 bits no son seguras debido al nivel computacional existente hoy en día y recomienda que el nivel de seguridad mínimo expresado en numero de bits sea de 112 bits para alcanzar un compromiso adecuado entre complejidad hardware y nivel de seguridad [10]. Pero ya se ha visto que debido a su implementación física puede haber fugas de información que pueden ser utilizadas por un atacante para revelar la clave secreta. Desde el año 1999, cuando Kocher mostró que los ataques de potencia podían revelar la clave secreta de un dispositivo criptográfico de forma muy efectiva [30], se ha realizado un gran estudio sobre el diseño de diferentes contramedidas a diferentes niveles de abstracción. Debido a que los ataques de potencia son los más efectivos, han sido numerosas las propuestas de contramedidas presentadas frente a este tipo de ataques [2,59,67–70]. En este capítulo de la Tesis, vamos a proponer contramedidas frente a ataques DPA a nivel de transistor, tal y como se muestra en la Figura 3.1. Los resultados obtenidos en este capítulo se presentaron en [CV.1], [CV.5], [CV.17] y [CV.18]. 55
Capítulo 3 Diseño de contramedidas DPA a nivel de transistor Puerta (Lógico) Algoritmo Transistor (Eléctrico) Físico (Geométrico) Trivium, AES, KASUMI, ... Metal Polisilicio Layout Arquitectura (Nivel RT) Figura 3.1.: Niveles de abstracción en cryptocircuitos: nivel de transistor. 3.1. Estado del arte de contramedidas DPA El objetivo de las contramedidas DPA es desvincular el consumo de potencia del circuito con el dato procesado durante el encriptado/desencriptado, haciendo difícil (o imposible) adivinar la clave oculta con un esfuerzo razonable. Hay numerosas formas de clasificar las contramedidas DPA, en esta Tesis las dividiremos esencialmente en dos grupos: técnicas de enmascaramiento masking y de ocultación hiding [2]. Dentro de cada uno de los grupos, se pueden clasificar a su vez en contramedidas software o contramedidas hardware, sin embargo, debido a la naturaleza de este estudio, dejaremos de lado las contramedidas software y nos centraremos únicamente en contramedidas hardware. A su vez, tanto las técnicas de 56
3.1 Estado del arte de contramedidas DPA masking como las de hiding se podrán aplicar a nivel de arquitectura o a nivel e celda. La idea básica de las técnicas de masking es aleatorizar los valores intermedios que son procesados por el dispositivo criptográfico. Para ejecutar las operaciones intermedias del criptocircuito, se utilizan máscaras mque se mezclan con los datos reales a procesar, desvinculando por tanto el consumo de potencia con el dato real procesado. Estas técnicas permiten obtener consumos de potencia independientes del dato procesado sin tener que cambiar las características de consumo del circuito, ya que lo que se consigue es enmascarar el dato real procesado. Las técnicas de masking se pueden aplicar a su vez a nivel de arquitectura o a nivel de celda, tal y como se muestra en la Figura 3.2. Las contramedidas de masking a nivel de arquitectura consisten en seleccionar una operación intermedia del dispositivo, donde el dato a procesar se mezcla con la mascara, de tal forma que la siguiente operación que se realice opere con un dato “transformado” en vez de procesar el dato real a cifrar, teniendo un consumo de potencia diferente al esperado. Las técnicas a nivel de celda sin embargo, no se focalizan en una operación en concreto, sino que se aplican a más bajo nivel, utilizando los Masked Logic Styles (estilos lógicos “enmascarados”) [2] como pueden ser MDPL (Masked Dual-rail Precharged Logic) [71] e iMDPL (improved Masked Dual-rail Precharged Logic) [67]. En este caso, el criptocircuito se implementa utilizando celdas lógicas que utilizan una máscara asociada a cada una de las señales que procesa. La principal ventaja del uso de este tipo de celdas frente a contramedidas aplicadas a nivel de arquitectura, es que no son dependientes del algoritmo que se esté implementando, siendo aplicables de la misma forma independientemente del algoritmo utilizado pudiéndose automatizar. Para mostrar un ejemplo del uso de técnicas de masking en resistencia frente a ataques DPA, el Apéndice A muestra un ataque DPA realizado al AES con contramedidas de masking, realizado colateralmente al desarrollo de esta Tesis. Por otra parte, nos encontramos con las contramedidas de hiding, que también las podemos dividir en técnicas aplicadas a nivel de arquitectura o a nivel de celda, tal y como se muestra en la Figura 3.3. 57
Capítulo 3 Diseño de contramedidas DPA a nivel de transistor MASKING Arquitectura Celda Enmascarar Operaciónes Masked Logic Styles Celda sin Masking Celda con Masking a bq a bq mq ma mb Data “a” Masked data “am” Mask “m” Operación intermedia con Masking Sbox Data “a” Sbox q q Operación intermedia sin Masking Figura 3.2.: Clasificación de contramedidas masking. Las contramedidas de hiding buscan esconder el consumo real del criptocircuito haciéndolo independiente del dato procesado. Esto se puede lograr de dos formas: haciendo que el circuito consuma potencia de forma aleatoria o haciendo que el criptocircuito consuma siempre lo mismo en cada ciclo de reloj . Para conseguir estos objetivos, dentro de las contramedidas de hiding a nivel de arquitectura, podemos realizar dos cambios en el criptocircuito: variar la temporización o variar la potencia. Para variar la temporización, por ejemplo, se pueden añadir operaciones aleatorias dentro del algoritmo, donde ya no se procesen las mismas operaciones que en el algoritmo original, obteniendo por tanto un consumo aleatorio en función de las operaciones realizadas. Para realizar variaciones en la potencia, podemos añadir por ejemplo un generador de ruido aleatorio que enmas- 58
3.1 Estado del arte de contramedidas DPA care el consumo de potencia del algoritmo, haciendo que el consumo aportado por el generador de ruido sea superior al del algoritmo. Estas contramedidas sin embargo, son dependientes del algoritmo implementado o elevan enormemente el consumo de potencia y área del criptocircuito. HIDING Arquitectura Celda Variar Temporización Variar Potencia Celdas Estándar Celdas Full-Custom Algoritmo Implementación sin Hiding Implementación con Hiding iVdd Algoritmo Generador de Ruido iVdd Celda sin Hiding (Ejemplo AND) Celda con Hiding (Ejemplo AND/NAND WDDL) a bq a bq a bq Oper. 1 Oper. 2 Dummy Oper. Oper. 1 Oper. 2 Implementación sin Hiding Implementación con Hiding Celda sin Hiding (Ejemplo AND) Celda con Hiding (Ejemplo AND/NAND SABL) a bq Figura 3.3.: Clasificación de contramedidas hiding. Por otra parte, las técnicas de hiding aplicadas a nivel de celda se basan en la implementación de celdas lógicas con consumo de energía teóricamente independiente de los datos que se procesan. El diseño de este tipo de celdas seguras ha sido una obsesión permanente en la criptocomunidad, porque se pueden usar para la implementación de hardware asociado a cualquier tipo de algoritmo criptográfico, tanto para criptosistemas de clave pública o de clave privada, independientemente de la aplicación específica y de la técnica de circuito empleada. Hay varios enfoques para crear contramedidas de hiding a nivel de celda con codificación complementaria y consumo de energía independiente de los datos procesados. Aquellos basados en lógica adiabática, como por ejemplo [72], ofrecen seguridad con muy bajos niveles de consumo de potencia, pero los diseños adiabáticos requieren una temporización 59
Capítulo 3 Diseño de contramedidas DPA a nivel de transistor La puerta tiene que tener exactamente un evento de carga por ciclo de reloj (α= 1). La celda lógica tiene que cargar la misma capacidad en todos los eventos de carga. Con un estilo lógico dinámico y diferencial se logra alcanzar α= 1, teniendo dos fases de operación alternadas, una de precarga y otra de evaluación, y lógica de doble raíl. En DPL, cada variable booleana aestá representada por un par de cables a,¯a. Cada cómputo comprende una precarga (donde a=¯a), seguida de una evaluación (donde a6= ¯a, siendo complementarias). En la fase de precarga, las salidas QyQ toman el mismo valor durante toda la precarga. En la evaluación, debido a que la lógica es diferencial, una de las ramas de salida conmutará de acuerdo con la función lógica que se implemente, quedando la otra con el valor complementario. Es decir, cualquiera que sea la situación de entrada, exactamente uno y solo uno de ay¯a, yQyQcambiará. El número de conmutaciones por ciclo de reloj es, por lo tanto, constante. De esta forma en cada ciclo de reloj siempre habrá una conmutación a la salida y α= 1. Para cumplir con el segundo punto, hay que asegurar que la capacidad en cada nodo sea la misma en cada uno de los eventos de carga de cada ciclo de reloj. Para ello, la celda tiene que ser completamente simétrica teniendo los nodos de salida balanceados. Es decir, la cantidad de carga puesta en juego en cada transición tiene que ser igual, independientemente de la rama diferencial que conmute, para toda combinación de entradas. Las estructuras diferenciales tienen dos salidas, a las que les corresponden una carga capacitiva total que es debida a la capacidad de salida de la puerta, la capacidad de las interconexiones y las capacidades internas de la puerta. El objetivo es conseguir la máxima simetría en las redes DPDN y DPUN. 3.3.1. Desarrollo del bloque DPUN El estilo lógico que consideramos más idóneo debido a las características que ofrece para aplicaciones criptográficas tiene que ser dinámico y diferencial. Pero para que sea realmente útil para este tipo de aplicaciones, hay que añadir que los nodos de salida estén balanceados, necesitándose una máxima simetría y por tanto la capacidad CLsea la misma en la ecuación 3.3 para toda transición de entrada. Esto es 66
3.3 Diseño de celdas DPL resistentes a DPA necesario porque si los nodos de las ramas diferenciales que unen la red DPDN con la DPUN están directamente conectados con los nodos de salida, como se muestra en la Figura 3.4, hacen que la capacidad de carga en los nodos de salida dependa de la red DPDN. En el caso de que las capacidades totales de los nodos de cada rama diferencial fuesen iguales, independientemente de la rama que conmute, el consumo de potencia siempre sería el mismo sean cuales sean las entradas que se estén procesando. Como las ramas diferenciales de la red DPDN no van a poder ser siempre simétricas debido a la complejidad de la función que implementen, hay que desarrollar algún mecanismo que iguale la tensión de los nodos de salida de la red DPDN al finalizar cada fase de precarga y evaluación, y evitar vestigios de carga que provoquen diferencias entre los consumos de cada transición de entrada. Estilo lógico SABL El estilo lógico denominado SABL [59], basado en el flip-flop StrongArm110 [80], es el que mejor cumple con los requisitos expuestos: es un estilo lógico dinámico y diferencial, y tiene los nodos de salida diferenciales balanceados. En la Figura 3.6 se muestra la estructura a nivel de transistor de una celda SABL. Su funcionamiento es el siguiente y se muestra el caso de una simulación de un inversor con estructura SABL (DPDN mostrado en la Figura 3.7) realizado en una tecnología TSMC de 90nm, a 1.2V en la Figura 3.8. Para la fase de precarga tendremos el valor de clk=’0’, en este caso el transistor T11 está cortado mientras que los transistores T6 y T8 están conduciendo fijando a ’1’ los nodos q,q, azúl (w) y rojo (w) de la Figura 3.6. Ambas salidas QyQtomarán el valor de ’0’ debido a que las entradas de los inversores de salida (T1 y T2 para la salida Q, y T3 y T4 para la salida Q) estan a valor ’1’. Con clk=’1’, estaremos en la fase de evaluación. En este caso el transistor NMOS T11 conectado a tierra estará conduciendo, haciendo que solo una de las ramas de la red DPDN se descargue dependiendo de la función lógica que implemente y del valor de las entradas, que serán efectivamente complementadas, ya que estas son diferenciales. En este punto vemos que el estilo lógico SABL cumple con las condiciones de ser 67
Capítulo 3 Diseño de contramedidas DPA a nivel de transistor Figura 3.6.: DPUN del estilo lógico SABL. un estilo lógico dinámico y diferencial. Para cumplir con la condición de simetría, nos fijamos en el transistor M que une los nodos qyq, los que conectan la red DPDN con la DPUN, que siempre está encendido, permite crear un camino que evita tener nodos flotantes garantizando que todos los nodos internos se descarguen. Independientemente de qué rama diferencial de la red DPDN esté conduciendo, todos los nodos internos y sus respectivas capacidades estarán conectadas a través de M y se descargarán junto con uno de los nodos de salida. Con esto conseguimos eliminar la información acerca de la conmutación que tuvo lugar con anterioridad eliminando un posible efecto memoria que pueda ser usado por un atacante. De esta forma tendremos a la salida siempre QQ = ”01” óQQ = ”10” en la fase de evaluación. Podemos ver que a la salida se incluyen dos inversores, de forma que puedan funcionar en modo dominó a la hora de conectar varias puertas en cascada. De todas las propuestas existentes en la literatura, hemos escogido el estilo lógico denomidado SABL por ser el que mejores resultados muestra en cuanto a seguridad. En cambio, debido a la complejidad del estilo lógico nos encontramos con un aumento considerable en área y consumo de potencia respecto a otras estructuras diferenciales 68
3.3 Diseño de celdas DPL resistentes a DPA Figura 3.7.: Esquemático de la red DPDN del Inversor. Figura 3.8.: Simulación del inversor SABL. y, por supuesto, respecto a la lógica estática convencional. En [81], se estudiaron alternativas a la lógica SABL para poder implementar celdas con la misma seguridad que la SABL pero reduciendo el consumo de potencia y área, proponiendo como alternativa la Dynamic Differential Cascode Voltage Switch Logic (DDCVSL) [82]. Estilo lógico DDCVSL En la Figura 3.9 se muestra la estructura de la DDCVSL. El funcionamiento de la DDCVSL es el siguiente y se muestra en la Figura 3.10 para el caso de un inversor DDCVSL. Al igual que en el caso SABL, nos encontramos en la fase de precarga con 69
Capítulo 3 Diseño de contramedidas DPA a nivel de transistor Q Inputs clk clk clk Q qq Inputs DPDN T1 T2 T3 T4 T5 T6T7 T8 T9 Figura 3.9.: DPUN del estilo lógico DDCVSL. clk=’0’. En este caso, los transistores T6 y T7 están conduciendo fijando las ramas roja (q) y azul (q) de la Figura 3.9 a ’1’. De esta forma las salidas QyQestarán a ’0’ debido a los inversores de salida formados por T1-T4. Como en la fase de precarga el transistor T9 está cortado, no habrá ninguna rama conduciendo a tierra. En caso de la evaluación, nos encontramos con clk=’1’. Ahora, el transistor T9 está conduciendo, haciendo que una de las ramas diferenciales se descargue dependiendo de la función lógica que implemente y obteniendo por tanto los valores QQ = ”01” óQQ = ”10” en la fase de evaluación. Debido a que la implementación DDCVSL es más simple que la SABL, se consiguen reducir tanto el consumo como el área, pero a costa de perder características necesarias para garantizar la seguridad. Se puede apreciar cómo con esta estructura no tenemos los transistores T7, T10 y M de la estructura SABL. Esto supone el no tener salidas balanceadas y tener las ramas diferenciales del DPDN directamente conectadas a la salida. Esto implica que la capacidad de carga dependerá del dato procesado siempre que la red DPDN no sea completamente simétrica. Además, al eliminar el transistor M, perdemos el 70
3.3 Diseño de celdas DPL resistentes a DPA 0 1 (V) 0 1 (V) 0 1 (V) 0 1 (V) 0 1 (V) 0 1 (V) 0 1 (V) 0 5 10 15 t(ns) Figura 3.10.: Simulación del inversor FLDS. camino de descarga que permitía conectar los nodos internos pudiendo quedar nodos flotantes. En esta Tesis vamos a trabajar con las redes DPUN SABL y DDCVSL. Con la primera opción buscamos la mayor seguridad posible a costa de un mayor consumo de potencia y área, mientras que con la red DDCVSL, queremos analizar el nivel de seguridad alcanzado reduciendo el área y consumo proporcionado, en relación a la SABL. 3.3.2. Desarrollo del bloque DPDN Aunque la red DPUN sea óptima en cuanto a seguridad, hay que eliminar cualquier variación de consumo debidas a asimetrías de las ramas diferenciales de la red DPDN. Además, como es el caso de la DDCVSL, el contar con el diseño de una red DPDN totalmente simétrica es de vital importancia para alcanzar los niveles de seguridad requeridos por las aplicaciones criptográficas resistentes a ataques de canal lateral [1]. En el DPDN, una y sólo una de las dos ramas se activará conectando a tierra uno de los nodos qoq, por lo que una de las ramas genera el valor de la función de la celda, mientras que la otra implementa la función complementaria. Para que la descarga 71
Capítulo 3 Diseño de contramedidas DPA a nivel de transistor de ambas ramas sean idénticas, la capacidad equivalente de la rama que descarga q tiene que ser la misma que la de q. Por ello, todas las capacidades que son internas de la propia puerta tienen que ser iguales en las dos ramas diferenciales. Por lo que se deben intentar cumplir los siguientes requisitos: Tener la mayor simetría posible entre las dos ramas diferenciales. Tener el mismo número de transistores en serie por rama, independientemente de las entradas que se procesen en cada evaluación. Conectar los nodos internos de las ramas diferenciales a los nodos de salida q yqmediante transistores en ON. Tener la salida de cada rama conectada al mismo número de transistores. Cumpliendo esto, conseguimos tener la misma equivalencia RC en cada una de las ramas, independientemente de las entradas que se estén procesando en el circuito. El caso ideal sería la solución alcanzada en el diseño del inversor. La red DPDN se muestra en la Figura 3.11-a, donde al solo tener un transistor por rama, atacados en su puerta por la entrada y su complementada, tenemos total simetría entre las dos ramas diferenciales, ademas de contar con el mismo número de transistores en serie y las dos ramas de salida están cargadas por el mismo número de transistores, no teniendo en este caso ningún nodo interno que descargar. Por tanto, para explicar mejor la complejidad del desarrollo de la red DPDN, vamos a escoger las funciones XOR/XNOR y AND/NAND de dos entradas mostradas en la Figura 3.11-b y Figura 3.11-c respectivamente, que son celdas básicas que se usan habitualmente en el diseño de dispositivos criptográficos. El bloque DPDN de la puerta XOR/XNOR en la Figura 3.11-b cumple con los requisitos que hemos mencionado anteriormente: las dos ramas son simétricas, tiene el mismo número de transistores por rama independientemente de las entradas que se procesen en cada ejecución (2), las dos salidas qyqestán cargadas por 2 transistores y los nodos internos n1 y n2 siempre tienen un camino de conexión en conducción con qyq. En la Tabla 3.3 se muestra detallado el funcionamiento de la red DPDN XOR/XNOR. Se puede apreciar que: qXOR =A·B+A·B(3.4) 72
3.3 Diseño de celdas DPL resistentes a DPA A A B B AA A BB qq a) b) n1 n2 qq T1 T2 T3 T4 T1 T2 T3 T4 T5 T6 c) A q T1 A q T2 n1 Figura 3.11.: Red DPDN inicial para los casos: a) inversor/buffer, b) XOR/XNOR, y c) AND/NAND. qXOR =A·B+A·B(3.5) Tabla 3.3.: Funcionamiento de la red DPDN XOR/XNOR A B T1 T2 T3 T4 T5 T6 n1 n2 q q 0 0 OFF ON OFF ON OFF ON q q 0 1 0 1 OFF ON ON ON OFF OFF q q 1 0 1 0 ON OFF OFF OFF ON ON q q 1 0 1 1 ON OFF ON OFF ON OFF q q 0 1 Pero en el caso de la puerta AND/NAND, mostrada en la Figura 3.11-c, apreciamos asimetría entre la dos ramas. Originalmente la función AND/NAND se construye con solo 4 transistores y se puede constatar el incumplimiento de todas las normas planteadas anteriormente. Las ramas no son simétricas, dependiendo del dato de entrada nos encontramos con que tenemos 1 ó 2 transistores en serie en ON por rama, el nodo interno n1 queda flotante en algunas combinaciones de datos de entrada, y por último la salida qestá conectada a 2 transistores, mientras que la salida qestá 73
Capítulo 3 Diseño de contramedidas DPA a nivel de transistor conectada a 1. En la Tabla 3.4 se muestra detallado el funcionamiento de la red DPDN AND/NAND de la Figura 3.11-c. En este caso tenemos: qAND =A+B(3.6) qAND =A·B(3.7) Tabla 3.4.: Funcionamiento de la red DPDN AND/NAND de la Figura 3.11-c A B T1 T2 T3 T4 n1 q q 0 0 OFF OFF ON ON - 0 1 0 1 OFF ON OFF ON - 0 1 1 0 ON OFF ON OFF q0 1 1 1 ON ON OFF OFF q1 0 Para mejorar la estructura del DPDN en los casos de mayor asimetría, en [1] se propone una metodología que permite mejorar el diseño de la red DPDN para aplicaciones criptográficas. Primero hay que conseguir que todos los nodos internos, en este caso n1, esté conectado a una de las ramas qoq. Para ello se hace la modificación mostrada en la Figura 3.12 aplicando la ley de absorción del álgebra de Boole a la rama qAND dejando igual la rama qAND: qAND =A+B=A·B+B(3.8) A continuación, se añaden los transistores dummy necesarios para que las ramas diferenciales tengan el mismo número de transistores en serie por transición. Para ello, se añadirá una llave de paso en el camino de descarga que tenga un menor 74
3.3 Diseño de celdas DPL resistentes a DPA A A B B qq T1 T2 T3 T4 n1 AA BB n1 T1 T2 T3 T4 qq Figura 3.12.: Red DPDN AND/NAND modificada para conectar el nodo n1 a q[1] . número de transistores en serie. En el caso de la puerta AND/NAND se aplicará el siguiente cambio a la rama qAND, tal y como se muestra en la Figura 3.13: qAND =A+B=A·B+ (A+A)·B(3.9) AA BB n1 T1 T2 T3 T4 qq AA BB n1 T1 T2 T3 T4 qq A T5 T6 n2 Figura 3.13.: Red DPDN AND/NAND modificada para tener el mismo número de transistores en serie por cada rama diferencial [1] . 75
4. Diseño de contramedidas DPA a nivel lógico y mejora de prestaciones El diseño de contramedidas para circuitos criptográficos frente ataques de canal lateral puede aplicarse a diferentes niveles de abstracción. Si bien en el capítulo anterior nos centrábamos en aplicar la seguridad a nivel de transistor, ahora pasamos a estudiar el nivel de seguridad alcanzado con propuestas aplicadas a nivel lógico o de puerta, ver Figura 4.1. En las últimas décadas, se ha realizado un esfuerzo enorme para aumentar y analizar la seguridad de las implementaciones lightweight de algoritmos criptográficos, incorporando también contramedidas SCA [CV.2, CV.3]. A pesar de la enorme gama de contramedidas desarrolladas, está claro que se debe trabajar más para proporcionar soluciones más seguras y eficientes desde el punto de vista del consumo de potencia y seguridad, dado el continuo avance en las estrategias y efectividad de los ataques. Cuando se diseñan criptocircuitos de bajos recursos, se debe garantizar una maximización de la seguridad y las prestaciones con un coste razonable. Sin embargo, estos tres aspectos, seguridad, prestaciones y coste, son fáciles de cumplir de dos en dos, pero muy difíciles de cumplir juntos. En este capítulo, se proponen diferentes métodos para intentar cumplir la mayor parte de los requisitos necesarios para implementaciones seguras, intentando mejorar tanto el consumo de potencia, como la frecuencia de operación, sin degradar otros aspectos importantes de los criptocircuitos, como la seguridad. Los resultados obtenidos en este capítulo se presentaron en [CV.1], [CV.10]. 83
Capítulo 4 Diseño de contramedidas DPA a nivel de puerta Puerta (Lógico) Algoritmo Transistor (Eléctrico) Físico (Geométrico) Trivium, AES, KASUMI, ... Metal Polisilicio Layout Arquitectura (Nivel RT) Figura 4.1.: Niveles de abstracción en criptocircuitos: nivel de puerta. 4.1. Trabajo previo Las contramedidas propuestas en el capítulo anterior consistían en la implementación de celdas lógicas DPL que conseguían teóricamente el mismo consumo de potencia con independencia del dato procesado, en cada ciclo de reloj. De esta forma, procesando las trazas de consumo no se revela información alguna de la clave que está utilizando el criptocircuito. Estas soluciones tienen como objetivo principal reducir la correlación entre el consumo con los datos procesados focalizándose en el consumo entre ciclos de ejecución (en ingles “inter-cycle”), es decir, haciendo que en cada ciclo de reloj el criptocircuito consuma la misma cantidad de energía. Sin 84
4.1 Trabajo previo embargo, la variación del consumo de potencia dentro de un mismo ciclo (en ingles “intra-cycle”) no se contempla. En [84], se estudia el efecto de variaciones intra-cycle en el consumo de potencia y su dependencia con los datos procesados. Se afirma que la resistencia de un circuito criptográfico frente a ataques DPA aumenta con la desalineación entre las diferentes transiciones de nodos de salida. Cuando se implementa físicamente un dispositivo criptográfico, las señales de salida no conmutan simultáneamente porque cada transición se produce en un instante de tiempo que depende de factores como las conmutaciones y pendientes de las señales de entrada, las capacidades de rutado y capacidades de salida, el tamaño de la puerta y el número de puertas por path, entre otros. La seguridad alcanzada por el criptocircuito frente a ataques de canal lateral se ve afectada por la hipótesis de la potencia consumida simultáneamente por el circuito tras conmutar varias salidas a la vez (por ejemplo, 9 bits de salida en la Sbox9 y 7 bits de salida en la Sbox7). Por ese motivo, la desalineación de las transiciones de los bits de salida hacen que el consumo de potencia de las mismas se vea distribuido a lo largo del tiempo, y la hipótesis realizada no sea la correcta debido a que esta contempla que el consumo de todos los bits de salida se realiza en un mismo instante de tiempo. Además, debido a la naturaleza de esta desalineación, el atacante no puede determinar los instantes de tiempo en que tendrán lugar las transiciones de cada bit de salida ya que no tiene información sobre la implementación física del algoritmo criptográfico. Estas desalineaciónes se pueden inducir de forma externa como es el caso de [84], donde incluyen elementos externos que retrasan las señales de los bits de salida de forma aleatoria para provocar una desalineación en los tiempos de llegada, o pueden deberse a retrasos inducidos por las técnicas de optimización utilizadas por la mayoría de las herramientas de síntesis automática, como son la minimización lógica o el uso de puertas con diferente fan-in. La primera opción implica introducir elementos externos a la implementación original que incrementan tanto el consumo como el área del criptocircuito. Por ese motivo, vamos a centrarnos en las técnicas de minimización lógica y el uso de celdas de diferente fan-in, para ver cuál es el impacto que provocan en los niveles de seguridad alcanzados. 85
Capítulo 4 Diseño de contramedidas DPA a nivel de puerta 4.2. Impacto de técnicas de minimización lógica y uso de puertas con diferente fan-in Las técnicas de minimización lógica se aplican en la mayoría de las herramientas de síntesis automática de diseño electrónico (del inglés Electronic Design Automation, EDA), optimizando las figuras de area-retraso-potencia para el diseño de ASICs de propósito general. Sin embargo, el diseño optimizado de circuitos con celdas DPL queda excluido en las herramientas EDA y, lo que es más importante, dichas herramientas no contemplan el aspecto más importante a considerar en los criptocircuitos: la seguridad. Las técnicas de optimización habituales pueden tener efectos negativos o positivos en la seguridad de las funciones implementadas frente a ataques DPA, por ese motivo, vamos a estudiar de forma independiente el impacto causado por la minimización lógica y el uso de puertas de diferente fan-in, como las diseñadas en el Capítulo 3. El estudio desarrollado en esta sección se ha presentado en CV. 1. 4.3. Arquitectura de criptocircuitos seguros para aplicaciones de alta velocidad Aunque la frecuencia máxima de operación o throughput no suele ser el factor limitante en los diseños criptográficos, vemos interesante el estudio de arquitecturas maximizando estas características de velocidad de cifrado. Además de esto, hay que mantener los niveles de seguridad requeridos para aplicaciones criptográficas seguras. Por esta razón, es interesante el realizar un estudio de la utilización de técnicas de implementación de alto rendimiento temporal así como diseños seguros con contramedidas frente a ataques de canal lateral [85–87]. Centrándonos en implementaciones de dispositivos electrónicos de altas prestaciones, hay numerosos trabajos que estudian el uso de pipelining muy fino para aumentar la frecuencia de operación, siendo esta un área de tremendo interés [88–91]. Estos estudios se centran en circuitos lógicos que por sí solos, pueden implementar arquitecturas pipeline sin el uso de elementos de memoria, como por ejemplo la lógica dinámica con sus fases de precarga y evaluación. Por ejemplo, en [88] se analiza el 86
4.4 Medida del nivel de seguridad de contramedidas aplicadas a nivel lógico uso de lógica domino aplicando técnicas de pipelining, donde se utiliza un esquema de reloj multifásico, y sin utilizar elementos de memoria adicionales. Mediante el uso de celdas lógicas dinámicas, podemos construir circuitos lógicos con pipeline sin elementos de memoria adicionales, obteniendo beneficios considerables en velocidad, gracias al uso de pipelining muy agresivo. En este subapartado de la Tesis, nos centraremos en el diseño de hardware de alta velocidad de dispositivos criptográficos con contramedidas para prevenir ataques pasivos no invasivos, donde señalaremos algunos aspectos importantes a tener en cuenta para poder conseguir el mejor compromiso en términos de seguridad y prestaciones. El estudio desarrollado en esta sección se ha presentado en CV. 10. 4.4. Medida del nivel de seguridad de contramedidas aplicadas a nivel lógico La variación en la temporización de los criptocircuitos tras aplicar técnicas de minimización lógica, el uso de celdas de fan-in elevado o el nivel de pipelining, implica cambios en las prestaciones del circuito e, indudablemente, en los niveles de seguridad frente ataques DPA. En general, si el circuito resultante tiene una mayor sincronización el los tiempos de llegada de los bits de salida, nos encontraremos con resultados de seguridad peores que en los casos en que las llegadas se produzcan en diferentes instantes de tiempo, a tenor de lo sugerido en [84]. Para poder evaluar de forma independiente cada una de estas técnicas, vamos a proponer diferentes casos de estudio, donde se implementaran de forma experimental parte de los criptocircuitos para ver cuál es el impacto real en el nivel de seguridad alcanzado. Para estas implementaciones, utilizaremos diferentes celdas propuestas en el capítulo anterior, ya que las contramedidas propuestas a nivel de transistor se pueden superponer a las técnicas de minimización lógica, fan-in opipelining, ya que están a diferentes niveles de abstracción siendo por tanto técnicas complementarias. 87
Capítulo 4 Diseño de contramedidas DPA a nivel de puerta 4.4.1. Ataque DPA a las implementaciones con minimización lógica y diferente fan-in El estudio desarrollado en esta subsección se ha presentado en CV. 1. 4.4.2. Ataques DPA a las implementaciones de alta velocidad El estudio desarrollado en esta subsección se ha presentado en CV. 10. 4.5. Conclusiones Tras evaluar diferentes contramedidas a nivel de transistor en el capítulo 3, donde nos centrábamos en aumentar la seguridad de las puertas diseñadas a costa de aumentar ligeramente el consumo, área y retraso, pasamos a intentar aumentar la seguridad a nivel lógico así como la mejora de prestaciones. Como las técnicas propuestas en ambos capítulos se aplican a diferentes niveles de abstracción, estas pueden aplicarse en un mismo diseño, siendo ambas complementarias. En primer lugar se han estudiado los efectos de la minimización lógica y el uso de celdas con fan-in superior a 2. Se ha demostrado cómo las variaciones en la distribución de retrasos en los caminos de los criptocircuitos puede afectar a los niveles de seguridad frente a ataques DPA. Esto se debe a que la desincronización de los tiempos de llegada de las transiciones de los bits de salida afecta negativamente a la seguridad, ya que en los ataques DPA multi-bit el atacante hace una hipótesis del consumo del criptocircuito para un instante de tiempo en concreto, suponiendo que todos los bits a los que ataca cambian o hacen un aporte al consumo de potencia en el mismo instante de tiempo. Si el aporte al consumo de potencia se dispersa a lo largo del tiempo debido a los diferentes instantes de llegada de las transiciones de los bits de salida, la efectividad del ataque disminuye, y por tanto la seguridad aumenta. El uso de minimización lógica y celdas con fan-in superior a 2, provoca variaciones en la temporización que pueden afectar de forma negativa o positiva a la seguridad y dependerán del circuito a implementar. Sin embargo, se consiguen en ambos casos 88
4.5 Conclusiones Tabla 4.1.: Resumen de los factores de multiplicación respecto a la Sbox9. Sbox MTD Potencia Retraso Duty SPD Area Avg. Cycle Sbox9_Minimized x2.15 x0.62 x1.13 x0.75 x3.06 x0.61 Sbox9_FanIn x1.92 x0.84 x1.10 x0.88 x2.09 x0.86 Sbox9_All x6.58 x0.51 x1.17 x0.75 x10.89 x0.53 Tabla 4.2.: Resumen de los factores de multiplicación respecto a la Sbox7. Sbox MTD Potencia Retraso Duty SPD Area Avg. Cycle Sbox7_FanIn x0.60 x0.86 x1.01 x0.94 x0.70 x0.9 Sbox7_All x2.04 x0.55 x1.23 x0.39 x3.02 x0.57 mejoras en cuanto a área y consumo de potencia. Para evaluar estos efectos, se han realizado diferentes implementaciones de la Sbox9 y Sbox7 que nos permiten evaluar de forma independiente el uso de celdas XOR de fan-in superior a 2, el uso de celdas AND con fan-in superior a 2, el uso de la minimización lógica, y la aplicación de ambas técnicas a la vez, junto con el uso de celdas DPL diseñadas en el Capítulo 3. Para evaluar los niveles de seguridad, se han realizado ataques DPA a todas las implementaciones. Como resumen, en la Tabla 4.1 y 4.2 se muestran el factor de multiplicación para cada característica (MTD, potencia, retraso, dutycycle, SPD y área) respecto a las implementaciones de referencia (Sbox9ySbox7) respectivamente. Se puede observar cómo la mayor seguridad se obtiene al combinar ambas técnicas tanto para la Sbox9 como Sbox7. Se puede apreciar que el uso de celdas de fan-in superior a dos en la Sbox7 afecta negativamente debido a la sincronización temporal derivada en la etapa AND. Por otra parte, los valores de consumo de potencia se ven reducidos en todos los casos, siendo más notable al aplicar ambas técnicas a la vez en las Sbox_All. Como dato a destacar tenemos el SPD, donde podemos ver el compromiso entre seguridad y prestaciones, donde llegamos a tener una mejora de hasta un factor de x10.89 en el caso de la Sbox9_All. 89
Capítulo 4 Diseño de contramedidas DPA a nivel de puerta Como la característica que mayor degradación obtiene es la frecuencia de operación, pasamos a evaluar dos métodos para técnicas de alta velocidad: la inserción de retrasos locales en la señal de reloj y el uso de un reloj trifásico con una sola celda por etapa del pipeline. En este caso, aunque se consiguen excelentes resultados en la frecuencia de operación y robustez de la celda, haciendo que no se estreche el ancho del pulso del dato de la señal de salida, se obtiene una degradación en la seguridad debido a la sincronización en los tiempos de ocurrencia de las transiciones de los bits de salida del criptocircuito. Si la aplicación requiere una alta frecuencia de operación, se tendrá que evaluar el nivel de seguridad alcanzado y ajustar ambos parámetros para obtener una buena relación seguridad-velocidad. 90
5. Diseño del demostrador criptográfico ASIC_CESAR Una vez analizadas las vulnerabilidades de los criptocircuitos, y tras proponer varias contramedidas a diferentes niveles de abstracción, pasamos a la implementación física de estas contramedidas. Por tanto ahora nos encontramos en el nivel físico (ver Figura 5.1), donde realizaremos los diseños full-custom de nuestras celdas e implementaremos los casos de estudio para poder incluirlos en un ASIC y así comprobar experimentalmente la efectividad de nuestras propuestas. El objetivo del diseño de este ASIC (llamado “CESAR” al igual que el proyecto donde está enmarcado), es la caracterización y verificación experimental de los niveles de seguridad y prestaciones alcanzados por cada contramedida. El alcanzar una alta frecuencia de operación no será objeto primordial de este diseño, centrándonos especialmente en las medidas de seguridad, área y consumo de potencia de los bloques criptográficos implementados, por lo tanto, no se incluirá el uso de técnicas de mejora de la frecuencia de operación del circuito ya que degradaba considerablemente la seguridad. El ASIC CESAR contiene un conjunto de bloques criptográficos usados como demostradores de las propuestas realizadas en la Tesis. Mencionar que, enmarcado dentro del proyecto CESAR, hay otra linea de investigación que utilizará parte el espacio del ASIC para diseñar sus bloques digitales (“Diseño 2”). Por ello, el espacio del ASIC se ha compartido, siendo aproximadamente el 60% perteneciente al trabajo desarrollado en esta Tesis (ver Figura 5.2). Para la integración se escogió la tecnología CMOS de 90nm de TSMC, en la que se han realizado todos los diseños y demostradores de esta Tesis. Se trata de una tecnología con un buen compromiso entre prestaciones y precio de integración, ampliamente utilizada con éxito en nuestro equipo de investigación en otros proyectos, como CriptoBio, MOBY-DIC o CITIES. 91
Capítulo 5 Diseño del demostrador criptográfico ASIC_CESAR Para poder realizar de forma automática el place&route, se necesitará la descripción de alto nivel de las celdas de librería y los ficheros de configuración para la herramienta de place&route. 5.2.1. Metodología de diseño de la librería La metodología de diseño seguida para la creación de la librería CESAR es la mostrada en la Figura 5.4. Como ejemplo, vamos a mostrar el proceso de diseño de la puerta XOR/XNOR2 tipo SABL. El punto de partida es el esquemático de la celda a nivel de transistor, ver Figura 5.5. El proceso de dimensionado de los transistores se ha discutido en el Capítulo 2 y se incluye en el Apéndice B. Los esquemáticos y dimensiones de los transistores de todas las celdas diseñadas se muestran en el Apéndice D. Una vez verificada su correcta funcionalidad tras varias simulaciones eléctricas pasamos a crear el layout. Para la realización del layout hay que cumplir con dos requisitos fijados por la herramienta automática de place&route: que las celdas tengan una altura en concreto y que la anchura sea múltiplo de un valor fijo1. Esto se debe a que en caso de tener que realizar un diseño donde se deban utilizar tanto las celdas de la librería estándar como las nuestras, estas tienen que ser compatibles para que la herramienta de place&route pueda emplazarlas y conectar correctamente los raíles de alimentación entre ambas. El layout para el caso de ejemplo se muestra en la Figura 5.6. Para la realización del layout se han utilizado 3 niveles de metal (el metal-1 se corresponde con el color celeste, metal-2 amarillo y metal-3 verde oscuro) para todas las celdas diseñadas. El acceso a los pines de entrada y salida se realiza a través del metal-3, dejando los raíles de alimentación a metal-1. Para la creación de los layout, se ha mantenido en la parte central el diseño correspondiente a la estructura común entre las celdas, es decir, en el caso del ejemplo los transistores T1-T11 y transistor M. Los transistores que implementan la funcionalidad de la celda (en el ejemplo T12- T17) se emplazan en los laterales del layout manteniendo la mayor simetría posible y utilizando los caminos idénticos de metal en cada una de las ramas diferenciales. 1No se indica en esta Tesis el valor del múltiplo de la anchura, ni la altura de las celdas, por motivos de confidencialidad. 98
5.2 Diseño de las celdas de la librería CESAR Simulación Exportar .lef Crear layout Crear Esquemático OK? si Check LVS/DRC ... OK? Crear vista Calibre (parásitos) si Simulación OK? no no no Crear abstract si Figura 5.4.: Flujo de diseño de librería CESAR. 99
Capítulo 5 Diseño del demostrador criptográfico ASIC_CESAR Q clk clk clk Q Mw AA A BB w T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T16 T14 T15 T17 Figura 5.5.: Esquemático de la celda XOR/XNOR2 tipo SABL. Pendiente de publicación. Figura 5.6.: Layout de la celda XOR/XNOR2 tipo SABL. 100
5.2 Diseño de las celdas de la librería CESAR Para conseguir un diseño lo más compacto posible de las ramas diferenciales y poder realizar conexiones directas entre drenador y fuente de los transistores, se ha hecho uso de los grafos de Euler (en la teoría de grafos, un camino euleriano es un camino que pasa por cada arista una y solo una vez). En nuestro caso específico, cada uno de los transistores de la red DPDN serán una arista del grafo, mientras que los vértices serán las conexiones entre los nodos de los transistores. Como ejemplo se muestra la Figura 5.7. Se puede ver que si realizamos el camino 4¯ A1A2B3¯ B4A5¯ A2pasamos por cada uno de los caminos, una y solo una vez. Podremos compartir drenador/fuente entre los transistores que compartan el mismo nodo, por ejemplo, los transistores A y¯ Acomparten drenador/fuente en la Figura 5.8. AA A BB 2 15 3 4 3 2 15 4 A AA A BB Figura 5.7.: Grafo de Euler correspondiente al DPDN de la celda XOR/XNOR2. Pendiente de publicación. Figura 5.8.: Ejemplo de emplazamiento de los transistores Ay¯ Aen XOR/XNOR2 tipo SABL. Siguiendo esta metodología de diseño de los layout, conseguimos reducir el área de las puertas, sobre todo en los casos de 3 y 4 entradas de las celdas XOR/XNOR. La información de los layout generados se muestran en la Tabla 5.1. Se puede apreciar que los layout con menor área se corresponden con las puertas DDCVSL, reduciéndose el área un 31.03% en el caso AND/NAND y un 24.14% en 101
Capítulo 5 Diseño del demostrador criptográfico ASIC_CESAR Tabla 5.1.: Información de los layout de la librería CESAR. Puerta Entradas Salidas Transistores Ancho(µm) Inv/Buff SABL 3 2 14 7.00 AND/NAND2 SABL 5 2 18 8.12 AND/NAND2_P SABL 5 2 19 8.12 AND/NAND2 DDCVSL 5 2 16 5.60 XOR/XNOR2 SABL 5 2 18 8.12 XOR/XNOR2_2P SABL 5 2 20 8.12 XOR/XNOR2 DDCVSL 5 2 16 6.16 XOR/XNOR3 SABL 7 2 26 9.24 XOR/XNOR4 SABL 9 2 42 15.04 el caso XOR/XNOR respecto a las SABL clásicas. Por otra parte, podemos ver que las puertas SABL clásicas tienen la misma anchura que las SABL con las soluciones dual/single-switch. Esto se debe a que al incluir los transistores de la red DPDN en el layout, en el caso de la SABL clásica necesitamos tener esa anchura para poder mantener la simetría de la red DPDN, quedando un hueco en la parte superior a ambos lados del layout. La parte superior del layout está reservada para los transistores PMOS, mientras que en la parte inferior están emplazados los transistores NMOS, por lo que se aprovechan los huecos superiores a los lados de las implementaciones SABL clásicas para incluir los transistores P en el caso de las soluciones dual/single-switch. Finalmente, podemos observar que añadir una entrada a la celda XOR/XNOR aumenta su área un 13.78%, siendo en el caso de la XOR/XNOR de 4 entradas un 89.66 %. Tras crear el layout, se realizan diferentes chequeos como el LVS (Layout vs Schematic), donde se comprueba que el layout se corresponde con el esquemático diseñado, así como pasar el DRC (Design Rule Check) para comprobar que se cumplen las normas de diseño impuestas por el fabricante. Una vez superados estos chequeos, el siguiente paso es generar una vista del diseño con la extracción de los parásitos (vista 102
5.3 Diseño de las Sbox9 formato Calibre). De esta forma, podremos realizar una simulación post-layout verificando su funcionalidad con los parásitos obtenidos tras la implementación física. Cuando las simulaciones satisfagan los requisitos necesarios para nuestra implementación, podemos pasar a extraer el fichero LEF, donde figura la información física de nuestra celda (vista abstract del extraído del layout, ver Figura 5.9). Los datos que se indican en el fichero son por ejemplo los niveles de metal utilizados y su posicionamiento, pines de entrada y salida, etc. Pendiente de publicación. Figura 5.9.: Abstract de la celda XOR/XNOR2 tipo SABL. Estos pasos se realizarán para cada una de las celdas diseñadas (ver Apéndice D), obteniendo finalmente un único archivo LEF que utilizaremos para la herramienta de place&route. 5.3. Diseño de las Sbox9 Para realizar el diseño de las Sbox9, vamos a partir del esquemático de cada implementación, del cual extraeremos la descripción a nivel de puertas (netlist Verilog) dentro de la herramienta Virtuoso de Cadence. Los pasos a seguir en esta parte del diseño, que se corresponderían con el back-end de un diseño digital convencional, son los mostrados en la Figura 5.10. En primer lugar, dentro de la herramienta de place&route automático, Encounter de Cadence, cargamos el netlist y el fichero LEF con la información sobre la librería de celdas CESAR. A continuación, creamos el anillo con las alimentaciones para el bloque Sbox9. Después añadimos las celdas de librería y hacemos el routing automático del diseño. Tras realizar las verificaciones del diseño y estando todo correcto, generamos el archivo GDSII para importar la información del layout obtenido a la siguiente herramienta. Para continuar con las verificaciones, dentro de la herramienta Virtuoso de Cadence, importamos el layout de la Sbox9. Tras comprobar las reglas DRC y confirmar que el LVS es correcto, al igual que hacíamos con las celdas individuales, se extraen 103
Capítulo 5 Diseño del demostrador criptográfico ASIC_CESAR los parásitos del layout generando a su vez una vista Calibre para su simulación. Con la vista calibre, se realizan simulaciones eléctricas donde comprobamos que la funcionalidad de la celda es la esperada. Tras realizar este procedimiento con todas las Sbox9 propuestas, podemos dar por concluida la etapa de diseño de los bloques criptográficos. La información del número de celdas utilizadas en cada caso, así como las dimensiones finales del layout de cada Sbox9 implementada se muestran en la Tabla 5.2. Los layout finales de cada implementación se muestran en la Figura 5.11, donde se ha mantenido la relación de tamaños entre las diferentes Sbox9 para apreciar el área ocupada por cada implementación. Para más detalles del diseño y simulación de las Sbox9, consultar el Apéndice E. Se puede apreciar cómo las Sbox9 SABL y la SABL_2P/P son las que más área ocupan. Si le asignamos el 100 % de área a las Sbox9_SABL y SABL_2P/P, tenemos que le siguen la SABL_FanIn y SABL_DDCVSL con un 84.29% y un 80.38% respectivamente. Es interesante el dato obtenido por la propuesta DDCVSL, ya que 104
5.3 Diseño de las Sbox9 Crear anillos alimentación Archivo .lef Librería CESAR Añadir celdas de librería Routing Verificar diseño Exportar GDSII Importar GDSII Crear vista Calibre (parásitos) Check LVS/DRC ... OK? si no Netlist Verilog Simulación eléctrica OK? no Layout OK si EDI Encounter, CADENCE Virtuoso, CADENCE Herramienta: Back-end (Implementación Física) Crear esquemático Figura 5.10.: Flujo de diseño del demostrador Sbox9. 105
Capítulo 5 Diseño del demostrador criptográfico ASIC_CESAR comparada con la SABL_2P/P se consigue reducir un 19,62% el área con el uso del DPUN DDCVSL. Si seguimos analizando los datos, tenemos que la SABL_Shared y SABL_All se reducen a un 72.37% y a un 62.27% respectivamente. Finalmente, como esperábamos, la implementación CMOS con celdas estándar es aquella que menos área ocupa. Tabla 5.2.: Numero de celdas y dimensiones de las Sbox9. SABL DDCVSL STD Classic 2P/P Shared FanIn All INV. STD - - - - - - 5 INV. SABL - - 2 - - - - AND2 STD - - - - - - 86 AND2 SABL 86 - 36 86 36 - - AND2 SABL_P - 86 - - - - - AND2 DDCVSL - - - - - 86 - XOR2 STD - - - - - - 92 XOR2 SABL 92 - 73 - 20 - - XOR2 SABL_2P - 92 - - - - - XOR2 DDCVSL - - - - - 92 - XOR3 SABL - - - 40 16 - - XOR4 SABL - - - 4 7 - - Ancho (µm)106.60 106.60 88.51 97.35 83.54 95.36 69.13 Alto (µm)98.16 98.16 85.56 90.60 78.00 88.20 65.40 Area (µm2)10463.86 10463.86 7572.92 8819.91 6516.12 8410.75 4521.10 Area( %) 100% 100% 72.37% 84.29% 62.27 % 80.38% 43.21% 106
5.3 Diseño de las Sbox9 Pendiente de publicación. (a) Sbox9 SABL. Pendiente de publicación. (b) Sbox9 SABL_2P/P. Pendiente de publicación. (c) Sbox9 SABL_Shared. Pendiente de publicación. (d) Sbox9 SABL_FanIn. Pendiente de publicación. (e) Sbox9 SABL_All. Pendiente de publicación. (f) Sbox9 DDCVSL. Pendiente de publicación. (g) Sbox9 STD. Figura 5.11.: Layout de las Sbox9. 107
Capítulo 5 Diseño del demostrador criptográfico ASIC_CESAR Para iniciar la encriptación, fijaremos la señal control=“10”. Durante el encriptado, pasaremos por 4 estados independientes donde activaremos los diferentes registros de los bloques “topSbox”. Primero se realiza la carga de key ypt activando la señal EN_IN, seguida de la activación de EN_XOR en el estado “ENCRYPT_XOR”. En este punto, tenemos almacenado en el registro Reg_XOR el valor de la operación XOR entre el pt ykey. Finalmente, activamos EN_SboxIN para que las entradas pasen a la Sbox9 mientras que en el siguiente estado se activa la señal EN_SboxOUT que realiza el muestreo de la salida de las Sbox9. Una vez finalizada la fase de encriptado, se leen los datos de salida de la Sbox9 y se envían al exterior activando la señal o_valid que nos mostrará que los datos de salida en o_Sbox son datos válidos. IDLE LOAD control=’01' control≠’10' READY control=’10' ENCRYPT SEND ENCRYPT XOR ENCRYPT SboxIN ENCRYPT SboxOUT SEND_IN SEND EN_IN=’1' EN_XOR=’0' EN_SboxIN=’0' EN_SboxOUT=’0' o_valid=’0' EN_IN=’0' EN_XOR=’1' EN_SboxIN=’0' EN_SboxOUT=’0' o_valid=’0' EN_IN=’0' EN_XOR=’0' EN_SboxIN=’1' EN_SboxOUT=’0' o_valid=’0' EN_IN=’0' EN_XOR=’0' EN_SboxIN=’0' EN_SboxOUT=’1' o_valid=’0' EN_IN=’0' EN_XOR=’0' EN_SboxIN=’0' EN_SboxOUT=’0' o_valid=’0' EN_IN=’0' EN_XOR=’0' EN_SboxIN=’0' EN_SboxOUT=’0' o_valid=’1' EN_IN=’1' EN_XOR=’0' EN_SboxIN=’0' EN_SboxOUT=’0' o_valid=’0' EN_IN=’0' EN_XOR=’0' EN_SboxIN=’0' EN_SboxOUT=’0' o_valid=’0' EN_IN=’0' EN_XOR=’0' EN_SboxIN=’0' EN_SboxOUT=’0' o_valid=’0' Figura 5.17.: Diagrama de estados del bloque “controlASIC”. 114
5.4 Diseño del bloque de control En la Tabla 5.6 se muestra la descripción de las entradas y salidas del bloque. Tabla 5.6.: Entradas y salidas del bloque controlASIC del ASIC CESAR. Nombre Dirección Descripción y comentarios data Entrada Entrada serie de datos control<1:0>Entrada Señal de control clk Entrada Señal de reloj reset Entrada Señal de reset in_Sbox<8:0>Entrada Dato de salida de la Sbox9 resetSbox Salida Señal de reset para las Sbox EN_IN Salida Enable de los registros Reg_key y Reg_pt EN_XOR Salida Enable del registro Reg_XOR EN_SboxIN Salida Enable del registro Reg_SboxIN EN_SboxOUT Salida Enable del registro Reg_SboxOUT controlSboxIN<6:0>Salida Señales de activación de las entradas a las Sbox9 controlSboxOUT<6:0>Salida Señales de activación de las salidas a las Sbox9 testPos<1:0>Salida Señales de control de la posición a testar testBit<3:0>Salida Señales de control del bit a testar test Salida Señales de control de activación del modo test o_Sbox<8:0>Salida Salida de la Sbox9 o_valid<8:0>Salida Señal de activación del dato válido key<8:0>Salida 9 bits de clave plaintext<8:0>Salida 9 bits de plaintext 115
Capítulo 5 Diseño del demostrador criptográfico ASIC_CESAR 5.4.3. Bloque “topASIC” El bloque superior es “topASIC”, en el cual se instancian los bloques “topSbox” y “controlASIC”, y es el encargado de interconectar cada uno de los bloques, así como gestionar la funcionalidad de test y habilitar cada una de las Sbox9 en función de las señales de control. La Figura 5.18 muestra el esquemático del bloque “topASIC”, donde las Sbox9 se muestran en verde no siendo estas parte del bloque. data clk control reset o_Sbox Sbox-b I/O Sbox1 I/O Sbox2 I/O Sbox3 I/O Sbox4 I/O Sbox5 I/O Sbox6 Test test o_Sbox Bit_test o_valid 2 controlASIC clkOut Mux topSbox0 topSbox1 topSbox2 topSbox3 topSbox4 topSbox5 topSbox6 Sbox-a I/O Sbox0 Sbox-c Sbox-d Sbox-e Sbox-f Sbox-g Figura 5.18.: Esquemático del bloque “topASIC”. El bloque contiene entradas y salidas que se conectarán finalmente a los pads de entrada/salida del ASIC y a las Sbox9 full-custom (ver Tabla 5.7). Aclarar que las señales de entrada a las Sbox9 son los 9 bits de entrada (XSbox) y sus complementadas (XSboxc), además de la señal de clk. Por otra parte, tenemos que los datos que recibe de la Sbox9 son las salidas YSbox y sus complementadas YSboxc. Por lo tanto, tenemos 19 bits de entrada y 18 bits de salida para cada Sbox9. En la Tabla 5.7 se muestran las entradas y salidas a las Sbox9 como I/O_Sbox. 116
5.4 Diseño del bloque de control Tabla 5.7.: Entradas y salidas del bloque topASIC del ASIC CESAR. Nombre Dirección Descripción y comentarios data Entrada Entrada serie de datos control<1:0>Entrada Señal de control clk Entrada Señal de reloj clkOUT Entrada Señal de reloj de muestreo reset Entrada Señal de reset o_Sbox<8:0>Salida Salida de la Sbox9 o_valid<8:0>Salida Señal de activación del dato válido I/O_Sbox Entrada/Salida Entradas y salidas de la Sbox9 Este bloque a su vez controla qué Sbox9 se va a habilitar en función de las señales de control procesadas desde el bloque “controlASIC”. Para los ataques DPA, vamos a activar una sola Sbox9 en cada encriptación, aislando de esta forma el consumo de potencia a medir. Por lo tanto, tendremos que habilitar únicamente las entradas de la Sbox objetivo. Sin embargo, para tener más versatilidad en el circuito, hemos planteado la posibilidad de poder activar tantas Sbox9 como sean necesarias para el test, de esta forma podremos medir el consumo de una, dos o incluso todas las Sbox en funcionamiento. Esto se controla a través de la señal controlSboxIN de 7 bits. Cada uno de los bits de controlSboxIN (Tabla 5.5 y 5.6) se corresponde con una Sbox9, el bit menos significativo o bit 0 habilitaría la Sbox_a, el bit 1 habilitaría la Sbox_b y así sucesivamente. Por ejemplo, con controlSboxIN igual a “0000100” estaríamos habilitando la Sbox_c, mientras que con controlSboxIN igual a “0100011” estaríamos habilitando la Sbox_a, Sbox_b y Sbox_f. De la misma forma, tenemos la señal controlSboxOUT para fijar qué datos se mostrarán a la salida. A la salida únicamente vamos a poder observar el resultado encriptado de una Sbox9. Por lo que controlSboxOUT tendrá sólo un bit activado. Al igual que en el caso de controlSboxIN, el bit 0 se corresponde con la Sbox_a, el bit 1 con la Sbox_b y así sucesivamente. 117
Capítulo 5 Diseño del demostrador criptográfico ASIC_CESAR Por otra parte tenemos el modo test, donde la señal de salida test del bloque “controlASIC” determina si estamos en modo de funcionamiento normal (test igual a 0) o en modo test (test igual a 1). Si test está fijada a ’0’, a la salida veremos los datos de la salida de la Sbox9 testada. En caso de estar en modo test, el bloque “topA- SIC” determina qué valor fijar a la salida. Para ello, tenemos dos señales de control del test que tenemos que valorar: testPos ytestBit. La primera de ellas determina qué posición queremos ver a la salida, mientras que la segunda determina el bit que queremos observar. Para el testado vamos a tener 4 posiciones diferentes: valor del plaintext, valor de la clave, dato de entrada a la Sbox9 (XSbox) y dato de salida de la Sbox9 (YSbox). De esta forma, en caso de recibir datos erróneos tras el encriptado, vamos a poder chequear si la clave y plaintext son los fijados desde el exterior y se reciben correctamente. En caso de que esta comprobación sea correcta, podemos determinar si el error se encuentra antes de la Sbox9 comprobando que el valor de la operación XOR entre la key yplaintext es el esperado. Finalmente, podremos comprobar que si la entrada a la Sbox9 (XSbox) es la correcta y la salida (YSbox) es erronea, se trata de un error en la Sbox9 o su conexionado, mientras que si nuevamente este dato es el esperado, se trataría de un error de muestreo o conexionado final. Esta posición se determina con el valor de la señal testPos de 2 bit (ver Figura 5.19), siendo “00” para testar el plaintext, “01” para la clave, “10” para la entrada a la Sbox9 y “11” para la salida de la Sox9. Sbox9 key plaintext XSbox YSbox testPos(“01”) testPos(“10”) testPos(“00”) testPos(“11”) Figura 5.19.: Posición de test en función de la señal testPos. 118
5.4 Diseño del bloque de control Tabla 5.8.: Bit de salida en modo test en función de testBit. testBit Bit testado "0000" Bit 0 "0001" Bit 1 "0010" Bit 2 "0011" Bit 3 "0100" Bit 4 "0101" Bit 5 "0110" Bit 6 "0111" Bit 7 "1000" Bit 8 Una vez fijada la posición a testar, seleccionamos mediante la señal de testBit el bit que queremos observar a la salida. En este caso, esta señal consta de 4 bits, y el bit que se mostrará en cada caso a la salida es el mostrado en la Tabla 5.8. Con los bloques presentados hasta ahora, tenemos control completo sobre las Sbox9 a testar, incluyendo además un modo test para poder detectar posibles errores en el diseño o en la fabricación, así como versatilidad para la medición del aporte en el consumo de potencia de las diferentes Sbox9, pudiendo activar tantas como sea necesario. 5.4.4. Flujo de diseño del circuito de control Para realizar con éxito la implementación del circuito de control “topASIC”, es necesario seguir rigurosamente la metodología de diseño de nuestro bloque digital, que es la mostrada en la Figura 5.20. En este caso, el circuito se ha implementado siguiendo una metodología de diseño semi-custom con herramientas de diseño automático comerciales. 119
Capítulo 5 Diseño del demostrador criptográfico ASIC_CESAR Descripción Verilog RTL Simulación funcional Test-bench Síntesis lógica Simulación post-síntesis Place & Route Simulación post-layout TSMC 90nm Tech. Library Layout GDSII Netlist Verilog Retro-anotación SDF Anotación SDF Netlist Verilog Restricciones SDC Modelsim, Mentor Graphics Design Vision, Synopsys Front-end (Síntesis digital) Back-end (Implementación Física) Modelsim, Mentor Graphics EDI Encounter, CADENCE Herramienta Modelsim, Mentor Graphics Figura 5.20.: Flujo de diseño digital. 120
5.4 Diseño del bloque de control El diseño completo se puede dividir en dos fases: front-end (diseño lógico) y back-end (implementación física). Dentro de la parte de front-end se encuentra el diseño lógico a nivel RTL, realizando la descripción hardware del circuito en lenguaje Verilog. Una vez descrito el bloque, se comprueba su correcto funcionamiento a través de una simulación funcional en Modelsim, de Mentor Graphics. A continuación, tras seleccionar la tecnología de TSMC90nm, se realiza la síntesis lógica en la herramienta Design Vision de Synopsys. Tras anotar en un fichero la información temporal obtenida y el netlist Verilog a nivel de puerta, se realiza nuevamente la misma simulación, pero esta vez incluyendo los ficheros temporales obtenidos con la tecnología seleccionada. Los datos de implementación obtenidos tras la síntesis son los siguientes: Número de puertos: 1407 Número de interconexiones: 2742 Número de celdas: 1502 Área combinacional: 4705.646492 Área Inversores-Buffers: 232.848008 Área no combinacional: 7182.302595 Consumo de potencia interno de las celdas: 130.8064 uW (99%) Consumo de potencia de las interconexiones: 1.1220 uW (1%) Consumo de potencia dinámico total: 131.9284 uW (100 %) Consumo de potencia de leakage de las celdas: 600.1616 nW Una vez comprobada la correcta funcionalidad del sistema, pasamos a la parte de implementación física o back-end, donde realizamos la creación de los anillos de alimentación, el emplazamiento, la generación del árbol de reloj y rutado de las celdas. Para ello, utilizamos la información proporcionada por la herramienta de síntesis lógica, en la herramienta de place&route (EDI Encounter de Cadence). Tras realizar este paso, obtenemos el layout de nuestro circuito. Se realizan nuevamente simulaciones post-layout realizando verificaciones funcionales y temporales con los parásitos obtenidos de la implementación física. Una vez comprobada la funcionalidad de nuestro circuito, tenemos que el layout definitivo del bloque de control es el mostrado en la Figura 5.21 y tiene un área total de 181.32x142.45µm2. 121
Capítulo 5 Diseño del demostrador criptográfico ASIC_CESAR Pendiente de publicación. Figura 5.21.: Layout del bloque de control. 5.5. Diseño final Para realizar el diseño final del ASIC, el paso restante es el emplazamiento y conexionado de todos los bloques Sbox9, el bloque de control y el anillo de pads. En primer lugar, comentar que el anillo de pads del ASIC CESAR (de 68 pines en total), así como la configuración de los pads de salida (en esta tecnología el fabricante proporciona únicamente pads bidireccionales, siendo tarea del diseñador configurarlos como pads de entrada o salida), fue realizada por otros diseñadores, por lo que no ha sido objeto de esta Tesis. Tras realizar el emplazamiento y conexionado de todos los bloques, se realizaron las verificaciones descritas por el fabricante (reglas DRC) y se verificaron que las descripciones a nivel de esquemático del circuito y el layout definitivo (LVS) eran correctas. Una vez finalizadas todas las comprobaciones, se generó el fichero en formato GDSII para su envío a fábrica, a través del programa miniASIC de Europractice. En la Figura 5.22 ser muestra el layout final con su conexionado entre los bloques y los pads. Se puede observar en la parte superior del ASIC nuestro diseño, mientras que en la parte inferior está el diseño digital correspondiente al otro proyecto. Pendiente de publicación. Figura 5.22.: Layout del ASIC CESAR. El bonding final del ASIC con el encapsulado (JLCC-68) se muestra en la Figura 5.23. La relación entre los pines y las señales de entrada/salida y alimentación se muestra en la Tabla 5.9. Pendiente de publicación. Figura 5.23.: Bonding ASIC CESAR. 122
5.5 Diseño final Tabla 5.9.: Relación de pines y señales de entrada/salida. Pin Nombre Dirección Descripción y comentarios 1VDD6 Alimentación/Tierra Alimentación del core Sbox-g (1.2V). 68 VSS6 Alimentación/Tierra Masa del core Sbox-g. 67 VDD5 Alimentación/Tierra Alimentación del core Sbox-f (1.2V). 66 VSS5 Alimentación/Tierra Masa del core Sbox-f. 65 VDD2 Alimentación/Tierra Alimentación del core Sbox-c (1.2V). 64 VSS2 Alimentación/Tierra Masa del core Sbox-c. 63 VDD4 Alimentación/Tierra Alimentación del core Sbox-e (1.2V). 62 VDD_RING_1 Alimentación/Tierra Alimentación del anillo 1 (2.5V) parte Crypto. 59 VSS_RING_1 Alimentación/Tierra Masa del anillo 1 parte Crypto. 58 VSS4 Alimentación/Tierra Masa del core Sbox-e. 57 VDD3 Alimentación/Tierra Alimentación del core Sbox-d (1.2V). 56 VSS3 Alimentación/Tierra Masa del core Sbox-d. 55 VDD1 Alimentación/Tierra Alimentación del core Sbox-b (1.2V). 54 VSS1 Alimentación/Tierra Masa del core Sbox-b. 53 VDD0 Alimentación/Tierra Alimentación del core Sbox-a (1.2V). 52 VSS0 Alimentación/Tierra Masa del core Sbox-a. 51 VSS_CORE_1 Alimentación/Tierra Masa del core 1 parte Crypto. 50 VDD_CORE_1 Alimentación/Tierra Alimentación del core 1 (2.5V) parte Crypto. 49 VDD_CORE_2 Alimentación/Tierra Alimentación del core 2 (2.5V) parte Control. 48 VSS_CORE_2 Alimentación/Tierra Masa del core 2 parte Control. 47 data Input Entrada data al bloque de Control 46 reset Input Entrada reset al bloque de Control 45 VSS_RING_2 Alimentación/Tierra Masa del anillo 2 parte Control. 41 VDD_RING_2 Alimentación/Tierra Alimentación del anillo 2 (2.5V) parte Control. 40 control<1>Input Bit 1 de la entrada control al bloque de Control 39 control<0>Input Bit 0 de la entrada control al bloque de Control 38 clk Input Entrada clk al bloque de Control 37 clkOUT Input Entrada clkOUT al bloque de Control 36 o_Sbox Output Salida o_Sbox al bloque de Control 35 o_valid Output Salida o_valid al bloque de Control Resto - Input/output No conectado o del bloque diseño 2. 123