Ventajas y desventajas de los cifrados de flujo en lugar de en bloque

62

Los algoritmos de cifrado como Blowfish, AES, RC4, DES y Seal se implementan en una de dos categorías de cifrados. ¿Cuáles son las ventajas / desventajas del tipo de cifrado?

    
pregunta Eric Warriner 14.11.2010 - 15:32
fuente

5 respuestas

44

Si bien ambos son cifrados simétricos, los cifrados de flujo se basan en la generación de una secuencia de claves criptográfica "infinita", y el uso de eso para cifrar un bit o byte a la vez (similar al teclado de una sola vez), mientras que los cifrados en bloque funcionan en grandes trozos de datos (es decir, bloques) a la vez, a menudo combinando bloques para seguridad adicional (por ejemplo, AES en modo CBC).

  • Los cifrados de flujo suelen ser más rápidos que el bloque, pero eso tiene su propio precio.
  • Los cifrados de bloque generalmente requieren más memoria, ya que funcionan en grandes porciones de datos y a menudo tienen "transferencia" de los bloques anteriores, mientras que los cifrados de flujo funcionan solo en unos pocos bits a la vez, tienen requisitos de memoria relativamente bajos (y por lo tanto, es más barato de implementar en escenarios limitados, como dispositivos integrados, firmware y hardware especialmente).
  • Los cifrados de flujo son más difíciles de implementar correctamente y son propensos a las debilidades basadas en el uso, ya que los principios son similares a los de una sola vez, el flujo de claves tiene requisitos muy estrictos. Por otro lado, esa suele ser la parte difícil, y puede descargarse, por ejemplo, Una caja externa.
  • Debido a que los cifrados de bloque cifran un bloque completo a la vez (y además tienen los modos de "retroalimentación" que son los más recomendados), son más susceptibles al ruido en la transmisión, es decir, si arruina una parte de los datos, todos los El descanso es probablemente irrecuperable. Mientras que con los cifrados de flujo, los bytes se cifran individualmente sin conexión a otros fragmentos de datos (en la mayoría de los cifrados / modos), y con frecuencia son compatibles con las interrupciones en la línea.
  • Además, los cifrados de flujo no proporcionan autenticación o protección de integridad, mientras que algunos cifrados de bloque (según el modo) pueden proporcionar protección de integridad, además de confidencialidad.
  • Debido a todo lo anterior, los cifrados de flujo generalmente son mejores para los casos en que la cantidad de datos es desconocida o continua, como los flujos de red. Los cifrados de bloque, por otro lado, o más útiles cuando se conoce la cantidad de datos, como un archivo, campos de datos o protocolos de solicitud / respuesta, como HTTP, donde la longitud del mensaje total ya se conoce en la comenzando.
respondido por el AviD 14.11.2010 - 20:18
fuente
22

Un cifrado de bloque es un algoritmo versátil que implementa una permutación dependiente de la clave de valores que son secuencias de un número fijo de bits (llamados "bloques"). Se puede utilizar para varios roles en muchos tipos de protocolos criptográficos. Una de esas funciones es el cifrado masivo de flujos largos de datos; para lograr tal cosa, el cifrado de bloque debe usarse con el modo de operación (también conocido como "modo de encadenamiento"), el tradicional es CBC, y el modo moderno más nuevo es CTR.

Un cifrado de flujo es un algoritmo especializado para el cifrado masivo de flujos largos de datos. La idea es que, al perder la versatilidad del cifrado en bloque, sería posible crear un algoritmo más eficiente (es decir, algo que encripta los datos más rápido ).

Tanto los cifrados de bloque con un modo de cifrado orientado a la transmisión como los cifrados de la transmisión pueden tener problemas de seguridad si la misma clave se usa dos veces, para dos transmisiones distintas, sin tener un vector de inicialización adecuado, único / suficientemente aleatorio. . Para el cifrado CBC, el IV debe ser una nueva secuencia de bits uniformemente aleatoria, del mismo tamaño que un bloque, para cada mensaje nuevo. Los buenos cifrados de flujo también aceptan un IV. Un cifrado de flujo tradicional llamado RC4 no tiene IV (su especificación no indica dónde o cómo se puede insertar un IV), lo que provocó mucho caos y dio un mal nombre al concepto de cifrados de flujo.

Para cifrados de flujo más nuevos, más seguros (y más rápidos), consulte la cartera de eSTREAM . Estos algoritmos han pasado por un análisis bastante exhaustivo por parte de muchos criptógrafos y se consideran "bastante seguros".

Un cifrado de flujo se puede convertir en un Generador de números pseudoaleatorios cifrando una larga secuencia de bytes de valor cero. En realidad, muchos cifrados de flujo (pero no todos) funcionan internamente al ser un PRNG, generando una larga secuencia de bytes pseudoaleatorios dependientes de la clave, que posteriormente se combinan (mediante XOR en modo bit) con los datos para cifrar (o descifrar), por lo que cifrar cero bytes es entonces equivalente a omitir el XOR por completo. Por lo tanto, los cifrados de flujo se utilizan a menudo como PRNG personalizado.

    
respondido por el Thomas Pornin 22.07.2011 - 23:37
fuente
8

Una de las ventajas de los cifrados de flujo que no se han mencionado anteriormente es que no necesitan relleno (los cifrados de bloque funcionan en bloques completos, por lo que si no tiene suficientes datos, debe generar algo más de alguna manera). Y sorpresa (no realmente, la criptografía es el campo donde Murphy está en todas partes), el relleno puede hacerse mal, como se ejemplifica, por ejemplo, en Relleno práctico ataques de Oracle .

Además, la seguridad de los cifrados en bloque depende en gran medida de su modo de operación, aún se ve que el BCE se usa aquí y allá a veces, y no es mucho mejor que no tener criptografía.

Básicamente, no puedes decir que uno es mejor que el otro, uno tiene que mirar un sistema criptográfico completo para emitir un juicio de seguridad.

    
respondido por el Bruno Rohée 02.04.2011 - 15:45
fuente
1

Stream Ciphers cifra los datos de texto sin formato con un flujo aleatorio de bits (generalmente con un XOR porque se puede revertir fácilmente). Si tiene datos de 128 bits, utilizará una cadena psedurandom de 128 bits (su clave) para cifrar.

Bloquear cifrados cifra los datos de texto sin formato en un bloque a la vez con la misma transformación (según la clave). Así que tiene sus datos de 128 bits, el cifrado los divide en bloques (como 4 bloques de 32 bits) y aplica la misma transformación a cada bloque, obteniendo 4 bloques cifrados, que combinados formarán el criptograma final.

Por supuesto, debido a esto, los Block Cyphers son más seguros pero costosos de usar en términos de la complejidad del hardware involucrado. Los cifrados de flujo son más rápidos y "baratos", pero pueden ser susceptibles a problemas de seguridad si se implementan incorrectamente.

    
respondido por el gbr 14.11.2010 - 15:54
fuente
-3

Los datos (las cosas que se van a cifrar) por lo general vienen en secuencias. Para cifrarlo, necesitamos emplear un cifrado de flujo, es decir, un algoritmo de cifrado adecuado para su uso en un flujo de datos. Un flujo es una secuencia de bits (o bytes) de longitud arbitraria, variable o no especificada.

Los mejores cifrados que hemos inventado hasta ahora son los cifrados en bloque. Un cifrado de bloque es capaz de cifrar un único bloque de datos de tamaño fijo; y, según la evidencia que nos rodea, al parecer, es más fácil construir buenos cifrados de bloque que cifrados de flujo.

Buenas noticias, sin embargo. Al utilizar un cifrado de bloque dado en algunos patrones particulares (un "modo de operación"), y con la ayuda de estrategias de relleno particulares, podemos transformar cualquier cifrado de bloque en un cifrado de flujo. Eso significa que podemos usar los mejores cifrados, que son cifrados de bloque, para cifrar cualquier información, la mayoría de los cuales viene en forma continua.

    
respondido por el yfeldblum 02.04.2011 - 16:42
fuente

Lea otras preguntas en las etiquetas