Un intento de superar el problema de distribución de claves inherente a la criptografía de una sola vez

0

Después de leer sobre el 'criptocalipsis inminente', etc., comencé a pensar en un protocolo criptográfico que no dependiera de la complejidad de las operaciones matemáticas (por ejemplo, factorización, logaritmo discreto) para la privacidad.

Hice una prueba de concepto que funciona mediante el redondeo del mensaje cifrado / descifrado localmente tanto en el cliente como en el servidor, con precauciones para evitar que la clave se pueda detectar durante la transmisión. Los detalles y el código se encuentran en línea .

Una ventaja asociada del esquema es que el cifrado conserva la longitud del mensaje, por lo que podría ser adecuado para mensajes pequeños (SMS, etc.) que pueden tolerar un pequeño aumento en la latencia de la transmisión. Podría invertir algo de tiempo en desarrollar esto en una plataforma de intercambio de SMS, si el protocolo resiste el escrutinio.

Aunque solo fue un pequeño proyecto de pasatiempo, me pregunto si es realmente tan seguro como lo he imaginado. ¿Tal vez alguien más conocedor de las propiedades teóricas numéricas de los grupos modulares puede comentar? En particular, mi esquema se basa en un inverso multiplicativo modular que no existe incluso para los miembros de (Z / 2 ^ nZ) * .

Gracias.

    
pregunta user29473 13.08.2013 - 20:17
fuente

2 respuestas

5

En general, no queremos alentar este tipo de pregunta:

  • Las referencias al código no son buenas descripciones de algoritmos criptográficos. Las buenas descripciones utilizan el lenguaje de las matemáticas, no la programación.

  • Una descripción de un conjunto de archivos en github no es lo suficientemente permanente; si alguna vez lo cambia, esto hará que esta pregunta sea ilegible.

  • Hay un ciclo muy ineficiente y agotador, que dice lo siguiente: "Oye, no conozco el tema, pero tengo esta idea; ¿es segura? - No, no lo es, para esto razón. - ¿Qué pasa si agrego un +1 allí? - No, no ayuda. - Entonces, ¿qué pasa si también pongo un +2 en ese lugar? - ... "La experiencia demuestra que este tipo de proceso nunca termina con un buen algoritmo; sin embargo, produce discusiones espantosas y largas. Ya es suficientemente malo en los grupos de Usenet como sci.crypt ; en un Q & Un sitio como este, simplemente no funcionará.

Sin embargo, desde una mirada superficial a sus archivos, parece que quiere usar protocolo de tres pasos de Shamir . Esto requiere un cifrado conmutativo tal que pueda cifrar un mensaje con la clave u , luego con la clave v y luego descifrar con la clave u y v en ese orden, y recupera el mensaje original. Desafortunadamente, los cifrados conmutativos son difíciles de hacer sin una gran cantidad de matemáticas, como las grandes modulaciones exponenciales modulares.

Su idea de hacer multiplicaciones en módulo 2n y de "cifrar" solo los valores de mensaje x que no son invertibles en módulo 2 n no es seguro. De hecho, desde el exterior, el atacante ve x * u , x * v y x * u * v (todos los valores de módulo 2 n ). Como x es par, hay enteros m y y , de manera que y es impar y x = y * 2 m . u y v son impares (es necesario para que ellos sean invertibles), los valores observados son necesariamente múltiples de 2 m y no 2m+1 . En otras palabras, expresados en binario, todos terminan con exactamente m ceros.

El objetivo del atacante es recuperar x . Él ya sabe m , como se explicó anteriormente. Él quiere y , que tiene bits de longitud n-m . Al simplemente dividir todos los valores que observó mediante 2m , obtiene y * u , y * v y y * u * v , todos los valores de módulo 2nm , y todos son impares, por lo tanto, invertibles. Entonces basta con calcular (y * u) * (y * v) / (y * u * v) (módulo 2nm ) , que produce y . Fin del juego.

Lo anterior generaliza a todos los cálculos modulo algún número entero N cuando se toma x como módulo no invertible N .

Le recomiendo que haga su tarea, es decir, lea el Manual de criptografía aplicada , que es una descarga gratuita y muy buena. Lectura (aunque un poco tensa a veces). El protocolo de tres pasos de Shamir se describe en el capítulo 12, página 500. Tenga en cuenta el siguiente pasaje:

  

Si bien puede parecer que cualquier cifrado conmutativo (es decir, cifrado en el que el orden de cifrado y descifrado es intercambiable)   Sería suficiente en lugar de la exponenciación modular en el Protocolo 12.22, se recomienda precaución. por   Por ejemplo, el uso del cifrado Vernam (§1.5.4) sería totalmente inseguro aquí, ya que el XOR de   los tres mensajes intercambiados serían iguales a la clave en sí misma.

El peor pecado en la investigación científica es ignorar la investigación previa.

    
respondido por el Thomas Pornin 14.08.2013 - 00:33
fuente
2

No tuve la oportunidad de mirar el enlace, pero el problema fundamental con la distribución de claves para los pads de una vez es que son puramente aleatorios. Cualquier intento de cifrarlos usando un patrón da como resultado un cifrado que tiene una aleatoriedad menos que perfecta y, por lo tanto, reduce la efectividad de la OTP a la del método de intercambio. Un pad de una sola vez es tan seguro como su distribución y siempre que la OTP sea verdaderamente aleatoria, mantiene la seguridad exacta del método de distribución de claves. La ventaja es que puede verificar la seguridad del intercambio antes de enviar información confidencial.

    
respondido por el AJ Henderson 13.08.2013 - 20:45
fuente

Lea otras preguntas en las etiquetas