¿Existe un algoritmo de cifrado que permita que una carga útil única tenga dos salidas diferentes según la contraseña?

62

Supongamos que tengo información confidencial encriptada y estoy obligado / a obligado a revelar esa contraseña.

Mi objetivo es hacer que esa carga útil desencriptada parezca significativa / y la contraseña válida.

¿Existe algún algoritmo de este tipo que permita que se aplique una contraseña diferente a la misma carga útil, para que se revelen los datos de descifrado alternativos?

    
pregunta random65537 23.01.2017 - 17:10
fuente

7 respuestas

26

Con muchos algoritmos comunes, al cambiar la clave, es muy posible obtener datos arbitrarios en el primer bloque. Donde se encuentra con problemas es cuando los datos son más largos que el tamaño de bloque clave. El resto de los datos (más allá del primer bloque) se vería aleatorio después de intercambiar las claves, suponiendo que esté utilizando un método de encadenamiento seguro. Podría usar un método de encadenamiento inseguro, pero no lo recomendaría.

Puede utilizar cifrado XOR OTP . Esto es diferente de la mayoría del cifrado donde la clave se reutiliza matemáticamente. Con OTP (One Time Pad), la clave tiene la misma longitud que los datos. Con XOR (uno de los OTP más comunes) tiene la flexibilidad de producir arbitrariamente el mensaje deseado.
(¿Su adversario puede estar al tanto de esta posibilidad?)

Para comenzar, crea archivos de igual longitud:

  • mensaje original
  • datos aleatorios (la clave real)

XOR juntos te da

  • mensaje cifrado

luego toma

  • mensaje falso
  • mensaje cifrado

XOR juntos te da

  • clave falsa

Para descifrar, tomar

  • mensaje cifrado
  • clave real o falsa

XOR para obtener

  • mensaje real o falso

Como @ Alpha3031 comentó , en realidad podría cifrar un mensaje (por ejemplo, el falso) con AES tradicional, (más común, y requiere un archivo clave más pequeño) y luego usar XOR (menos común) para producir el otro. (por ejemplo, el mensaje real?)

XOR se puede aplicar a cualquier archivo que sea suficientemente impredecible / aleatorio. (por ejemplo, datos encriptados)

    
respondido por el George Bailey 23.01.2017 - 17:27
fuente
35

La pregunta teórica aquí es una pregunta de tamaño / entropía. La regla clave es que la entropía del mensaje cifrado es la misma que la entropía del mensaje inicial. Si el algoritmo no implica compresión, el tamaño del mensaje cifrado es el tamaño del mensaje original.

Para que el mensaje cifrado se decodifique de dos maneras diferentes, dependiendo de la clave que necesite, contiene 2 mensajes diferentes. Una forma sería cifrar un mensaje real con una clave y un mensaje falso con otra clave, y combinar ambos mensajes codificados (después de rellenar el más corto), por ejemplo, con un byte de cada uno. Siempre que agregue una ID conocida al comienzo de los mensajes antes de cifrarlos, en el momento de la descodificación, el algoritmo solo podría devolver el mensaje que tenía la ID inicial correcta.

El problema es que hay dos mensajes diferentes + alguna información adicional. Y tener un mensaje cifrado más largo que el inicial no es tan plausible ...

Esa es la razón por la que no conozco ningún algoritmo que implemente denegación plausible, sino solo contenedores , que es un sistema de archivos cifrado completo. Esto se implementó en el excelente TrueCrypt antes de que se suspendiera su soporte. Afortunadamente, una bifurcación del proyecto aún lo ofrece, VeraCrypt .

VeraCrypt en realidad ofrece volúmenes ocultos. De hecho, una parte del espacio vacío de un volumen normal se utiliza para almacenar un volumen distinto con una clave distinta. Cuando presenta una clave, se intenta encontrar un volumen oculto, si no, para encontrar un volumen normal. Cuando abres el volumen normal en modo normal, nada permite adivinar que también contiene un volumen oculto, simplemente tiene un espacio no utilizado que no es una sorpresa para un sistema de archivos. Por supuesto, si escribe muchos datos en ese modo, sobrescribirá y definitivamente destruirá los datos de volumen ocultos. Pero existe un modo especial para dar ambas claves y usar el volumen externo sin riesgo de sobrescribir el interno.

Arriba estaba la parte técnica. Pero la negación plausible también requiere que el contenido del contenedor externo valga la pena, porque la capacidad de los contenedores ocultos es una característica bien conocida. En mi humilde opinión, hay dos formas aceptables:

  • Ordene su información en 3 clases, simple, sensible y secreta y guárdelas en consecuencia: simple fuera del contenedor, sensible en la parte externa (use el acceso con doble contraseña ) y secreto en La parte oculta. De esa manera, como el contenedor externo contiene más que archivos inocentes, la existencia de un contenedor oculto no es evidente. Pero realmente debe usar el contenedor externo, al menos tanto como el interno y estar preparado para revelar su contenido

  • Use el contenedor externo como su almacenamiento principal. Ese es un uso común en las computadoras portátiles corporativas, ya que garantiza que, en caso de robo o pérdida de la computadora, no se pueda acceder de inmediato a información confidencial (aborda la parte de confidencialidad de la seguridad ...). La parte posterior es que debe montar el contenedor como uno solo en el arranque, y en el uso normal, desmóntelo inmediatamente para volver a montarlo manualmente en el modo dual .

Y dependiendo de quién sea el adversario son las páginas de VeraCrypt sobre deniability plausible y requisitos de seguridad para volúmenes ocultos tiene consejos adicionales, como usar solo el volumen oculto al arrancar desde una solo lectura CD / DVD ...

Como es habitual, la seguridad técnica es solo una parte de la seguridad global. Si la información es lo suficientemente sensible como para temer por su integridad física, debe usar medidas de seguridad física y no basarse únicamente en la posibilidad de negación plausible: es una buena herramienta que puede ayudar a ocultar información segura pero no una bala de plata mágica. Solo Snake Oil Company puede proporcionar esos ...

    
respondido por el Serge Ballesta 23.01.2017 - 17:49
fuente
6

Camuflaje criptográfico

CA technologies ha patentado una tecnología conocida como Camuflaje criptográfico .

  

Un punto sensible en la criptografía de clave pública es cómo proteger la clave privada. Esbozamos un método para proteger las claves privadas usando camuflaje criptográfico. Específicamente, no ciframos la clave privada con una contraseña que sea demasiado larga para un ataque exhaustivo. En cambio, lo ciframos para que solo una contraseña lo descifre correctamente, pero muchas contraseñas lo descifran para generar una clave que parezca lo suficientemente válida como para engañar a un atacante. Para ciertas aplicaciones, este método protege un privado. clave contra el ataque de diccionario, como lo hace una tarjeta inteligente, pero completamente en software.

Entonces, sí, puede tomar un mensaje (en este caso, una clave) y cifrarlo de tal manera que haya una clave correcta y muchas claves "falsas" que produzcan texto simple falso.

    
respondido por el John Wu 25.01.2017 - 00:50
fuente
5

Lo que estás pidiendo es cómo implementar una negación plausible sobre el cifrado basado en secretos. Si bien no hay algoritmos específicos para hacer eso, puede implementarlo fácilmente en el nivel de la aplicación; simplemente combine dos contenedores simétricos en uno, e intente cada contraseña en cada contenedor.

Recuerdo que TrueCrypt tenía tal característica en el pasado, aunque no estoy seguro de si su implementación hizo algo como lo sugiero o lo implementó de otra manera.

    
respondido por el pFarb 23.01.2017 - 17:24
fuente
2

Sí, con advertencias.

Requisitos:

1) Usted proporciona el programa de encriptación, no podrá hacer frente a un examen cuidadoso.

2) El mensaje falso debe ser texto o algo parecido: baja entropía.

3) es una restricción de tamaño en el mensaje falso: es probable que tenga que estar al menos cerca del tamaño del real, si el real es binario, el falso debe ser sustancialmente más grande. Cualquier par dado de falso y amp; Los mensajes reales pueden intentarse, si los tamaños son incorrectos, se rechazarán.

Algoritmo:

El archivo cifrado de salida siempre será exactamente del tamaño del archivo de entrada falso. Esto parece que simplemente lo encripta, pero en realidad tanto los archivos falsos como los reales se comprimen antes de encriptarlos, el archivo encriptado se rellena con errores al tamaño del archivo falso. Si los dos archivos suman más del tamaño falso no comprimido, se rechazan.

Para extraer el archivo, tome la contraseña suministrada, descifre el archivo real y ejecútelo a través del descompresor. Si el descompresor tiene un problema, vuelva a intentarlo en el archivo falso. Si el descompresor todavía tiene un problema, simplemente imprimirá errores en el tamaño del archivo de entrada.

    
respondido por el Loren Pechtel 24.01.2017 - 03:45
fuente
1

Como @Serge Ballesta ya ha notado, el contenido de información del mensaje cifrado no puede ser más pequeño que el contenido de información del mensaje verdadero más el contenido de información del mensaje falso. Por lo tanto, cualquier mensaje cifrado que sea significativamente más grande que el mensaje falso sería automáticamente sospechoso.

Por otra parte, recuerde que el contenido legible para los usuarios tiene mucha redundancia, que básicamente es "lugar de almacenamiento gratuito de información". Para nombrar algunos ejemplos: ocultar mensajes en imágenes y sonido o alterar el texto a través de sinónimos, frases, etc. En este sentido, la "contraseña especial" sería pasar el archivo generalmente descifrado a través de algún decodificador adicional (generalmente también encriptado, de modo que parece ruido).

Para dar un ejemplo concreto fácil (para asegurarse de que esté claro: es solo un ejemplo para ilustrar la idea, no lo use en ningún lugar), imagine un simple cifrado de sustitución en el que cada letra tenga varias representaciones para evitar el análisis de frecuencia. Sin embargo, en lugar de elegir una sustitución aleatoria, elige la que dicta el texto cifrado del mensaje oculto (que debería parecer lo suficientemente aleatorio).

Espero que esto ayude ;-)

    
respondido por el dtldarek 24.01.2017 - 15:46
fuente
1

Si permites algo de "engaño".

Encriptación:

  • Toma 2 cargas diferentes
  • Escríbalas
  • Escape sus bytes como texto esadecimal (caracteres del 0 al 9 y de la A a la F)
  • Tome un carácter de 1 carga útil y 1 carácter de otra carga útil. Cada tercer byte se genera aleatoriamente.
  • ya que las cargas útiles pueden tener una longitud diferente cuando termina un texto esadecimal tendrá el carácter "G" y luego tantos caracteres aleatorios como sea necesario.

La contraseña está compuesta como la siguiente:

  • 127 bits para descifrar el flujo
  • 1 bit para seleccionar la carga útil
  • 128 bits para descifrar la carga útil.

Básicamente, usted obtiene 1 paquete con el tamaño de 3 cargas útiles, tiene que ser descifrado, luego debe seleccionar un grupo de bytes y descifrarlo también.

Descifrado:

  • Descifra la secuencia usando la primera parte de la contraseña
  • Seleccione la carga útil (cada primer o segundo carácter cada 3 caracteres)
  • caracteres Unescape
  • descifre el paquete también.

Es obvio que este formato de archivo tiene 2 cargas útiles en el interior, lo que no es obvio es que se pueden colocar basura y solo 1 carga real en lugar de 2.

    
respondido por el GameDeveloper 24.01.2017 - 18:01
fuente

Lea otras preguntas en las etiquetas