Usando AES como un cifrado de flujo

4

Necesito enviar muchos mensajes pequeños que suelen tener una longitud de entre 128 y 256 bits, y cada mensaje se cifra con una clave AES de 128 bits. Por lo tanto, enviar cada mensaje con la clave requeriría entre 256 y 384 bits de datos. Si un mensaje tiene 129 bits de longitud, aún se necesitarían 2 bloques AES para cifrar y el tamaño del mensaje con la clave aumentaría a 384 bits.

Debido a esto, estoy pensando que puedo aumentar el rendimiento utilizando AES como cifrado de flujo. La solución que se me ocurrió es simplemente usar la clave para cifrar un mensaje de todos los 0 con un tamaño redondeado a los 128 bits más cercanos, utilizando AES y un modo de cifrado no autenticado adecuado como CTR. Luego, tome los ceros cifrados y XOR con el texto plano para obtener un texto cifrado del mismo tamaño. Me doy cuenta de que cada clave solo se puede usar una vez, porque dado el texto en claro y el cifrado, la secuencia se puede recuperar, pero esto no es un problema en mi situación porque cada clave solo se usa una vez. Mi pregunta es, ¿este método es seguro y tiene otras advertencias, como el ataque de texto sin formato que mencioné?

    
pregunta tomKPZ 10.08.2014 - 22:10
fuente

1 respuesta

11

CTR mode trata sobre el cifrado de datos mediante la generación de una secuencia pseudoaleatoria dependiente de la clave y XORING. con los datos; así que lo que realmente describe es el modo CTR, y no tiene que hacerlo usted mismo con el XOR. De lo contrario, al encriptar un montón de ceros y luego XORAR el resultado con sus datos reales, solo está haciendo un XOR adicional innecesario con ceros.

(Le recomendamos que no intente inventar los modos de cifrado por usted mismo si no domina completamente el diseño de los modos criptográficos, y las personas que están calificadas para realizar tales diseños realmente considera sabiamente que incluso ellos no pueden realizar el trabajo de manera confiable.

El modo CTR es altamente vulnerable a la reutilización de claves, por lo que es mejor asegurarse de que, de hecho, nunca reutilice un valor clave; alternativamente, puede reutilizar una clave si usa un "IV suficientemente definido" (ya que el CTR funciona mediante el cifrado de valores sucesivos de un contador, puede reutilizar una clave siempre que no reutilice un valor de contador), pero El remitente y el receptor deben conocer el IV, lo que puede ser un problema en algunos casos de uso (agregar un IV explícito a cada tamaño de los mensajes aumenta; el IV implícito, como el conteo de mensajes, no se puede usar necesariamente si los mensajes se pierden o los receptores no tienen estado) . Aparte de eso, un modo no autenticado tiene la debilidad genérica de, de hecho, no estar autenticado, lo que puede ser muy molesto cuando hay atacantes activos deambulando (y los escenarios con atacantes solo pasivos tienden a ser poco realistas). Además, el modo CTR implica que no hay relleno, por lo que la longitud de los datos cifrados es igual a la longitud de los datos de texto sin formato, que es lo que usted quiere, pero también significa que la longitud de los datos de texto sin formato se filtra, dependiendo de su contexto, esto puede o no ser un problema.

Dentro de los límites expresados anteriormente, el modo CTR es tan bueno como esas cosas pueden obtener.

    
respondido por el Tom Leek 10.08.2014 - 23:33
fuente

Lea otras preguntas en las etiquetas