Un cifrado de bloques es una permutación pseudoaleatoria indexada por clave en el espacio de bloques: para una clave dada < em> K , AES asigna bloques de 128 bits a bloques de 128 bits, de manera que no se asignan dos valores de bloque de entrada distintos al mismo valor de bloque de salida. El conocimiento de K también permite un cálculo eficiente de la permutación inversa.
Un cifrado de bloque puede usarse como elemento de construcción para varios procesos, incluyendo (pero no limitado a):
- cifrado simétrico de mensajes largos arbitrarios, utilizando varios modo de operación ;
- funciones hash, por ejemplo, con Merkle – Damgård o alguna otras construcciones ;
-
algoritmos MAC , con (por ejemplo) CBC-MAC;
- generación de identificadores únicos, pseudoaleatorios y verificables (mis valores sucesivos de cifrado de un contador en un rango determinado).
Un cifrado de flujo es un algoritmo especializado que cubre solo el "cifrado simétrico de arbitrariamente Mensajes largos "caso de uso. La esperanza es que al restringirnos a ese uso único, podamos diseñar un algoritmo más eficiente. La competencia eSTREAM dio como resultado una cartera de cifrados de flujo aparentemente seguros que de hecho son más rápidos que el cifrado basado en AES en un número de arquitecturas (por ejemplo, en una CPU Core2 x86 de 2,4 GHz, puedo hacer AES a 160 MBytes / s, mientras que el cifrado de flujo de Sosemanuk alcanza los 700 MBytes / s en el mismo hardware).
Tenga en cuenta, sin embargo, que el "cifrado simétrico solamente" es restrictivo: en muchas situaciones donde el cifrado simétrico es deseable, también debe agregar controles de integridad, es decir, algún tipo de MAC. Los cifrados de flujo no hacen MAC, mientras que hay modos de cifrado autenticados que permiten convertir un cifrado de bloque en cifrado y MAC, con relativamente poca sobrecarga en comparación con el cifrado sin formato (por cierto, hay una competencia en curso para la nueva AE Modos, que recibieron no menos de 57 presentaciones, por lo que deberíamos tener en el futuro algunos modos AE incluso mejores).
También se ha señalado que hay contextos de cifrado donde el acceso aleatorio es deseable (por ejemplo, cifrado del disco duro), y se obtiene con un cifrado de bloque en modo CTR, pero no necesariamente con un cifrado de flujo dedicado.
Para resumir , debe considerar el uso de un cifrado de flujo en un nuevo protocolo solo si tiene un problema de rendimiento que resolver, y el problema actual está dentro del alcance limitado de los cifrados de flujo. . Esto no sucede a menudo. Un ejemplo es cuando necesita gigabytes de bytes pseudoaleatorios (básicamente, cuando necesito bytes aleatorios en grandes cantidades, uso Sosemanuk inicializado con una clave y IV de /dev/urandom
).