Hashing Based Encryption

1

Supongamos que toma una clave de 256 bits y nunca la usa para cifrar nada. Recibe un mensaje con una sal única generada de forma aleatoria de 16 caracteres pre-pendiente. Saque su clave con la sal de 16 caracteres y ejecútela a través de SHA-256 para crear la clave de cifrado utilizada para el primer bloque con AES-256. Después, toma la primera clave resultante de hash, agrega la clave de cifrado original no utilizada, hash el resultado con SHA-256 y crea la clave utilizada para cifrar el siguiente bloque. La clave de cifrado de cada bloque es la clave anterior que se adjunta con la clave de cifrado nunca utilizada con SHA-256. Digamos que usaste este método en modo CBC. ¿Cómo se compararía con AES-256 utilizado en el modo CBC de clave secreta convencional en términos de seguridad y rendimiento?

Además, ¿esto todavía podría calificar como cifrado de cifrado de bloque o estoy hablando de algo que casi está empezando a parecerse a un cifrado de flujo aquí?

    
pregunta Bob Larson 03.10.2015 - 07:34
fuente

1 respuesta

1

El rendimiento será muchas veces más lento que AES, cualquier ventaja de seguridad percibida será mínima.

La transferencia de clave adicional y la generación de subclaves para cada bloque podrían crear un vector de ataque de tiempo, y ahora está cargando la clave principal en la memoria para cada bloque, solo AES que realiza una expansión de clave única, luego guarda las subclaves en XMM registros (cuando se utiliza la aceleración de hardware), donde se puede proteger del acceso mediante otros procesos.

El método que estás describiendo convierte un cifrado de flujo basado en hash en un KDF para generar claves para cada bloque. Esto podría ser aceptable si usa el modo CTR e intenta evitar algo que no se reutiliza, y luego usa la nueva clave para cada mensaje nuevo, en lugar de cada bloque.

Desde una perspectiva de rendimiento, por cada bloque que realice en promedio, 2 iteraciones hash, 1 expansión de clave y 14 rondas de cifrado. SHA-256 toma algo así como 550 ciclos de reloj (¿alguien puede confirmar?) Por iteración, 14 rondas de AES con la adición de teclas toma algo así como 101 ciclos de reloj, y la expansión de la tecla es de hasta 136 ciclos de reloj. Eso le da 1337 relojes vs 101, una 13.2 veces desventaja de rendimiento. Además, debido a la forma en que se generan las claves, realmente no puede aprovechar los múltiples núcleos, otra desventaja tal vez 4X, aunque puede usar el modo ECB ya que la clave es diferente para cada bloque.

En total, cuando se compara con el modo ECB y CTR en una CPU de cuatro núcleos y pozos, será aproximadamente 52 veces más lento y 13 veces más lento que CBC.

    
respondido por el Richie Frame 03.10.2015 - 09:55
fuente

Lea otras preguntas en las etiquetas