stringtranslate.com

Criptosistema de mochila Merkle-Hellman

El criptosistema de mochila Merkle-Hellman fue uno de los primeros criptosistemas de clave pública . Fue publicado por Ralph Merkle y Martin Hellman en 1978. Adi Shamir publicó un ataque de tiempo polinómico en 1984. Como resultado, el criptosistema ahora se considera inseguro. [1] : 465  [2] : 190 

Historia

El concepto de criptografía de clave pública fue introducido por Whitfield Diffie y Martin Hellman en 1976. [3] En ese momento propusieron el concepto general de una "función unidireccional de trampilla", una función cuya inversa es computacionalmente inviable de calcular sin alguna "información secreta"; pero aún no habían encontrado un ejemplo práctico de tal función. Otros investigadores propusieron varios criptosistemas de clave pública específicos durante los años siguientes, como RSA en 1977 y Merkle-Hellman en 1978. [4]

Descripción

Merkle-Hellman es un criptosistema de clave pública, lo que significa que se utilizan dos claves, una clave pública para el cifrado y una clave privada para el descifrado. Se basa en el problema de la suma de subconjuntos (un caso especial del problema de la mochila ). [5] El problema es el siguiente: dado un conjunto de números enteros y un número entero , encontrar un subconjunto cuya suma sea . En general, se sabe que este problema es NP-completo . Sin embargo, si es supercreciente , lo que significa que cada elemento del conjunto es mayor que la suma de todos los números del conjunto menor que él, el problema es "fácil" y se puede resolver en tiempo polinómico con un algoritmo codicioso simple .

En Merkle-Hellman, descifrar un mensaje requiere resolver un problema de mochila aparentemente "difícil". La clave privada contiene una lista de números supercreciente , y la clave pública contiene una lista de números no supercreciente , que en realidad es una versión "disfrazada" de . La clave privada también contiene información de "trampilla" que se puede utilizar para transformar un problema de mochila difícil en un problema de mochila fácil .

A diferencia de otros criptosistemas de clave pública como RSA , las dos claves en Merkle-Hellman no son intercambiables; la clave privada no se puede utilizar para el cifrado. Por tanto, Merkle-Hellman no se puede utilizar directamente para la autenticación mediante firma criptográfica , aunque Shamir publicó una variante que se puede utilizar para la firma. [6]

Generación de claves

1. Elija un tamaño de bloque . Con esta clave se pueden cifrar números enteros de hasta bits de longitud.

2. Elija una secuencia aleatoria supercreciente de números enteros positivos

El requisito supercreciente significa que , para .

3. Elija un número entero aleatorio tal que

4. Elija un número entero aleatorio tal que (es decir, y sean coprimos ).

5. Calcula la secuencia.

dónde .

La clave pública es y la clave privada es .

Cifrado

Sea un mensaje de bits que consta de bits , con el bit de mayor orden. Seleccione cada uno de los cuales sea distinto de cero y súmelos. Equivalentemente, calcule

.

El texto cifrado es .

Descifrado

Para descifrar un texto cifrado , debemos encontrar el subconjunto cuya suma sea . Hacemos esto transformando el problema en uno de encontrar un subconjunto de . Ese problema se puede resolver en tiempo polinomial ya que es supercreciente.

1. Calcule el inverso modular del módulo utilizando el algoritmo euclidiano extendido . Lo inverso existirá ya que es coprimo con .

El cálculo de es independiente del mensaje y se puede realizar una sola vez cuando se genera la clave privada.

2. Calcular

3. Resuelva el problema de suma de subconjuntos para usar la secuencia supercreciente , mediante el algoritmo codicioso simple que se describe a continuación. Sea la lista resultante de índices de los elementos cuya suma es . (Eso es, .)

4. Construya el mensaje con un 1 en cada posición de bit y un 0 en todas las demás posiciones de bit:

Resolver el problema de la suma de subconjuntos

Este simple algoritmo codicioso encuentra el subconjunto de una secuencia supercreciente que suma , en tiempo polinomial:

1. Inicialice en una lista vacía.
2. Encuentre el elemento más grande que sea menor o igual a , digamos .
3. Restar: .
4. Agregar a la lista .
5. Si es mayor que cero, regrese al paso 2.

Ejemplo

Generación de claves

Cree una clave para cifrar números de 8 bits creando una secuencia supercreciente aleatoria de 8 valores:

La suma de estos es 706, así que seleccione un valor mayor para :

.

Elija ser coprime para :

.

Construya la clave pública multiplicando cada elemento por módulo :

Por eso .

Cifrado

Sea el mensaje de 8 bits . Multiplicamos cada bit por el número correspondiente y sumamos los resultados:

 0 * 295+ 1 * 592+ 1 * 301+ 0 * 14+ 0 * 28+ 0 * 353+ 0 * 120+ 1 * 236 = 1129

El texto cifrado es 1129.

Descifrado

Para descifrar 1129, primero use el algoritmo euclidiano extendido para encontrar el inverso modular de mod :

.

Calcular .

Utilice el algoritmo codicioso para descomponer 372 en una suma de valores:

Por lo tanto , y la lista de índices es . El mensaje ahora se puede calcular como

.

Criptoanálisis

En 1984, Adi Shamir publicó un ataque al criptosistema Merkle-Hellman que puede descifrar mensajes cifrados en tiempo polinómico sin utilizar la clave privada. [7] El ataque analiza la clave pública y busca un par de números que sean una secuencia supercreciente. El par encontrado por el ataque puede no ser igual al de la clave privada, pero al igual que ese par, puede usarse para transformar un problema de mochila difícil en un problema fácil usando una secuencia supercreciente. El ataque opera únicamente con la clave pública; no es necesario acceder a mensajes cifrados.

El ataque de Shamir al criptosistema Merkle-Hellman funciona en tiempo polinómico incluso si los números de la clave pública se mezclan aleatoriamente, un paso que normalmente no se incluye en la descripción del criptosistema, pero que puede ser útil contra algunos ataques más primitivos.

Referencias

  1. ^ Schneier, Bruce (1996). Criptografía Aplicada . Nueva York: John Wiley & Sons. ISBN 0-471-12845-7.
  2. ^ Stinson, Douglas R. (1995). Criptografía: teoría y práctica . Boca Ratón: CRC Press. ISBN 0-8493-8521-0.
  3. ^ Whitfield Diffie; Martín Hellman (1976). "Nuevas direcciones en criptografía". Transacciones IEEE sobre teoría de la información . 22 (6): 644. CiteSeerX 10.1.1.37.9720 . doi :10.1109/TIT.1976.1055638. 
  4. ^ Merkle, Ralph; Hellman, Martín (1978). "Ocultar información y firmas en mochilas con trampilla". Transacciones IEEE sobre teoría de la información . 24 (5): 525–530. doi :10.1109/TIT.1978.1055927.
  5. ^ Cherowitzo, William (2 de marzo de 2002). "Criptosistema de mochila Merkle-Hellman". Matemáticas 5410 - Criptología moderna . Consultado el 18 de agosto de 2019 .
  6. ^ Shamir, Adi (julio de 1978). "Un esquema de firma rápida". Memorando técnico del Laboratorio de Ciencias de la Computación del MIT . 79 (MIT/LCS/TM–107): 15240. Código bibliográfico : 1978STIN...7915240S.
  7. ^ Shamir, Adi (1984). "Un algoritmo de tiempo polinomial para romper el criptosistema básico Merkle - Hellman". Transacciones IEEE sobre teoría de la información . 30 (5): 699–704. doi :10.1109/SFCS.1982.5.