Colección de citas famosas - Mensajes de felicitación - Descripción general de la seguridad en la era de la computación en la nube: intercambio secreto de claves (Parte 1)

Descripción general de la seguridad en la era de la computación en la nube: intercambio secreto de claves (Parte 1)

Ha pasado mucho tiempo desde que se publicó el último artículo sobre cifrado autenticado (Parte 2). El autor ha estado pensando en seguir escribiendo artículos básicos sobre seguridad hasta este domingo por la noche cuando vi el. Programa de lectura con mis hijos. En particular, el equipo del programa invitó a Wang Xiaoyun, profesora de la cátedra Yang Zhenning de 53 años en el Instituto de Estudios Avanzados de la Universidad de Tsinghua, para presentar su contribución a la criptografía. Cuando los niños y los familiares ven el programa, comprenden claramente qué es MD5 y por qué es tan importante, especialmente cuando el profesor Wang mencionó que el estándar de cifrado nacional basado en el diseño MD5 se ha utilizado ampliamente en tarjetas bancarias y tarjetas de seguridad social. y otros campos, lo que hace que el cifrado sea una tecnología antigua pero joven. El campo ha pasado a estar a la vista de más personas.

Lo que presentamos anteriormente se centró principalmente en el cifrado simétrico. A partir de este artículo, nuestro enfoque se centra en el algoritmo de cifrado asimétrico, también llamado algoritmo de cifrado de clave pública. Todo el algoritmo tiene un vínculo muy crítico: intercambio de claves secretas. Como sugiere el nombre, la "persona" de intercambio de claves resuelve el problema esencial de cómo intercambiar claves secretas de forma segura. Pidamos a nuestros viejos amigos la Reina Alice y Lord Bob que nos expliquen. Suponiendo que la Reina Alice y Lord Bob quieran comunicarse de forma segura, la Reina Alice y Lord Bob se envían sus respectivas claves secretas entre sí. El resultado es que ambas partes de la comunicación poseen esta clave secreta compartida, y esta clave secreta compartida se puede utilizar para interacciones posteriores de seguridad de la información.

Para que la discusión posterior sea más realista, supongamos que la Reina Alice y Lord Bob nunca se han conocido. Entonces, ¿cómo podemos permitir que la Reina y el Señor se comuniquen de manera segura? Este problema es también el escenario de aplicación más original del algoritmo de intercambio de claves secretas. Para garantizar la privacidad de la comunicación entre la reina y el señor, ambas partes necesitan una clave secreta compartida, pero la comunicación segura y las claves secretas compartidas no son tan simples como se imagina. Si un atacante malintencionado escucha a escondidas la comunicación telefónica o por correo electrónico entre la Reina y el Señor (suponiendo que se transmita la información en texto plano), entonces el atacante malicioso robará la clave secreta compartida por la Reina y el Señor, y todas las comunicaciones posteriores entre las dos partes se pueden descifrar a través de esta clave secreta. Todas las comunicaciones privadas entre la reina y el señor ya no son seguras. El contenido de las comunicaciones se ha convertido en la comidilla de todo el reino.

¿Cómo solucionar este problema? Este es el problema principal que debe resolver el algoritmo de intercambio de claves secretas. En pocas palabras, a través del algoritmo de intercambio de claves secretas, Queen Alice y Lord Bob pueden intercambiar claves secretas compartidas de forma segura, incluso si un atacante malintencionado no puede escuchar. para obtener la clave secreta de ambas partes, la reina y el señor finalmente podrán cotillear sin preocupaciones.

El intercambio de claves secretas comienza cuando las partes comunicantes generan sus propias claves secretas. Normalmente, el algoritmo de cifrado asimétrico genera dos claves secretas: clave pública y clave privada (clave pública y clave privada). Luego, las dos partes que se comunican se envían sus claves públicas entre sí respectivamente. El "público" de la clave pública aquí significa pública, lo que significa que los atacantes maliciosos también pueden obtener la información de la clave pública generada por ambas partes que se comunican. Luego, la reina y el señor combinan la clave pública recibida con la clave privada que poseen y el resultado es una clave de comunicación compartida. Puede ver esta clave pública desde la perspectiva de un atacante malintencionado. Dado que el atacante malintencionado no tiene la clave privada de ninguna de las partes, el atacante malintencionado no puede obtener la clave secreta "*** compartida" utilizada para comunicarse entre la reina y El Señor. Con respecto al proceso de generación de la clave secreta compartida en el lado de la reina y el señor, como se muestra en la siguiente figura:

Después de comprender el mecanismo de funcionamiento general del algoritmo de intercambio de clave secreta, echemos un vistazo al secreto. Algoritmo de intercambio de claves. Cómo resolver el problema de la comunicación segura entre la reina Alice y Lord Bob. Como se muestra en el proceso anterior, la reina y el señor determinan la clave secreta que se puede usar para la comunicación segura a través del algoritmo de intercambio de claves. Esta clave secreta se puede usar como clave secreta para la autenticación y el cifrado, por lo que incluso si MITM (hombre). -in-the-middle atacante) intercepta los datos de comunicación entre la reina y el señor, pero como no hay una clave secreta, el contenido de la comunicación no se descifrará, por lo que la reina y el señor pueden comunicarse de forma segura, como se muestra en la siguiente figura:

Sin embargo, el contenido descrito aquí es un poco vago, solo podemos llamar a este escenario MITM pasivo como máximo. En el lenguaje común, significa que el atacante malicioso está monitoreando pasivamente, pero la principal diferencia. del MITM activo es que el intermediario activo interceptará los datos del algoritmo de intercambio de claves y luego simulará los roles de ambos pares de comunicación al mismo tiempo.

Específicamente, el intermediario intercambiará activamente claves secretas con la reina y el señor al mismo tiempo. Las dos partes que se comunican "piensan" que han llegado a un acuerdo sobre la clave secreta compartida, pero en esencia, la reina y el señor. El señor solo llegó a un acuerdo con el intermediario. ***Conocimiento de la clave secreta. ¿Puedes pensar en las razones de este malentendido?

De hecho, la razón detrás de esto no es difícil de entender, porque las dos partes en la comunicación no tienen otros medios para juzgar la relación de tenencia entre la clave pública recibida y la contraparte de la comunicación. Llame a este intercambio de clave secreta "no autenticado" "Intercambio de clave secreta, como se muestra en la siguiente figura:

Entonces, ¿cómo resolver el ataque MITM activo? Creo que puede adivinar el intercambio de claves autenticado. Primero veamos un escenario comercial específico y veamos por qué necesitamos este modelo autenticado. Supongamos que desarrollamos un conjunto de servicios que proporcionan información de tiempo. El servicio se implementa en Alibaba Cloud. Para evitar que atacantes maliciosos modifiquen los datos de tiempo, utilizamos MAC (código de autenticación de mensajes). , Consulte el artículo anterior del autor.

MAC requiere una clave secreta para proteger la confidencialidad e integridad de los datos, por lo que cuando implementamos la aplicación, generamos una clave secreta y luego esta clave secreta se entregó ilegalmente a todos los clientes de alguna manera. , la aplicación se ejecuta de manera muy estable y, debido a la existencia de la clave secreta, todos los clientes que cumplen con la ley pueden leer la hora exacta. Sin embargo, después de leer este artículo, un cliente descubrió que esta clave secreta se puede utilizar para alterar los datos. Por lo tanto, nuestro sitio web recibió una gran cantidad de quejas de los clientes, diciendo que la hora de lectura era inexacta, lo que provocó problemas en la operación comercial y. procesamiento de datos del sistema.

Le pides al arquitecto que se ocupe de ello rápidamente y el arquitecto idea un plan para generar una clave secreta exclusiva para cada usuario. Aunque puede detener el sangrado, pronto descubrirás que este plan es efectivo. No es factible y no se puede operar ni mantener. A medida que aumenta el número de usuarios, la forma en que configuramos y administramos estas claves se ha convertido en un gran problema, sin mencionar el reemplazo regular. El algoritmo de intercambio de claves viene muy bien aquí, lo que tenemos que hacer es generar la clave secreta en el lado del servidor y luego proporcionar la información de la clave pública a cada nuevo usuario. Dado que el cliente conoce la información de la clave pública del servidor, el ataque MITM no se puede simular en ambas direcciones en el medio. También llamamos a este modo: intercambio de claves autenticado.

Continuemos analizando este escenario. Aunque el intermediario también puede intercambiar claves secretas con el servicio, en este momento no existe diferencia entre el intermediario y el cliente normal, por lo que es imposible realizar ataques MITM activos. .

Con el desarrollo de la ciencia y la tecnología, Internet se ha vuelto casi omnipresente en nuestras vidas. Cómo establecer de forma segura la clave secreta entre las partes que se comunican se ha vuelto extremadamente importante. Sin embargo, el modelo que presentamos anteriormente no es muy escalable porque el cliente necesita preestablecer la clave pública del servidor con anticipación, lo cual es especialmente obvio en el escenario de Internet. Por ejemplo, como usuarios, queremos comunicarnos de forma segura con varios sitios web de bancos y sitios web de seguridad social. Si necesita preestablecer la información de clave pública de cada sitio web en su teléfono móvil, tableta o computadora de escritorio para acceder a ellos de forma segura, entonces puede pensar. ¿Qué tan mala será la conveniencia y cómo podemos acceder de manera segura al sitio web recientemente desarrollado?

Por lo tanto, los lectores deben comprender un punto muy importante: el intercambio de claves secretas es muy importante, pero existe el problema de escalabilidad presentado anteriormente. La solución a este problema es confiar en la tecnología de firma digital, que combina la digitalización. El intercambio de firmas y claves secretas es la base de la tecnología SSL que presentaremos más adelante. Llevará mucho tiempo explicarlo claramente, por lo que utilizaremos un capítulo dedicado para presentar los principios de SSL. Sin embargo, para facilitar la introducción posterior, hablemos de algunos algoritmos de intercambio de claves específicos y los principios matemáticos detrás de ellos.

Comencemos con el algoritmo de intercambio de claves Diffie-Hellman mencionado en el primer artículo de la serie del autor Whitfield Diffie y Martin E. Hellman publicaron un artículo innovador en 1976 para presentarlo. Algoritmo de intercambio de claves secretas, este algoritmo se denomina "Nueva dirección en criptografía" en el documento.

La razón principal por la que este artículo fue calificado de innovador es por sus dos novedades: el primer algoritmo de intercambio de claves secretas y el primer algoritmo de cifrado de clave pública (o algoritmo de cifrado asimétrico) publicado públicamente.

El principio de datos del algoritmo DH es la teoría de grupos, que también es la piedra angular de todos los mecanismos de seguridad a los que estamos expuestos hoy en día. Debido a que el autor no se graduó con una especialización en matemáticas y mi base matemática no es muy sólida, he dudado sobre cómo continuar profundizando desde una perspectiva segura. Para que este algoritmo sea más fácil de entender para los lectores, el siguiente contenido implicará ligeramente algunos conocimientos básicos de datos. Creo que los estudiantes con conocimientos de matemáticas de la escuela secundaria deberían poder entenderlo.

Para introducir la teoría de grupos, la primera cuestión es definir claramente qué es un grupo. El autor consultó información relevante y encontró que los grupos tienen las siguientes dos características en el campo de las matemáticas:

1. Consta de un conjunto de elementos

2. Se definen operaciones binarias especiales entre el operador de elementos (como ? o ?)

Según la definición anterior, si este grupo de elementos y los operadores binarios definidos anteriormente satisfacen ciertos atributos, entonces llamamos a estos elementos un grupo. Para el algoritmo DH, el grupo utilizado detrás de él se llama grupo multiplicativo: un conjunto de elementos que define el operador binario multiplicativo. Los lectores pueden preguntarse, ¿qué atributos específicos satisface este grupo multiplicativo? Como hay mucho contenido en esta parte, presentémoslo uno por uno:

- Cierre. Cuando dos elementos de un conjunto se evalúan con un operador definido, el resultado también está en el conjunto. Por ejemplo, si tenemos un conjunto M y hay elementos a, b y c en M (c = a * b), entonces estos tres elementos se ajustan al atributo de cierre y el operador definido en el conjunto es multiplicación.

- Asociatividad. Esto es consistente con el concepto de asociatividad en matemáticas de la escuela secundaria, siempre que puedas entender la fórmula matemática a × (b × c) = (a × b) × c.

- Elemento de identidad. El conjunto contiene elementos unitarios. Después de que el operador calcula cualquier elemento y el elemento unitario, el valor del elemento no cambia. Por ejemplo, tenemos un conjunto M que contiene elementos (1, a, b, c...), entonces 1 es el elemento unitario, porque 1*a = a, después de que a y el elemento unitario 1 se calculan mediante el operador, el resultado permanece sin cambios.

- Elemento inverso. Hay un elemento inverso para cualquier elemento del conjunto. Por ejemplo, si tenemos un elemento establecido a, entonces el elemento inverso de este elemento es 1/a. Después de calcular el elemento a y el elemento inverso, el operador. el resultado es 1.

El autor debe admitir que debido a mi conocimiento matemático superficial, la explicación de las cuatro propiedades anteriores puede confundir a todos. Por lo tanto, preparé la siguiente imagen con la esperanza de aclarar las cuatro propiedades del grupo. Las propiedades tienen una descripción complementaria más detallada.

Con la introducción anterior sobre grupos, atributos de grupo y otra información, echemos un vistazo más de cerca a cómo se ve el grupo utilizado por el algoritmo DH. El grupo utilizado por el algoritmo DH está formado por números enteros positivos, y en la mayoría de los casos los elementos que componen el grupo son números primos, como este grupo (1, 2, 3, ...., p-1), donde p Generalmente es un número primo muy grande para garantizar la seguridad del algoritmo.

Nota: La definición matemática de número primo es un número que sólo se puede dividir por sí mismo y 1, como 2, 3, 5, 7, 11, etc. Los números primos se utilizan ampliamente en algoritmos de cifrado asimétrico. Los estudiantes de informática deberían haber escrito programas para encontrar e imprimir números primos en la universidad. El núcleo del algoritmo es enumerar todos los números para determinar si son números primos y, de ser así, imprimirlos. Sin embargo, desde una perspectiva algorítmica, un modelo tan exhaustivo no es eficiente. Por lo tanto, han aparecido en la industria muchos algoritmos eficientes y se pueden encontrar rápidamente números primos relativamente grandes.

Además de que los elementos son números primos, el otro atributo del grupo utilizado por el algoritmo DH es el operador modular, concretamente llamado operación de multiplicación modular. Comencemos con la aritmética modular. La aritmética modular es muy similar a algunos problemas de matemáticas avanzadas para estudiantes de primaria, centrándose en cocientes y restos.

Por ejemplo, si configuramos el módulo en 5, cuando el número sea mayor que 5, se ajustará y comenzará nuevamente desde 1. Por ejemplo, después de calcular el número 6 en módulo 5, el resultado es 1, el resultado de 7 es 2, y así sucesivamente. El ejemplo más clásico de cálculo modular es el reloj. Hay 24 horas en un día, por lo que cuando usamos 12 horas para contar, las 13 se llaman 1 de la tarde, porque 13 = 1*12 + 1. (12 es módulo).

A continuación, veamos la definición de multiplicación modular. Tomemos 6 como ejemplo, 6 = 3 ?. Si el módulo es 5, sabemos que 6 es congruente con 1 módulo 5, entonces nuestra fórmula. se puede escribir como:

3 × 2 = 1 mod 5

De la ecuación anterior, sacamos una conclusión muy importante. Cuando eliminamos el mod 5, resulta que 3 ×. 2 = 1, entonces 3 y 2 son elementos inversos entre sí.

Finalmente, resumamos las dos características del grupo de la base del algoritmo DH:

- Conmutativo (ley conmutativa), el cálculo de dos elementos del grupo tiene ley conmutativa, es decir, ab= ba, normalmente llamamos al grupo con ley conmutativa grupo de Galois

- Campo finito A continuación presentaremos las características del campo finito en detalle

El grupo. definido por el algoritmo DH también se llama FFDH (Finite Field Diffie-Hellman), y el subgrupo se refiere a un subconjunto del grupo. Después de operar los elementos del subconjunto a través del operador definido, llegaremos a otro subgrupo.

Un concepto muy importante en la teoría de grupos es subgrupo cíclico. En términos sencillos, significa que un generador (o base) realiza constantemente operaciones de multiplicación consigo mismo. En el siguiente ejemplo, el subgrupo 4 es suficiente. 1 y 4:

4 mod 5 = 4

4 × 4 mod 5 = 1

4 × 4 × 4 mod 5 = 4 (empezar de nuevo, que también es la encarnación del subgrupo cíclico)

4 × 4 × 4 × 4 mod 5 = 1

Espera

Cuando nuestro módulo es un número primo, luego, cada elemento del grupo es un generador que puede producir un subgrupo clílico, como se muestra en la siguiente figura:

Finalmente, damos un resumen completo del grupo y del grupo de Galois definido por DH:

- Un grupo es un conjunto de elementos que define una operación binaria y tiene las propiedades de cierre, asociatividad, elemento identidad y elemento inverso

- El grupo definido por DH se llama grupo de Galois Los elementos que componen el grupo son números primos y están en la operación de multiplicación modular se define en el grupo

- En el grupo definido por DH, cada elemento es un generador después de la multiplicación repetida por sí mismo. Se produce el subgrupo

Hay muchos grupos. El autor solo ha introducido brevemente los conceptos básicos de los algoritmos de cifrado. Si los lectores están interesados ​​en esta parte, pueden consultar los materiales relevantes. Ahora que tenemos una comprensión preliminar del grupo, nuestro próximo artículo presentará el principio de funcionamiento detrás del algoritmo DH, ¡así que estad atentos!