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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public 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/302—Public 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.
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.
\bullet Criptografía
\bullet Tecnologías de las comunicaciones
\bullet Seguridad informática
\bullet Banca electrónica
\bullet Comercio electrónico
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.
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.
(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.
[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/
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.
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.
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)
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)
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)
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.
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.
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.
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.
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.
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.
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.
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)
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)
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.
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)
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.
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.
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.
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)
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 |
-
2003
- 2003-02-14 ES ES200300366A patent/ES2217959B1/es not_active Expired - Fee Related
-
2004
- 2004-02-10 WO PCT/ES2004/070007 patent/WO2004073253A2/es active Application Filing
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 |