Este texto será uno de los capítulos reescritos del manual sobre protección de la información del Departamento de Ingeniería de Radio y Sistemas de Control, así como, a partir de este código de capacitación, el Departamento de Protección de Información del Instituto de Física y Tecnología de Moscú. El tutorial completo está disponible en github (ver también versiones preliminares ). En Habrir planeo diseñar nuevas piezas "grandes", en primer lugar, para recopilar comentarios y observaciones útiles, y en segundo lugar, para dar a la comunidad más material general sobre temas útiles e interesantes.Temas anteriores:Si hay un canal de comunicación entre Alice y Bob al que un atacante no puede modificar (es decir, cuando solo es aplicable el modelo de criptoanalista pasivo), incluso sin un intercambio preliminar de claves secretas u otra información, puede usar las ideas utilizadas previamente en la criptografía de clave pública. Después de describir el RSA en 1978, en 1980 Adi Shamir propuso el uso de criptosistemas basados en operaciones conmutativas para transmitir información sin intercambiar primero claves secretas. Si suponemos que la información transmitida es una clave de sesión secreta generada por una de las partes, en general obtenemos el siguiente protocolo de tres pasos.
Preliminar:
- Alice y Bob están conectados por un canal de comunicación no seguro, abierto para escuchar (pero no para modificación) por un atacante.
- Cada lado tiene un par de claves públicas y privadas. , , , en consecuencia
- Las partes han elegido y utilizado la función de cifrado conmutativo:
\ begin {array} {lll} D_ {A} \ left (E_ {A} \ left (X \ right) \ right) = X & \ forall X, \ left \ {K_A, k_a \ right \}; \\ E_ {A} \ left (E_ {B} \ left (X \ right) \ right) = E_B \ left (E_A \ left (X \ right) \ right) & \ forall ~ K_A, K_B, X. \ end {array}
El protocolo consta de tres pases con la transmisión de mensajes (de ahí el nombre) y uno final, en el que Bob recibe la clave.
- Alice selecciona una nueva clave de sesión
Alice \ to \ left \ {E_A \ left (K \ right) \ right \} \ a Bob - Bob \ to \ left \ {E_B \ left (E_A \ left (K \ right) \ right) \ right \} \ para Alice
- Alice, usando la conmutatividad de la función de cifrado,
Alice \ to \ left \ {E_B \ left (K \ right) \ right \} \ a Bob - Bob descifra
Como resultado, las partes reciben una clave secreta compartida.
.
Un inconveniente común de todos estos protocolos es la falta de autenticación de las partes. Por supuesto, en el caso de un criptoanalista pasivo, esto no es obligatorio, pero en la vida real aún debe considerar todos los modelos posibles (incluido un criptoanalista activo) y utilizar protocolos que impliquen la autenticación mutua de las partes. Además, a diferencia del esquema Diffie - Hellman, el iniciador de la sesión selecciona la nueva clave, lo que le permite al iniciador, no con buenas intenciones, forzar al segundo participante a utilizar la clave de sesión desactualizada.
Hablando
en términos de propiedades de seguridad , todos los representantes de esta clase de protocolos declaran solo la autenticación de clave (G7). A diferencia del esquema Diffie - Hellman, los protocolos de tres pasos no requieren la selección de nuevas claves "maestras" para cada sesión de protocolo, por lo que no se puede garantizar el secreto directo perfecto (G9) ni la formación de nuevas claves (G10).
Opción trivial
Pongamos un ejemplo de un protocolo basado en la función XOR (módulo de adición bit a bit 2). Aunque esta función se puede utilizar como base para construir sistemas de fuerza criptográfica perfecta, para un protocolo de tres pasos es una mala elección.
Antes de comenzar el protocolo, ambas partes tienen sus claves secretas.
y
representa secuencias binarias aleatorias con una distribución uniforme de caracteres. La función de cifrado se define como
donde
este mensaje también
- clave secreta. Obviamente:
- Alice selecciona una nueva clave de sesión
Alice \ to \ left \ {E_A \ left (K \ right) = K \ oplus K_A \ right \} \ para Bob - Bob \ to \ left \ {E_B \ left (E_A \ left (K \ right) \ right) = K \ oplus K_A \ oplus K_B \ right \} \ to Alice
- Alice, usando la conmutatividad de la función de cifrado,
Alice \ to \ left \ {E_B \ left (K \ right) = K \ oplus K_B \ right \} \ para Bob - Bob descifra
Al final de la sesión de protocolo, Alice y Bob conocen la clave de sesión común.
.
La elección propuesta de la función de cifrado conmutativo de secreto perfecto no tiene éxito, ya que hay situaciones en las que un criptoanalista puede determinar la clave
. Supongamos que un criptoanalista intercepta los tres mensajes:
La adición del módulo 2 de los tres mensajes da la clave
. Por lo tanto, dicho sistema de cifrado no se utiliza.
Ahora presentamos el protocolo para la transferencia confiable de la clave secreta, basado en la función de cifrado exponencial (conmutativa). La estabilidad de este protocolo está asociada con la dificultad de la tarea de calcular el logaritmo discreto: para valores conocidos
encontrar
de la ecuación
.
Protocolo sin llave de Shamir
Las partes acuerdan tentativamente una prima importante
. Cada una de las partes elige una clave secreta.
y
. Estas teclas son más pequeñas y mutuamente simples.
. Además, las partes se prepararon de acuerdo con un número especial
y
que les permiten descifrar un mensaje cifrado con su clave:
La última expresión es verdadera por el corolario del pequeño teorema \ index {teorema de Fermat! La granja es pequeña}. Las operaciones de cifrado y descifrado se definen de la siguiente manera:
\ begin {array} {lll} \ forall M <p: & C = E (M) = M ^ {a} & \ mod p, \\ & D (C) = C ^ {a '} & \ mod p, \\ & D_A (E_A (M)) = M ^ {aa '} = M & \ mod p. \\ \ end {array}
- Alice selecciona una nueva clave de sesión
Alice \ to \ left \ {E_A \ left (K \ right) = K ^ a \ bmod p \ right \} \ para Bob - Bob \ to \ left \ {E_B \ left (E_A \ left (K \ right) \ right) = K ^ {ab} \ bmod p \ right \} \ para Alice
- Alice, usando la conmutatividad de la función de cifrado,
Alice \ to \ left \ {E_B \ left (K \ right) = K ^ b \ right \} \ para Bob - Bob descifra
Al final de la sesión de protocolo, Alice y Bob conocen la clave de sesión común.
.
Supongamos que un criptoanalista intercepta tres mensajes:
Para encontrar la llave
, un criptoanalista necesita resolver un sistema de estas tres ecuaciones, que tiene una complejidad computacional muy grande, inaceptable desde un punto de vista práctico, si los tres números
bastante grande Asume que
(o
) no es suficiente. Luego, computando grados sucesivos
(o
), se puede encontrar
(o
), comparando el resultado con
. Sabiendo
fácil de encontrar
y
.
Criptosistema Massey-Omura
En 1982, James Massey y Jim Omura reclamaron una patente (James Massey, Jim K. Omura), mejorando (en su opinión) el protocolo sin llave de Shamir. Como una operación de cifrado en lugar de exponenciación en un grupo multiplicativo
sugirieron usar exponenciación en el campo de Galois
. Clave secreta de cada fiesta (para Alice -
) debe cumplir las condiciones:
De lo contrario, el protocolo se ve similar.
Epílogo
El autor estará agradecido por los hechos y otros comentarios sobre el texto.