¿Cifrado simétrico auto-ocultador seguro (descifrado no verificable)?

1

Por lo que observé al usar herramientas de cifrado estándar como OpenSSH y GPG, el descifrado solo se realiza cuando se proporciona la clave / contraseña correcta (o, como mucho, otras, en caso de colisión).

(También verifiqué esto descifrando un mensaje de una sola letra y tratando de descifrarlo con millones de contraseñas aleatorias).

Sin embargo, esto es totalmente indeseable en los siguientes casos:

  1. Encripta bastante datos aleatorios (binarios) , como ID o incluso otras claves generadas aleatoriamente.

  2. Cifrado de varias capas (utilizando diferentes algoritmos)

El primero es un problema porque un cifrado exitoso por cualquier medio (ataque de suerte extrema, sistemático o de fuerza bruta) le da al atacante la información / validación inmediata - "aaah .. ese es el secreto que está protegido". A la inversa, si el atacante nunca sabe si los datos descifrados son significativos o no, estaría muy deshabilitado; por ejemplo, considere una fuga de una contraseña encriptada, generada al azar, al sistema / máquina que inicia la secuencia de autodestrucción después de algunos intentos fallidos de inicio de sesión (tal contraseña encriptada no tiene valor para el atacante, pero es extremadamente valiosa para el usuario legítimo que podría olvidarlo en cualquier momento).

En caso de un ataque de fuerza bruta, este último básicamente debilita todo el cifrado de exponencialmente seguro a tan seguro como el enlace más fuerte , porque el atacante tiene un punto de control después de cada capa rota. Por lo tanto, el esfuerzo de ruptura ( E ) es igual a E(algo_1) + ... + E(algo_n) en lugar de E(algo_1) * ... * E(algo_n) .

No estoy seguro si este comportamiento de descifrado es causado por las herramientas (tal vez cifran metadatos adicionales para verificar fácilmente si el descifrado tuvo éxito), o los algoritmos mismos (lo probé con algunos, incluido AES256). ¿Hay alguna forma de utilizar un algoritmo bien establecido como AES256 de manera que no valide cada intento de encriptación (es decir, la herramienta no debería poder decirle si descifrado correctamente / incorrectamente)?

Si no, he estado pensando en lo siguiente:

  1. Estire la frase de contraseña / clave k utilizando PBKDF2 (SHA-512, k , sal , Niter , | M |)
  2. Aplique el cifrado de One Time Pad a todo el mensaje M (ahora que la clave tiene la misma longitud)

Sin embargo, sufre la vulnerabilidad de que las longitudes de texto cifrado y texto sin formato son iguales. ¿Hay alguna alternativa mejor?

Nota : Para ocultar de verdad, los metadatos específicos del mensaje cifrado también deben eliminarse, pero esto es solo un problema menor en comparación con el descrito anteriormente (por ejemplo, para GnuPG, se podría eliminar) fuera de los bytes iniciales "8C 0D 04"), así que no se centre demasiado en este.

    
pregunta leden 25.09.2014 - 22:44
fuente

0 respuestas

Lea otras preguntas en las etiquetas