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?
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?
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).
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.
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.
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.
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.
Lea otras preguntas en las etiquetas cryptography encryption