Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Criptosistemas informáticos, Monografías, Ensayos de Seguridad Informática

Historia e introducción de la encriptación, sistemas pgp y algoritmos

Tipo: Monografías, Ensayos

2020/2021

Subido el 25/04/2021

Artia727
Artia727 🇪🇸

2 documentos

1 / 43

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Criptosistemas Informático s #hackxcrack @ irc.irc-chatpolis.com
presenta...
Criptosistemas
Informáticos
Autor:
Death Master
Death Master, 2004 (GPL) Página 1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b

Vista previa parcial del texto

¡Descarga Criptosistemas informáticos y más Monografías, Ensayos en PDF de Seguridad Informática solo en Docsity!

presenta...

Criptosistemas

Informáticos

Autor:

Death Master

Índice de contenidos

Introducción

-¿Cuánto tiempo quieres que sean secretos esos mensajes? -le preguntó Randy en el último mensaje antes de abandonar San Francisco-. ¿Cinco años? ¿Diez años? ¿Veinticinco años? Después de llegar al hotel esa tarde, Randy descifró y leyó la respuesta de Avi. Todavía la tiene colgada frente a los ojos, como la imagen remanente de un flash. Quiero que sigan siendo secretos mientras los hombres sean capaces del mal. Neal Stephenson, “Criptonomicón” Desde los tiempos del Antiguo Egipto hasta hoy en día ha pasado mucho tiempo, pero hay algo que no ha cambiado: el anhelo del ser humano por esconder sus secretos. Criptografía. Personajes como Cleopatra o El César ya aprendieron a valorar la importancia de esconder de ojos indiscretos sus mensajes. La Scilata que los espartanos usaban allá por el año 400 a.C., o el propio código César (un simple desplazamiento alfabético) fueron los inicios. Con el desarrollo de las ciencias, y más concretamente de las matemáticas, la criptografía creció como un hermano menor, de la mano. En la Edad Media comenzó a adquirir una gran importancia cuando un siervo del Papa Clemente VII escribió el primer manual sobre el tema de la historia en el viejo continente. En 1466 León Battista Alberti ideó el sistema polialfabético basado en la rotación de unos rodillos. Un siglo más tarde, Giovan Battista Belaso inventó la clave criptográfica basada en una palabra o texto que se transcribía letra a letra sobre el mensaje original... Pero si un punto ha marcado un antes y un después en la criptografía, ese ha sido la Segunda Guerra Mundial. Ya a principios del pasado siglo XX se idearon los denominados “traductores mecánicos”, basados en el concepto ideado en el siglo XV por Alberti de las ruedas concéntricas, y el sistema comenzó a tornarse sumamente complejo, ya no bastaba con analizarlo concienzudamente para comprenderlo. Y eso nos llevó a la Segunda Guerra Mundial, a los años 30 y 40 y a la máquina Enigma. Aunque mucha gente no lo sepa, la criptografía fue uno de los principales motivos para que los aliados ganaran la guerra, pues los alemanes creían el código de su máquina Enigma inviolable, y de hecho sí que era extremadamente complejo. Pero al igual que antes comentaba que el anhelo humano de esconder secretos es eterno, también lo es su anhelo por desenterrar secretos ajenos. Un equipo de criptoanalistas, matemáticos y demás mentes privilegiadas (entre ellos Alan Turing, uno de los padres de la informática) logró en 1942 lo que parecía imposible: romper el cifrado de Enigma. Para ello diseñaron las llamadas “bombas navales” (las bombes), aparatos de cálculo mecánicos que se encargaban de romper el cifrado alemán y entregar todos los secretos a los aliados. Igualmente, el Purple (versión japonesa de Enigma) fue roto en Midway por un equipo dirigido por el comandante Joseph J. Rochefort. El hecho de conocer los secretos, de tener todas las llaves (nunca mejor dicho), dio la vuelta a la guerra y cambió el curso de la historia. Y el mundo nunca volvió a ser el mismo. El nacimiento de la informática y de los criptosistemas informático supuso un cambio radical del concepto de criptografía, y también del criptoanálisis. Los criptosistemas y los algoritmos aumentaron repentinamente y de forma descomunal su complejidad. Desde el DES hace ya mucho, hasta los criptosistemas asimétricos de curvas elípticas actuales todo ha cambiado también mucho, pero uno de esos cambios ha supuesto el segundo gran punto de inflexión de la criptografía: PGP. Hasta entonces el privilegio de guardar secretos estaba exclusivamente en manos de los gobiernos o los poderosos, y hoy día, seguramente gracias a PGP, es un derecho de cualquier ciudadano por humilde que sea (aunque en algunos países no sea así). Arriesgando mucho, Philip Zimmermann nos abrió las puertas a la criptografía, y a la libertad de comunicarnos de forma segura. Por supuesto hay otros nombres que son capitales en el desarrollo de los criptosistemas informáticos, aparte de Zimmermann: Rivest, Shamir, Adleman, Diffie, Hellman, ElGamal, Rijmen, Daemen, Massey, Miller, Goldwaser... Todos ellos son padres de lo que hoy se llama criptografía. Gracias a todos.

Death Master

Conceptos básicos

Criptología Criptografía, el arte de ocultar. La palabra tiene su origen en el griego: kryptos (oculto, escondido) y graphein (escribir). El arte de ocultar un mensaje mediante signos convencionales es muy antiguo, casi tanto como la escritura. Y efectivamente siempre ha sido considerado un arte hasta hace relativamente poco, cuando Claude E. Shannon publicó en dos años dos documentos que supusieron la fundación de la moderna Teoría de la Información. Esos documentos son:

  • [SHA48] C. E. Shannon, “ A mathematical theory of communication” , Bell System Tech. J. 27 (1948), 379-423 y 623-656.
  • [SHA49] C. E. Shannon, “ Communication theory of secrecy systems” , Bell System Tech. J. 28 (1949), 656-715. A partir de entonces, y unido al desarrollo de la computación moderna, el desarrollo de la criptografía alcanzó nuevos horizontes. Antes de entrar en más detalles, hay que comprender que la criptografía se complementa con otra rama de estudio, el criptoanálisis , que estudia el camino inverso de la criptografía, dedicando sus esfuerzos a desentrañar los secretos que la criptografía se empeña en mantener ocultos. Ambas ramas conforman lo que entendemos como criptología. criptografía (Del gr. κρυπτóς, oculto, y -grafía).
  1. f. Arte de escribir con clave secreta o de un modo enigmático. _ FUENTE: Real Academia Española_* (http://www.rae.es/) criptoanálisis (Del gr. κρυπτóς, oculto, y análisis).
  2. m. Arte de descifrar criptogramas. _ FUENTE: Real Academia Española_* (http://www.rae.es/) Texto en claro y criptogramas En el ámbito criptográfico, entendemos por Texto en claro cualquier información que resulta legible y comprensible per se. Un texto en claro sería cualquier información antes de ser encriptada o después de ser desencriptada. Se considera que cualquier información es vulnerable si se encuentra en este estado. Así mismo, denominamos criptograma a cualquier información que se encuentre convenientemente cifrada y no resulte legible ni comprensible más que para el destinatario legítimo de la misma. El mecanismo de transformar un texto en claro en un criptograma lo denominamos encriptación o cifrado , y al proceso de recuperación de la información a partir de un criptograma lo denominamos desencriptación o descifrado. Es muy importante no confundir estos términos con codificación o decodificación, pues codificación es el acto de representar la información de distintas formas, pero no necesariamente encriptadas. Por ejemplo, un número decimal puede codificarse como hexadecimal, y no por ello se convierte en un criptograma.

Algoritmo criptográfico Comenzaremos definiendo el término algoritmo por si algún despistado no sabe qué es. algoritmo (Quizá del lat. tardío *algobarismus, y este abrev. del ár. clás. hisābu lgubār, cálculo mediante cifras arábigas).

  1. m. Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema.
  2. m. Método y notación en las distintas formas del cálculo. _ FUENTE: Real Academia Española_* (http://www.rae.es/) Ahora veamos la definición de algoritmo que da un manual de programación algorítmica: algoritmo Descripción precisa de una sucesión de instrucciones que permiten llevar a cabo un trabajo en un número finito de pasos. _ FUENTE:_* J. Castro, F. Cucker, X. Messeguer, A. Rublo, L. Solano, B. Valles , “Curso de Programación”, McGraw Hill. (1993), 2. ISBN 84-481-1959- Así pues, un algoritmo debe describir de forma unívoca y sin dar lugar a interpretaciones, la solución a un problema en un numero de pasos concreto. Ya podemos deducir qué es un algoritmo de encriptación: una descripción unívoca y concreta de cómo funciona un criptosistema determinado. Clave criptográfica El concepto de clave criptográfica surge con el propio concepto de la criptografía, y es el alma de un algoritmo de encriptación. Obviamente un algoritmo tiene que poseer la capacidad de ser usado muchas veces sin que su mecanismo sea idéntico, pues de lo contrario cada persona debería tener su propio algoritmo de encriptación. Para implementar esta funcionalidad, se usan las claves. La clave es un dato que interviene de forma activa en la ejecución del algoritmo y lo personaliza. Atendiendo únicamente al tipo de clave, podemos distinguir dos criptosistemas: Sistemas de clave única o criptosistemas simétricos: Son aquellos en los que los procesos de cifrado y descifrado son llevados a cabo por una única clave. Sistemas de clave pública o criptosistemas asimétricos: Son aquellos en los que los procesos de cifrado y descifrado son llevados a cabo por dos claves distintas y complementarias. Ejemplo: Si usamos un sistema de criptografía simétrica por sustitución, con una clave x= ... A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z A B C De esta forma la frase: all your base are belong to us Pasaría a ser: dññcarxucedvhcduhcehñrpjcwrcxv

Longitud de clave A día de hoy, gracias a los ordenadores y los superordenadores (típicamente clusters) es posible realizar complejos cómputos matemáticos en un espacio de tiempo relativamente corto. Así pues, el campo del criptoanálisis está íntimamente ligado a esta potencia de cálculo. Para que un algoritmo se considere seguro, su criptoanálisis sin la clave necesaria debe ser computacionalmente imposible de resolver. Consideramos “imposible” de resolver un sistema cuya vulneración necesite mayores recursos (económicos o en tiempo) que el beneficio reportado. Por ejemplo, ser consideraría seguro un criptosistema que requisiera miles de años para ser descifrado. Para lograr semejante complejidad, se tratan números o conjuntos de números enormes. Es obvio que a mayor tamaño de estos números, existe un mayor número de claves posibles, y la posibilidad de éxito del criptoanálisis es menor. Hoy en día este tamaño se denomina longitud de clave , y se mide típicamente en los bits que ocupa la clave. Así, una clave de un número de 1024 bits sería un número cualquiera desde el 0 hasta el 1,8 * 10^ (2^1024). Al representar las longitudes de clave como potencias de dos, es importante darse cuenta de la relación existente entre las longitudes de clave. Una clave de 1025 bits es el doble de larga que una de 1024 (2^1025 frente a 2^1024). A día de hoy se usan claves que oscilan entre los 512 bits y los 4096 bits de longitud.

AES (Rijndael): Advanced Encryption Standard (2000) RFC's relacionados #3268 - “Advanced Encryption Standard (AES) Ciphersuites for Transport Layer Security (TLS)” - ftp://ftp.rfc-editor.org/in-notes/rfc3268.txt #3394 - “Advanced Encryption Standard (AES) Key Wrap Algorithm” - ftp://ftp.rfc-editor.org/in-notes/rfc3394.txt #3565 - “Use of the Advanced Encryption Standard (AES) Encryption Algorithm in Cryptographic Message Syntax (CMS)” - ftp://ftp.rfc-editor.org/in-notes/rfc3565.txt #3686 - “Using Advanced Encryption Standard (AES) Counter Mode With IPsec Encapsulating Security Payload (ESP)” - ftp://ftp.rfc-editor.org/in-notes/rfc3686.txt Descripción En 1977 el NIST organizó un concurso a nivel mundial para crear un sistema que cumpliera los requisitos de seguridad necesarios para convertirse en estándar a nivel mundial. Este estándar se denomina AES (Advanced Encryption Standard) y el algoritmo AEA (Advanced Encryption Algorithm). Muchos expertos presentaron sus propuestas, pero el ganador fue el conocido como algoritmo Rijndael , creado por los belgas Vincent Rijmen y Joan Daemen. Se trata de un algoritmo simétrico que puede funcionar mediante cifrado en bloques de longitud variable o en flujo y que se sirve de claves de longitud variable ( 128, 192 ó 256 bits ). Su algoritmo puede resumirse de la siguiente forma: A Toma el texto en claro y lo cifra en bloques para obtener el punto intermedio llamado^ Estado , que se representa como una matriz de bytes de cuatro filas. B A partir del^ Estado , se realizan las siguientes operaciones en forma de bucle durante un número determinado de iteraciones. b1 Sustitución de bytes^ no lineal , operando independientemente sobre cada uno de los bytes del Estado. b2 Desplazamiento de las filas del Estado cíclicamente con^ offsets diferentes. b3 Mezcla^ de^ columnas,^ que^ se^ realiza^ multiplicando^ las^ columnas^ del^ Estado^ módulo^ _x4+1_* , consideradas como polinomios en GF(28) , por un polinomio fijo c(x). b4 Adición de la clave de vuelta, en la que se aplica al Estado por medio de un simple^ XOR. La clave de cada vuelta se deriva de la clave de cifrado mediante el esquema de clave. C El esquema de clave consiste en dos operaciones, expansión de clave y selección de clave de vuelta de cifrado, y el proceso de cifrado consta de tres pasos: una adición inicial de la clave de vuelta, n-1 vueltas de cifrado y una vuelta final. _ FUENTE: HTML Web, Seguridad, Criptografía_* (http://www.htmlweb.net/) Se puede encontrar información mucho más detallada de la descripción algorítmica de AES en el siguiente enlace: http://home.ecn.ab.ca/~jsavard/crypto/co040401.htm. Hoy en día AES es, efectivamente, el estándar en cifrado simétrico, siendo usado por sistemas tan populares como Pretty Good Privacy (PGP).

IDEA: International Data Encryption Algorithm (1990) RFC's relacionados #3058 - “Use of the IDEA Encryption Algorithm in CMS“ - ftp://ftp.rfc-editor.org/in-notes/rfc3058.txt Descripción IDEA fue creado en 1990 por Xuejia Lai y L. Massey. Se trata de un algoritmo simétrico de cifrado en bloques de 64 bits. Su funcionamiento se basa en operaciones sencillas como multiplicaciones de enteros, sumas y XOR. IDEA trabaja con claves de 128 bits de longitud. Es importante reseñar que IDEA es un algoritmo que si bien es de uso libre para fines no comerciales, sí que está cubierto por patentes, concretamente:

  • USA y Canadá - Patente 5.214.703 - Expira el 25 de Mayo de 2010.
  • Europa (*) - Patente 0482154 - Expira el 16 de Mayo de 2011.
    • (*): Austria, Francia, Alemania, Italia, Holanda, España, Suecia, Suiza, Reino Unido.
  • Japón - Patente JP3225440B2 - No hay información de la fecha de expiración. Precisamente a causa de esta patente, el sistema gnuPG no lo incluye como algoritmo de cifrado simétrico (a pesar de que PGP sí lo hace), siendo necesario añadirlo mediante un parche al software. RC6: Rivest Cypher 6 (1998) RFC's relacionados #2040 - “The RC5, RC5-CBC, RC5-CBC-Pad, and RC5-CTS Algorithms” - ftp://ftp.rfc-editor.org/in-notes/rfc2040.txt Descripción RC6 fue uno de los finalistas del concurso AES del NIST. Fue ideado por el matemático Ron Rivest (autor de muchos y famosos algoritmos criptográficos) en 1998. El algoritmo es propiedad de la empresa RSA Security. RC6 supone la evolución de los algoritmos RC, RC2, RC4 y RC5. Concretamente, se trata de una adaptación del sistema RC5 para cumplir los requisitos del concurso AES. Se trata de un algoritmo simétrico de cifrado de flujo con claves de longitud variable entre 40 y 2040 bits , siendo por defecto 128. Su algoritmo se basa en una mezcla de sumas, restas, multiplicaciones, XOR y rotaciones, y se puede encontrar una amplia descripción, así como un ejemplo de su implementación en el siguiente enlace: http://www.codeproject.com/cpp/hexenc.asp?print=true.

Algoritmos hash

Los criptosistemas de resumen, conocidos familiarmente como funciones o algoritmos hash, constituyen un tipo especial de criptosistemas. Muchos manuales de criptografía los sitúan como un subgrupo de los criptosistemas simétricos, pero a mí me gusta considerarlos como un grupo independiente debido a sus características especiales. Para empezar, en los algoritmos hash no existe el concepto de clave criptográfica, ni tampoco el concepto de descifrado; el concepto de algoritmo criptográfico se mantiene; y surge un nuevo concepto denominado fingerprint , huella digital , resumen ó hash. Así pues, un algoritmo tipo hash acepta como entrada un mensaje de longitud arbitraria, y tras efectuar sobre él los cálculos determinados por el algoritmo, devuelve una cadena de caracteres que representa el hash del mensaje al que aplicamos el algoritmo. Este hash NO puede ser denominado criptograma dado que no es posible el proceso de descifrado que nos devolvería el mensaje original. Para que quede más claro, vamos a ver las características que definen a los criptosistemas de tipo hash:

  • Unidireccional : Conocido un hash, es computacionalmente imposible la reconstrucción del mensaje original.
  • Compresión : A partir de un mensaje de cualquier longitud se obtiene un hash de un tamaño fijo, normalmente menor que el del mensaje original.
  • Difusión : El resumen es una función compleja de todos los bits del mensaje.
  • Colisión simple : Se conoce como resistencia débil a las colisiones el hecho de que dado un mensaje cualquiera, es computacionalmente imposible encontrar otro mensaje cuyo hash sea igual.
  • Colisión fuerte : Se conoce como resistencia fuerte a las colisiones el hecho de que sea computacionalmente difícil encontrar dos mensajes cuyo hash sea idéntico. Estas características hacen de los criptosistemas hash el medio perfecto para autentificación de todo tipo de información, con usos que van desde la autentificación de ficheros descargados a través de Internet, hasta checksum de paquetes TCP/IP. Es tan sencillo como conocer el hash de la información y una vez obtenida realizar de nuevo la función hash para comparar las cadenas de salida. A continuación vemos algunos de los principales algoritmos criptográficos de tipo hash: MD5: Message Digest 5 (1992) RFC's relacionados #1321 - “The MD5 Message-Digest Algorithm“ - ftp://ftp.rfc-editor.org/in-notes/rfc1321.txt #1810 - “Report on MD5 Performance“ - ftp://ftp.rfc-editor.org/in-notes/rfc1810.txt #1828 - “IP Authentication using Keyed MD5“ - ftp://ftp.rfc-editor.org/in-notes/rfc1828.txt #1864 - “The Content-MD5 Header Field“ - ftp://ftp.rfc-editor.org/in-notes/rfc1864.txt Descripción MD5 fue ideado por el matemático Ron Rivest, y supone la evolución de los algoritmos MD2 y MD4. Se trata de una función criptográfica de tipo hash que acepta como entrada un mensaje de cualquier longitud y devuelve como salida una cadena de 128 bits (usualmente una cadena de 32 caracteres hexadecimales). Su fácil implementación y su gran popularidad le hacen uno de los principales algoritmos hash de la red, usado principalmente en comprobación de ficheros en Internet.

SHA-1: Secure Hash Algorithm - 1 (1994) RFC's relacionados #2841 - “IP Authentication using Keyed SHA1 with Interleaved Padding (IP-MAC)“ - ftp://ftp.rfc-editor.org/in-notes/pdfrfc/rfc2841.txt.pdf #3174 - “US Secure Hash Algorithm 1 (SHA1)“ - ftp://ftp.rfc-editor.org/in-notes/pdfrfc/rfc3174.txt.pdf Descripción SHA-1 fue ideado por el NIST en 1994 como ampliación al algoritmo SHA. Se trata de una función criptográfica de tipo hash que acepta una entrada de 2^64 bits como máximo (2048 Terabytes) y devuelve como salida una cadena de 160 bits. SHA-1 es ligeramente más lento que MD5, pero también es computacionalmente más complejo y su salida es de mayor longitud, por lo que se considera de forma global más seguro. RIPEMD-160: RACE Integrity Primitives Evaluation Message Digest - 160 (1996) RFC's relacionados #2286 - “Test Cases for HMAC-RIPEMD160 and HMAC-RIPEMD128“ - ftp://ftp.rfc-editor.org/in-notes/rfc2286.txt #2857 - “The Use of HMAC-RIPEMD-160-96 within ESP and AH“ - ftp://ftp.rfc-editor.org/in-notes/rfc2857.txt Descripción RIPEMD-160 fue ideado por Hans Dobbertin , Antoon Bosselaers , y Bart Preneel como ampliación del algoritmo RIPEMD. Se trata de una función criptográfica de tipo hash que acepta una entrada un mensaje de cualquier longitud y devuelve como salida una cadena de 160 bits. A pesar de haberse desarrollado mucho más libre que SHA-1, no es muy popular y tampoco ha sido muy estudiado por criptólogos. No obstante existen dos extensiones de este algoritmo (que son menos usadas aún) denominadas RIPEMD-256 y RIPEMD-320. Las longitudes de sus salidas son respectivamente 256 y 320 bits, con lo que se reduce significativamente las colisiones débiles y fuertes.

RSA: Rivest - Shamir - Adleman (1978) RFC's relacionados #2792 - “DSA and RSA Key and Signature Encoding for the KeyNote Trust Management System“ - ftp://ftp.rfc-editor.org/in-notes/rfc2792.txt #3110 - “RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)” - ftp://ftp.rfc-editor.org/in-notes/rfc3110.txt #3447 - “Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1” - ftp://ftp.rfc-editor.org/in-notes/rfc3447.txt Documentos relacionados

  • [COCK73] Clifford Cocks, “A Note on 'Non-Secret Encryption'” , CESG Research Report, 20 Noviembre 1973, .
  • [RIVE78] R. Rivest, A. Shamir and L. Adleman, “A Method for Obtaining Digital Signatures and Public-Key Cryptosystems. Communications of the ACM” , 21 (2), pp. 120-126, Febrero
  • [RSA78] R.L. Rivest, A. Shamir, and L.M. Adleman, “Communications of the ACM (2) 21” , (1978), 120-126.
  • [KALI93] Burton Kalinski, “Some Examples of the PKCS Standards” , RSA Laboratories, Noviembre 1993, .
  • [PKCS1] RSA Laboratories, “PKCS #1 v2.1: RSA Encryption Standard” , Junio 2002, . Descripción El algoritmo RSA nació en 1978 de la mano de Ron Rivest , Adi Shamir y Leonard Adleman [RSA78]. Se trata de un algoritmo de cifrado asimétrico basado en el problema de la factorización entera, y aunque la descripción de este algoritmo fue propuesta en 1973 por Clifford Cocks [COCK73] , fue secreta hasta 1978 cuando se publicó RSA. Aunque el algoritmo fue patentado, la patente expiró en el año 2000 y actualmente se trata de un algoritmo libre. Echemos un vistazo al algoritmo RSA: 1 Escoger dos números primos muy grandes p y q (secretos) y calcular el número n (público) correspondiente a su producto, n = p * q 2 Escoger la clave de descifrado constituida por un gran número entero d (secreto), que es primo con el número Ф (n) (secreto) obtenido mediante: Ф (n) = (p-1) * (q-1) 3 Calcular el entero^ e^ (público) tal que^^1 ^ e^ ≤ Ф (n)^ , mediante la fórmula:^ e * d = 1 (mod Ф (n)) 4 Hacer pública la clave de cifado^ (e, n) 5 Para cifrar texto, es necesario previamente codificar el texto en un sistema numérico en base b dividiéndolo en bloques de tamaño j-1 de forma que b j-1^ < n < b j 6 Cifrar cada bloque M (^) i transformándolo en un nuevo bloque de tamaño j C (^) i de acuerdo con la expresión C i ≡ M i e^ (mod n) 7 Para descifrar el bloque^ C^ i^ , se usa la clave privada d según la expresión:^ M^ i^ ^ C^ i^ d (^) **_(mod n)
  • FUENTE: Pino Caballero Gil, “Introducción a la Criptografía” 2ª Edición actualizada, Ra-Ma. (2002), 55. ISBN 84-7897-520-_**

Veamos un ejemplo eminentemente práctico de cómo generar un criptosistema RSA:

  1. Seleccionamos dos números primos p = 11 y q = 3.
  2. Calculamos N = p * q y Ф = (p-1) * (q-1) = 10 * 2 = 20
  3. Elegimos el exponente e = 3 comprobando mcd (e, p-1) = mcd (3, 10) = 1 y... mcd (e, q-1) = mcd (3, 2) = 1 , lo que implica que... mcd (e, Ф) = mcd (e, (p-1) (q-1)) = mcd (3, 10, 2) = 1
  4. Calcular d tal que e * d = 1 (mod Ф(n) ) , por ejemplo d = 7 (comprobamos e * d-1 = 3 * 7-1 = 20 que es divisible por Ф ) 5. Clave Pública = (n, e) = (33, 3) Clave Privada = (n, d) = (33, 7) Ahora podemos ver un ejemplo de cómo generar un mensaje cifrado con RSA:
  5. Queremos encriptar el mensaje m = 7
  6. Calculamos el cifrado c = me^ mod n = 7^3 mod 33 = 343 mod 33 = 13
  7. Nuestro texto cifrado es c = 13
  8. Calculamos el descifrado m' = cd^ mod n = 13^7 mod 33 = 7
  9. El mensaje descifrado es m' = 7 Hoy en día RSA es el algoritmo asimétrico de cifrado más usado, tanto en conexiones de Internet y protocolos seguros, como en cifrado de datos (por ejemplo en el sistema PGP). Las longitudes de clave usadas hoy en día varían desde los 512 hasta los 4096 bits, aunque se suelen tomar de forma habitual claves de 1024 puesto que las de 512 no se consideran suficientemente seguras. Este tamaño puede parecer pequeño, pero permite la generación de claves de longitudes de hasta 1233 cifras con 4096 bits (concretamente hasta 1,0443888814131525066917527107166 * 10^1233). No obstante, RSA no es infalible, y como ya dijimos la enorme complejidad computacional del problema de la factorización entera se debe a una limitación de los computadores actuales. Sin embargo, en el momento en el que se puedan construir computadores cuánticos (que trabajen con lógica ternaria en lugar de lógica binaria) suficientemente potentes, mediante la debida implementación del algoritmo de Shor (ideado por Peter Shor en 1994) este trabajo sería trivial y permitiría resolver criptosistemas basados en el problema de factorización entera en un tiempo polinomial. De hecho en el año 2001, IBM demostró el algoritmo de Shor mediante su implementación en un computador cuántico de 7 qubits, factorizando 15 en 3 y 5. Podemos encontrar más información sobre el algoritmo de Shor, así como el propio algoritmo en: http://en.wikipedia.org/wiki/Shor's_algorithm.

1 Serán de información pública un número primo grande p y a , una raíz primitiva de 1 módulo p (es decir, tal que a p-1^ ≡ (mod p) y a d-1^ ≠ (mod p) para todo d tal que 1 < d < p ) 2 La clave privada del usuario B es un entero^ k^ B^ escogido dentro del intervalo^ [1 , p-1] 3 La clave pública de B es el entero^ K^ B^ ≡ a^ k (^) B (^) (mod p) 4 Se supone que el emisor A quiere enviar un mensaje^ M (1^ ^ M^ ≤ p-1)^ al receptor B Proceso de Cifrado (e) 1e Escoger aleatoriamente un entero^ k^ A^ tal que^^1 ≤ k^ A^ ≤ p-1^ , que constitye su clave secreta 2e Calcular la clave de cifrado a partir de su propia clave privada y la clave pública de B, Q ≡ K kB A^ (mod p) 3e Cifrar el mensaje M según la expresión^ C^ ^ Q * M (mod p) Proceso de Descifrado (d) 1d Obtener Q gracias a la clave pública de A,^ K^ A^ , y a su propia clave secreta mediante la fórmula Q ≡ K kA B^ (mod p) 2d Recuperar M a partir de^ M^ ^ (Q^ -1) p * C (mod p) donde (Q -1) p denota el inverso de Q en módulo p _ FUENTE: Pino Caballero Gil, “Introducción a la Criptografía” 2ª Edición actualizada, Ra-Ma. (2002), 65. ISBN 84-7897-520-_* Es importante señalar que aunque el sistema Diffie-Hellman siempre ha sido libre, la patente que lo cubría (US 4.200.770) expiró el 6 de Septiembre de 1997.

RW: Rabin - Williams (1980) Documentos relacionados

  • [RAB79] M.O. Rabin, “Digitalized signatures and public-key functions as intractable as factorization” , Technical Report MIT/LCS/TR-212, MIT, 1979.
  • [WEL88] D. Welsh, “Codes and Cryptography” , Claredon Press, 1988. Descripción En 1979 M.O. Rabin ideó un sistema a partir de las bases sentadas por RSA. Sin embargo, hay una sutil diferencia, pues en el sistema RSA, resolver el problema general de la factorización implica romperlo, pero no de forma inversa. En el sistema de Rabin, ambos preceptos se cumplen. Este defecto de base fue corregido en 1980 por H.C. Williams , dando lugar al algoritmo RW. RW es un algoritmo de cifrado asimétrico basado en el problema de la factorización entera (al igual que RSA). No obstante, este algoritmo no ha sido prácticamente estudiado ni usado por la comunidad criptográfica moderna. Echemos un vistazo al algoritmo RW: 1 Escoger dos grandes primos p y q (secretos) y definir n (público) mediante su producto, n = p * q (público) 2 Escoger un entero^ B < n^ que será parte de la clave pública^ (B,n) 3 Para cifrar un texto, es necesario previamente codificar el texto en un sistema de base b dividiéndola previamente en bloques de tamaño j-1 de forma que cumpla b j-1^ < n < b j 4 Cifrar el bloque^ M^ i^ según la expresión^ C^ i^ ^ M^ i^ (M^ i^ + B) (mod n) 5 Para descifrar el criptograma C i , hay que construir el mensaje M i = a * u + b * v a partir de las soluciones de las ecuaciones u 2 + B * u ≡ C (^) i (mod p) y v 2 + B * v ≡ C (^) i (mod q) , y los enteros a y b tales que a ≡ 1 (mod p) , a ≡ 0 (mod q) , b ≡ 0 (mod p) y **_b ≡ 1 (mod q)
  • FUENTE: Pino Caballero Gil, “Introducción a la Criptografía” 2ª Edición actualizada, Ra-Ma. (2002), 62. ISBN 84-7897-520-_** Por descontado, al estar basado este algoritmo en el mismo problema que RSA, posee igualmente sus mismas debilidades, y es también extremadamente vulnerable al criptoanálisis cuántico.