Colección de citas famosas - Colección de poesías - La clave de la criptografía(11)

La clave de la criptografía(11)

-¿La naturaleza del secreto

? Cuando se utilizan técnicas criptográficas como la criptografía simétrica, la criptografía de clave pública, los códigos de autenticación de mensajes y las firmas digitales, se requiere un número enorme llamado clave. Sin embargo, el tamaño del número en sí no es importante, lo importante es el tamaño del espacio clave, que es el número total de claves posibles, porque cuanto mayor es el espacio clave, más difícil es forzar bruscamente una grieta. El tamaño del espacio clave está determinado por la longitud de la clave.

? La longitud de la clave del cifrado simétrico DES es de 56 bits (7 bytes).

Por ejemplo,

La clave DES se puede representar en binario como:

01010001 11101100 01001011 00010010 001116543 8 001 01000010 00000011

En hexadecimal se puede representar como:

51 EC 4B 12 3D 42 03

En decimal se puede representar como:

2305928028626269955

? En el cifrado simétrico triple DES, hay dos formas: DES-EDE2 con dos claves DES y DES-EDE3 con tres claves DES.

La longitud de la clave de DES-EDE2 es de 112 bits (14 bytes), por ejemplo:

51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F

La longitud real de la clave de DES-EDE3 es 168 bits (21 bytes), por ejemplo:

51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F 24 9F 61 2A 2F D9 96

? La longitud de la clave de AES se puede seleccionar entre 128, 192 y 256 bits. Por ejemplo, cuando la longitud de la clave es de 256 bits:

51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F 24 9F 61 2A 2F D9 96

B9 42 DC FD A0 AE F4 5D 60 51 f 1

? La clave y el texto sin formato son equivalentes. Supongamos que el valor del texto sin formato es 6,5438 millones de yuanes, entonces el valor de la clave utilizada para cifrar el texto sin formato es 6,5438 millones de yuanes si el valor del texto sin formato es 100 millones de yuanes, y el valor de la clave es 100 millones de yuanes; El texto sin formato es crucial, entonces también lo es la clave.

? En el cifrado simétrico, se utiliza la misma clave para cifrar y descifrar. Debido a que el remitente y el receptor necesitan disfrutar de la clave, el cifrado simétrico también se denomina cifrado para disfrutar de la clave. La clave utilizada en el cifrado simétrico debe mantenerse en secreto para todos, excepto para el remitente y el receptor; de lo contrario, un tercero puede descifrarla.

? En un código de autenticación de mensaje, el remitente y el receptor se autentican utilizando una clave secreta compartida. Los códigos de autenticación de mensajes solo pueden ser calculados por alguien que tenga la clave legítima. Si se añade un código de autenticación de mensaje al mensaje de comunicación, se puede identificar si el contenido de la comunicación ha sido manipulado o disfrazado. Debido a que "tener una clave legal" es una prueba de la identidad legal del remitente y del destinatario, la clave del código de autenticación del mensaje debe mantenerse en secreto para personas distintas del remitente; de ​​lo contrario, existe el riesgo de ser manipulada y disfrazada.

? En las firmas digitales se utilizan diferentes claves para la generación y verificación de la firma. Sólo la persona con la clave privada puede generar la firma, pero como para verificar la firma se utiliza la clave pública, cualquiera puede verificar la firma.

? Para garantizar la confidencialidad se utilizan tanto el cifrado simétrico como las claves de cifrado de clave pública. Sin conocer la clave legítima utilizada para el descifrado, no hay forma de conocer el contenido del texto sin formato.

? En cambio, el código de autenticación del mensaje y la clave utilizada para las firmas digitales son las claves utilizadas para la autenticación. Sin conocer la clave legítima, no hay forma de alterar los datos ni disfrazar su identidad.

? Cuando visitamos una página web que comienza con https://, se produce una comunicación cifrada basada en SSL/TLS entre el servidor web y el navegador. La clave utilizada en esta comunicación es una clave única limitada a esta comunicación y no se puede utilizar en la siguiente comunicación. Una clave que se puede utilizar sólo una vez por comunicación se denomina clave de sesión.

? Dado que la clave de sesión sólo es válida dentro de esa comunicación, si un espía obtiene la clave de sesión para esa comunicación, sólo podrá descifrar el contenido de la comunicación.

? Aunque la clave de sesión cambia con cada comunicación, si la calidad del generador de números pseudoaleatorios utilizado para generar la clave no es buena, un espía puede predecir la próxima generación de la clave de sesión, lo que pondrá en riesgo el contenido de la comunicación. siendo decodificado.

? A diferencia de una clave de sesión que cambia con cada comunicación, una clave reutilizada se denomina clave maestra.

? En términos generales, el objeto del cifrado es información utilizada directamente por los usuarios. La clave utilizada en este caso se denomina CEK (Clave de cifrado de contenidos). En cambio, la clave utilizada para cifrar la clave se llama KEK (clave de cifrado de clave).

? En muchos casos, la clave de sesión mencionada anteriormente se utiliza como CEK y la clave maestra se utiliza como KEK.

? La mejor manera de generar una clave es usar números aleatorios, porque Miyo necesita tener propiedades que otros no puedan adivinar fácilmente. Si es posible, es mejor utilizar un dispositivo de hardware que pueda generar números aleatorios criptográficos, pero generalmente utilizamos un generador de números pseudoaleatorios, un software diseñado específicamente para fines criptográficos.

? Al generar una clave, no puede simplemente escribir algunos números, como "3F 23 52 28 E3...". Porque aunque desea generar números aleatorios, de todos modos no puede evitar el sesgo humano, y esto también se convertirá en el objetivo de los atacantes.

? Aunque existen muchos algoritmos para generar números pseudoaleatorios, el generador de números pseudoaleatorios utilizado con fines criptográficos debe estar diseñado específicamente para fines criptográficos. Por ejemplo, algunos generadores de números pseudoaleatorios se pueden utilizar en juegos y algoritmos de simulación. Aunque las secuencias generadas por estos generadores de números pseudoaleatorios parecen aleatorias, no se pueden utilizar para generar claves a menos que estén diseñadas específicamente para criptografía porque estos generadores de números pseudoaleatorios no son impredecibles.

? A veces también utilizamos contraseñas (contraseñas o frases de contraseña) que son fáciles de recordar para los humanos para generar claves. Una contraseña es una contraseña larga formada por varias palabras.

? Estrictamente hablando, rara vez utilizamos contraseñas directamente como claves. Generalmente ingresamos la contraseña en una función hash unidireccional y luego usamos el valor hash resultante como clave.

? Cuando se utiliza una contraseña para generar una clave, para evitar ataques de diccionario, se debe agregar una cadena de números aleatorios llamada salt a la contraseña y luego ingresarla en la función hash unidireccional. Este método se llama "Cifrado basado en contraseña (PBE)".

? Cómo compartir la clave entre el remitente y el receptor es una cuestión importante cuando se utilizan cifrados simétricos. Para resolver el problema de distribución de claves, puede utilizar métodos como el intercambio previo de claves, el uso de un centro de distribución de claves y el uso de criptografía de clave pública. Además de los métodos anteriores, también mencionamos un método para resolver el problema de distribución de claves llamado intercambio de claves Diffie-Hellman.

? Existe una tecnología que proporciona confidencialidad en la comunicación llamada actualización de claves, que consiste en cambiar periódicamente la clave durante el proceso de comunicación utilizando una clave compartida. Por supuesto, el remitente y el destinatario deben cambiar las claves de la misma forma al mismo tiempo.

? Al actualizar una clave, el remitente y el receptor usan una función hash unidireccional para calcular el valor hash de la clave actual y usan ese valor hash como la nueva clave. En pocas palabras, el valor hash de la clave actual se utiliza como la siguiente clave.

? Suponemos que en algún momento durante el proceso de comunicación, un espía obtiene la clave, y el espía puede usar esta clave para descifrar todas las comunicaciones posteriores. El espía no puede descifrar el contenido antes del momento de actualización de la clave, porque la salida de la función hash unidireccional debe usarse para calcular la entrada de la función hash unidireccional. Debido a que las funciones hash unidireccionales son unidireccionales, es difícil garantizar dicha inversión.

? Este mecanismo para evitar que se descifren las comunicaciones pasadas se llama seguridad hacia atrás.

? Dado que la clave de sesión solo se usa una vez durante la comunicación, no es necesario que la mantengamos en secreto. Sin embargo, cuando es necesario reutilizar las claves, se debe considerar la cuestión de guardarlas.

? Los humanos no pueden recordar la longitud real de las claves. Por ejemplo, una clave AES de 128 bits como la siguiente es difícil de recordar para la gente corriente.

3F 24 9.º Piso

Aunque apenas lo recuerdes, simplemente no recuerdas una llave. Pero en realidad es muy difícil recordar varias claves como ésta y asegurarse de que no se olviden.

? No recordamos la clave, pero si la guardamos nos la podrían robar. Esto es realmente un dolor de cabeza. Este problema es difícil de resolver por completo, pero existen algunas soluciones razonables que se pueden considerar.

? Guarde la clave en el archivo original y guárdelo en un lugar seguro, como una caja fuerte. Pero si lo guardas en una caja fuerte, no podrás usarlo cuando salgas. En este caso, deberás llevar la llave contigo cuando salgas. Si lleva sus llaves en una tarjeta de memoria, existe el riesgo de que la pierda o se la roben.

? En caso de que la clave sea robada, para permitir que el atacante dedique más tiempo a usarla, podemos utilizar el método de almacenamiento de claves de cifrado. Por supuesto, se necesita otra clave para cifrar la clave. Una clave como esta utilizada para cifrar contraseñas a menudo se denomina KEK.

? Aunque el método de cifrar claves no resuelve completamente el problema de la confidencialidad, en realidad es un método muy eficaz porque puede reducir la cantidad de claves que deben guardarse.

? Supongamos que hay 6,5438 millones de archivos en la computadora, que están cifrados con diferentes claves para generar 6,5438 millones de textos cifrados. De esta forma, tenemos 6,5438 millones de claves en nuestras manos. Es muy difícil conservar 6,5438 millones de claves.

? Por lo tanto, utilizamos una clave (KEK) para cifrar estos 6,5438 millones de claves, por lo que ahora solo se necesita una KEK como custodio, y el valor de esta KEK es equivalente a la suma de los valores de los 6,5438 millones de claves firmadas.

? El enfoque de utilizar una clave en lugar de varias claves para el almacenamiento es muy similar a la jerarquía de las autoridades de certificación. En este último caso, no necesitamos confiar en varias autoridades de certificación, solo en una CA raíz. Del mismo modo, no necesitamos garantizar la confidencialidad de varias claves, sino solo una KEK.

? La caducidad de la clave es tan importante como la generación, porque la clave y el texto plano son equivalentes.

? Supongamos que Alice envía un correo electrónico cifrado a Bob. Bob descifra y lee el contenido del correo electrónico. La clave utilizada en esta comunicación no es necesaria para Alice y Bob. Las claves que ya no son necesarias deben eliminarse correctamente, porque si las adquiere Eve, la espía Eve, los correos electrónicos cifrados enviados previamente se descifrarán.

? Si la clave es un archivo en su computadora, simplemente eliminar el archivo para eliminar la clave no es suficiente, ya que existen técnicas para "recuperar" el archivo eliminado. Además, en muchos casos, el contenido del archivo permanecerá en la memoria del ordenador, por lo que estos rastros deberán borrarse por completo. En resumen, si desea eliminar completamente la clave, no sólo debe utilizar software criptográfico, sino también considerar plenamente la seguridad de la información al diseñar su sistema informático.

? ¿Qué sucede si el archivo que contiene la clave se elimina accidentalmente o si la computadora portátil que contiene la clave se daña?

? Si pierde la clave compartida para el cifrado de clave simétrica, no podrá descifrar el texto cifrado. Si pierde la clave del código de autenticación del mensaje, no podrá demostrar su identidad al interlocutor.

? En criptografía de clave pública, es poco probable que se envíe una clave pública perdida porque la clave pública es completamente pública y es probable que haya copias en otras computadoras.

? El mayor problema es la pérdida de la clave privada para el cifrado de clave pública. Si se pierde la clave privada de un cifrado de clave pública, el texto cifrado cifrado con el cifrado de clave pública no se puede descifrar. Además, si se pierde la clave privada de la firma digital, no se podrá generar la firma digital.

? El intercambio de claves Diffie-Hellman es un algoritmo inventado por Whitfield Diffie y Martin Hellman en 1976. Usando este algoritmo, las partes que se comunican solo necesitan intercambiar cierta información pública para generar un número secreto, que puede usarse como clave del cifrado simétrico. En IPsec se utiliza el intercambio de claves Diffie-Hellman mejorado.

Alice generó un número aleatorio a.

? a es un número entero entre 1 y p-2. Este número es una contraseña que sólo Alice conoce. No es necesario decírselo a Bob y Eve.

Clave de cálculo de Alice = Clave de cálculo de Bob

? En los pasos 1 a 7, las dos partes intercambiaron cuatro números * * *, a saber, P, G, G A mod P y G b mod P. Con base en estos cuatro números, se calcularon las claves compartidas de Alice y Bob.

? Si Eva puede conocer cualquier número entre A y B, entonces es fácil calcular G A*B, pero es difícil encontrar A y B basándose en los cuatro números anteriores.

? Aún no ha aparecido un algoritmo eficiente para calcular A según G A mod P, y el problema se convierte en un problema de logaritmos discretos sobre un campo finito.

? El intercambio de claves Diffie-Hellman explota la complejidad del "problema del logaritmo discreto" para lograr un intercambio seguro de claves. Si el "problema de logaritmos discretos" se cambia por "el problema de logaritmos discretos en curvas elípticas", dicho algoritmo se denomina intercambio de claves Diffie-Hellman de curva elíptica.

? El proceso general del intercambio de claves de curva elíptica Diffie-Hellman no ha cambiado, pero los problemas matemáticos utilizados son diferentes. El intercambio de claves de curva elíptica Diffie-Hellman puede lograr una alta seguridad con claves de longitud corta.

? El cifrado basado en contraseña (PBE) es un método para generar una clave a partir de una contraseña y cifrar con esa clave. Se utiliza la misma clave para cifrar y descifrar.

? Hay muchas maneras de entender PBE. Por ejemplo, el PBE descrito en especificaciones como RFC2898 y RFC7292 se implementa mediante el paquete javax.crypto de Java. Además, PBE también se utiliza al guardar claves a través del software criptográfico PGP.

El significado de PBE se puede entender según la siguiente lógica.

Quiere un mecanismo que asegure noticias importantes.

Si guardas un mensaje directamente en el disco, es posible que otras personas puedan verlo.

Cifrar el mensaje con una clave (CEK).

Pero esta vez es necesario garantizar la confidencialidad de la clave (CEK).

Guardar la clave (CEK) directamente en el disco parece peligroso.

Utilice otra clave (KEK) para cifrar la clave (CEK).

¡Espera! Esta vez es necesario garantizar la confidencialidad de la clave (KEK). Este es un bucle infinito.

En este caso usaremos la contraseña para generar la clave (KEK).

Sin embargo, usar sólo contraseñas es vulnerable a ataques de diccionario.

Luego usa la contraseña y salt para generar una clave (KEK).

La clave salt y cifrada (CEK) se puede almacenar en el disco, mientras que la clave (KEK) se puede descartar directamente.

Mantén la contraseña en tu mente.

El cifrado PBE incluye los siguientes tres pasos:

? Salt es un número aleatorio generado por un generador de números pseudoaleatorios que se introduce en una función hash unidireccional junto con la contraseña al generar la clave (KEK).

? La clave (KEK) se genera en función de la contraseña secreta. Agregar sal parece no tener sentido, entonces, ¿qué hace exactamente la sal?

? Salt se utiliza para defenderse de ataques de diccionario.

Un ataque de diccionario es un método para precalcular y preparar una lista de claves candidatas.

? Supongamos que KEK se genera sin sal. Luego, el atacante activo Mallory puede generar una gran cantidad de kek candidatos por adelantado en función de los datos del diccionario.

? Aquí el avance es muy importante. Esto significa que Mallory puede preparar una gran cantidad de kek candidatos antes de robar las claves para una sesión cifrada. Cuando Mallory roba la clave de sesión cifrada, debe intentar descifrarla. Esto significa que se puede preparar una gran cantidad de kek candidatos pregenerados, lo que puede acortar en gran medida el tiempo de prueba. Este es un ataque de diccionario.

? Si agrega sal al generar KEK, cuanto más larga sea la sal, más KEK candidatas se generarán y será muy difícil generar KEK candidatas por adelantado. Mientras Mallory no obtenga la sal, no podrá presentar al candidato KEK. Esto se debe a que después de agregar sal, la cantidad de KEK candidatas será muy grande.

? El cerebro humano no puede recordar una clave que sea lo suficientemente larga. Lo mismo ocurre con las contraseñas, tampoco podemos recordar suficientes dígitos para ellas.

? En PBE, generamos una clave (KEK) a partir de la contraseña y ahora usamos esta clave para cifrar la clave de sesión (CEK). Dado que la clave (KEK) generada por la contraseña no es tan segura como la clave de sesión (CEK) generada por el generador de números pseudoaleatorios, esto es como poner la clave de una caja fuerte segura en una caja fuerte menos segura. claves basadas, la sal y la CEK cifrada deben protegerse por medios físicos. Por ejemplo, el Salt y el CEK cifrado se guardan en la tarjeta de memoria y se llevan consigo.

? Al generar una KEK, utilizar una función hash unidireccional varias veces puede mejorar la seguridad. Por ejemplo, es un buen método ingresar el salt y la contraseña en la función hash unidireccional y usar el valor hash obtenido por la función hash 1000 veces como KEK.

? Iterar una función hash unidireccional varias veces como esta se llama estiramiento.

El contenido principal de esta serie proviene de Graphical Cryptography, tercera edición.

Solo soy un portador de conocimiento

Las ilustraciones del artículo son del trabajo original.