¿Hay fallas en esta función criptográfica bidireccional?

2

Creé una función criptográfica bidireccional simple que te permite cifrar un mensaje y descifrarlo con la misma clave. Así es como funciona.

  1. Divida el mensaje en una matriz de segmentos de 32 bits (o algo más, dependiendo de la longitud de su clave)
  2. Genere un número aleatorio de 32 bits y xor todos los segmentos con él, y agréguelo al inicio de la matriz. (Esto se hace para evitar que un atacante reconozca que el mismo mensaje o ciertas partes de él se han enviado dos veces)
  3. X o todos los segmentos con un hash de la clave y el índice del segmento. El índice se incluye para evitar que un atacante encuentre patrones dentro del mensaje donde hay 0s u otros datos conocidos.

Mis preguntas son:

  • ¿Ya existe una función bidireccional similar?
  • ¿Hay algún defecto en él y, de ser así, qué se puede hacer para corregirlos?

Explique en términos sencillos, no soy un experto en criptografía.

    
pregunta Runemoro 02.12.2014 - 03:40
fuente

3 respuestas

5

Primero, no enrolle su propio criptografía y lea la respuesta de DTK. Pero, sí creo que aprendemos experimentando, así que responderé sus preguntas

  

¿Ya existe una función bidireccional similar?

Sí. Se denominan cifrado de bloque y vienen con diferentes modos de operación. El cifrado de bloque es una función que cifra los datos de 1 bloque en particular. En su caso, sería su función hash la que utilice el par {clave, índice} para crear un mensaje cifrado que luego XOR con el mensaje original. El modo de operación es cómo los encadenas. En su caso, el modo de operación más similar al que describe es CTR

  

¿Hay algún defecto en él, y si es así, qué se puede hacer para corregirlo?   ellos?

Hay muchas fallas

  1. Agregar siempre el mismo número aleatorio a 1 carácter (o un grupo de caracteres) no ayuda. Compruebe Análisis de frecuencia
  2. El hash de la clave + índice siempre es el mismo siempre que la clave no cambie. Esta es la falla más crítica en su algoritmo.

    Xn = Hash (clave + índice-n)
    R1 = número aleatorio del primer mensaje
    R2 = número aleatorio de segundo mensaje
    Y1n = Xn XOR R1
    Y2n = Xn XOR R2
    Z = R1 XOR R2

Si te envío un primer mensaje y me das la respuesta cifrada, puedo calcular todos los valores Y1n .

Luego, si me envía solo la versión encriptada de un segundo mensaje, puedo encontrar fácilmente el valor Z usando XOR en los primeros 2 elementos de sus mensajes

Luego Y2n XOR Z = Y1n y conozco tu segundo mensaje, incluso si solo me enviaste la versión encriptada.

Su mayor problema es el modo de operación . Te sugiero que empieces por eso. Entonces, su cifrado de bloque puede tener fallas por sí mismo.

Hacer este ejercicio puede ser bueno para aprender, pero nunca uses el tuyo en ningún sistema.

    
respondido por el Gudradain 02.12.2014 - 19:56
fuente
7

Lea el trabajo de Shannon en 1949 . Comprender la difusión y la confusión. Luego entienda que no entiende lo suficiente * YET * acerca de la teoría de conjuntos, la probabilidad y las matemáticas lineales para saber que no tiene los antecedentes suficientes para diseñar o implementar un algoritmo de cifrado. Lea efecto Dunning-Kruger mientras esté en ello, pero siga aprendiendo para que algún día Sabrás lo suficiente para diseñar un sistema secreto.

respondido por el DTK 02.12.2014 - 03:58
fuente
0

Como han dicho otros, eso es un cifrado de bloque.

Está bien experimentar con tus propias ideas y técnicas. ¡Puede ser divertido!

Simplemente no pongas tus experimentos en producción. Otras personas que son mucho más inteligentes que tú o yo probablemente podemos derrotar tu protección.

Vaya a revisar modos de operación para los cifrados de bloque, identifique el modo más estrechamente relacionado con el suyo, y debe ser una lista de las debilidades asociadas con ese modo.

    
respondido por el Andrew Hoffman 02.12.2014 - 20:25
fuente

Lea otras preguntas en las etiquetas