No solo cifrado o revisión de las criptotecnologías..
No solo cifrado, o una revisión de las criptotecnologías
Gleb Semenov
Introducción
¿Qué suele venir a la mente cuando escuchas la palabra “criptografía”? ¿Servicios de inteligencia, correspondencia diplomática, “chamanismo matemático”?
¿Qué pasa cuando dices la frase «criptografía en tecnología de la información»? El cifrado de datos se recordará inmediatamente. Se acordarán de la firma electrónica. ¿Alguien sabe algo sobre los “Certificados de clave pública”? O sobre «piratear» los cifrados de otras personas. Intentemos comprender todos estos y, al mismo tiempo, otros conceptos y enfoques con los que opera la criptografía moderna.
En el pasado, la criptografía se utilizaba sólo con fines militares. Sin embargo, ahora, con la formación de la sociedad de la información, la criptografía se está convirtiendo en una de las principales herramientas para garantizar la confidencialidad, la confianza, la autorización, los pagos electrónicos, la seguridad corporativa y muchas otras cosas importantes.
Para ser justos, cabe señalar que ¿criptografía? — no es una panacea para todos los males. Los métodos criptográficos pueden ayudar a brindar seguridad, pero no debe confiar únicamente en estos métodos. Se pueden utilizar métodos criptográficos para resolver los siguientes problemas de seguridad:
- confidencialidad de los datos transmitidos/almacenados;
- autenticación;
- integridad de los datos almacenados y transmitidos;
- garantizar la autenticidad de los documentos.
Son pocos los métodos básicos de conversión de información que tiene la criptografía, entre ellos:
- cifrado (simétrico y asimétrico);
- cálculo de funciones hash;
- generar una firma digital electrónica;
- generación de una secuencia de números pseudoaleatorios.
En esta revisión, nos interesarán los criptosistemas y criptoalgoritmos implementados mediante una computadora. La revisión no considerará los métodos de cifrado que utilizan teclados de cifrado o equipos de cifrado especiales, tanto por la falta de información abierta sobre estos métodos como por la inaccesibilidad de dichos equipos para el consumidor masivo.
En realidad, sobre el cifrado
El cifrado es la transformación reversible de datos con el fin de ocultarlos a personas externas. Se han inventado muchos métodos de cifrado, desde simples cifrados de sustitución (el ejemplo más famoso es The Dancing Men de Conan Doyle) hasta el cifrado Vernam fundamentalmente irrompible (adición binaria del texto original con una secuencia aleatoria que se usa una vez). Casi todos los métodos de cifrado utilizan una clave de cifrado, una secuencia de código secreto que se utiliza en el proceso de conversión de información. En algún lugar incluso leí esta definición de cifrado: “El cifrado es el proceso de reemplazar su gran secreto (documento) por uno pequeño (clave).
En el caso de utilizar el cifrado Vernam, la clave de cifrado tiene la misma longitud que el mensaje cifrado y también debe usarse una vez. Y aunque el cifrado Vernam, cuando se utiliza correctamente, proporciona un secreto «absoluto», no es conveniente para la mayoría de las aplicaciones. Los criptosistemas modernos utilizan una clave de cifrado cuya longitud oscila entre 64 y 1024-2048 bits. La tradición de medir la longitud de la clave en bits aparentemente permanecerá con nosotros para siempre. ¿El lector puede tener alguna pregunta? — ¿De dónde provienen estos números y por qué se considera que TripleDES no es menos confiable que RSA de 1024 bits? Y, en general, ¿cómo depende la confiabilidad del cifrado (o, como dicen, la solidez del cifrado) de la longitud de la clave utilizada?
Para responder a estas preguntas, es necesario comprender qué algoritmos de cifrado se utilizan actualmente en la práctica. En general, los cifrados de bloques simétricos suelen denominarse «cifrados clásicos». Es decir, aquellos que utilizan la misma clave para cifrar y descifrar información y cifrar información en bloques. La longitud del bloque suele ser de 8 o 16 bytes. Existen algoritmos que permiten una longitud de bloque variable. El primer cifrado de bloques ampliamente utilizado en la práctica fue DES (Data Encryption Standard), desarrollado por especialistas de IBM a principios de los años 70 del siglo pasado y que durante mucho tiempo sirvió como estándar para el cifrado de datos en los EE. UU. Luego aparecieron muchos algoritmos de bloques: IDEA, Blowfish, GOST soviético 28147–89 (y ahora un estándar nacional).
El DES original, por ejemplo, utilizaba una clave de 112 bits y un bloque de cifrado de 64 bits. Pero, tras su “análisis” por parte de los especialistas de NSA1, la longitud de la clave se redujo a 64 bits. Al mismo tiempo, la clave tenía solo 56 bits únicos y 8 bits de control, que servían para controlar la integridad de la clave. Fue con una longitud de clave de 56 bits que DES fue aprobado como estándar nacional. En ese nivel de desarrollo de la tecnología informática, la tarea de buscar entre 2**56 claves en un tiempo aceptable era técnicamente inviable o excesivamente costosa2. Actualmente, DES con una longitud de clave de 56 bits no parece ser un algoritmo sólido.
La mayoría de los algoritmos simétricos fuertes modernos utilizan una longitud de clave de 64-256 bits (8- 32 bytes). A continuación, la tabla enumera los principales algoritmos utilizados actualmente, sus longitudes de bloque y longitudes de clave.
Algoritmo | Longitud de la clave (en bits) | Longitud del bloque (en bits) |
DES | 64 | 64 |
Blowfish | Variable, hasta 448 bits | 64 |
IDEA | 128 | 64 |
GOST 28147–89 | 256 | 64 |
RC5 | variable | variable |
Cabe señalar que, además de los cifrados de bloque, existen cifrados de flujo y se utilizan activamente. Al igual que los cifrados en bloque, utilizan una clave simétrica, pero cifran el flujo de entrada byte a byte o, a veces, bit a bit. La idea de un cifrado de flujo es que, basándose en una clave simétrica, se genera una secuencia de claves, o gamma, que se agrega módulo dos (operación xor) al flujo de entrada. Los cifrados de flujo suelen ser más potentes que los cifrados de bloque y se utilizan para cifrar voz, tráfico de red y otros datos de longitud desconocida. Cuando la clave se cambia con suficiente frecuencia para generar una gamma, los cifrados de flujo proporcionan suficiente solidez.
La Figura 1 muestra el diagrama general del algoritmo de cifrado de bloques (codificador de bloques) y la Figura 2 muestra el de flujo. En la fig. La Figura 1 muestra que además de la clave de cifrado, el parámetro de entrada del algoritmo de cifrado es el vector de inicialización3. El vector de inicialización, como puede verse por su nombre, es un mensaje binario de inicialización con una longitud igual al bloque del algoritmo. El vector de inicialización no es un elemento secreto.
Figura 1. Circuito codificador de bloque
Figura 2. Circuito codificador de flujo
En particular, en las comunicaciones móviles, el estándar GSM ofrece la posibilidad de cifrar el flujo de voz transmitido en el tramo desde el teléfono hasta la estación base con un cifrado A5, que es un cifrado de flujo. Hay una historia instructiva relacionada con el algoritmo A5. Inicialmente, se cerró la descripción del algoritmo A5. Pero debido a un error legal de la empresa propietaria del algoritmo, su descripción acabó en Internet y el algoritmo fue analizado. Su resistencia resultó ser incluso menor que la del DES. Al darse cuenta de la importancia de la apertura de los algoritmos para garantizar su solidez,4 los desarrolladores de la tercera generación de la red GSM prometieron poner a disposición del público criptográfico en general los algoritmos de cifrado de voz propuestos para su uso. El ejemplo muestra la importancia de tener una descripción abierta del algoritmo incluso para sus propios desarrolladores.
Hoy en día, los algoritmos con una longitud de clave de 64 bits o más proporcionan una seguridad aceptable. Sin embargo, ¿por qué utilizar claves de 512 bits o más de longitud? La respuesta es: ¡estas llaves son de otro castillo! En los años setenta del siglo pasado (¡Acostúmbrense, caballeros! El siglo XX, lamentablemente, ha terminado), Diffie y Hellman idearon una criptografía completamente «nueva»: la criptografía de clave pública [1]. También se le llama “criptografía abierta” o “criptografía asimétrica”.
La idea de Diffie y Hellman fue la siguiente. Tomemos un número determinado y llamémoslo «clave secreta». Realicemos algunas acciones en él, como resultado de lo cual obtendremos otro número: la «clave pública». Además, elegiremos acciones que para obtener una «clave pública» a partir de un «secreto» conocido no requieran grandes recursos informáticos ni tiempo, y la acción inversa: calcular el «secreto» a partir de una «clave pública» será imposible o muy difícil. de larga duración5. Sin entrar en detalles matemáticos, observamos que en una computadora personal moderna, generar una clave pública a partir de una clave pública conocida demora aproximadamente un segundo, y la conversión inversa, dependiendo de la longitud de la clave, puede demorar hasta cientos de segundos (y. incluso miles) de años.
Considerando el texto fuente como un número grande, lo transformaremos usando la clave pública. Como resultado, obtendremos un nuevo número, que consideraremos como un cifrado. Teniendo la clave secreta a nuestra disposición y aprovechando el hecho de que la clave pública se obtuvo de la clave secreta de una manera especial, podemos descifrar el texto con relativa rapidez (en términos computacionales). Al mismo tiempo, cabe señalar que, en general, el proceso de cifrado-descifrado utilizando un par de claves es dos o tres órdenes de magnitud más lento que el proceso de cifrado-descifrado del mismo texto utilizando un algoritmo simétrico.
Parecería que con la disponibilidad de algoritmos simétricos rápidos, probados en el tiempo y en la práctica, ¿por qué es necesario utilizar criptografía asimétrica relativamente lenta? Esto es necesario porque cuando se utiliza criptografía asimétrica, el procedimiento para distribuir claves entre los participantes del intercambio se simplifica radicalmente y también es posible el uso de una firma digital electrónica (pero más sobre esto a continuación). El algoritmo de cifrado asimétrico más famoso en la actualidad es el algoritmo propuesto por Rivest, Shamir y Adelman y que lleva su nombre: el algoritmo RSA.
De hecho, si hay pocos participantes en el intercambio y todos están cerca unos de otros, entonces el problema de distribuir claves simétricas entre ellos se resuelve de forma relativamente sencilla. Para N participantes en un intercambio de comunicación entre sí, cada participante debe tener N-1 claves de comunicación por pares. En este caso, cada participante en el intercambio debe disponer de un canal seguro para el intercambio de claves con los demás participantes6. A medida que aumenta el número de participantes en el intercambio, la tarea de distribuir y reemplazar claves simétricas comprometidas puede resultar completamente insoluble, especialmente cuando los participantes en el intercambio no confían entre sí.
El uso de criptografía asimétrica simplifica radicalmente el proceso de distribución de claves. La clave pública se llama «pública» porque no representa un secreto. Es posible crear un «directorio de claves públicas» público donde se puedan colocar las claves públicas de todos los participantes en el intercambio. Al mismo tiempo, cada propietario de clave es libre de revocar su clave del directorio o reemplazarla; este procedimiento no afectará a los demás participantes en el intercambio. En este caso surge el problema de la autenticidad de la clave en el directorio, pero también se puede solucionar.
Pero hay que pagar por la comodidad. En el caso de utilizar criptografía asimétrica, el coste es el tiempo y la longitud de las claves. La longitud de clave típica cuando se utiliza criptografía asimétrica es de 512 a 1024 bits. Ahora que están disponibles los sistemas informáticos de alto rendimiento, el uso de claves de 2048 bits está ganando popularidad.
¿Es posible reducir el tiempo de cifrado manteniendo la conveniencia de la criptografía asimétrica y agregando la velocidad de los cifrados en bloque? Resulta que es posible. Normalmente hacen esto: generan una secuencia aleatoria (o pseudoaleatoria) y la utilizan como una clave única (la llamada clave de sesión) para cifrar un documento utilizando un algoritmo simétrico rápido. Luego, utilizando un algoritmo asimétrico, cifran la clave de sesión y la transmiten cifrada junto con el documento. Al descifrar un documento, primero se descifra la clave de sesión y luego el documento en sí. Debido a la corta longitud de la clave de sesión, se dedica poco tiempo a cifrarla. Los criptoalgoritmos simétricos utilizados actualmente tienen un rendimiento del orden de megabytes por segundo (para implementaciones de software) y decenas de megabytes en el caso de utilizar criptoprocesadores especializados. Los algoritmos asimétricos muestran un rendimiento de unos pocos a decenas de kilobytes por segundo, dependiendo de la longitud de la clave. Con una longitud de clave de sesión de 8 a 32 bytes, este esquema criptográfico híbrido resulta bastante efectivo.
Pero volvamos brevemente a las estimaciones de la solidez de los algoritmos asimétricos y a los problemas que surgen al utilizarlos. En esta revisión, intentaremos prescindir de cálculos y fórmulas matemáticas, sin embargo, observamos que la dificultad de recuperar una clave secreta a partir de una clave pública está determinada por la complejidad de descomponer un gran número en factores simples (los llamados » problema de factorización”) o la complejidad de la tarea «logaritmo discreto». El problema del “logaritmo discreto” se puede formular de la siguiente manera: tomamos un número conocido, lo elevamos a una potencia desconocida y el resto de dividir este exponente por algún número primo grande conocido (el llamado módulo) se obtuvo como resultado. . Todos los números son naturales. Encuentra el exponente. Las longitudes características de los números involucrados en los cálculos son de varios cientos de decimales (es decir, 512-1024-2048 bits).
Los resultados actuales de la teoría de la complejidad establecen que la complejidad computacional del problema de logaritmos discretos depende exponencialmente de la magnitud del módulo. Pero nadie ha podido demostrar todavía estrictamente que esta dependencia no pueda ser polinómica. Si de repente, mañana, algún matemático brillante encuentra una manera rápida de factorizar números grandes,8 entonces puede suceder que nos encontremos sin criptografía asimétrica. Aunque los matemáticos estiman que la probabilidad de este evento es cercana a cero. Al utilizar criptografía asimétrica, es útil recordar la “espada de Damocles”.
Funciones hash y un poco sobre la firma electrónica
Como se señaló en la introducción, los métodos criptográficos pueden garantizar no sólo la confidencialidad, sino también controlar la integridad de los datos transmitidos o almacenados. El control de integridad se realiza principalmente calculando una “suma de verificación” de los datos. Los matemáticos e ingenieros que trabajan en el campo de la transmisión de datos y la teoría de la codificación han desarrollado muchos algoritmos que calculan las sumas de verificación de los datos transmitidos. Para muchas aplicaciones, una simple suma de comprobación (por ejemplo, el conocido algoritmo crc32 o la adición secuencial byte a byte o palabra a palabra del texto fuente con una constante conocida) es suficiente, especialmente cuando la velocidad de procesamiento de datos es importante. y la cantidad de datos no se conoce de antemano (un caso típico es la transferencia de datos a través de canales de comunicación).
El problema con los algoritmos simples de cálculo de suma de verificación es que es bastante fácil encontrar varias matrices de datos que tengan la misma suma de verificación. Las sumas de verificación criptográficamente sólidas se calculan como resultado de aplicar la llamada función hash al texto fuente.
Uno de los resultados de la teoría de la complejidad y la teoría de funciones es la hipótesis de la existencia de funciones unidireccionales. Una función unidireccional es una función que se define (por ejemplo) en un conjunto de números naturales y no requiere grandes recursos informáticos para calcular su valor. Pero calcular la función inversa (es decir, usar un valor conocido de la función para restaurar el valor del argumento) resulta ser teóricamente imposible o (en casos extremos) computacionalmente imposible.
Aún no se ha demostrado la existencia estricta de funciones unidireccionales. Por lo tanto, todas las funciones hash utilizadas actualmente son sólo «candidatas» para funciones unidireccionales, aunque tienen propiedades bastante buenas. Las principales propiedades de una función hash criptográficamente «buena» son la propiedad de dispersión, la propiedad de resistencia a la colisión y la propiedad de irreversibilidad.
Ya hemos hablado de irreversibilidad. Una colisión de función hash H es una situación en la que hay dos textos diferentes T1 y T2, pero H(T1) = H(T2). El valor de la función hash siempre tiene una longitud fija y no se imponen restricciones a la longitud del texto fuente. De esto se deduce que existen colisiones. El requisito de resistencia a la colisión significa que para una función hash criptográficamente «buena» para un texto determinado T1, es computacionalmente imposible encontrar el texto T2 que causa una colisión.
La propiedad de dispersión requiere que los cambios mínimos en el texto que se va a aplicar hash causen cambios máximos en el valor hash.
Los principales algoritmos utilizados hoy en día que implementan funciones hash son MD2, MD4, MD5, SHA y su variante SHA1, un algoritmo ruso descrito por el estándar GOST R 34.11–94. Los más utilizados son MD5, SHA1 y, en Rusia, 11/34. La longitud del valor hash varía. La longitud típica es de 16 a 32 bytes. A la luz de los recientes resultados criptoanalíticos, es posible que haya que abandonar el MD5 en un futuro próximo, ya que se ha afirmado que «su resistencia a la colisión ha disminuido y probablemente se esté acercando al punto en el que ya no es necesario utilizarlo». hablar de resiliencia en absoluto”.
El título de la sección contiene las palabras “firma electrónica”. En el mismo número se publicó un artículo íntegramente dedicado a las cuestiones prácticas y jurídicas del uso de la firma electrónica, por lo que no es necesario entrar en detalle aquí. Pero sería un completo error no hablar de firma electrónica.
La cuestión es que sin criptografía asimétrica no habría ninguna firma electrónica. La idea de una firma electrónica es sencilla. Cuando se describió el proceso de cifrado mediante un algoritmo asimétrico en la Sección 1, se observó que se utilizaba una clave pública para cifrar el mensaje y una clave secreta para descifrarlo. Pero, cuando se aplica al cifrado, las claves son intercambiables. Puede cifrar un mensaje usando su clave privada y luego cualquiera puede descifrarlo usando la clave pública. Esta es una propiedad de los algoritmos asimétricos y se utiliza en la formación y verificación de una firma digital electrónica. En general, la firma digital de un documento es su suma hash, cifrada con una clave secreta. Verificar la firma digital de un documento se reduce a calcular la cantidad de hash del documento, descifrar la cantidad de hash contenida en la firma y comparar los dos valores. Si los valores de las sumas hash calculadas y almacenadas en la firma coinciden, entonces se considera que la firma bajo el documento es correcta.
Marcas de agua electrónicas
La sección 3 analizó la cuestión del control de la integridad y la garantía de autenticidad de un documento electrónico. ¿Es posible, utilizando tecnologías criptográficas, garantizar la autenticidad de un documento en papel (testamento, poder u otro documento legal)? El enfoque tradicional es redactar un documento legal en papel con marcas de agua u otros elementos de seguridad. Este enfoque requiere la disponibilidad de un formulario especial en el momento de redactar el documento o la presencia de una imprenta con equipo especial. ¿Qué hacer cuando ya tienes un documento en papel y quieres protegerlo de la falsificación9?
Se sabe que cada hoja de papel es única en la estructura de las fibras que la forman. Con la llegada de escáneres de alta resolución y bajo costo y tecnologías confiables de reconocimiento de patrones, ha sido posible analizar la microestructura del papel y utilizar la información obtenida para garantizar la singularidad del documento.
Hoy en día, ya existe una tecnología bien desarrollada desarrollada en una solución de software y hardware que garantiza la singularidad de los documentos en papel utilizando la idea anterior.
El documento seleccionado se escanea con alta resolución y en la imagen escaneada se resaltan varias características (microimpregnaciones, curvaturas características de las fibras en formación, etc.). En general, aquí se sugiere una cierta analogía con la tecnología de análisis de huellas dactilares. Y, por cierto, no es casualidad. Los datos recibidos se convierten en una matriz binaria, para la cual se calcula una función hash.
El valor de la función hash resultante es análogo a una «marca de agua» y garantiza la singularidad del documento. Es fácil ver que la tecnología propuesta se puede ampliar fácilmente y el valor de la función hash se puede imprimir directamente en el formulario del documento junto con el sello del notario al certificar el documento ante notario10. Pero un enfoque así requiere una legislación adecuada.
Lamentablemente, hasta ahora los intentos de utilizar “marcas de agua electrónicas” en soportes no impresos no han tenido éxito. El ejemplo más famoso es un intento de proteger los DVD de la distribución ilegal. La idea de los desarrolladores era, además de cifrar la información del disco11, colocar en él alguna información que se perdía o dejaba de ser relevante en la copia. La práctica ha demostrado que los intentos de introducir dicha tecnología no tuvieron éxito.
El ejemplo anterior, por cierto, refleja la diferencia profunda y, lamentablemente, a menudo desapercibida entre los documentos tradicionales y los electrónicos. La esencia de esta diferencia es claramente visible en el ejemplo del uso de una firma electrónica. Un programa de verificación de firmas, en términos generales, sólo puede establecer que el documento que se verifica fue firmado utilizando una clave que tiene el identificador especificado y que la firma es correcta (o incorrecta). Pero por la firma es imposible determinar quién utilizó exactamente esta clave.
Por ejemplo, para calcular la «suma de comprobación» de un disco DVD legal, se utilizaron características como el material de recubrimiento, los datos del código de barras, el código del fabricante y el número de serie del disco. Tener un algoritmo para calcular dicha «suma de verificación» permitirá a los «piratas» potenciales hacer un número ilimitado de copias simplemente recalculando la «suma de verificación» durante el proceso de fabricación para los «espacios en blanco» que están a su disposición. ¡Cualquier reproductor de DVD considerará un disco fabricado de esta manera como legal!
Phil Zimmerman, PGP y sistemas de certificación de clave pública
En la Sección 2, se señaló el problema de preservar la autenticidad de las claves y firmas de cifrado públicas en el caso de su almacenamiento y distribución abiertos. Con la distribución masiva y el uso de herramientas de criptografía abiertas, la cuestión de garantizar la autenticidad de las claves se vuelve central y requiere una atención especial.
El método tradicional de certificar la autenticidad de un documento es su certificación notarial. Para garantizar la autenticidad de una clave pública, también se propuso utilizar un análogo electrónico de la notarización: una firma electrónica de una persona de confianza o de un grupo de personas. Entonces, en este asunto, la humanidad nuevamente no inventó nada fundamentalmente nuevo. La autenticidad de la clave pública y sus atributos está garantizada por una firma electrónica debajo de ella, perteneciente a una determinada persona o grupo de personas en las que confían los participantes en el intercambio. En la práctica, esto se implementa a través de los llamados «centros de certificación clave» o «centros de confianza» (el término en inglés es Autoridad de Certificación, que, lamentablemente, tampoco tiene un análogo literal en ruso).
Antes de hablar de las autoridades certificadoras de clave pública y de la infraestructura de clave pública en general, deberíamos decir algunas palabras sobre el pionero de la criptografía «abierta», Phil Zimmerman. Merece mención no sólo porque hizo que los métodos criptográficos fueran accesibles a una amplia gama de usuarios, sino también porque se le ocurrió la idea original de garantizar la autenticidad de las claves públicas.
Recordemos que Phil Zimmerman, un ex empleado de la NSA, escribió en 1992 y puso ampliamente a disposición del público el programa PGP (Pretty Good Privacy), diseñado para cifrar y firmar electrónicamente mensajes. En la vida de PGP y del propio Phil Zimmerman hubo tanto “la ira de los servicios de inteligencia” como el reconocimiento de “las amplias masas de usuarios”. Hubo un tiempo en que Zimmerman fue investigado por supuestamente “divulgar secretos de estado”. La fascinante historia del surgimiento y desarrollo de PGP no es el tema de este artículo. Nos interesarán las ideas sociotecnológicas originales, si lo desea, implementadas en PGP.
PGP es un programa que permite cifrar y firmar documentos electrónicos utilizando varios algoritmos criptográficos. En este caso, se utiliza un esquema «híbrido» para el cifrado: la información se cifra con un algoritmo simétrico en la clave de sesión y la clave de sesión se cifra con un algoritmo asimétrico en la clave pública del destinatario del mensaje. Dado que Phil Zimmerman consideraba que uno de los objetivos de PGP era el uso incontrolado de tecnologías criptográficas por parte del Estado, propuso la idea de la certificación mutua de claves públicas.
La idea de certificación mutua de claves públicas se implementa de la siguiente manera. Usted, como usuario del programa PGP, crea su propio par de claves. A continuación, si desea transmitir información cifrada a otras personas, debe buscar una forma segura de transmitir su clave pública a sus corresponsales. Por ejemplo, este método podría ser una reunión personal. Usted y su corresponsal se transfieren claves públicas entre sí. Usted y su corresponsal pueden firmar las claves públicas de cada uno y colocar los «certificados» recibidos en un servidor de libre acceso. Próximo. Puede haber varias firmas bajo una clave pública y a cada una de ellas se le puede asignar un determinado «nivel de confianza». Al mismo tiempo, el nivel de confianza lo determina el usuario final de la clave. Es decir, utilizando el principio «el amigo de mi amigo es mi amigo», puede organizar la comunicación entre sus amigos y su corresponsal. Si tus amigos confían completamente en ti, entonces tu firma bajo la clave de tu corresponsal será suficiente para que la utilicen.
La tecnología PGP utilizó implícitamente el principio de “confianza mutua”13. Si yo, como usuario de PGP, estoy interesado en aumentar el número de corresponsales con los que podré mantener un mensaje cifrado, intentaré encontrar más personas que confíen en mí para certificar mi clave. Y ellos, a su vez, buscarán a sus clientes. Como resultado, completos extraños que quieran intercambiar mensajes cifrados pueden recibir claves públicas de un servidor de claves PGP con una gran cantidad de firmas de extraños14. Con una alta probabilidad, entre las firmas del certificado habrá la firma de una persona en quien estas personas confían completamente o varias firmas de personas en quienes la confianza no es tan ilimitada, pero aún tiene un lugar para estar. Al mismo tiempo, cada uno de los corresponsales es libre de priorizar sus firmas.
Y, sin embargo, Phil Zimmerman no logró realizar plenamente su idea. El sistema de “certificación mutua basada en la confianza” no ha resistido la prueba de la realidad. PGP, por supuesto, sigue utilizándose y tiene sus partidarios, pero a nivel corporativo (y en algunos países, a nivel estatal), el sistema de certificación de claves a la PGP ha sido completamente reemplazado por centros de confianza o autoridades de certificación de claves públicas. . El Instituto Público de Magistrados y Notarios no es nuevo, por lo que los creadores de los centros de certificación no tuvieron que inventar nada nuevo. En lugar de una certificación mutua de claves, se propuso un mecanismo de certificación de claves públicas en un «notario electrónico».
Para convertir una clave pública en un certificado de clave pública, se le agregan los detalles del propietario de la clave, los detalles del «centro de confianza», así como el período de validez de la clave y otra información necesaria. Toda la información está codificada de una manera especial para garantizar que no sea ambigua y está firmada en la clave secreta del centro de confianza. Revista «Jet Info» Ya ha publicado un artículo sobre la organización de centros de confianza (ver [9]), que contiene, en particular, definiciones de términos básicos, por lo que en esta revisión no nos detendremos en la terminología, los principios generales y los estándares para la organización de la certificación de centros.
La personalidad jurídica del centro de confianza puede ser cualquiera. De oficialmente estatal a corporativo o privado. Muchas grandes corporaciones occidentales ya tienen sus propios centros de certificación corporativa para organizar el intercambio de información confidencial dentro de la empresa. Se han creado autoridades de certificación independientes que están funcionando con éxito, por ejemplo «VerySign, Inc.» Microsoft15 y American Express han creado sus propias autoridades de certificación públicas. La creación y el despliegue de centros de certificación rusos es una cuestión de futuro próximo.
En & nbsp; presente en la Duma Estatal de la Federación de Rusia, se consideran varios proyectos de ley que regulan o regulan de otro modo el uso de una firma digital electrónica. Uno de los proyectos de ley se llama «Sobre el uso de firmas digitales electrónicas». El resto son “Acerca del comercio electrónico” y “Acerca del comercio electrónico”.
Todos los proyectos de ley implican el despliegue de autoridades de certificación de clave pública a nivel federal. Al mismo tiempo, ninguno de los proyectos de ley aborda la cuestión de la afiliación departamental de los centros de certificación, y tampoco describe el círculo de personas y/u organizaciones que temporalmente y sin falta utilizarán los servicios de los centros de certificación creados. Es demasiado pronto para hablar de lo que nos espera a nosotros, como consumidores y desarrolladores rusos de tecnologías de la información, si uno de los proyectos que estamos considerando se aprueba como ley.
Sistemas de identificación y autenticación
En muchas aplicaciones, la tarea de identificar y autenticar el acceso de una persona o un programa a algún recurso es incluso más importante que la tarea de garantizar la confidencialidad. Casi todos los sistemas operativos de red y multiusuario requieren autenticación de usuario. Así como cajeros automáticos y terminales de efectivo. Con el desarrollo de Internet y las tecnologías sin papel, la cantidad de aplicaciones que requieren autenticación de usuario no hará más que aumentar.
Entonces, primero, definiciones.
En el futuro, por materia entenderemos a un usuario o un agente de usuario (programa) que accede a un determinado recurso. Por sistema de información nos referimos a un ordenador independiente o una red informática u otro dispositivo electrónico cuyo acceso está regulado por un determinado sistema de poderes y/o derechos. La tarea de los sistemas de identificación y autenticación es determinar y verificar el conjunto de facultades de un sujeto al acceder a un sistema de información.
La identificación de un sujeto al acceder a un sistema de información es el proceso de compararlo con una determinada característica del sujeto almacenada por el sistema: un identificador. Posteriormente, el identificador del sujeto se utiliza para otorgarle al sujeto un cierto nivel de derechos y autoridad al utilizar el sistema de información.
La autenticación del sujeto es el procedimiento para verificar que un identificador pertenece a un sujeto. La autenticación se realiza sobre la base de uno u otro elemento secreto (autenticador), que posee tanto el sujeto como el sistema de información. Normalmente, un sistema de información no tiene el elemento secreto en sí, sino cierta información sobre él, a partir de la cual se toma una decisión sobre la adecuación del objeto al identificador.
Para hacer más comprensible esta seca teoría, consideremos un ejemplo específico. Antes de iniciar una sesión interactiva, la mayoría de los sistemas operativos solicitan al usuario su nombre y contraseña. El nombre ingresado es el ID de usuario y la contraseña es el autenticador16. El sistema operativo generalmente no almacena la contraseña en sí, sino su cantidad de hash, lo que hace prácticamente imposible recuperar la contraseña (consulte la Sección 2).
El uso de un par de nombre de usuario y contraseña para autenticar sujetos es el más común, pero no el único. En realidad, existen pocos métodos de autenticación fundamentalmente diferentes. Una clase de métodos de autenticación se basa en el hecho de que el sujeto autenticado debe tener algún elemento secreto (contraseña, clave secreta o token de autenticación especial). Otra clase de métodos de autenticación se utiliza principalmente para autenticar personas. Se basa en la presencia de propiedades físicas únicas de la propia persona (huellas dactilares, forma de la mano, voz, iris). Cada clase de métodos tiene ventajas y desventajas. Compararemos ambas clases de métodos un poco más adelante, pero por ahora veremos más de cerca los diferentes métodos de autenticación.
Algorítmicamente, el procedimiento de autenticación se representa como la transmisión secuencial de uno o varios paquetes de información entre el sujeto y el sistema de información y su procesamiento intermedio por ambas partes. Como resultado de estas acciones, ambas partes del intercambio deben verificar que son quienes dicen ser.
Ya hemos hablado de autenticación con elemento secreto. Otro método de autenticación común es la autenticación mediante certificados de clave pública. Se han desarrollado y se están utilizando varios de estos algoritmos. Normalmente, la autenticación basada en claves se combina con un procedimiento para generar una clave simétrica por pares con el fin de su uso posterior para mensajería. El procedimiento más conocido para la autenticación mutua de un par de suscriptores es el método Diffie-Hellman. Está ampliamente descrito. Tanto en los artículos de los propios autores como en trabajos independientes ([4], [8]). La esencia del método es que cada uno de los participantes en el intercambio, mediante transformaciones matemáticas de su clave secreta y la clave pública de su corresponsal y el intercambio de paquetes no clasificados, recibe un número secreto independientemente uno del otro. Dado que las claves secreta y pública de los suscriptores están relacionadas por alguna relación, es posible seleccionar transformaciones de claves para que los números recibidos por ambos suscriptores coincidan. El número secreto resultante se puede utilizar como secreto compartido.
Otro método de autenticación interesante es el uso de un token de autenticación. Un token de autenticación es un dispositivo físico, generalmente de tamaño pequeño para facilitar su transporte. Podría ser una tarjeta inteligente o dispositivos introducidos recientemente que están conectados a un puerto USB y tienen la forma de un llavero. Normalmente, un token de autenticación contiene memoria no volátil integrada y un procesador especializado. Algunos dispositivos tienen además un generador de números aleatorios integrado en el hardware o un temporizador (reloj en tiempo real). El procesador de tokens, dependiendo de su potencia, es capaz de realizar diversas operaciones. Existen procesadores capaces de cifrar datos mediante el algoritmo DES o calcular sumas hash mediante una clave (HMAC-MD5). Un token especializado le permite realizar transformaciones criptográficas sin recuperar la clave de la memoria del token y transferir solo datos no clasificados o cifrados entre el token y la computadora y el sistema de información, lo que además protege el protocolo de autenticación contra la interceptación de claves. Normalmente, el acceso programático a un token solo es posible después de ingresar un código PIN que solo conoce el propietario del token de autenticación. Las capacidades de token adicionales permiten la implementación de protocolos de autenticación más seguros.
Security Dynamics (ahora una división de RSA Security) propuso una interesante tecnología de autenticación basada en «contraseñas de un solo uso». La tecnología se llama SecureID. Las contraseñas de un solo uso son números pseudoaleatorios. El generador de secuencia de números pseudoaleatorios es un token de autenticación. RSA Security ofrece varias opciones de tokens: tarjeta inteligente, calculadora con la capacidad de ingresar un código PIN, llaveros. Cada token tiene un número de serie único. El token genera un nuevo número pseudoaleatorio uno por minuto. El período17 del generador de números pseudoaleatorios es tal que el tiempo de uso de un token es de dos años.
Para la autenticación utilizando la tecnología SecureID, el sistema de información debe contener un servidor de autenticación SecureID y una base de datos que coincida con los nombres de los usuarios autenticados y los números de serie de los tokens. Una solicitud de autenticación de un usuario consta de su nombre y un número aleatorio leído por el usuario del token. El servidor, basándose en el número recibido del usuario y el número de serie del token, decide si este número pertenece o no a la secuencia generada por este token en particular.
Estos y muchos otros métodos de autenticación tienen un inconveniente: de hecho, no autentican a un sujeto específico, pero registran el hecho de que el autenticador del sujeto corresponde a su identificador. Es decir, todos los métodos enumerados no están protegidos contra el compromiso del autenticador. Los métodos de identificación o autenticación biométrica están exentos de este inconveniente. Como ya se señaló, los métodos biométricos se basan en el análisis de las características únicas de la propia persona.
Una característica biométrica puede ser tanto un identificador (ya que, de hecho, la toma de huellas dactilares considera la huella dactilar como un identificador personal) y un autenticador (el usuario ingresa su nombre y lo confirma mirando a través del ocular del analizador de iris). Para algunas aplicaciones (por ejemplo, para controlar el acceso a locales), la identificación es suficiente. En algunos casos (“paranoicos”), es necesario ingresar el nombre del usuario, su huella digital y también decir una frase de contraseña.
El método más común (y más económico) de identificación o autenticación biométrica es el análisis de huellas dactilares. Cuando un usuario se registra, se coloca una convolución en la base de datos del servidor de autenticación: un hash de la huella digital escaneada. Dependiendo de la implementación, la longitud de la convolución es de 200 a 400 bytes.
Pero los métodos biométricos de autenticación personal tienen un serio inconveniente (además del coste relativamente alto). En caso de que un token, clave o contraseña de autenticación se vea comprometido, el sujeto puede negarse a utilizarlo y obtener un nuevo autenticador. Si la representación electrónica de un autenticador biométrico se ve comprometida, una persona puede simplemente «caerse» del proceso de autenticación. En el caso de utilizar una característica biométrica como identificador personal, no existe riesgo de compromiso.
Un poco sobre el criptoanálisis
El criptoanálisis es el campo de actividad destinado a revelar los mensajes cifrados de otra persona con un cifrado desconocido. clave y/o algoritmo. Es difícil definir el criptoanálisis únicamente como una ciencia. También tiene elementos de arte, suerte e incluso “chamanismo”.
El trabajo «poco convencional» de los criptoanalistas se evidencia, por ejemplo, en un «incidente de vida» contado al autor de este artículo por un empleado jubilado del servicio criptoanalítico soviético. Fue hace mucho tiempo, cuando realmente no existían las computadoras. El servicio recibió una nota cifrada transferida desde los lugares de detención a los de libertad. La nota cayó en el escritorio de uno de los empleados, conocido por su extrema precisión. El hombre alisó cuidadosamente la nota con las manos y se sumergió en el análisis. El cifrado no le resultó muy difícil. Después de reflexionar un poco sobre la nota, este hombre primero se levantó de la mesa, fue al lavabo, se lavó bien las manos con jabón y luego se secó las manos y la mesa con alcohol. La nota decía que su autor estaba enfermo de sífilis.
Antes de hablar de criptoanálisis, cabe decir que la criptografía moderna se basa en el principio de que la solidez de una transformación criptográfica debe garantizarse únicamente manteniendo la clave en secreto. Al diseñar un sistema criptográfico, inicialmente se supone que el algoritmo de transformación criptográfica es abierto (o, como mínimo, conocido por un adversario potencial) y que la clave, por el contrario, está protegida de forma fiable. La solidez de un algoritmo de cifrado generalmente se evalúa en términos de la cantidad de operaciones típicas necesarias para descifrar un mensaje cifrado y/o seleccionar la clave de cifrado utilizando el mejor algoritmo.
Un ejemplo típico, y más común, del uso del criptoanálisis por parte de personas alejadas de la criptología es la “adicción de contraseñas”. Es difícil encontrar una persona (al menos en Rusia) que esté relacionada con la tecnología de la información y que nunca en su vida se haya encontrado con el problema de «piratear» una contraseña para acceder a un archivo protegido o a un documento en formato Microsoft Word. Bueno, ¡y la selección de la contraseña de superusuario en casi todos los sistemas operativos actualmente en uso es generalmente una comidilla!
El método más simple y que requiere más tiempo para adivinar una contraseña es una búsqueda completa de todas las opciones posibles. El método es ineficaz y, a menudo, impracticable debido a limitaciones de tiempo. El criptoanálisis tiene como objetivo encontrar métodos para descifrar un documento y/o encontrar la clave de cifrado en menos tiempo que la fuerza bruta.
Además de la simple fuerza bruta, o, como también se le llama, el «método de fuerza bruta», el criptoanálisis tiene otras técnicas bastante desarrolladas (ver, por ejemplo, [3]). Casi no hay una presentación sistemática de las técnicas criptoanalíticas en la prensa abierta, porque no es ningún secreto que la principal investigación criptoanalítica en casi todos los países la llevan a cabo los servicios de inteligencia, y los servicios de inteligencia de todos los países son similares en su deseo de ocultar sus métodos de trabajo.
Como regla general, todos los métodos de criptoanálisis conocidos requieren que el criptoanalista tenga, además del texto cifrado, el texto claro correspondiente o sus fragmentos. En condiciones de laboratorio, este requisito se cumple automáticamente y, en el caso de un ataque real al cifrado, se extraen conclusiones plausibles con respecto al texto original (por ejemplo, que las letras cifradas comienzan con las palabras «Estimado señor». !”) o la estructura o contenido del texto sin formato reconocido por otros métodos.
Recientemente, gracias al desarrollo de Internet, ha sido posible utilizar eficazmente el «método de fuerza bruta» mediante la paralelización de operaciones. Este enfoque generalmente se implementa de la siguiente manera. Hay un servidor instalado en algún lugar de Internet, desde el cual cualquiera puede descargar un programa que descifra un mensaje de prueba mediante la fuerza bruta de las claves. El programa suele entregarse tanto en formato de texto fuente como compilado para los sistemas operativos más comunes. Después del lanzamiento, el programa establece una conexión con el servidor, recibe de él un conjunto de claves para la enumeración y, una vez finalizado el trabajo, informa el resultado al servidor.
El programa puede ejecutarse en segundo plano o activarse por la noche. Existen programas conocidos para enumerar claves, implementados en forma de protectores de pantalla. Los programas pueden participar no sólo en «romper» cifrados, sino también, por ejemplo, en seleccionar dos textos que tengan el mismo valor hash calculado por el algoritmo especificado.
Con este enfoque para «descifrar» el cifrado, surge la pregunta sobre la falta de ambigüedad del descifrado. De hecho, puede resultar que para un texto cifrado determinado existan dos o más claves, cuyo uso permite obtener un texto «significativo» durante el descifrado. Resulta que a partir de una determinada longitud del mensaje original, esta afirmación se vuelve falsa. Para los criptosistemas utilizados actualmente, un mensaje de 60 a 100 bytes de longitud ya se descifra de forma inequívoca.
Normalmente, el método de «piratería distribuida» lo utilizan ahora los fabricantes de software criptográfico para probar sus productos o varias organizaciones sin fines de lucro para determinar la solidez criptográfica de los algoritmos utilizados (consulte, por ejemplo, http://distributed.net ). Lo más interesante es que el método descrito de “piratería distribuida”, basado únicamente en el entusiasmo de los participantes, ya ha dado resultados sorprendentes.
Conclusión
Naturalmente, esta revisión no pretende ser completa. Fuera del alcance de la revisión quedaron áreas de la investigación criptográfica como la criptografía cuántica, los protocolos criptográficos, las sumas hash con clave, los sistemas de autenticación distribuidos o los métodos para generar secuencias pseudoaleatorias. Algunos temas ya han sido tratados en nuestra revista y es posible que la cobertura de otros temas sea cuestión de un futuro próximo.
Literatura
[1] W. Diffie, M.E Hellman — Nuevas direcciones en criptografía IEEE Transactions of Information Theory, v. IT-22, págs. 644–654, noviembre de 1976
[2] Gilles Brassard — Criptología moderna — M., «POLYMED», 1999
[3] Bruce Schneier — Curso de autoaprendizaje en criptología de criptoanálisis de cifrado en bloque, v. 24, n.1, págs. 18–34, enero de 2000
[4] Bruce Schneier — Criptografía aplicada, segunda edición: protocolos, algoritmos y código fuente en C — John Wiley & Hijos. Inc., 1996
[5] Donald R. Richards — Manual de identificación biométrica de gestión de seguridad de la información — Auerbach, págs. 5–26, 1999
[6] Beresford N. Parlett — Alguna información básica de la teoría de la complejidad basada en la información Boletín de la AMS, v. 26, núm. 1, págs. 3–27, enero de 1992
[7] H. Krawczyk, M. Bellare, R. Canetti — Keyed-Hashing for Message Authentication, RFC 2104, febrero de 1997
[8] E. Rescorla — Diffie- Método de acuerdo Hellman Key, RFC 2631, junio de 1999
[9] Viktor Gorbatov, Olga Polyanskaya — Centros de confianza como vínculo en el sistema de seguridad para los recursos de información corporativos — JetInfo, N11(78), págs. 12–206, 1999
[10] Nadezhda Vyukova, Vladimir Galatenko — Servidor de autenticación Kerberos: Jet Info, N 12–13(19–20), 1996
1 Agencia de Seguridad Nacional. Es lo mismo que la Agencia de Seguridad Nacional. Servicio criptográfico y criptoanalítico del gobierno de EE. UU.
2 Bruce Schnaer en su libro “Applied Cryptography” [4] proporciona los siguientes datos. En 1976 y 1977, Diffie y Hellman argumentaron que costaría 20 millones de dólares construir una computadora paralela especializada capaz de encontrar una clave en un día. En 1981, Diffie cambió su propia estimación, empeorando las previsiones: un ordenador capaz de encontrar una clave en dos días costará 50 millones de dólares.
3 En Rusia se adoptó el término bootstrapping
4 En el sentido de la posibilidad de realizar un criptoanálisis oportuno por parte de expertos independientes e identificar posibles debilidades del algoritmo
5 Los matemáticos ahora se dedican al análisis y a los intentos de resolver problemas computacionalmente complejos, desarrollando la “Teoría de la Complejidad basada en la Información”, la cuyo éxito se basa en ;la criptografía moderna debe mucho
6 La opción más sencilla para la distribución de llaves es una reunión personal. El más caro y fiable, al menos en Rusia, es el Servicio de Correo Estatal.
7 Quizás en nuestro boletín aparezcan otros artículos más especializados sobre este tema8 o fórmulas en el número principal de nuestro boletín”, escribió sin éxito búsqueda realizada por Leonard Euler y otros grandes matemáticos
9 Con el nivel actual de tecnología de impresión a todo color, falsificar documentos notariados o hacer copias de documentos no presenta ninguna dificultad.
10 Incluso se puede utilizar una función hash con una clave (ver, por ejemplo, [7]) o una firma digital.
11 El tema del cifrado de DVD en sí merece especial atención como ejemplo del uso fallido de la criptografía y  ;demostración de la depravación del principio de “seguridad a través de la oscuridad”
12 Desafortunadamente, en el idioma ruso no existe un término especial adecuado para la privacidad en inglés. La palabra “privacidad” en ruso se traduce, según el contexto, como “secreto” y como “derecho a la vida privada” o “protección de la información personal”.
13 ¿Cómo no es aquí? ¿“Sociedades de crédito mutuo” de “El becerro de oro” de Ilf y Petrov?
14 Las estadísticas dicen que, en promedio, cada habitante de la Tierra conoce a todos los demás habitantes de la Tierra a través de una cadena de seis personas
15 quizás debido a la capacidad que apareció en Windows 2000 de proteger el código del programa controlador con una firma electrónica
16 Estrictamente hablando, en sistemas operativos como UNIX o VMS, el identificador de usuario es el número especificado al crear una cuenta de usuario, y el nombre de usuario es solo un atributo único de la cuenta.
17 El período del generador PNG es la longitud máxima de la secuencia PNG, después de cuya generación el generador comenzará a producir números repetidos.
Jet Info, n & nbsp; 3 (94), 2001