E0 es un cifrado de flujo utilizado en el protocolo Bluetooth . Genera una secuencia de números pseudoaleatorios y la combina con los datos mediante el operador XOR . La longitud de la clave puede variar, pero generalmente es de 128 bits.
En cada iteración, E0 genera un bit utilizando cuatro registros de desplazamiento de diferentes longitudes (25, 31, 33, 39 bits) y dos estados internos, cada uno de 2 bits de longitud. En cada tic del reloj, los registros se desplazan y los dos estados se actualizan con el estado actual, el estado anterior y los valores en los registros de desplazamiento. Luego se extraen cuatro bits de los registros de desplazamiento y se suman. El algoritmo realiza una operación XOR que suma con el valor en el registro de 2 bits. El primer bit del resultado se envía para la codificación.
E0 se divide en tres partes:
La configuración del estado inicial en Bluetooth utiliza la misma estructura que el generador de flujo de bits aleatorios. Por lo tanto, se trata de dos algoritmos E0 combinados. En la primera etapa se produce un estado inicial de 132 bits utilizando cuatro entradas (la clave de 128 bits, la dirección Bluetooth en 48 bits y el contador maestro de 26 bits). A continuación, la salida se procesa mediante una operación polinómica y la clave resultante pasa por la segunda etapa, que genera el flujo utilizado para la codificación. La clave tiene una longitud variable, pero siempre es un múltiplo de 2 (entre 8 y 128 bits). Generalmente se utilizan claves de 128 bits. Estas se almacenan en los registros de desplazamiento de la segunda etapa. A continuación, se producen 200 bits pseudoaleatorios mediante 200 ticks de reloj y los últimos 128 bits se insertan en los registros de desplazamiento. Es el estado inicial del generador de flujo.
Se han realizado varios ataques e intentos de criptoanálisis de E0 y del protocolo Bluetooth, y se han encontrado varias vulnerabilidades. En 1999, Miia Hermelin y Kaisa Nyberg demostraron que E0 podía ser violado en 2 64 operaciones (en lugar de 2 128 ), si se conocen 2 64 bits de salida. [1] Este tipo de ataque fue mejorado posteriormente por Kishan Chand Gupta y Palash Sarkar. Scott Fluhrer, un empleado de Cisco Systems , encontró un ataque teórico con un precálculo de 2 80 operaciones y una complejidad de búsqueda de clave de aproximadamente 2 65 operaciones. [2] Dedujo que la seguridad máxima de E0 es equivalente a la proporcionada por claves de 65 bits, y que las claves más largas no mejoran la seguridad. El ataque de Fluhrer es una mejora con respecto al trabajo anterior de Golic, Bagini y Morgari, quienes idearon un ataque de 2 70 operaciones sobre E0.
En 2000, el finlandés Juha Vainio mostró problemas relacionados con el mal uso de E0 y, de manera más general, posibles vulnerabilidades en Bluetooth. [3]
En 2004, Yi Lu y Serge Vaudenay publicaron un ataque estadístico que requería los 24 primeros bits de 2,35 tramas Bluetooth (una trama tiene una longitud de 2745 bits). La complejidad final para recuperar la clave es de aproximadamente 2,40 operaciones . El ataque se mejoró a 2,37 operaciones para el precálculo y 2,39 para la búsqueda de la clave real. [4] [5]
En 2005, Lu, Meier y Vaudenay publicaron un criptoanálisis de E0 basado en un ataque de correlación condicional. Su mejor resultado requirió los primeros 24 bits de 2 23,8 tramas y 2 38 cálculos para recuperar la clave. Los autores afirman que "este es claramente el ataque de texto plano más rápido y práctico conocido contra el cifrado de Bluetooth en comparación con todos los ataques existentes". [6]
{{cite book}}
: |journal=
ignorado ( ayuda ){{cite journal}}
: Requiere citar revista |journal=
( ayuda ){{cite book}}
: |journal=
ignorado ( ayuda ){{cite book}}
: |journal=
ignorado ( ayuda )Mantenimiento de CS1: falta la ubicación del editor ( enlace )