Problema de mochila en criptografía (problema de mochila en criptografía)

El problema de la mochila (problema de la mochila) en criptografía es el problema a partir del cual los criptógrafos estadounidenses Ralph Merkle y Martin Hellman desarrollaron el primer algoritmo de cifrado de clave pública.



Más adelante en el programa



  • Formulación del problema de la mochila (+ ¿por qué una mochila?)
  • Desafíos fáciles y difíciles
  • Ejemplos de
  • Historia


¿Qué es el cifrado de clave pública?
.



  • , , «», .


  • . , , , .


: , .



, - !



El primer algoritmo de clave pública general utilizó el algoritmo de mochila.



Según la definición de sistemas de claves públicas, se necesitan dos claves para cifrar (y descifrar) un mensaje con éxito. El destinatario "legal" del mensaje conoce la clave secretamientras el remitente posee otra clave pública B...



¿Qué hacer si un atacante conoce una clave pública?



Hay una respuesta: la clave pública debe obtenerse de la clave secreta mediante una transformación ( función unidireccional )fcon las siguientes dos propiedades:



  • B=f(A)conociendo A, es fácil calcular la función en sí


  • A=f1(B), Y es difícil de calcular la función inversa




¿Qué es "fácil" y "difícil"?
.

«» , . .. n , — tna, a — . , .



«» . , , .



.. n , t2n, , .





El problema de la mochila se formula de la siguiente manera



Dado un conjunto de (vector de mochila) A=(a1,...,an) Es un conjunto ordenado de n (n>2), números naturales distintos ai... Que haya un numerok- completo y positivo. La tarea es encontrar tal conjuntoaipara que en total den exactamente k...



En la versión más famosa del problema de la mochila, se requiere averiguar si un par dado tiene(A,k)decisión. En la variante utilizada en criptografía, necesita esta entrada(A,k)construya una solución sabiendo que tal solución existe. Ambas opciones son NP-completas.



Analogía de la mochila



En el caso mas simple k denota el tamaño (capacidad) de la mochila y cada uno de los números aiindica el tamaño (peso) de un artículo que se puede guardar en una mochila. La tarea es encontrar ese conjunto de elementos para que la

mochila esté completamente llena.



Es decir, imagina que tienes un juego de pesos 1, 6, 8, 15 y 24, necesitas empacar una mochila con un peso de 30.





En principio, una solución siempre se puede encontrar mediante una búsqueda exhaustiva de subconjuntos y comprobar cuál de sus sumas es k... En nuestro caso, esto significa fuerza bruta.25=32subconjuntos (incluido el conjunto vacío). Esto es bastante factible.



Pero, ¿y si hay varios cientos de números?ai?

En nuestro ejemplo, n = 5, a fin de no complicar la presentación. En condiciones reales, un ejemplo tendrá, por ejemplo, 300ai... El punto aquí es que no se conocen algoritmos que tengan una complejidad significativamente menor en comparación con la búsqueda exhaustiva. Buscar entre2300los subconjuntos no se pueden procesar. De hecho, el problema de la mochila se conoce como NP-completo ... Los problemas NP-completos se consideran difíciles de calcular.



¿La función cumple con los requisitos especificados?



Definimos la funciónf(x)de la siguiente manera. Cualquier número0x2n1 puede ser dado por una representación binaria de nbits, donde se añaden ceros a la izquierda si es necesario. Ahora definamosf(x) como un número obtenido de A resumiendo todo eso aique el bit correspondiente en notación binaria xes igual a 1.



Es decir,

f(1)=f(0...001)=an



f(2)=f(0...010)=an1



f(3)=f(0...011)=an1+an



...





Función f() estaba determinado n conjunto A... Obviamente, si somos capaces de calcularx de f(x), entonces prácticamente al mismo tiempo se resolverá el problema de la mochila: x su representación binaria se calcula inmediatamente, lo que a su vez da los componentes del conjunto Aincluido en la suma de f(x)... Por otro lado, el cálculof(x) de xes ligero. Dado que el problema de la mochila es NP-completo,f(x)es un buen candidato para una función unidireccional. Por supuesto, hay que exigir quen era lo suficientemente grande, no digas menos 200...



Cifrado



Texto sin formato
(. plain text) — , , . ( ).



Puede cifrar de dos formas:



  1. El cifrado del mensaje se obtiene elevando los elementos de este vector mochila a la potencia de los bits correspondientes del mensaje cifrado y luego multiplicando todos los resultados, es decir, si A=(2,3,5)y el mensaje (100), entonces el cifrado será el número 213050=2... Esta es una forma multiplicativa .
  2. El cifrado del mensaje se obtiene multiplicando los elementos de este vector de mochila por los bits correspondientes del mensaje cifrado y luego sumando todos los resultados, es decir, si A=(2,3,5)y el mensaje (100), entonces el cifrado será el número 21+30+50=2... Este método se llama aditivo .



Ejemplo



Para cifrar texto sin formato en representación binaria, se divide en bloques de longitudn(por ejemplo, puede representar el peso 30 con el binario 11110). Se cree que uno indica la presencia de un artículo en la mochila y el cero indica su ausencia.





El cifrado de mochila proporciona un buen enfoque para crear claves públicas y privadas, donde la clave privada es fácil de usar y la clave pública es difícil de descifrar.

Entonces, podemos crear un sistema donde: el problema "difícil" es la



clave pública , porque con él, puede cifrar fácilmente y es imposible descifrar el mensaje.



una clave privada : el problema "fácil" servirá como usándolo, puede descifrar fácilmente el mensaje. Sin la clave privada, tienes que resolver el "difícil" problema de la mochila.



Problema "fácil"



Vector de mochila super creciente
A=(a1,...,an) , Σi=1j1ai<aj j=2,...,n, . .



Para los vectores sverhrastuschih, el problema de la mochila se puede resolver fácilmente. Aquellos. Mochila fácil de montar.

Tomemos un ejemplo:





Algoritmo
  1. .

    , , . , .
  2. .
  3. (1)-(2) .

    , .


"Problema dificil



Es mucho más difícil descifrar el problema de una mochila no demasiado grande .

Merkle y Hellman crearon un algoritmo, que utiliza una mochila de clave privada de gran tamaño y una mochila de clave pública no demasiado grande.

Hicieron esto tomando la tarea de la mochila de gran tamaño y transformándola en una tarea que no es demasiado grande.

(Merkle y Hellman, utilizando aritmética modular, idearon una forma de transformar una mochila "ligera" en una "dura").



Crear una clave pública



Varios conceptos importantes
  • (x,modm) x m,

    x — , m>1, [x/m] — ,

    x=(x,modm)+[x/m]m





  • A, m>maxA t<m , (t,m)=1.

    B=(b1,...,bn) , bi=(tai,modm), i=1,...,n, , B A m t , , (m,t).

    (t,m)=1

    t1=u, ,

    tu1(modm)



    1u<m. , A B

    m,u.


  • m>maxA

    m>Σi=1nai, , B A m,t.


  • — , , , .




El creador del criptosistema elige tal sistema A,t,m,Bese vector A está creciendo mucho, y B obtenido de A fuerte multiplicación modular con respecto a m,t... VectorB expandido como clave de cifrado y bloques binarios de longitud n enviado al diseñador como números βObtenido por vector B...



El interceptor de mensajes debe resolver el problema de la mochila para ingresar(B,β)... El creador del criptosistema calculaα=(uβ,modm)

y resuelve el problema de la mochila para entrar (A,α)... Por qué funciona todo esto se

muestra en el siguiente lema.



Lema . Pretendamos queA=(a1,...,an)vector y vector super creciente B derivado de A fuerte multiplicación modular con respecto a m,t... Supongamos además queut1(modm), β - un número natural arbitrario y α=(uβ,modm)... Entonces las siguientes afirmaciones son verdaderas.



(i) El problema de la mochila(A,α)se puede resolver en tiempo lineal. Si existe una solución, entonces es única.

(ii) El problema de la mochila(B,β)tiene como máximo una solución.

(iii) Si hay una solución para ingresar(B,β), entonces coincide con la única solución de entrada (A,α)...

prueba (p. 104)



Ejemplo



Considere una secuencia de supercrecimiento; por ejemplo, {1, 2, 4, 10, 20, 40}. El módulo debe ser mayor que la suma de todos los números en la secuencia, por ejemplo 110. El multiplicador no debe tener divisores comunes con el módulo. Así que escojamos 31.





Entonces, calculamos la clave pública: {31, 62, 14, 90, 70, 30} y la clave privada: {1, 2, 4, 10, 20.40}.



Ahora intentemos enviar una secuencia binaria: 100100111100101110





Algunos de los beneficios de las claves públicas



  • Cuando se usa un criptosistema de clave pública, ambas partes no se encuentran, es posible que ni siquiera se conozcan y utilicen algún tipo de comunicación.


  • Longitud de la clave. En criptografía simétrica, si la clave es más larga que el mensaje original, no se logra una ganancia real. En cuanto a los criptosistemas de clave pública, la longitud de la clave de cifrado no importa, ya que es abierta y pública. Por lo tanto, la longitud de la clave de descifrado no es tan importante (el destinatario solo la almacena en un lugar secreto)




Historia



Durante mucho tiempo, los criptosistemas de mochila se consideraron los criptosistemas más atractivos y prometedores debido a su NP-completo y alta velocidad de cifrado y descifrado. Muchos esquemas usan el problema de la mochila (en varias variaciones), aquí hay solo algunos de ellos: el problema de la mochila compacta, el problema de la mochila multiplicativa, el problema de la mochila modular, el problema de la cubierta de la matriz, el problema de la factorización de grupos ...



Desafortunadamente, la mayoría de ellos son vulnerables a Ataques Resultó que no es trivial diseñar un criptosistema seguro basado en el problema de la mochila, aunque el problema se conoce como NP-completo. La mayoría de los criptosistemas de mochila han sido pirateados. A pesar de esto, en contraste con la factorización de enteros y el logaritmo discreto, el problema general de la mochila (solución) es un problema NP-completo probado.



Algunas personas piensan que algún día se podría inventar un algoritmo de tiempo polinomial para resolver problemas de factorización de enteros y logaritmos discretos, mientras que el problema de la mochila seguirá siendo NP completo.



Hay varios "PERO" aquí.



Primero, NP-completitud se basa en el análisis del peor de los casos, y segundo, NP-completitud son características de un problema general, no de un caso específico. Esto significa que si consideramos la complejidad media, el problema de la mochila puede ser fácil.



El material se preparó sobre la base de esta literatura:



(1) A. Salomaa. Criptografía de clave pública. - Springer-Verlag, 1990. - p. 75-82, págs.101-111



(2)Min Kin Lai. Criptosistemas de mochila : pasado y futuro - Universidad de California, 2001

(3) Baocang Wang, Qianhong Wu, Yupu Hu. Un esquema de cifrado probabilístico basado en mochila. 2007



(4) - (5)



All Articles