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
Application number
ES01963747T
Other languages
English (en)
Inventor
Michael John Sabin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Atmel Corp
Original Assignee
Atmel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Atmel Corp filed Critical Atmel Corp
Application granted granted Critical
Publication of ES2255568T3 publication Critical patent/ES2255568T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • YGENERAL 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
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS 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/00Systems 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/20Information 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.
1. Campo de la invención
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.
2. La técnica anterior
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.
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.
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.
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}.
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.
Breve descripción de la invención
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.
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}.
Breve descripción de las figuras de los dibujos
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.
Descripción detallada de la 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.
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.
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.

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.
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.
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;
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}.
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};
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.
ES01963747T 2000-07-28 2001-07-26 Metodo y aparato de almacenamiento y recuperacion de clave privada de criptografia. Expired - Lifetime ES2255568T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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