ES2217959B1 - Procedimiento y dispositivo de encriptacion mediante un criptosistema tipo rsa. - Google Patents

Procedimiento y dispositivo de encriptacion mediante un criptosistema tipo rsa.

Info

Publication number
ES2217959B1
ES2217959B1 ES200300366A ES200300366A ES2217959B1 ES 2217959 B1 ES2217959 B1 ES 2217959B1 ES 200300366 A ES200300366 A ES 200300366A ES 200300366 A ES200300366 A ES 200300366A ES 2217959 B1 ES2217959 B1 ES 2217959B1
Authority
ES
Spain
Prior art keywords
mod
rsa
encryption
cryptosystem
cdot
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
ES200300366A
Other languages
English (en)
Other versions
ES2217959A1 (es
Inventor
Luis Hernandez Encinas
Jaime Muñoz Masque
Araceli Queiruga Dios
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARACELI QUEIRUGA DIOS
Consejo Superior de Investigaciones Cientificas CSIC
Original Assignee
ARACELI QUEIRUGA DIOS
Consejo Superior de Investigaciones Cientificas CSIC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ARACELI QUEIRUGA DIOS, Consejo Superior de Investigaciones Cientificas CSIC filed Critical ARACELI QUEIRUGA DIOS
Priority to ES200300366A priority Critical patent/ES2217959B1/es
Priority to PCT/ES2004/070007 priority patent/WO2004073253A2/es
Publication of ES2217959A1 publication Critical patent/ES2217959A1/es
Application granted granted Critical
Publication of ES2217959B1 publication Critical patent/ES2217959B1/es
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

Procedimiento y dispositivo de encriptación mediante un criptosistema tipo RSA. Se presenta un procedimiento que permite elegir la clave privada del criptosistema RSA, una vez fijado de antemano el exponente, e, de cifrado, que además de ser seguro contra los ataques por factorización, presenta la novedad de que es invulnerable a los ataques basados en la longitud de los exponentes de descifrado del tipo W-B-D. Con el método de elección de clave privada que presentamos no sólo se garantiza que el valor de e será el deseado y que el tamaño del exponente de descifrado d resistirá los ataques del tipo W-B-D, si no que, además, su tamaño es mucho mayor que el recomendado para evitar estos ataques. De hecho el número de bits de d es el máximo posible (el mismo que el número de bits del módulo n) o a lo sumo un bit menos que el máximo.

Description

Procedimiento y dispositivo de encriptación mediante un criptosistema tipo RSA.
Objeto de la invención
Se presenta un procedimiento y dispositivo para elegir las claves del criptosistema RSA, con exponente de cifrado dado de antemano, que es invulnerable a los ataques basados en la longitud de los exponentes de descifrado.
Sectores de la técnica en los que tiene aplicación
\bullet Criptografía
\bullet Tecnologías de las comunicaciones
\bullet Seguridad informática
\bullet Banca electrónica
\bullet Comercio electrónico
Estado de la técnica
Existen en la actualidad diferentes métodos y algoritmos que permiten llevar a cabo, de modo seguro, el intercambio de información en redes de ordenadores. Entre ellos se encuentran los denominados criptosistemas de clave pública o asimétricos, caracterizados por el hecho de que se utilizan dos tipos claves diferentes. La primera de ellas (clave pública) es la que permite que un remitente cifre el mensaje que desea enviar a un destinatario, y que es públicamente conocida; la segunda (clave privada), sólo conocida por el destinatario del mensaje, es la que posibilita al destinatario recuperar el mensaje original.
Por otra parte, es bien conocido que el criptosistema de clave pública más utilizado en la actualidad es el denominado RSA ([RSA78]), cuyo nombre se deriva de las iniciales de sus tres autores. Debido a su gran robustez, es el criptosistema que más atención ha suscitado y sobre el que más investigaciones se han llevado a cabo con el fin de intentar romperlo, descubriendo sus posibles debilidades.
El protocolo del criptosistema RSA consta de varias fases (ver Fig. 1). La primera de ellas consiste en determinar las claves que cada usuario va a utilizar (parte A de la Fig. 1); otras dos fases son las relativas al cifrado y descifrado de los mensajes que se deseen enviar o que se reciban (partes B y D de la Fig. 1, respectivamente), mientras que la fase intermedia corresponde a la de la transmisión del mensaje cifrado (parte C de la Fig. 1). Aquí nos detendremos exclusivamente en la primera de las fases, la del establecimiento de las claves.
Para elegir las claves de un usuario se deben seleccionar dos números primos grandes, p y q, y multiplicarlos para obtener el módulo RSA: n = p \cdot q. Este número determina que el grupo que dicho usuario utilizará será Z_{n} \cdot A continuación se elige el exponente de cifrado, e, con 1 < e < phi(n) = (p - 1)(q - 1), de modo que sea un número primo con phi(n), es decir, se debe verificar: mcd(e, phi(n)) = 1. Una vez elegido e, se determina su inverso módulo phi(n), es decir, se calcula d con e \cdot d = 1 (mod phi(n)). Hecho esto, la clave pública del usuario es la pareja de números (n, e), mientras que su clave privada es el número d. Obviamente, también deben de mantenerse en secreto los valores de los números primos p y q.
A la hora de llevar a cabo las implementaciones prácticas de este criptosistema, es fundamental que el exponente de cifrado, e, sea pequeño, de modo que el proceso de cifrado sea rápido y se mantenga eficiente cuando se utiliza en redes locales e Intranets ([MOV97]). De hecho, los valores más recomendados son e = 3 (= 2 + 1) y e = 65537 =
2^{16} + 1. Las razones de tales elecciones se basan en el hecho de que en ambos casos, la expresión binaria del exponente elegido es muy sencilla y sólo requiere de unas pocas operaciones matemáticas.
Por otra parte, el ataque más estudiado para intentar romper este criptosistema es el de analizar las diferentes formas de factorizar el módulo RSA, lo que permitiría recuperar la clave privada y descifrar, a partir de ella, cualquier mensaje cifrado con la clave pública. En efecto, si se logra la factorización de n, es fácil calcular el valor de phi(n) =
(p - 1)(q - 1), y a partir de dicho valor es inmediato calcular el exponente de descifrado d, puesto que la clave de cifrado es públicamente conocida. Para evitar este tipo de ataque se recomienda que las longitudes de los números primos p y q, sean lo suficientemente grandes como para que tal eventualidad requiera tiempos de computación inviables con la mejor tecnología disponible y el mejor algoritmo de factorización conocido. De ahí que en la actualidad se recomiende que el tamaño del módulo RSA, n, esté entre 512 y 2048 bits, dependiendo de las aplicaciones, lo que garantiza la seguridad del criptosistema contra los ataques basados en la factorización del módulo.
Existen otros ataques al criptosistema RSA que no recurren a la búsqueda de los factores primos del módulo RSA. Estos ataques intentan explotar la debilidad que supone el hecho de que la longitud del exponente de descifrado, d, sea pequeña.
Por lo dicho anteriormente acerca de la importancia de elegir un exponente de cifrado, e, verificando las condiciones de ser primo con phi(n) y además pequeño, queda claro que su elección determina de modo directo el valor del exponente de descifrado, d, puesto que es su inverso módulo phi(n). Si este valor de d es relativamente pequeño comparado con el de n, existe un algoritmo desarrollado por Wiener ([Wie90]), basado en la expresión de un número racional por medio de fracciones continuas, que permite calcular d de modo eficiente, es decir, en un tiempo razonable. De hecho, el algoritmo desarrollado por Wiener permite calcular el valor de d a partir de la clave pública (n, e) en un tiempo polinómico, siempre que el número de bits de d sea menor que la cuarta parte del número de bits de n, es decir, si d < n^{0.25}.
El interés por el ataque al exponente de descifrado ha ido en aumento en los últimos cinco años, erigiéndose como el criptoanálisis más efectivo del RSA, dado el estancamiento del ataque por factorización. Así, en [VT97] se prueba que es posible encontrar el exponente de descifrado d, si d < n^{0.25} en menos tiempo que con una búsqueda exahustiva, pero este algoritmo sólo es una ligera mejora al de Wiener puesto que requiere de tiempo exponencial si se tiene que d > n^{0.25}. Por otra parte, en [Bon99], [BDF98], [BV98] y [DN00] se han presentado otras alternativas para atacar el criptosistema RSA basadas en la debilidad que supone utilizar exponentes de descifrado pequeños. Sin embargo, hasta la aparición de la propuesta de Boneh y Durfee ([BD00]) no se ha mejorado realmente el algoritmo de Wiener, de modo que es posible recuperar la clave privada de un usuario a partir de su clave pública si el exponente de descifrado verifica la siguiente cota superior: d < n^{0.292}. Además, los experimentos llevados a cabo por estos dos autores, permiten suponer que el RSA puede ser roto de forma eficiente mediante este tipo de algoritmo si el número de bits de d es menor que la mitad del número de bits de n; es decir, si d < n^{0.5}.
Contra estos ataques basados en el tamaño del exponente de descifrado sólo cabe una protección, seleccionar d de modo que su tamaño sea lo más próximo posible al del módulo n. No obstante, dada la estrecha relación existente entre los valores de d y de e, el valor de uno condiciona el valor del otro.
Hasta la fecha no se ha propuesto ninguna alternativa que sea eficiente para protegerse de los ataques del tipo Wiener-Boneh-Durfee (W-B-D). De hecho, las dos únicas posibilidades que existen son: o bien repetir la elección del exponente de cifrado e, si su correspondiente exponente de descifrado no verifica la cota d > n^{0.5}, hasta hallar un d que sí lo haga; o bien elegir en primer lugar el exponente de descifrado d, de modo que su número de bits sea mayor que la mitad del número de bits de n, tantas veces como sea necesario de modo que su correspondiente valor de e verifique la condición de ser primo con phi(n) . Cualquiera de estas dos alternativas, que asegura una correcta elección de los exponentes e y d (aunque pueda requerir un número elevado de iteraciones) no garantiza que el valor de e sea el que se desee o el más conveniente para determinados entornos reales de trabajo.
Nuestra invención permite garantizar una correcta elección de las claves del criptosistema RSA, es decir, del exponente de descifrado d y de los números primos p y q, de modo que sea invulnerable contra los ataques de tipo W-B-D, una vez que se ha elegido el exponente de cifrado e de antemano. De hecho, el número de bits de d difiere del de n en, a lo más, un bit, lo cual garantiza su seguridad contra los ataques mencionados, incluso aunque la cota d > n^{0.5} recomendada en la literatura sea superada en el futuro. El algoritmo que proponemos para la elección de las claves afecta a la elección de los factores primos del módulo n, pero no a su tamaño, por lo que no pone en peligro el criptosistema contra los ataques por factorización.
Referencias
[Bon99] D. Boneh, "Twenty years of attacks on the RSA cryptosystem", Notices Amer. Math. Soc. 46, 2 (1999), 203-213.
[BD00] D. Boneh and G. Durfee, "Cryptanalysis of RSA with private key d less than n^{0.292}", IEEE Trans. Inform. Theory 36, 4 (2000), 1339-1349.
[BDF98] D. Boneh, G. Durfee and Y. Frankel, "An attack on RSA given a small fraction of the private key bits", Proc. of Asiacrypt'98, LNCS 1514 (1998), 25-34.
[BV98] D. Boneh and R. Venkatesan, "Breaking RSA may not be equivalent to factoring", Proc. of Eurocrypt'98, LNCS 1233 (1998), 59-71.
[DN00] G. Durfee and P. Q. Nguyen, "Cryptanalysis of the RSA schemes with short secret exponent from Asiacrypt'99", Proc. of Asiacrypt '00, LNCS 1976 (2000), 14-29.
[LIP] http://www.und.edu/org/crypto/crypto/numbers/programs/freelip/
[MOV97] A. Menezes, P. van Oorschot and S.Vanstone, Handbook of Applied Cryptology, CRC Press, Boca Raton, FL., 1997.
[Rie94] H. Riesel, "Prime numbers and computer methods for factorization", Birkhäuser, Boston, 1994.
[RSA78] R. L. Rivest, A. Shamir and L. Adleman, "A method for obtaining digital signatures and public-key cryptosystem", Commun. ACM 21 (1978), 120- 126.
[VT97] E. R. Verheul and H.C. A. van Tilborg, "Cryptanalysis of 'less short' RSA secret exponents", Appl. Algebra Engrg. Comm. Comput. 8 (1997), 425- 435.
[Wie90] M. J. Wiener, "Cryptanalysis of short RSA secret exponents", IEEE Trans. Inform. Theory 36, 3 (1990), 553-558.
[Wil] J. P. Williams, http://www.mindspring.com/\simpate/
Explicación de la invención Breve descripción de la invención
Como ya hemos mencionado en la exposición del Estado de la Técnica, el esquema general de los dispositivos que permiten la elección de las claves de un usuario para el criptosistema RSA (ver Fig. 2), sigue los siguientes pasos:
1. Elección y verificación de los parámetros iniciales.
2. Elección y verificación de la clave pública.
3. Determinación de la clave privada.
4. Publicación de la clave pública.
De forma más precisa, el protocolo que se sigue para la elección de las claves RSA es el siguiente (ver Fig. 3):
1. Elección aleatoria de dos números impares grandes p y q .
2. Comprobación de la primalidad de tales números.
3. Cálculo del módulo RSA, n = p \cdot q, y del valor phin(n) = (p - 1) (q - 1).
4. Elección del exponente de cifrado 1 < e < phi(n) .
5. Comprobación de la coprimalidad entre e y phi(n) : mcd(e, phi(n)) = 1.
6. Cálculo del exponente de descifrado d, verificando e \cdot d = 1 (mod phi(n)).
7. Publicación de la clave pública (n, e).
En esta invención se presenta un procedimiento que permite elegir la clave privada del criptosistema RSA, una vez fijado de antemano el exponente, e, de cifrado, que además de ser seguro contra los ataques por factorización, presenta la novedad de que es invulnerable a los ataques basados en la longitud de los exponentes de descifrado del tipo
\hbox{W-B-D.}
Con el método de elección de clave privada que presentamos no sólo se garantiza que el valor de e será el deseado y que el tamaño del exponente de descifrado d resistirá los ataques del tipo W-B-D, si no que, además, su tamaño es mucho mayor que el recomendado para evitar estos ataques. De hecho el número de bits de d es el máximo posible (el mismo que el número de bits del módulo n) o a lo sumo un bit menos que el máximo.
Descripción detallada de la invención
Como ya se ha comentado, tanto la elección de la clave pública, (n, e), como de la privada, (p, q, d), del criptosistema RSA deben verificar determinadas condiciones: los números p y q han de ser primos grandes con el fin de evitar los ataques a la factorización del módulo n = p \cdot q, e debe ser primo con phin(n) y d ha de verificar la condición e \cdot d = 1 (mod phi(n)).
Esta última condición puede reescribirse en la forma e \cdot d = 1 + k \cdot phi(n), siendo k un número entero. Por otra parte, el mayor valor que puede tomar k es e - 1, en cuyo caso, se tiene que d > 2 \cdot phin(n) / 3, de donde se puede asegurar que la longitud en bits de d es mayor o igual que la longitud en bits de n menos una unidad. Así pues, si se considera k =
e - 1, se garantiza que la elección de la clave d hace el criptosistema invulnerable con relación a los ataques del tipo W-B-D.
Por otra parte, para que se verifique la igualdad k = e - 1, basta con elegir los primos p y q de forma adecuada. Esta elección es la que se propone como nuevo protocolo de elección de claves. En general, los números primos p y q deben verificar las siguientes condiciones, que pueden simplificarse para casos particulares del exponente de cifrado, dado que sólo dependen de sus restos al ser divididos por el número e :
mcd((p mod e) \cdot ((p mod e) - 1) mod e, e) = 1,
\newpage
mcd((q mod e) \cdot ((q mod e) - 1) mod e, e) = 1,
q = ((p mod e) / ((p mod e) - 1)) (mod e).
Obsérvese que las condiciones de los primos p y q son simétricas. Nótese además que la comprobación de estas propiedades necesita muy poco tiempo de computación, dado que sólo requieren de adiciones, multiplicaciones y divisiones modulares.
Por simplicidad a la hora de presentar los protocolos y las figuras para la elección de la clave privada que proponemos, describiremos tres protocolos según los posibles valores que se elijan para el exponente de cifrado e: (1) e = 3, (2) e es primo y mayor que 3, y (3) e no es primo.
Caso (1)
e = 3
En esta situación, el protocolo que se presenta en la Fig. 4 es muy parecido al que se sigue de forma habitual y que se mostró en la Fig. 3. No obstante, el que nos ocupa en este caso es más eficiente que el estándar mencionado dado que, como se ha señalado más arriba, determina un exponente de descifrado d de un tamaño similar al de n y, por tanto, no es necesario chequear si cumple los requisitos para ser seguro contra los ataques de W-B-D. Nótese que en este caso se tiene p (mod e) = 2 y q (mod e) = 2 por ser p y q primos, por lo que no existen restricciones a la hora de seleccionar ambos primos, salvo las propias del criptosistema RSA.
Caso (2)
e es un número primo mayor que 3
Si e > 3 es un número primo, cualquier número primo s diferente de e verifica la condición
mcd((s mod e) \cdot ((s mod e) - 1) (mod e), e) = 1,
por lo que las dos primeras condiciones para la elección de los primos p y q de la clave privada del RSA no precisan ser evaluadas. Así pues, en este caso, la única condición que se debe comprobar, supuesto que el primo p se elige de forma arbitraria, es la segunda condición del primo q, esto es:
q = ((p mod e) / ((p mod e) - 1)) (mod e).
Nótese que, en virtud del Teorema de Dirichlet (véase, por ejemplo, [Rie94]) existen infinitos primos de la forma
q = ((p mod e) / ((p mod e) - 1)) (mod e) + k \cdot e,
ya que ((p mod e) / (p mod e - 1)) (mod e) y e son primos entres sí. En la Fig. 5 se puede observar el protocolo que se propone para la elección de las claves en este caso.
Caso (3)
e no es primo
En el caso en que el exponente de cifrado se elija de modo que no sea un número primo, se deberá comprobar que se verifican las tres condiciones de los números primos p y q, presentadas más arriba, es decir,
mcd((p mod e) \cdot ((p mod e) - 1) (mod e), e) = 1,
mcd((q mod e) \cdot ((q mod e) - 1) (mod e), e) = 1,
q = ((p mod e) / ((p mod e) - 1)) (mod e).
El protocolo correspondiente a este caso más general es el que aparece detallado en la Fig. 6.
El algoritmo para la ejecución del procedimiento de encriptación descrito se implementa como un programa informático, el cual a su vez se almacena en dispositivos de almacenamiento de datos o en general en el hardware o el software de dispositivos que vayan a utilizarse para generar claves de encriptación mediante el procedimiento objeto de la presente invención.
Descripción de las figuras Figura 1 Esquema general del criptosistema RSA
En esta figura se esquematiza el protocolo del criptosistema RSA, que se caracteriza por una primera fase en la que se generan las claves (parte A) de cada usuario, constituidas por la clave pública, n y e, y la clave privada, p, q y d; una segunda fase en la que se lleva a cabo el cifrado del mensaje a enviar (parte B) mediante la clave pública del receptor; otra fase en la que se procede a la transmisión del mensaje cifrado (parte C), y finalmente, una cuarta fase (parte D) en la que se descifra el mensaje recibido, utilizando para ello tanto la clave pública como la privada del receptor.
Figura 2 Esquema general del dispositivo de elección de las claves RSA
Esta figura se presenta el proceso genérico que se propone en la literatura al uso (ver por ejemplo, [MOV97]) para la elección de las claves del criptosistema RSA.
Figura 3 Protocolo para la elección de las claves RSA
La Figura 3 desarrolla de forma más precisa el proceso presentado en la Fig. 2. En este caso, se indican las elecciones de los números que se deben llevar a cabo, así como las propiedades que deben verificar los mismos. Una vez concluido este protocolo, las claves seleccionadas garantizan la seguridad del criptosistema contra los ataques basados en la factorización de números enteros, no contra los del tipo W-B-D.
Figura 4 Protocolo propuesto para la elección de las claves RSA si e = 3
En esta figura se presenta el protocolo que se propone en esta invención para el caso más sencillo, es decir, aquel en el que el exponente de cifrado es e = 3. En este caso, dado que se ha probado que para cualesquiera valores de los primos p y q, la longitud en bits de d garantiza la invulnerabilidad del criptosistema, no se requieren más cálculos que los necesarios para garantizar la seguridad del criptosistema contra los ataques por factorización.
Figura 5 Protocolo propuesto para la elección de las claves RSA si e > 3 es primo
La Figura 5 presenta el protocolo que se propone para el caso en que el exponente de cifrado sea un número primo mayor que 3. En este caso, como los números primos verifican algunas de las propiedades que se exigen para garantizar que el tamaño del exponente de descifrado es el mismo que el del módulo RSA, y dado que uno de ellos se puede elegir de forma arbitraria, sólo es necesario hacer la comprobación de la propiedad restante para el otro primo.
Figura 6 Protocolo propuesto para la elección de las claves RSA si e no es primo
En esta última figura se muestra el protocolo que se debe seguir en el caso en que el exponente de cifrado sea un número compuesto. Puede observarse que en esta situación el número de operaciones a realizar es mayor que en los dos casos anteriores, dado que se deben verificar las tres condiciones señaladas más arriba.
Exposición detallada de un modo de realización de la invención Descripción
A continuación se describe una posible implementación de cómo seleccionar las claves del criptosistema RSA de modo que se garantice su invulnerabilidad a los ataques contra la longitud del exponente de descifrado. Además, se tendrán en cuenta las longitudes recomendadas de los números primos a emplear con el fin de evitar los ataques por la factorización del módulo. Para la generación de números primos probables y para la verificación de su primalidad, se hará uso de algoritmos ya publicados, como es el caso de los algoritmos de Maurer y de Miller-Rabin, respectivamente ([LIP], [MOV97, Section 4.2.3 ] y [Will]).
Por otra parte, dado que se han presentado 3 casos diferentes, en función de los tres tipos de posibles valores que pueden asignarse al exponente de cifradoe, se expondrán tres determinaciones prácticas de las claves, con valores reales, es decir, que pueden ser utilizados en cualquier implementación práctica real.
Caso (1)
e = 3
Dado que para el caso en que e = 3 no hay condiciones sobre los números primos a considerar, bastará con generar dos números primos de tamaño adecuado. En este caso hemos generado dos números primos de 256 bits cada uno y hemos verificado su primalidad.
p = 62829 48472 00557 61013 33297 33663 58267 27705 82457 48782 00223 43981 84319 44253 36099 07.
q = 67065 73203 18715 00610 08904 41826 05542 82723 07003 07589 14104 48393 48205 73092 24783 83.
A continuación se determinan los valores de n y phi(n):
n = 42137 05385 93582 46537 63075 08503 22022 56011 20970 30565 27299 67417 46746 43033 53103 77287 89217 79492 11878 92507 98771 92539 93307 28683 09293 00486 27779 55060 33000 16214 0381.
phi(n) = 42137 05385 93582 46537 63075 08503 22022 56011 20970 30565 27299 67417 46746 43033 53103 75988 94001 04299 39262 69085 97017 02901 83202 99788 48729 29342 99855 79735 07826 70605 2092.
Posteriormente se determina el exponente de descifrado del criptosistema:
d = 28091 36923 95721 64358 42050 05668 81348 37340 80646 87043 51533 11611 64497 62022 35402 50659 29334 02866 26175 12723 98011 35267 88801 99858 99152 86228 66570 53156 71884 47070 1395,
que, como se puede apreciar, tiene un tamaño parecido al de n. De hecho, el número de bits de n es [log_{2}(n)] + 1 = 511, mientras que el de d es [log_{2}(d)] + 1 = 510.
Así pues, la clave pública la forman los números (n, e), mientras que la privada está constituida por d.
Caso (2)
e es un número primo mayor que 3, por ejemplo e = 65537 = 2^{16} + 1
Para este caso, como uno de los números primos puede elegirse de forma arbitraria, seleccionamos el primer número primo como uno de los empleados en el caso anterior, es decir,
p = 62829 48472 00557 61013 33297 33663 58267 27705 82457 48782 00223 43981 84319 44253 36099 07.
Para elegir el otro número primo, sólo debemos aseguramos de que cumple la condición señalada anteriormente, es decir,
q = (p mod 65537) / ((p mod 65537) - 1) (mod 65537).
Por tanto, se busca un número primo con la condición
q = ((p mod 65537) / ((p mod 65537) - 1)) (mod 65537) + k \cdot 65537,
para determinado k, de modo que el tamaño de q sea de 256 bits, aproximadamente, y se analiza su primalidad. Hecho esto, se obtiene el número primo
q = 10923 11765 92649 32989 67586 26626 91602 34811 37968 07262 88543 93982 09000 19684 48217 789,
que corresponde al valor
k = 16667 10050 69883 16507 73740 43100 71566 21162 67098 08601 07334 69615 77429 84397 336.
Más tarde se determinan los valores de n y phi(n) :
n = 68629 38540 68157 35781 60994 39675 41486 98909 60980 14727 88331 37895 83662 60835 40928 75798 66683 00148 10459 59726 83409 24769 29043 05241 50056 04858 98874 67764 24166 70403 5623.
phi(n) = 68629 38540 68157 35781 60994 39675 41486 98909 60980 14727 88331 37895 83662 60835 40928 74078 06021 68877 59550 49635 23409 92026 38284 85620 11841 94002 36036 65021 02755 72220 7928.
Finalmente se calcula el exponente de descifrado del criptosistema:
d = 68628 33822 14791 04325 55028 89643 52944 00594 17104 76421 05315 85595 03103 78413 86366 57088 05338 01357 43319 06143 01389 94055 89249 37571 14425 03290 33506 23171 91909 89838 7457.
En este caso se verifica la igualdad de longitud en bits entre n y d, dado que el número de bits de n es [log_{2}(n)] + 1 =
512, y el de d es [log_{2}(d)] + 1 = 512.
Así pues, la clave pública la forman los números (n, e), mientras que la privada es el número d, cuya longitud es la misma que la de n.
Caso (3)
e no es primo, por ejemplo, e = 15
En este caso, hemos de generar un número primo p de aproximadamente 256 bits de modo que verifique la siguiente condición:
mcd((p mod e) \cdot ((p mod e) - 1) (mod e), e) = 1.
Tal número puede ser el siguiente:
p = 80542 15650 60482 74761 06106 65103 93174 00647 29016 00204 23661 47659 9103.
A continuación se genera un número primo q verificando las condiciones siguientes:
mcd((q mod e) \cdot ((q mod e) - 1) (mod e), e) = 1,
q=(p mod e) / ((p mod e)-1)(mod e) + k \cdot e,
para algún k, de modo que su tamaño sea de alrededor de 256 bits:
q = 95542 15650 60482 74761 06106 65107 49317 40064 12901 10020 42366 44765 58089,
que corresponde a
k = 63695 27710 05069 88316 50773 74043 10071 56621 16267 09808 60107 33469 61577 42984 39720 5
El cómputo de los valores de n y phin(n) proporciona los siguientes valores:
n = 76953 04996 28692 51112 58057 01417 44842 68916 99714 97076 71034 32966 47784 86091 80559 46517 91575 79582 88924 02485 70241 24094 13805 51536 05341 60152 56087 77390 40218 78603 4167.
phi(n) = 76953 04996 28692 51112 58057 01417 44842 68916 99714 97076 71034 32966 47784 86091 80559 44757 05744 49430 79274 52962 49019 94791 99106 88048 04047 34349 34083 68543 07929 25411 6976.
Finalmente, el valor de d para los datos anteriores se determina fácilmente y es:
d = 71822 84663 20113 01038 40853 21322 95186 50989 19733 97271 59632 04102 04599 20352 35188 81773 25361 52802 07322 89431 65751 95139 19166 42178 17110 85392 71811 43973 54067 30384 2511.
En este caso, al igual que en los anteriores, la clave pública la forman los números (n, e), mientras que la privada es el número d, cuya longitud en bits es la misma que la de n: [log_{2}(n)] + 1 = 512 = [log_{2}(d)] + 1.
Funcionamiento e implementación
El esquema propuesto para la generación de las claves se ha implementado como una Notebook del programa informático Maple 8.0 en un ordenador con dos procesadores Pentium_{TM}-1000 Mhz de Intel, bajo el sistema operativo Windows XP de Microsoft.
El tiempo de computación necesario para generar las claves depende de la elección inicial del exponente de cifrado, e, según los tres posibles casos contemplados anteriormente; a saber, (1) e = 3, (2) e es un número primo mayor que 3, y (3) e no es un número primo.
Para realizar una estimación de los tiempos requeridos en cada uno de los casos anteriores, se ha ejecutado la Notebook implementada para los ejemplos incluidos anteriormente.
(1) Si e = 3, el tiempo para el cálculo del valor de d es despreciable puesto que el cómputo del inverso módulo n se lleva a cabo en tiempo polinómico (milésimas de segundo para los valores estándar considerados anteriormente).
(2) Si e es un número primo mayor que 3, por ejemplo e = 2^{16} + 1 = 65537, la determinación del número primo q, el valor de n y el cómputo de d requiere menos de 12.3 segundos.
(3) Si e es un número no primo, por ejemplo, e = 15, el cálculo de los primos p y q, de n y del exponente de descifrado d, requiere menos de 19.8 segundos.
Resumiendo, se puede afirmar que el tiempo necesario para el cálculo del exponente de descifrado con el protocolo propuesto en esta invención, no supone apenas incremento en relación al tiempo requerido por los procedimientos estándar para generar los números primos y el módulo RSA.
Además, la ejecución que se ha implementado puede considerarse algo lenta puesto que se han utilizado las librerías propias del entorno de Maple 8, que no lleva a cabo la compilación de las órdenes que se ejecutan. Para una optimización de la invención que aquí se propone, seria aconsejable desarrollar una implementación, en software o en hardware, mediante un lenguaje de programación adecuado.
Aplicaciones de la invención
Las aplicaciones de esta invención son todas aquellas en las que se utiliza en criptosistema RSA puesto que hace referencia al proceso de generación de las claves. Entre otras aplicaciones se pueden mencionar las siguientes:
\bullet Firma digital con el criptosistema RSA.
\bullet Todo cifrado en clave pública que utilice el criptosistema RSA como generador de claves.
\bullet Criptosistemas que implementen RSA basados en el grupo definido por una curva elíptica.
\bullet Generación de números pseudoaleatorios.
Estas aplicaciones tienen gran utilidad en ambientes relacionados con las siguientes actividades:
\bullet Autoridades de Certificación
\bullet Militar
\bullet Banca
\bullet Internet
\bullet Correo Diplomático

Claims (7)

1. Procedimiento de encriptación mediante un criptosistema tipo RSA que incluye los siguientes pasos:
a)
Elección aleatoria de dos números impares grandes p y q como primer y segundo componente de la clave privada.
b)
Comprobación de la primalidad de tales números.
c)
Cálculo del módulo RSA, n = p \cdot q, y del valor phin(n) = (p - 1) (q - 1).
d)
Elección del exponente de cifrado 1 < e < phi(n) .
e)
Comprobación de la coprimalidad entre e y phi(n) : mcd(e, phi(n)) = 1.
f)
Cálculo del exponente de descifrado d, verificando e \cdot d = 1 (mod phi(n)).
g)
Publicación de la clave pública (n, e).
caracterizado porque los números primos p y q se eligen de forma que se verifiquen las siguientes condiciones:
mcd((p mod e) \cdot ((p mod e) - 1) mod e, e) = 1,
mcd((q mod e) \cdot ((q mod e) - 1) mod e, e) = 1,
q = ((p mod e) / ((p mod e) - 1)) (mod e).
2. Procedimiento de encriptación mediante un criptosistema tipo RSA según la reivindicación 1, caracterizado porque cuando e = 3 se verifican las siguientes condicionés: p (mod e) = 2 y q (mod e) = 2 por lo que no existen restricciones a la hora de seleccionar p y q .
3. Procedimiento de encriptación mediante un criptosistema tipo RSA según la reivindicación 1, caracterizado porque cuando e es un número primo mayor que 3 y uno de los números primos, p, se elige de forma arbitraria, el otro número primo, q, debe verificar la condición:
q = ((p mod e) / ((p mod e) - 1)) (mod e)
4. Procedimiento de encriptación mediante un criptosistema tipo RSA según la reivindicación 1, caracterizado porque cuando e no es primo, los números p y q se eligen de forma que se verifiquen las siguientes condiciones:
mcd((p mod e) \cdot ((p mod e) - 1) (mod e), e) = 1,
mcd((q mod e) \cdot ((q mod e) - 1) (mod e), e) = 1,
q = ((p mod e) / ((p mod e) - 1)) (mod e)
5. Procedimiento de encriptación mediante un criptosistema tipo RSA según las reivindicaciones 1-4, caracterizado porque el algoritmo para su ejecución se implementa como un programa informático.
6. Dispositivo para generar claves de encriptación mediante un criptosistema RSA constituido por un sistema electrónico que implementa en hardware o software un algoritmo para la ejecución del procedimiento según las reivindicaciones 1-5.
7. Dispositivo de almacenamiento de datos utilizable para generar claves de encriptación mediante un criptosistema RSA, caracterizado porque implementa un algoritmo para la ejecución del procedimiento según las reivindicaciones 1-5.
ES200300366A 2003-02-14 2003-02-14 Procedimiento y dispositivo de encriptacion mediante un criptosistema tipo rsa. Expired - Fee Related ES2217959B1 (es)

Priority Applications (2)

Application Number Priority Date Filing Date Title
ES200300366A ES2217959B1 (es) 2003-02-14 2003-02-14 Procedimiento y dispositivo de encriptacion mediante un criptosistema tipo rsa.
PCT/ES2004/070007 WO2004073253A2 (es) 2003-02-14 2004-02-10 Procedimiento y dispositivo de encriptación mediante un criptosistema tipo rsa

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
ES200300366A ES2217959B1 (es) 2003-02-14 2003-02-14 Procedimiento y dispositivo de encriptacion mediante un criptosistema tipo rsa.

Publications (2)

Publication Number Publication Date
ES2217959A1 ES2217959A1 (es) 2004-11-01
ES2217959B1 true ES2217959B1 (es) 2006-02-01

Family

ID=32865137

Family Applications (1)

Application Number Title Priority Date Filing Date
ES200300366A Expired - Fee Related ES2217959B1 (es) 2003-02-14 2003-02-14 Procedimiento y dispositivo de encriptacion mediante un criptosistema tipo rsa.

Country Status (2)

Country Link
ES (1) ES2217959B1 (es)
WO (1) WO2004073253A2 (es)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4351982A (en) * 1980-12-15 1982-09-28 Racal-Milgo, Inc. RSA Public-key data encryption system having large random prime number generating microprocessor or the like
IL87549A0 (en) * 1988-08-24 1989-01-31 Amos Fiat Rsa computation method for efficient batch processing
US6374329B1 (en) * 1996-02-20 2002-04-16 Intergraph Corporation High-availability super server
GB2331898B (en) * 1997-12-01 2003-03-12 Hewlett Packard Co Fair escrow cryptosystems
US6237021B1 (en) * 1998-09-25 2001-05-22 Complex Data Technologies, Inc. Method and apparatus for the efficient processing of data-intensive applications

Also Published As

Publication number Publication date
ES2217959A1 (es) 2004-11-01
WO2004073253A3 (es) 2008-10-23
WO2004073253A2 (es) 2004-08-26

Similar Documents

Publication Publication Date Title
CA2235359C (en) Implicit certificate scheme with ca chaining
Kaliski The mathematics of the rsa public-key cryptosystem
Sharma et al. RSA algorithm using modified subset sum cryptosystem
CN104270249A (zh) 一种从无证书环境到基于身份环境的签密方法
Khan et al. Analysis of asymmetric cryptography in information security based on computational study to ensure confidentiality during information exchange
CN104301108A (zh) 一种从基于身份环境到无证书环境的签密方法
JP2004297578A (ja) 公開鍵生成装置、共有鍵生成装置、鍵交換装置、及び鍵交換方法
Hasan et al. Security improve in ZigBee protocol based on RSA public algorithm in WSN
KR20100024605A (ko) Rsa기반 패스워드 인증을 통한 세션키 분배방법
CN111865555A (zh) 一种基于k-Lin假设的同态加密方法
KR100396740B1 (ko) 계산적 디피-헬만 가정에 기반하는 안전성 증명 가능한공개키 암호화 방법
JP5171787B2 (ja) サインクリプションシステムおよびサインクリプション生成方法
Mohapatra Public key cryptography
Sharma et al. Modified elgamal cryptosystem algorithm (MECA)
Khatoon et al. Performance Evaluation of RSA Algorithm in Cloud Computing Security
ES2217959B1 (es) Procedimiento y dispositivo de encriptacion mediante un criptosistema tipo rsa.
JP4563037B2 (ja) 暗号化装置および復号化装置、並びにこれらを備えた暗号システム、暗号化方法および復号化方法
Gajbhiye et al. Design and analysis of pairing protocol for bluetooth enabled devices using R-LWE lattice-based cryptography
Kumar et al. Exploration and Implementation of RSA-KEM Algorithm
Lone et al. Common attacks on RSA and its variants with possible countermeasures
Upadhyay Attack on RSA cryptosystem
JP2011128281A (ja) 複数のナップザックを用いる公開鍵暗号方式による暗号システム、鍵生成装置、暗号化装置、復号装置、データ交換方法およびプログラム
Kbar et al. Modified RSA Using Triple Keys Based Encryption/Decryption
Chakraborty Introduction to Basic Cryptography
Encinas et al. Analysis of the efficiency of the Chor–Rivest cryptosystem implementation in a safe-parameter range

Legal Events

Date Code Title Description
EC2A Search report published

Date of ref document: 20041101

Kind code of ref document: A1

FG2A Definitive protection

Ref document number: 2217959B1

Country of ref document: ES

FD2A Announcement of lapse in spain

Effective date: 20180808