ES2255568T3 - Metodo y aparato de almacenamiento y recuperacion de clave privada de criptografia. - Google Patents
Metodo y aparato de almacenamiento y recuperacion de clave privada de criptografia.Info
- Publication number
- ES2255568T3 ES2255568T3 ES01963747T ES01963747T ES2255568T3 ES 2255568 T3 ES2255568 T3 ES 2255568T3 ES 01963747 T ES01963747 T ES 01963747T ES 01963747 T ES01963747 T ES 01963747T ES 2255568 T3 ES2255568 T3 ES 2255568T3
- Authority
- ES
- Spain
- Prior art keywords
- mod
- parameters
- processor
- private key
- private
- 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 - Lifetime
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
-
- 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
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y04—INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
- Y04S—SYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
- Y04S40/00—Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
- Y04S40/20—Information technology specific aspects, e.g. CAD, simulation, modelling, system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
- Complex Calculations (AREA)
- Mobile Radio Communication Systems (AREA)
- Vending Machines For Individual Products (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Refuse Collection And Transfer (AREA)
- Medical Preparation Storing Or Oral Administration Devices (AREA)
- Lock And Its Accessories (AREA)
- Exchange Systems With Centralized Control (AREA)
- Stored Programmes (AREA)
Abstract
Un dispositivo de recuperación de clave privada RSA que usa el Teorema del resto chino (TRC), que comprende, en combinación: un procesador; un espacio de memoria no volátil acoplado operativamente con dicho procesador; un conjunto de parámetros de clave privada almacenados en dicho espacio de memoria no volátil que utiliza menos espacio de almacenamiento que el conjunto completo de parámetros {p, q, dp, dq, v} y que proporciona mejor eficacia de cálculo que el conjunto mínimo de parámetros {p, q}, siendo p y q factores primos dados de un módulo público, pudiendo recuperarse la clave privada a partir de dicho conjunto de parámetros de clave privada almacenados; medios para calcular dp a partir de dp = [ 1 + (p-1) (e-kp)] u mód 2b en cooperación con dicho procesador; y medios para calcular dq a partir de dq = [ 1 + (q-1) (e-kq)] u mód 2b en cooperación con dicho procesador; siendo b un número entero tal que p < 2b, q < 2b, y ue mód 2b = 1, obteniéndose kp y kq a partir de kp(p-1) mód e = 1 ykq(q-1) mód e = 1, y siendo e un exponente público dado.
Description
Método y aparato de almacenamiento y recuperación
de clave privada de criptografía.
La presente invención se refiere, en general, a
sistemas de criptografía. Más concretamente la presente invención
se refiere a un dispositivo de recuperación de clave privada RSA de
acuerdo con las reivindicaciones 1, 10 o 12 y a un método para
recuperar la clave privada en un sistema de criptografía de clave
pública/clave privada que use este dispositivo de recuperación.
El esquema RSA (Rivest, Shamir y Aldeman) es una
forma común de criptografía de clave pública. El esquema RSA usa
una clave pública, que consiste en un módulo público n y un
exponente público e, y una clave privada, que consiste en el módulo
n y un exponente privado d. El módulo público n consiste en un
número entero que es el producto de dos factores primos p y q
distintos, es decir, n = pq. Los factores constituyen información
secreta y no divulgada por el titular de la clave privada. El
exponente público e es un número entero primo en relación con los
valores (p - 1) y (q - 1). El exponente privado d es un número
entero tal que ed mód (p - 1) = ed mód (q - 1) = 1.
Una aplicación del esquema RSA consiste en cifrar
mensajes. Cualquier parte puede usar la clave pública para cifrar
un mensaje que pueda ser descifrado, solamente, por el titular de la
clave privada. Sea m el mensaje a cifrar, siendo m un número entero
tal que 0 < m < n. El mensaje cifrado c se calcula como c =
m^{e} mód n. Para descifrar el mensaje cifrado, el titular de la
clave privada calcula m = c^{d} mód n. Por ejemplo, la parte A
que desee enviar un mensaje cifrado a la parte B cifraría el mensaje
obteniendo la clave pública de la parte B. Como el mensaje puede
ser descifrado, solamente, mediante la clave privada correcta de la
parte B, que estará asociada con la clave pública de la parte B,
únicamente la parte B puede descifrar el mensaje.
Otra aplicación del esquema RSA consiste en
firmar mensajes. El titular de la clave privada puede aplicar una
firma a un mensaje que puede ser verificada por cualquier parte que
use la clave pública. Sea m el mensaje a firmar, siendo m un número
entero tal que 0 < m < n. La firma s se calcula como s =
m^{d} mód n. Para verificar la firma, cualquier parte usa la
clave pública para calcular m'= s^{e} mód n. Si el valor de m'
casa con el valor de m, la firma es
válida.
válida.
La seguridad del esquema RSA se basa en la
presunta dificultad de determinar los factores del módulo público.
Es decir, dado n, se cree que es muy difícil determinar los factores
p y q de modo que n = pq. La dificultad del problema de
factorización aumenta con la magnitud de p y q. En una realización
práctica, p y q consisten, cada uno, en cientos o miles de dígitos
binarios (bits); al ser n el producto de p y q, consiste, a su vez,
en cientos o miles
de bits.
de bits.
La operación de exponenciación modular usada en
RSA es una operación costosa desde el punto de vista del cálculo.
De modo aproximado, la complejidad de la operación aumenta
linealmente con el número de bits del exponente y cuadráticamente
con el número de bits del módulo. Afortunadamente, existen algunos
métodos bien conocidos que reducen el coste de cálculo.
Para reducir el coste de la operación de clave
pública, es frecuente escoger como exponente público un número
pequeño. Ello es aceptable porque la seguridad del esquema RSA es,
en gran parte, independiente de la magnitud del exponente público.
Una selección popular para el exponente público es e = 2^{16} + 1;
este valor parece manifestarse como estándar de facto para nuevas
aplicaciones. Otras selecciones comunes son e = 3 y e = 17.
Mediante un exponente público pequeño, el coste del cálculo de la
operación de clave pública RSA es relativamente pequeño. En otros
términos, resulta relativamente económico cifrar un mensaje o
verificar una firma.
Desgraciadamente, el exponente privado d no puede
escogerse pequeño. Su valor no puede seleccionarse libremente; debe
satisfacer la condición de que ed mód (p - 1) = ed mód (q - 1) = 1.
La seguridad del esquema RSA se basa en que p y q sean grandes y
sean seleccionados arbitrariamente. En consecuencia, d es un número
entero de magnitud comparable a la del módulo público n. Ello hace
el coste de la operación de clave privada relativamente elevado. En
otros términos, es relativamente costoso descifrar un mensaje o
crear una firma.
El coste de la operación de clave privada puede
reducirse merced a la utilización del Teorema del resto chino
(TRC). El TRC requiere el cálculo de varias cantidades, como
sigue:
- d_{p} = d mód (p - 1);
- d_{q} = d mód (q - 1);
- v, tal que pv mód q = 1.
\newpage
Entonces, la operación de clave privada y =
g^{d} mód n se calcula como:
- a = (g mód p)^{d_{p}} mód p;
- b = (g mód q)^{d_{q}} mód q;
- y = a + [(b - a)v mód q]p.
Si se desprecia el coste de calcular d_{p},
d_{q} y v, el coste de cálculo de la operación de clave privada
que use el TRC es, aproximadamente, la cuarta parte del coste de la
operación de clave privada que no use el TRC. Ello supone una gran
reducción de coste de cálculo, y hace aconsejable el TRC para muchas
aplicaciones.
Desgraciadamente, el coste de calcular d_{p},
d_{q}, y v no es, necesariamente, despreciable. En consecuencia,
muchas aplicaciones, simplemente, precalculan los valores de
d_{p}, d_{q}, y v y los almacenan junto con los factores p y q
como parte de la clave privada. Una aplicación que almacene el
conjunto de parámetros {p, q, d_{p}, d_{q}, v} puede realizar
la operación de clave privada usando el TRC con el mínimo coste de
cálculo posible. Cada uno de los cinco parámetros requiere b bits de
almacenamiento, siendo b el número de bits de un factor primo del
módulo. De ese modo, el almacenamiento total de la clave privada es
de 5b bits.
Pero en algunas aplicaciones, almacenar la clave
privada como {p, q, d_{p}, d_{q}, v} no es deseable, por la
cantidad de espacio de almacenamiento requerido. En cambio, si la
aplicación almacena la clave privada como {p, q}, el espacio de
almacenamiento de la clave privada se reduce de 5b bits a 2b bits,
una reducción en un factor de 2,5. Pero, entonces, la aplicación
tiene que calcular d_{p}, d_{q} y v cada vez que realice una
operación de clave privada. Ello puede suponer un coste de cálculo
no deseado.
Un ejemplo de aplicación en el que estas
cuestiones tienen interés consiste en una tarjeta inteligente de
bajo coste usada para crear firmas digitales. La tarjeta almacena un
conjunto de claves privadas RSA, usándose cada clave para crear
firmas con fines diferentes. Por ejemplo, una clave podría ser usada
para firmar compras hechas con una tarjeta de crédito particular;
otra clave podría ser usada para firmar mensajes de correo
electrónico; otra clave podría ser usada para firmar transacciones
bancarias, y así sucesivamente. Debido a su bajo coste, la tarjeta
inteligente cuenta con una cantidad limitada de espacio de
almacenamiento. Es deseable que la tarjeta almacene tantas claves
privadas como sea posible en el espacio limitado. Además, debido a
su bajo coste, la tarjeta inteligente tiene un procesador simple
con capacidad de cálculo limitada. Como no es deseable que el
cálculo de la firma consuma una cantidad excesiva de tiempo, es
importante minimizar el coste de cálculo de la operación de clave
privada RSA.
Otra cuestión asociada con el cálculo de d_{p},
d_{q} y v es la seguridad. Una manera común de calcular d_{p},
d_{q} y v a partir de p y q consiste en usar el algoritmo de
Euclides o sus variaciones comunes. El algoritmo de Euclides
consiste en una secuencia de operaciones aritméticas que puede ser
usada para resolver el problema: "Dados los números enteros x, z,
encontrar y tal que xy mód z = 1." La secuencia de operaciones
depende de los valores numéricos de los operandos; es decir, un
cambio de los valores numéricos de y o z puede producir un cambio
del orden de operaciones aritméticas tales como multiplicar, restar,
etc. Tal dependencia puede hacer la clave privada almacenada en una
aplicación vulnerable a su descubrimiento por parte de un atacante
que seleccione hábilmente entradas a la aplicación mientras evalúe
respuestas disponibles externamente tales como flujo de corriente
eléctrica, emisiones electromagnéticas, etc. Tales ataques se han
realizado con éxito en dispositivos de seguridad reales, tanto
comerciales como oficiales. Con el fin de reducir la vulnerabilidad
a tales ataques, es deseable que la secuencia de operaciones usadas
para calcular d_{p}, d_{q} y v no varíe con los valores de p y
q.
Continuando con el ejemplo de la tarjeta
inteligente de bajo coste, ésta incluye un coprocesador aritmético
que acelera las operaciones de exponenciación modular usadas en RSA.
Durante las operaciones de clave privada, la exponenciación modular
es vulnerable a ataques del tipo descrito. Para reducir la
vulnerabilidad a tales ataques el coprocesador se diseña
cuidadosamente con el fin de asegurar que su secuencia de
operaciones no dependa de los valores de los operandos. Pero si se
requiere, también, que la tarjeta inteligente calcule d_{p},
d_{q} y v durante una operación de clave privada RSA, entonces, el
cálculo de d_{p}, d_{q} y v supone una fuente adicional de
vulnerabilidad potencial. Con objeto de reducir esta vulnerabilidad
añadida, el cálculo de d_{p}, d_{q} y v tiene que usar una
secuencia de operaciones que no dependa de los valores de p y q.
Como p y q son valores primos, v puede calcularse usando
exponenciación modular mediante la operación v =
p^{q-2} mód q. De ese modo, la tarjeta inteligente
puede usar el coprocesador para calcular v, haciendo que
desaparezca cualquier nueva vulnerabilidad asociada con el cálculo
de v. Pero no resulta posible calcular d_{p} y d_{q} usando
exponenciación modular. Por tanto, se necesita algún esquema para
calcular d_{p} y d_{q} de modo que no se introduzca una nueva
vulnerabilidad.
Aunque la descripción precedente se ha centrado
en aplicaciones que usen el TRC, no todas las aplicaciones lo usan.
Algunas aplicaciones realizan la operación de clave privada sin usar
el TRC, ya que ésta es una operación más simple (aunque más
costosa). En algunas de tales operaciones, el espacio de
almacenamiento y la seguridad son, todavía, cuestiones
importantes.
La forma más directa de almacenar la clave
privada en una aplicación no TRC consiste en almacenar los
parámetros {n, d}, siendo n el módulo público y d el exponente
privado. Almacenar la clave privada de esta manera requiere
4b bits.
4b bits.
Alternativamente, en una aplicación no TRC, la
clave privada podría almacenarse simplemente como {p, q}, siendo p
y q los factores primos de n. Cada vez que se realiza una operación
de clave privada, n y d se calculan a partir de los valores
almacenados de p y q. Cuando se almacena de esta manera, la clave
privada requiere 2b bits. Ello supone un ahorro en un factor de 2
en relación con el almacenamiento de la clave como {n, d}. El
cálculo de n a partir de p y q es una única operación de
multiplicación, ya que n = pq. Ello supone una operación económica
en comparación con la exponenciación modular, y como se trata de una
sola operación, no introduce nueva vulnerabilidad de exposición de
p y q. Pero, al igual que d_{p} y d_{q} en el caso del TRC, el
cálculo de d a partir de p y q puede suponer un coste de cálculo
significativo y puede introducir vulnerabilidad de seguridad,
debido a la secuencia de cálculo que varía con los valores de p y
q.
El documento "Sparse RSA Secret Keys and Their
Generation" ("Claves secretas RSA dispersas y su
generación"), actas del tercer grupo de trabajo anual de campos
seleccionados de Criptografía (SAC'96), Chae Hoon Lim, Pil Joong
Lee, agosto de 1996, páginas 117-131, Universidad de
Queens, Kingston, Ontario, Canada, describe un método para reducir
la carga de cálculo mediante el uso de parámetros de clave secreta
en el sistema RSA.
En consecuencia, un objeto de esta invención
consiste en proporcionar una parametrización de la clave privada
RSA para aplicaciones TRC que usa menos espacio de almacenamiento
que el conjunto completo de parámetros
{p, q, d_{p}, d_{q}, v} y que ofrece mejor eficacia de cálculo que el conjunto mínimo de parámetros {p, q}.
{p, q, d_{p}, d_{q}, v} y que ofrece mejor eficacia de cálculo que el conjunto mínimo de parámetros {p, q}.
Asimismo, un objeto de la invención consiste en
proporcionar una parametrización de la clave privada RSA para
aplicaciones no TRC que usa menos espacio de almacenamiento que el
conjunto completo de parámetros {n, d} y que proporciona mejor
eficacia de cálculo que el conjunto mínimo de parámetros {p, q}.
Un objeto de esta invención, también, consiste en
proporcionar medios para calcular los parámetros TRC, d_{p} y
d_{q}, y el parámetro no TRC, d, de tal manera que la secuencia de
cálculo sea independiente de los valores de los factores primos p y
q, con el fin de reducir la vulnerabilidad a ataques que exploten
tal dependencia.
Para superar estos y otros defectos de la técnica
anterior, la invención descrita en este documento consiste en un
aparato y un método para proporcionar un esquema de almacenamiento y
recuperación de clave privada de criptografía que reduce los
requisitos de espacio y mejora la seguridad. Más concretamente, el
sistema de la presente invención proporciona medios para obtener la
clave privada a partir de parámetros almacenados no empleados
previamente y proporciona medios para calcular ciertos parámetros,
al tiempo que reduce las vulnerabilidades de seguridad.
Un aspecto de esta invención consiste en
sustituir los parámetros TRC, d_{p} y d_{q}, y el parámetro no
TRC, d, por parámetros menores k_{p}, k_{q} y k,
respectivamente. Los valores de k_{p}, k_{q} y k son los
valores que satisfagan las relaciones:
- k_{p}(p - 1) mód e = 1;
- k_{q}(q - 1) mód e = 1;
- k(p - 1)(q - 1) mód e = 1.
Cada uno de los parámetros k_{p}, k_{q} y k
tiene un valor en el margen de 1 a (e-1), ambos
inclusive. De ese modo, ninguno de ellos requiere más bits que el
número de bits necesarios para almacenar el exponente público e. En
el caso común de e = 2^{16} + 1, cada uno de los parámetros
k_{p}, k_{q} y k puede ser almacenado, respectivamente, como un
valor (k_{p} - 1), (k_{q} - 1) o (k - 1) de 16 bits.
En cambio, d_{p} y d_{q} requieren, cada uno,
b bits de almacenamiento, y d requiere 2b bits de almacenamiento,
siendo b el número de bits de un factor primo p o q. Un valor típico
de b es 512, que corresponde a un módulo público con 1024 bits. En
este caso típico, d_{p} y d_{q} requieren, cada uno, 32 veces
más espacio de almacenamiento que k_{p} y k_{q}, y d requiere
64 veces más espacio de almacenamiento que k.
Una aplicación TRC que almacene k_{p} y k_{q}
puede recuperar d_{p} y d_{q} mediante los siguientes
cálculos:
- d_{p} = [1 + (p - 1)(e – k_{p})] / e;
- d_{q} = [1 + (q - 1)(e – k_{q})] / e.
Una aplicación no TRC que almacene k puede
recuperar d mediante el cálculo siguiente:
- d = [1 + (p - 1)(q - 1)(e – k)] / e.
En cada uno de estos cálculos, "/"
representa una división entera; en cada caso, el dividendo es
múltiplo del divisor, de modo que no haya resto. Una demostración
de que estos cálculos producen los resultados correctos se ofrece
al final de este compendio.
Estos cálculos de d_{p}, d_{q} y d requieren
que la aplicación efectúe la división entre el exponente público e.
En algunas aplicaciones, la división puede ser una operación
inconveniente o no deseable. Además, si una aplicación efectúa la
división usando la secuencia de operaciones usual de división larga,
la secuencia de operaciones puede depender de los valores de p y q,
lo que hace la clave privada vulnerable a ataques que exploten tal
dependencia.
Para evitar la necesidad de división, una
aplicación TRC puede recuperar d_{p} y d_{q} usando los cálculos
siguientes:
- calcular u de modo que ue mód 2^{b} = 1;
- d_{p} = [1 + (p - 1)(e - k_{q})]u mód 2^{b};
- d_{q} = [1 + (q - 1)(e - k_{q})]u mód 2^{b}.
Una aplicación no TRC puede recuperar d sin usar
división mediante el cálculo siguiente:
- calcular t de modo que te mód 2^{2b} = 1;
- d = [1 + (p - 1))(q - 1)(e - k)]t mód 2^{2b}.
Una demostración de que estos cálculos
proporcionan los resultados correctos se ofrece al final de este
compendio.
Obviando de momento el cálculo de u y t, es
evidente que estos cálculos para la recuperación de d_{p} y
d_{q} o d son económicos desde el punto de vista del cálculo y no
introducen vulnerabilidad de seguridad. Cada cálculo consiste en
dos o tres multiplicaciones de números enteros, tres o cuatro
sumas/restas de números enteros y una operación
"mód 2^{b}" o "mód 2^{2b}". Las operaciones de multiplicación, suma y resta son similares a las operaciones usadas para ejecutar exponenciación modular. Una sola exponenciación modular usa miles de tales operaciones, de modo que la carga añadida de algunas operaciones más es despreciable. La operación "mód 2^{b}" consiste, simplemente, en truncamiento a b bits, y la operación "mód 2^{2b}" en truncamiento a 2b bits; ambas son, también, despreciables. La secuencia de operaciones no depende de los valores de p y q, de modo que el cálculo puede realizarse sin introducir nueva vulnerabilidad a ataques que exploten tal dependencia.
"mód 2^{b}" o "mód 2^{2b}". Las operaciones de multiplicación, suma y resta son similares a las operaciones usadas para ejecutar exponenciación modular. Una sola exponenciación modular usa miles de tales operaciones, de modo que la carga añadida de algunas operaciones más es despreciable. La operación "mód 2^{b}" consiste, simplemente, en truncamiento a b bits, y la operación "mód 2^{2b}" en truncamiento a 2b bits; ambas son, también, despreciables. La secuencia de operaciones no depende de los valores de p y q, de modo que el cálculo puede realizarse sin introducir nueva vulnerabilidad a ataques que exploten tal dependencia.
Volviendo ahora al cálculo de u y t, es fácil
comprobar que no existe problema de seguridad; el cálculo no hace
uso de la clave privada, de modo que no introduce potencial de
ataque a la clave privada, independientemente de como se ejecute.
Es asimismo verdad que el cálculo es económico, tal como sigue.
En primer lugar, considérese el caso en que el
exponente público e sea el mismo para todas las claves privadas. En
este caso, u, o t, es un valor fijo, de modo que, simplemente, puede
almacenarse una vez para todas las claves privadas y recuperarse en
función de las necesidades. Aún cuando las claves privadas de
interés tengan longitudes diferentes, es decir, el valor de b varíe
en función de la clave privada, solamente es necesario almacenar un
valor de u, o t, siendo ese valor el que corresponda al valor máximo
de b. Para valores de b distintos al valor máximo, el valor
almacenado puede truncarse, simplemente, usando "mód 2^{b}"
para u, o "mód 2^{2b}" para t. En el caso común en que e =
2^{16} + 1, ni siquiera es necesario almacenar u o t; ambos
pueden generarse usando los cálculos económicos:
- u = [1 + (2^{32} - 2^{16}) + (2^{64} - 2^{48}) + (2^{96} - 2^{80}) + (2^{128} -2^{112}) + ...] mód 2^{b};
- t = [1 + (2^{32} - 2^{16}) + (2^{64} - 2^{48}) + (2^{96} - 2^{80}) + (2^{128} -2^{112}) + ...] mód 2^{2b}.
Para otras selecciones comunes de e, tales como e
= 3 o e = 17, puede obtenerse un cálculo similar.
En segundo lugar, consideremos el caso general en
que el exponente público e sea diferente y arbitrario para cada
clave privada. En este caso, la aplicación tiene que calcular u o t
usando un algoritmo de uso general que calcule la inversa
multiplicativa de un número con respecto a un módulo que sea
potencia de 2 (tal como 2^{b} o 2^{2b}). Tales algoritmos son
bien conocidos y económicos desde el punto de vista del cálculo. En
muchas aplicaciones, un algoritmo de este tipo ya está resuelto como
parte de la operación de exponenciación modular; en particular,
muchas aplicaciones que usan multiplicación de Montgomery, que es un
medio común de realizar exponenciación modular, incluyen un
algoritmo de este tipo. En comparación con el coste de la operación
de exponenciación modular, el coste del cálculo para ejecutar un
algoritmo de este tipo es, usualmente, reducido.
La descripción en este documento se ha centrado
en el caso en que el módulo público n sea el producto de dos
números primos, p y q. Esta es la situación usual en el esquema RSA.
Pero el esquema RSA puede generalizarse a un módulo que sea el
producto de j números primos, siendo j un número entero tal que j
\geq 2. Una generalización de este tipo se describe en la patente
norteamericana nº 5.848.159. La invención, en este caso, se aplica
al esquema generalizado. Por ejemplo, considérese una aplicación TRC
con factores primos p_{1}, p_{2}, ..., p_{j}. Existen j
posibilidades para el exponente privado d, definidas mediante
d_{i} = d mód (p_{i}-1), para i = 1, 2, ..., j.
Para aplicar la invención, cada d_{i} es sustituido por k_{i}
cuando la clave es almacenada, siendo k_{i} el valor tal que
k_{i}(p_{i}-1) mód e = 1. Para recuperar
d_{i} a partir de k_{i}, calcula d_{i} = [1 + (p_{i} -
1)(e-k_{i})] / e o d_{i} = [1 + (p_{i} - 1)(e
- k_{i})]u_{i} mód 2^{bi}, siendo b_{i} un número entero
tal que p_{i} < 2^{b_{i}}, y u_{i} es el valor que
satisfaga eu_{i} mód 2^{b_{i}} = 1.
Demostración de las fórmulas de d_{p}, d_{q}
y d. Primero se verifica que la fórmula
(1)d_{p} = [1
+ (p - 1)(e – k_{p})] /
e
proporciona el valor correcto de
d_{p} comprobando que ed_{p} mód (p - 1) =
1.
Sea a = 1 + (p - 1)(e-k_{p}).
Primero necesitamos comprobar que a es un múltiplo de e, de modo que
la operación de división en (1) produzca un valor entero. Por
definición, k_{p}(p - 1) mód e = 1. Por tanto,
k_{p}(p - 1) - 1 es múltiplo de e. Puesto que a =
e(p - 1) - [k_{p}(p - 1) - 1], se deduce que a es
múltiplo de e.
Ahora, sea d_{p} como en (1), entonces ed_{p}
mód (p - 1) = a mód (p - 1) = 1. Ello demuestra la fórmula (1).
A continuación comprobamos que la fórmula
(2)d_{p} = [1
+ (p - 1)(e - k_{p})]u mód
2^{b}
proporciona el valor correcto de
d_{p}, comprobando que ed_{p} mód (p - 1)=
1.
De nuevo, sea a = 1 + (p - 1)(e - k_{p}). Se ha
comprobado anteriormente que a es múltiplo de e, de modo que puede
escribirse a = ce, siendo c un número entero. Como 0 \leq (p - 1)
< 2^{b} y 0 \leq (e - k_{p}) \leq e, se deduce que 0
< a < e2^{b}, por tanto 0 < c < 2^{b}. Ahora, sea
d_{p} como en (2). Entonces:
- ed_{p} mód (p - 1)
- = e[au mód 2^{b}] mód (p - 1)
- = e[cue mód 2^{b}] mód (p - 1)
- = e[c mód 2^{b}] mód (p - 1)
- = ec mód (p - 1)
- = a mód (p - 1)
- = 1.
Ello demuestra la fórmula (2).
Las demostraciones de las fórmulas
(3)d_{q} = [1
+ (q - 1)(e – k_{q})] /
e
(4)d_{q} = [1
+ (q - 1)(e - k_{q})]u mód
2^{b}
son idénticas a las de las fórmulas
(1) y (2), sustituyendo d_{p} por d_{q}, k_{p} por k_{q} y p
por
q.
Las demostraciones de las fórmulas
(5)d = [1 + (p
- 1)(q - 1)(e - k)] /
e
(6)d = [1 + (p
- 1)(q - 1)(e - k)]t mód
2^{2b}
son similares a las demostraciones
de (1) y (2). Los argumentos para (5) y (6) son idénticos a los de
(1) y (2), respectivamente, sustituyendo d_{p} por d, k_{p} por
k; (p - 1) por (p - 1)(q - 1) y 2^{b} por 2^{2b}. La conclusión
del argumento, en cada caso, es que ed mód (p - 1)(q - 1) = 1. De
ello se deduce que ed mód (p - 1) =
1.
Desde un primer punto de vista se describe un
dispositivo de recuperación de clave privada de sistema de cifrado,
que comprende, en combinación, un procesador, un espacio de memoria
no volátil acoplado operativamente con dicho procesador y un
conjunto de parámetros de clave privada almacenados en dicho espacio
de memoria no volátil, que utiliza menos espacio de almacenamiento
que el conjunto completo de parámetros {p, q, d_{p}, d_{q}, v},
y que proporciona mejor eficacia de cálculo que el conjunto mínimo
de parámetros {p, q}, pudiendo recuperarse la clave privada a
partir de dicho conjunto de parámetros de clave privada
almacenados.
Desde otro punto de vista, se describe un método
para recuperar una clave privada, que comprende, en combinación,
almacenar parámetros de clave privada en un espacio de memoria,
utilizar menos espacio de almacenamiento para dichos parámetros de
clave privada que el conjunto completo de parámetros {n, d} y
proporcionar mejor eficacia de cálculo que el conjunto mínimo de
parámetros {p, q}.
La figura 1 es un diagrama esquemático del
entorno del sistema de cifrado de la presente invención.
La figura 2 es un diagrama de flujo de una
primera realización ilustrativa de la presente invención.
La figura 3 es un diagrama de flujo de una
segunda realización ilustrativa de la presente invención.
La figura 4 es un diagrama de flujo de una
tercera realización ilustrativa de la presente invención.
La figura 5 es un diagrama de flujo de una cuarta
realización ilustrativa de la presente invención.
La figura 6 es un diagrama de flujo de una quinta
realización ilustrativa de la presente invención.
La figura 7 es un diagrama de flujo de otro
método para recuperar una clave privada.
La figura 8 es un diagrama de flujo de una sexta
realización ilustrativa de la presente invención.
Las personas con un conocimiento normal de la
técnica observarán que la siguiente descripción de la presente
invención es solamente ilustrativa y en modo alguno limitativa.
Otras realizaciones de la invención se les ocurrirán fácilmente a
dichas personas merced a esta descripción.
La figura 1 muestra un sistema de cifrado 10 que
puede beneficiarse de la invención. El sistema de cifrado 10 firma
y descifra mensajes que se le transmiten a través de una puerta 12
de entrada/salida. El sistema de cifrado 10 usa el esquema RSA para
realizar la firma y el descifrado. El sistema de cifrado 10 cuenta
con un procesador 14 que controla todas sus operaciones. El sistema
de cifrado 10 tiene un coprocesador aritmético (CPA) 16 que
facilita los cálculos usados en el esquema RSA al firmar y
descifrar. La clave privada usada para realizar la firma y el
descifrado se guarda en un almacenamiento no volátil 18 del sistema
de cifrado 10.
El sistema de cifrado 10 puede guardar un grupo
de claves privadas en el almacenamiento no volátil 18 y seleccionar
una clave privada para ser usada con una firma o un descifrado
particulares, de acuerdo con órdenes que se le proporcionen a
través de la puerta 12 de entrada/salida. El sistema de cifrado 10
puede calcular la clave pública que corresponda a cualquier clave
privada almacenada en el almacenamiento no volátil 18 y transmitir
la clave pública a un dispositivo externo 20 a través de la puerta
12 de entrada/salida.
El sistema de cifrado 10 puede generar claves
privadas y almacenarlas en el almacenamiento no volátil 18. Al
generar una clave privada, el sistema de cifrado usa un generador de
números aleatorios (GNA) 22, con el fin de asegurar que los
factores primos p y q de la clave privada sean escogidos
arbitrariamente. El GNA 22 proporciona una semilla (número inicial)
aleatoria que se aplica a un algoritmo que genere p y q. Al
almacenar la clave privada, el sistema de cifrado 10 puede
almacenar la semilla en lugar de almacenar p y q, recuperando los
valores de p y q por aplicación del algoritmo a la semilla cada vez
que la clave privada sea usada para firmar o descifrar.
Asimismo, el sistema de cifrado 10 puede aceptar
claves privadas que le sean proporcionadas mediante dispositivos
externos 20 a través de la puerta 12 de entrada/salida y guardar las
claves privadas en el almacenamiento no volátil 18. A su vez, una
clave privada proporcionada externamente puede ser cifrada mediante
el dispositivo externo usando la clave pública que corresponda a
una de las claves privadas ya existentes en el almacenamiento no
volátil 18 del sistema de cifrado 10. En tal caso, el sistema de
cifrado 10 descifra la clave privada cifrada usando la clave
privada existente en el almacenamiento no volátil 18 y, entonces,
almacena la clave privada descifrada en el almacenamiento no
volátil 18.
Independientemente de si una clave privada es
generada mediante el sistema de cifrado 10 o proporcionada mediante
un dispositivo externo 20, el sistema de cifrado 10 puede usar la
invención para reducir la cantidad de almacenamiento no volátil 18
necesario para almacenar la clave privada, y para recuperar la clave
privada rápidamente y sin introducir vulnerabilidades de seguridad.
El sistema de cifrado 10 admite muchas variaciones relacionadas con
el modo en que puede aplicarse la invención estableciendo un
compromiso entre espacio de almacenamiento y velocidad de
recuperación.
En un primer ejemplo, y con referencia ahora a la
figura 2, inicialmente almacena los parámetros de clave privada
como {p, q, k_{p}, k_{q}, v}, siendo p y q los factores primos
del módulo público, v el valor que satisfaga pv mód q = 1, k_{p}
el valor que satisfaga k_{p}(p - 1) mód e = 1, y siendo e
el exponente público y k_{p} el valor que satisfaga
k_{p}(q - 1) mód e = 1. Para recuperar la clave privada en la forma TRC usual {p, q, d_{p}, d_{q}, v}, siendo d_{p} = d mód (p – 1),
d_{q} = d mód (q - 1) y d el exponente privado, calcula d_{p} = [1 + (p - 1)(e - k_{p})] u mód 2^{b}, d_{q} = [1 + (q - 1)(e - k_{q})] u mód 2^{b},
siendo b un número entero tal que p < 2^{b}, q < 2^{b}, y u el valor que satisfaga ue mód 2^{b} = 1.
k_{p}(q - 1) mód e = 1. Para recuperar la clave privada en la forma TRC usual {p, q, d_{p}, d_{q}, v}, siendo d_{p} = d mód (p – 1),
d_{q} = d mód (q - 1) y d el exponente privado, calcula d_{p} = [1 + (p - 1)(e - k_{p})] u mód 2^{b}, d_{q} = [1 + (q - 1)(e - k_{q})] u mód 2^{b},
siendo b un número entero tal que p < 2^{b}, q < 2^{b}, y u el valor que satisfaga ue mód 2^{b} = 1.
En un segundo ejemplo, y con referencia ahora a
la figura 3, inicialmente almacena los parámetros de clave privada
como {p, q, k_{p}, k_{q}}, siendo p, q, k_{p} y k_{q} como
en el primer ejemplo. Para recuperar la clave privada, primero
calcula el valor v que satisfaga pv mód q = 1. Entonces, procede a
usar {p, q, k_{p}, k_{q}, v} como en el primer ejemplo.
En un tercer ejemplo y con referencia ahora a la
figura 4, inicialmente almacena los parámetros de clave privada
como {semilla, k_{p}, k_{q}, v}, siendo semilla la entrada para
el algoritmo que genere los factores primos p y q del módulo
público, y k_{p}, k_{q}, v como en el primer ejemplo. Para
recuperar la clave privada, primero aplica el algoritmo a la
semilla, con el fin de recuperar los valores de p y q. Entonces,
procede a usar {p, q, k_{p}, k_{q}, v} como en el primer
ejemplo. En la técnica se conocen numerosos algoritmos de secuencia
de semilla. Véanse, por ejemplo, algoritmos que generen números
primos a partir de una semilla aleatoria en el Apéndice 2 de la
publicación FIPS 186-2, de 27 de enero de 2000,
"Digital Signature Standard (DSS)"("Estandar de firma
digital (DSS)"), Department of Commerce/National Institute of
Standars and Technology, EE.UU.
En un cuarto ejemplo, y con referencia ahora a la
figura 5, inicialmente almacena los parámetros de clave privada
como {semilla, k_{p}, k_{q}}, siendo semilla, k_{p} y k_{q}
como en el tercer ejemplo. Para recuperar la clave privada, primero
aplica el algoritmo a la semilla, con el fin de recuperar los
valores de p y q. Entonces procede a usar {p, q, k_{p}, k_{q}}
como en el segundo ejemplo.
En principio, es posible almacenar inicialmente
los parámetros de clave privada usando cualquiera de los formatos
descritos en los cuatro ejemplos previos. Al recuperar la clave
privada, en lugar de usar los cálculos para d_{p} y d_{q}
descritos en los ejemplos previos, calcula d_{p} = [1+ (p - 1)(e
– k_{p})] / e y d_{q} = [1+ (q - 1)(e – k_{q})] / e.
Asimismo, como alternativa adicional en los ejemplos precedentes, en
lugar de almacenar k_{p} y k_{q}, estos parámetros podrían
calcularse a partir de p, q y e. Podría calcularse cada uno de
ellos usando el algoritmo de Euclides o una variación común del
mismo, aunque ello puede introducir una seguridad de
vulnerabilidad, porque la secuencia de operaciones depende de p y q.
Alternativamente, en caso de que e sea primo, al igual que el valor
común e = 2^{16} + 1, puede calcularse cada uno de ellos usando
exponenciación modular, mediante las fórmulas k_{p} = (p -
1)^{e-2} mód e y k_{q} = (q -
1)^{e-2} mód e; ello puede hacerse sin
introducir una vulnerabilidad de seguridad porque la secuencia de
operaciones puede hacerse independiente de p y q. Como e es un
número pequeño, el coste del cálculo de k_{p} y k_{q} es a
menudo despreciable comparado con el coste de cálculo de la
operación de clave privada RSA.
En un quinto ejemplo, y con referencia ahora a la
figura 6, inicialmente almacena los parámetros de clave privada
como {p, q, k}, siendo p y q los factores primos del módulo público,
k el valor que satisfaga k(p - 1)(q - 1) mód e = 1
y siendo e el exponente público. Para recuperar la clave privada en la forma usual {n, d} no TRC, en la que n es el módulo público y d el exponente privado, calcula n = pq y d = [1+ (p - 1)(q - 1)]t mód 2^{2b}, siendo b un número entero tal que p < 2^{b}, q < 2^{b} y t el valor que satisfaga te mód 2^{2b} = 1.
y siendo e el exponente público. Para recuperar la clave privada en la forma usual {n, d} no TRC, en la que n es el módulo público y d el exponente privado, calcula n = pq y d = [1+ (p - 1)(q - 1)]t mód 2^{2b}, siendo b un número entero tal que p < 2^{b}, q < 2^{b} y t el valor que satisfaga te mód 2^{2b} = 1.
En principio, tal como se muestra en la figura 7,
es posible almacenar inicialmente los parámetros de clave privada
usando el formato del quinto ejemplo. Al recuperar la clave privada,
en lugar de usar el cálculo de d descrito en el quinto ejemplo,
calcula d = [1 + (p – 1)(q - 1)] / e.
En un sexto ejemplo, y con referencia ahora a la
figura 8, inicialmente almacena los parámetros de clave privada
usando el formato del quinto ejemplo. Al recuperar la clave privada,
primero calcula el exponente privado d usando el cálculo de
cualquiera de los dos ejemplos previos (quinto o sexto). Entonces,
para recuperar la clave privada en la forma TRC usual {p, q,
d_{p}, d_{q}, v}, calcula d_{p} = d mód (p - 1), d_{q} = d
mód (q - 1) y calcula el valor v que satisfaga
pv mód q = 1.
pv mód q = 1.
Claims (15)
1. Un dispositivo de recuperación de clave
privada RSA que usa el Teorema del resto chino (TRC), que comprende,
en combinación:
un procesador;
un espacio de memoria no volátil acoplado
operativamente con dicho procesador;
un conjunto de parámetros de clave privada
almacenados en dicho espacio de memoria no volátil que utiliza
menos espacio de almacenamiento que el conjunto completo de
parámetros {p, q, d_{p}, d_{q}, v} y que proporciona mejor
eficacia de cálculo que el conjunto mínimo de parámetros {p, q},
siendo p y q factores primos dados de un módulo público, pudiendo
recuperarse la clave privada a partir de dicho conjunto de
parámetros de clave privada almacenados;
medios para calcular d_{p} a partir de d_{p}
= [ 1 + (p - 1) (e - k_{p})] u mód 2^{b} en cooperación con
dicho procesador; y
medios para calcular d_{q} a partir de d_{q}
= [ 1 + (q - 1) (e - k_{q})] u mód 2^{b} en cooperación con
dicho procesador;
siendo b un número entero tal que p < 2^{b},
q < 2^{b}, y ue mód 2b = 1, obteniéndose k_{p} y k_{q} a
partir de k_{p}(p-1) mód e = 1
y k_{q}(q-1) mód e = 1, y siendo e un exponente público dado.
y k_{q}(q-1) mód e = 1, y siendo e un exponente público dado.
2. El dispositivo de recuperación de clave
privada RSA según la reivindicación 1, en el que dicho conjunto de
parámetros de clave privada almacenados comprende los parámetros {p,
q, k_{p}, k_{q}}.
3. El dispositivo de recuperación de clave
privada RSA según la reivindicación 1, en el que dicho conjunto de
parámetros de clave privada almacenados comprende los parámetros
{semilla, k_{p}, k_{q}}, siendo semilla un valor obtenido a
partir de un generador de números aleatorios.
4. El dispositivo de recuperación de clave
privada RSA según la reivindicación 1, en el que dicho conjunto de
parámetros de clave privada almacenados comprende el parámetro
{semilla}, siendo semilla un valor obtenido a partir de un
generador de números aleatorios, y que comprende, además, medios
para calcular k_{p} a partir de
k_{p}(p - 1) mód e = 1 en cooperación con dicho procesador y medios para calcular k_{q} a partir de k_{q}(p - 1) mód e = 1 en cooperación con dicho procesador.
k_{p}(p - 1) mód e = 1 en cooperación con dicho procesador y medios para calcular k_{q} a partir de k_{q}(p - 1) mód e = 1 en cooperación con dicho procesador.
5. El dispositivo de recuperación de clave
privada RSA según las reivindicaciones 3 o 4, que comprende, además,
medios para calcular p a partir de dicha semilla en cooperación con
dicho procesador, y medios para calcular q a partir de dicha
semilla en cooperación con dicho procesador.
6. El dispositivo de recuperación de clave
privada RSA según la reivindicación 1, en el que dicho conjunto de
parámetros de clave privada almacenados comprende los parámetros {p,
q}, y que comprende, además, medios para calcular k_{p} a partir
de k_{p}(p - 1) mód e = 1 en cooperación con dicho
procesador y medios para calcular k_{q} a partir de
k_{q}(p - 1) mód e = 1 en cooperación con dicho
procesador.
7. El dispositivo de recuperación de clave
privada RSA según cualquiera de las reivindicaciones 2 a 6, en el
que dicho conjunto de parámetros de clave privada almacenados
comprende, además, el parámetro v, que se obtiene a partir de pv
mód q = 1.
8. El dispositivo de recuperación de clave
privada RSA según cualquiera de las reivindicaciones 2 a 6, que
comprende, además, medios para calcular el parámetro v a partir de
pv mód q = 1 en cooperación con dicho procesador.
9. El dispositivo de recuperación de clave
privada RSA según cualquiera de las reivindicaciones 6 a 8, que
comprende, además, medios para agrupar los parámetros de clave
privada {p, q, d_{p}, d_{q}, v} a partir de dichos valores
almacenados y calculados.
10. Un dispositivo de recuperación de clave
privada RSA que no usa el Teorema del resto chino (TRC), que
comprende, en combinación:
un procesador;
un espacio de memoria no volátil acoplado
operativamente con dicho procesador;
un conjunto de parámetros de clave privada
almacenados en dicho espacio de memoria no volátil que utiliza
menos espacio de almacenamiento que el conjunto completo de
parámetros {n, d} y que proporciona mejor eficacia de cálculo que
el conjunto mínimo de parámetros {p, q}, comprendiendo dicho
conjunto de parámetros de clave privada los parámetros {p, q, k},
siendo p y q factores primos dados de un módulo público,
obteniéndose k a partir de
k (p - 1)(q - 1) mód e = 1, y siendo e un exponente público dado;
k (p - 1)(q - 1) mód e = 1, y siendo e un exponente público dado;
medios para calcular n a partir de n = pq en
cooperación con dicho procesador; y
medios para calcular d a partir de d = [ 1 + (p -
1) (q - 1)] t mód 2^{2b} en cooperación con dicho procesador,
siendo
te mód 2^{2b} = 1, y b un número entero tal que p < 2^{b} y q < 2^{b}.
te mód 2^{2b} = 1, y b un número entero tal que p < 2^{b} y q < 2^{b}.
11. El dispositivo de recuperación de clave
privada RSA según la reivindicación 10, que comprende, además,
medios para agrupar los parámetros de clave privada {n, d} a partir
de dichos valores almacenados y calculados.
12. Un dispositivo de recuperación de clave
privada RSA que usa el Teorema del resto chino (TRC), que comprende,
en combinación:
un procesador;
un espacio de memoria no volátil acoplado
operativamente con dicho procesador;
un conjunto de parámetros de clave privada
almacenados en dicho espacio de memoria no volátil que utiliza
menos espacio de almacenamiento que el conjunto completo de
parámetros {n, d} y que proporciona mejor eficacia de cálculo que
el conjunto mínimo de parámetros {p, q}, comprendiendo dicho
conjunto de parámetros de clave privada almacenados los parámetros
{p, q, k}, siendo p y q factores primos dados de un módulo público,
obteniéndose k a partir de k (p - 1)(q - 1) mód e = 1, y siendo e
un exponente público dado;
medios para calcular n a partir de n = pq en
cooperación con dicho procesador;
medios para calcular d a partir de d = [ 1 + (p -
1) (q - 1)] t mód 2^{2b} en cooperación con dicho procesador;
siendo
te mód 2^{2b} = 1 y b un número entero tal que p < 2^{b} y q < 2^{b};
te mód 2^{2b} = 1 y b un número entero tal que p < 2^{b} y q < 2^{b};
medios para calcular d_{p} a partir de d_{p}
= d mód (p - 1) en cooperación con dicho procesador; y
medios para calcular d_{q} a partir de d_{q}
= d mód (p - 1) en cooperación con dicho procesador.
13. El dispositivo de recuperación de clave
privada RSA según la reivindicación 12, que comprende, además,
medios para calcular el parámetro v a partir de pv mód q = 1 en
cooperación con dicho procesador.
14. El dispositivo de recuperación de clave
privada RSA según la reivindicación 13, que comprende, además,
medios para agrupar los parámetros de clave privada {p, q, d_{p},
d_{q}, v} a partir de dichos valores almacenados y
calculados.
15. Un método para recuperar una clave privada
que usa el dispositivo de recuperación de clave privada RSA según
cualquiera de las reivindicaciones precedentes.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US627927 | 2000-07-28 | ||
US09/627,927 US6959091B1 (en) | 2000-07-28 | 2000-07-28 | Cryptography private key storage and recovery method and apparatus |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2255568T3 true ES2255568T3 (es) | 2006-07-01 |
Family
ID=24516709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES01963747T Expired - Lifetime ES2255568T3 (es) | 2000-07-28 | 2001-07-26 | Metodo y aparato de almacenamiento y recuperacion de clave privada de criptografia. |
Country Status (17)
Country | Link |
---|---|
US (1) | US6959091B1 (es) |
EP (1) | EP1305907B1 (es) |
JP (1) | JP2004505548A (es) |
KR (1) | KR100737667B1 (es) |
CN (1) | CN1314223C (es) |
AT (1) | ATE320124T1 (es) |
AU (1) | AU2001284673A1 (es) |
CA (1) | CA2417520A1 (es) |
CY (1) | CY1105328T1 (es) |
DE (1) | DE60117813T2 (es) |
DK (1) | DK1305907T3 (es) |
ES (1) | ES2255568T3 (es) |
HK (1) | HK1062510A1 (es) |
NO (1) | NO20030415L (es) |
PT (1) | PT1305907E (es) |
RU (1) | RU2279766C2 (es) |
WO (1) | WO2002011360A2 (es) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6959091B1 (en) * | 2000-07-28 | 2005-10-25 | Atmel Corporation | Cryptography private key storage and recovery method and apparatus |
FR2841411B1 (fr) * | 2002-06-19 | 2004-10-29 | Gemplus Card Int | Procede de generation de cles electroniques pour procede de crytographie a cle publique et objet portatif securise mettant en oeuvre le procede |
AU2003271594A1 (en) * | 2002-09-11 | 2004-04-23 | Giesecke And Devrient Gmbh | Protected cryptographic calculation |
US7634659B2 (en) * | 2002-09-20 | 2009-12-15 | Cable Television Laboratories, Inc. | Roaming hardware paired encryption key generation |
US8023645B2 (en) | 2005-08-19 | 2011-09-20 | Nxp B.V. | Circuit arrangement for and method of performing an inversion operation in a cryptographic calculation |
CN101421972B (zh) * | 2006-04-12 | 2011-06-08 | 艾利森电话股份有限公司 | 远程通信网络中的数据包压缩及加密方法、节点与装置 |
KR101491681B1 (ko) * | 2007-02-27 | 2015-02-09 | 톰슨 라이센싱 | 압축된 rsa 계수들을 발생시키기 위한 방법 및 디바이스 |
EP1998491A1 (en) * | 2007-05-31 | 2008-12-03 | Thomson Licensing | Method for calculating compressed RSA moduli |
TWI350454B (en) * | 2007-12-10 | 2011-10-11 | Phison Electronics Corp | Anti-attacking method for private key, controller and storage device executing the same |
US9444622B2 (en) * | 2008-09-15 | 2016-09-13 | Hewlett Packard Enterprise Development Lp | Computing platform with system key |
JPWO2011040023A1 (ja) * | 2009-09-29 | 2013-02-21 | パナソニック株式会社 | 暗号化装置、復号化装置、暗号化方法、復号化方法、および暗号化復号化システム |
CN104506506B (zh) * | 2014-12-15 | 2017-12-29 | 齐宇庆 | 一种电子信息安全存储系统及存储方法 |
FR3088452B1 (fr) * | 2018-11-08 | 2023-01-06 | Idemia France | Procede de verification d'integrite d'une paire de cles cryptographiques et dispositif cryptographique |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5848159A (en) | 1996-12-09 | 1998-12-08 | Tandem Computers, Incorporated | Public key cryptographic apparatus and method |
US6154541A (en) * | 1997-01-14 | 2000-11-28 | Zhang; Jinglong F | Method and apparatus for a robust high-speed cryptosystem |
FR2759806B1 (fr) * | 1997-02-19 | 1999-04-23 | Gemplus Card Int | Systeme cryptographique comprenant un systeme de chiffrement et dechiffrement et un systeme de sequestre de cles, et les appareils et dispositifs associes |
JPH1127253A (ja) * | 1997-07-07 | 1999-01-29 | Hitachi Ltd | 鍵回復システム、鍵回復装置、鍵回復プログラムを記憶した記憶媒体、および鍵回復方法 |
US6708273B1 (en) * | 1997-09-16 | 2004-03-16 | Safenet, Inc. | Apparatus and method for implementing IPSEC transforms within an integrated circuit |
US6081598A (en) * | 1997-10-20 | 2000-06-27 | Microsoft Corporation | Cryptographic system and method with fast decryption |
US6959091B1 (en) * | 2000-07-28 | 2005-10-25 | Atmel Corporation | Cryptography private key storage and recovery method and apparatus |
-
2000
- 2000-07-28 US US09/627,927 patent/US6959091B1/en not_active Expired - Lifetime
-
2001
- 2001-07-26 AT AT01963747T patent/ATE320124T1/de not_active IP Right Cessation
- 2001-07-26 WO PCT/US2001/023676 patent/WO2002011360A2/en active IP Right Grant
- 2001-07-26 DE DE60117813T patent/DE60117813T2/de not_active Expired - Lifetime
- 2001-07-26 AU AU2001284673A patent/AU2001284673A1/en not_active Abandoned
- 2001-07-26 CN CNB01816482XA patent/CN1314223C/zh not_active Expired - Fee Related
- 2001-07-26 DK DK01963747T patent/DK1305907T3/da active
- 2001-07-26 KR KR1020037001270A patent/KR100737667B1/ko not_active IP Right Cessation
- 2001-07-26 EP EP01963747A patent/EP1305907B1/en not_active Expired - Lifetime
- 2001-07-26 RU RU2003105700/09A patent/RU2279766C2/ru not_active IP Right Cessation
- 2001-07-26 ES ES01963747T patent/ES2255568T3/es not_active Expired - Lifetime
- 2001-07-26 JP JP2002515768A patent/JP2004505548A/ja not_active Abandoned
- 2001-07-26 CA CA002417520A patent/CA2417520A1/en not_active Abandoned
- 2001-07-26 PT PT01963747T patent/PT1305907E/pt unknown
-
2003
- 2003-01-27 NO NO20030415A patent/NO20030415L/no not_active Application Discontinuation
-
2004
- 2004-06-30 HK HK04104697A patent/HK1062510A1/xx not_active IP Right Cessation
-
2006
- 2006-04-13 CY CY20061100522T patent/CY1105328T1/el unknown
Also Published As
Publication number | Publication date |
---|---|
PT1305907E (pt) | 2006-07-31 |
DE60117813D1 (de) | 2006-05-04 |
NO20030415D0 (no) | 2003-01-27 |
DK1305907T3 (da) | 2006-06-26 |
AU2001284673A1 (en) | 2002-02-13 |
KR20030075146A (ko) | 2003-09-22 |
KR100737667B1 (ko) | 2007-07-09 |
DE60117813T2 (de) | 2006-10-05 |
CA2417520A1 (en) | 2002-02-07 |
CY1105328T1 (el) | 2010-03-03 |
US6959091B1 (en) | 2005-10-25 |
WO2002011360A2 (en) | 2002-02-07 |
CN1314223C (zh) | 2007-05-02 |
CN1466830A (zh) | 2004-01-07 |
JP2004505548A (ja) | 2004-02-19 |
ATE320124T1 (de) | 2006-03-15 |
EP1305907B1 (en) | 2006-03-08 |
WO2002011360A3 (en) | 2002-06-13 |
NO20030415L (no) | 2003-03-28 |
HK1062510A1 (en) | 2004-11-05 |
EP1305907A2 (en) | 2003-05-02 |
RU2279766C2 (ru) | 2006-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11573769B2 (en) | Homogenous atomic pattern for double, add, and subtract operations for digital authentication using elliptic curve cryptography | |
US10515567B2 (en) | Cryptographic machines with N-state lab-transformed switching devices | |
ES2255568T3 (es) | Metodo y aparato de almacenamiento y recuperacion de clave privada de criptografia. | |
Gutub et al. | Hybrid crypto hardware utilizing symmetric-key and public-key cryptosystems | |
US20100208885A1 (en) | Cryptographic processing and processors | |
KR20020025630A (ko) | 비밀 정보의 처리 장치, 프로그램 또는 시스템 | |
CN107040362A (zh) | 模乘设备和方法 | |
JP2008252299A (ja) | 暗号処理システム及び暗号処理方法 | |
JP7206324B2 (ja) | 暗号アルゴリズム向けのワンタイムの中国剰余定理のべき乗のためのシステムおよび方法 | |
WO2019121747A1 (en) | Device and method for protecting execution of a cryptographic operation | |
US9992013B2 (en) | System and method for providing defence to a cryptographic device against side-channel attacks targeting the extended euclidean algorithm during decryption operations | |
JP2004304800A (ja) | データ処理装置におけるサイドチャネル攻撃防止 | |
Vidhya et al. | Hybrid key generation for RSA and ECC | |
CN111817853B (zh) | 一种后量子安全的签密算法 | |
Tahat et al. | Hybrid publicly verifiable authenticated encryption scheme based on chaotic maps and factoring problems | |
Pund et al. | Implementation of RSA algorithm using mersenne prime | |
Si et al. | An improved RSA signature algorithm based on complex numeric operation function | |
Rahim | Applied Pohlig-Hellman algorithm in three-pass protocol communication | |
Asaduzzaman et al. | A promising parallel algorithm to manage the RSA decryption complexity | |
JP4836208B2 (ja) | 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置 | |
Abdurahmonov et al. | Improving Smart Card Security Using Elliptic Curve Cryptography over Prime Field (F p) | |
Renita et al. | Comparison of Public Key Algorithms for Lightweight and Low Cost System | |
Shafieinejad et al. | A post-quantum one time signature using bloom filter | |
Tejashwini et al. | Mobile communication security using Galios Field in elliptic curve Cryptography | |
Shetty et al. | Analysis of elliptic curve cryptography for mobile banking |