ES2404410T3 - Uso de un coprocesador para inversión modular - Google Patents

Uso de un coprocesador para inversión modular Download PDF

Info

Publication number
ES2404410T3
ES2404410T3 ES06013333T ES06013333T ES2404410T3 ES 2404410 T3 ES2404410 T3 ES 2404410T3 ES 06013333 T ES06013333 T ES 06013333T ES 06013333 T ES06013333 T ES 06013333T ES 2404410 T3 ES2404410 T3 ES 2404410T3
Authority
ES
Spain
Prior art keywords
extended
value
module
procedure
coprocessor
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.)
Active
Application number
ES06013333T
Other languages
English (en)
Inventor
Martin Dr. Seysen
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.)
Giesecke and Devrient GmbH
Original Assignee
Giesecke and Devrient GmbH
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 Giesecke and Devrient GmbH filed Critical Giesecke and Devrient GmbH
Application granted granted Critical
Publication of ES2404410T3 publication Critical patent/ES2404410T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/721Modular inversion, reciprocal or quotient calculation

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Procedimiento para el uso de un coprocesador (16) para la determinación del inverso modular x de un valor deentrada u con respecto a un módulo v, en el que: - a partir del valor de entrada u se determina un primer valor ampliado U con una longitud de bits aumentada conrespecto al valor de entrada u, de tal manera que en una sección de bits del primer valor ampliado U se encuentra lainformación del valor de entrada u, en el que la determinación del primer valor ampliado U comprende lamultiplicación del valor de entrada u por un factor de ampliación f y en el que f > 2v, - a partir del módulo v se determina un segundo valor ampliado V con una longitud de bits aumentada con respectoal módulo v, de tal manera que en una sección de bits del segundo valor ampliado V se encuentra la información delmódulo v, en el que la determinación del segundo valor ampliado V comprende la multiplicación del módulo v por elfactor de ampliación f, - el coprocesador (16) está previsto para cálculos de números enteros con al menos la longitud de bits aumentada, - al menos uno de los valores ampliados U, V contiene una perturbación en una posición de bit, que está distanciadade aquellas posiciones de bit, en las que se encuentra la información del valor de entrada u o del módulo v, - partiendo de los dos valores ampliados U y V mediante el uso del coprocesador (16) se realizan etapas (34) deprocesamiento de un procedimiento euclídeo, siempre que se cumpla una condición de realización predeterminada,y - el inverso modular x se determina en función del resultado de las etapas (34) de procesamiento realizadas.

Description

Uso de un coprocesador para inversión modular
La invención se refiere, en general, al campo técnico de la criptografía y, en especial, a una técnica prevista con fines criptográficos para la inversión modular mediante el uso de un coprocesador. En particular, la invención está prevista para su utilización en soportes de datos portátiles que, por ejemplo, pueden estar configurados como tarjetas con chip en distintas formas de construcción o como módulos de chip.
Como los soportes de datos portátiles deben ser económicos y pequeños, por regla general presentan una capacidad de cálculo sólo relativamente reducida y relativamente poco espacio de memoria. Por otro lado, los soportes de datos portátiles se utilizan a menudo para aplicaciones críticas para la seguridad tales como, por ejemplo, transacciones financieras o funciones de identificación electrónicas. Por ello es deseable realizar en soportes de datos portátiles procedimientos criptográficos seguros (“intensos”).
Una serie de procedimientos criptográficos conocidos con clave pública, por ejemplo los procedimientos conocidos por el nombre de RSA y Diffie-Hellman, contienen cálculos en un grupo multiplicativo con un número entero grande como módulo. Para poder realizar tales procedimientos de manera eficaz se han creado microcontroladores, que además del propio núcleo de procesador presentan un coprocesador criptográfico. Este tipo de coprocesadores están optimizados por regla general para multiplicaciones de números enteros modulares con longitudes de bits de aproximadamente 512 bits a 1024 bits. La patente estadounidense 5.961.578 muestra a modo de ejemplo un microcontrolador de este tipo.
Un desarrollo más reciente es el uso de procedimientos criptográficos, que se basan en curvas elípticas (“procedimientos EC”). A diferencia del procedimiento RSA mencionado anteriormente los procedimientos EC requieren longitudes de bits de clave considerablemente menores de normalmente 160 bits a 256 bits. Sin embargo, en los procedimientos EC otras opciones como la multiplicación modular, concretamente en particular la suma, resta e inversión modular, desempeñan un papel importante.
La duración de ejecución total del procedimiento EC se ve influida en particular mediante las inversiones modulares necesarias. Cuando una inversión modular no se realiza con el apoyo de un coprocesador, por ejemplo puede requerir un factor 100 más de tiempo que una multiplicación modular. Así, por ejemplo, en el procedimiento de firma ECDSA conocido con una longitud de bits de clave de 160 bits a 192 bits se usa aproximadamente el 20% de la duración de ejecución para inversiones modulares. Por tanto, cada aceleración de las inversiones modulares afecta en una medida perceptible sobre la duración de ejecución total del procedimiento de firma ECDSA y otros procedimientos EC.
Así, existe la necesidad de un procedimiento eficaz para la inversión modular. En particular existe la necesidad de utilizar coprocesadores en sí conocidos de manera eficaz para la inversión modular.
Un procedimiento conocido y a menudo utilizado para la inversión modular es el procedimiento euclídeo ampliado, que se basa en el procedimiento ya propuesto por Euclides para la determinación del máximo común divisor (gcd = greatest common divisor) de dos valores de entrada u, v. Mediante una operación adicional, en el procedimiento euclídeo ampliado se determinan además del valor gcd(u, v) también los coeficientes A, ! de una combinación lineal de los valores de entrada u, v con Au -!v = gcd(u, v) y IAI < v. Como existe un inverso modular u-1 del valor u con el módulo v sólo para gcd(u, v) = 1, se aplica Au -!v = 1 y por tanto u-1 = A (mod v) para el coeficiente A calculado mediante el procedimiento euclídeo ampliado.
El procedimiento euclídeo no ampliado y el procedimiento euclídeo ampliado se describen como los algoritmos A y X en las páginas 334 - 343 del libro “The Art of Computer Programming” de D. E. Knuth, tomo 2, 3ª edición, Addison-Wesley, 1997. Por las operaciones adicionales necesarias el esfuerzo de cálculo necesario para el procedimiento euclídeo ampliado es claramente mayor que el esfuerzo para el procedimiento euclídeo no ampliado. Por tanto es deseable proporcionar un procedimiento para la inversión modular, que al menos para algunos casos de aplicación requiera menos tiempo de cálculo que el procedimiento euclídeo ampliado.
Por tanto la invención tiene como objetivo proponer una técnica para la inversión modular, mediante la que pueda utilizarse un coprocesador de una manera especialmente favorable.
Según la invención este objetivo se soluciona por completo o en parte mediante un procedimiento con las características de la reivindicación 1, un producto de programa informático según la reivindicación 6 y un soporte de datos portátil según la reivindicación 7. Las reivindicaciones dependientes definen características opcionales de algunas configuraciones de la invención.
La invención parte de la idea básica de realizar etapas de procesamiento de un procedimiento euclídeo no ampliado con valores, que presentan una longitud de bits mayor que el módulo y/o el valor que va a invertirse y que por ello en el presente documento se denominan “valores ampliados”. Es un hallazgo sorprendente que en estos valores ampliados puede incluirse información a partir de la que finalmente puede determinarse fácilmente el inverso deseado, aún cuando no se realice el procedimiento euclídeo ampliado.
En general mediante la invención se aumenta la longitud de bits de los cálculos, aunque se reduce el número de operaciones de cálculo en comparación con un procedimiento euclídeo ampliado. Así, por ejemplo, en algunas formas de realización de la invención puede dividirse por la mitad aproximadamente el número de las operaciones necesarias, mientras que aproximadamente se duplica la longitud de bits. En el caso de constelaciones como las denominadas al principio, en las que, por ejemplo, debe realizarse un procedimiento EC con una longitud de bits de clave de 160 bits a 256 bits mediante el uso de un coprocesador, que está configurado para cálculos con 512 bits ó 1024 bits, sin embargo, la longitud de bits mayor no desempeña ningún papel, mientras que el número reducido de operaciones lleva a una reducción aproximadamente lineal del tiempo de cálculo.
En algunas configuraciones en los valores ampliados la información del valor de entrada y/o del módulo se ha desplazado a posiciones de bit más elevadas. Esto puede ocurrir mediante una multiplicación por un factor de ampliación, que a su vez puede ser una segunda potencia o un múltiplo de una segunda potencia. Se entiende que esta multiplicación puede implementarse de manera eficaz, por ejemplo mediante una operación de desplazamiento. Según la invención al menos uno de los valores ampliados contiene además una perturbación en una posición de bit de valor bajo. Así, por ejemplo, puede fijarse el bit de valor más bajo del primer valor ampliado.
Las etapas de procesamiento corresponden según la invención a las etapas de procesamiento de un procedimiento euclídeo, por ejemplo de un procedimiento euclídeo clásico no ampliado o de un procedimiento euclídeo con la configuración según Lehmer. Sin embargo, esto no quiere decir necesariamente que las etapas de procesamiento se realicen con la misma frecuencia que en el caso de un procedimiento euclídeo. Más bien, en algunas configuraciones el procedimiento descrito en el presente documento se finaliza antes de lo que sería el caso en un procedimiento euclídeo habitual.
Según la invención el coprocesador está optimizado para cálculos de números enteros con al menos la longitud de bits aumentada, por ejemplo, duplicada. Este puede ser el caso por ejemplo cuando el coprocesador está configurado para cálculos RSA o procedimientos similares y se utiliza el procedimiento según la invención para cálculos EC.
El producto de programa informático según la invención presenta instrucciones de programa para implementar el procedimiento según la invención. Un producto de programa informático de este tipo puede ser, por ejemplo, una memoria de semiconductor o un disquete o un CD-ROM. En particular un producto de programa informático de este tipo puede estar previsto para su uso en la fabricación o inicialización de tarjetas con chip.
En configuraciones preferidas el producto de programa informático y/o el soporte de datos portátil está perfeccionado con características que corresponden a las características descritas anteriormente y/o mencionadas en las reivindicaciones de procedimiento dependientes.
Características, ventajas y objetivos adicionales de la invención se deducen de la siguiente descripción más exacta de un ejemplo de realización y de varias alternativas de realización. Se remite a los dibujos esquemáticos, en los que:
la figura 1 muestra un diagrama de bloques con unidades funcionales de un soporte de datos portátil según un ejemplo de realización de la invención, y
la figura 2 muestra un diagrama de flujo de un procedimiento según un ejemplo de realización de la invención en el soporte de datos representado en la figura 1.
El soporte 10 de datos mostrado en la figura 1 presenta un microcontrolador 12. De manera en sí conocida en el microcontrolador 12 en un único chip de semiconductor está integrado un núcleo 14 de procesador, un coprocesador 16, una memoria 18 y una conexión 20 de interfaz, que están conectados entre sí a través de un bus 22. Mientras que el núcleo 14 de procesador está diseñado para la realización de programa general, el coprocesador 16 sirve especialmente para la realización de cálculos de números enteros con valores binarios largos. La memoria 18 está dividida en campos de memoria configurados con diferentes tecnologías, por ejemplo, ROM, EEPROM y RAM. La memoria 18 contiene entre otras cosas instrucciones de programa, que implementan el procedimiento descrito a continuación.
El microcontrolador 12 se conoce como tal; en algunas configuraciones por ejemplo puede utilizarse el microcontrolador conocido bajo la marca Infineon SLE66CX322P, que presenta un coprocesador 16 denominado Advanced Crypto Engine (ACE, motor de criptografía avanzada).
La figura 2 ilustra el procedimiento del presente ejemplo de realización. Partiendo de un valor de entrada u y un módulo v el procedimiento determina el inverso modular x de u con respecto al módulo v con - v < x < v. El valor de entrada u y/o el módulo v pueden tener, por ejemplo, una longitud de bits de 160 bits ó 192 bits o 256 bits. Tales longitudes de bits son habituales para los procedimientos EC utilizados actualmente, por ejemplo el procedimiento de firma ECDSA.
El procedimiento según la figura 2 comienza en la etapa 30 porque a partir del valor de entrada u y el módulo v se generan un primer valor ampliado U o un segundo valor ampliado V. Los valores ampliados U y V se obtienen a partir de los valores u y v mediante la multiplicación por un factor de ampliación f, que es más de dos veces el módulo v. Además en el cálculo del primer valor ampliado U se introduce una pequeña perturbación, en el presente ejemplo de realización, una perturbación aditiva con el valor de perturbación 1.
En general, mediante la etapa 30 se desplaza información que corresponde al valor de entrada u y el módulo v, en ubicaciones de bit de valores más altos de los valores ampliados U y V. Las ubicaciones de bit de valores más bajos del segundo valor ampliado V quedan libres en una magnitud mayor que la longitud de bits del módulo v, mientras que la ubicación de bit del valor más bajo del primer valor ampliado U se ocupa con el valor de perturbación 1. Las ubicaciones de bit de valor más bajo de ambos valores ampliados U y V sirven en última instancia para el cálculo del inverso modular. Mediante el tamaño mínimo indicado anteriormente del factor de ampliación f se garantiza que en los valores ampliados U y V aquellas secciones de bits en las que se encuentra la información de los valores u y v, y aquellas secciones de bits, que se utilizan para el cálculo del inverso y en las que inicialmente se encuentra la perturbación, estén distanciadas de manera suficiente.
En la etapa 32 se realiza un bucle de programa con las etapas 34 de procesamiento, hasta que el segundo valor ampliado V es al menos igual de grande que f + v. Las etapas 34 de procesamiento corresponden exactamente al procedimiento euclídeo no ampliado, sustituyéndose en cada pasada de bucle el segundo valor ampliado V por U mod V y el primer valor ampliado U por V. Sin embargo, la condición de realización V � f + v del bucle de programa se diferencia de la del procedimiento euclídeo en la medida en que en el presente caso el bucle se finaliza antes que en el procedimiento euclídeo.
Tras la finalización del bucle de programa se comprueba en la etapa 36, si el primer valor ampliado V es mayor que f
-
v. En este caso, en la etapa 38 se emite la diferencia V - f como resultado, concretamente como inverso modular de u con respecto al módulo v. En caso contrario el valor de entrada u no era coprimo con el módulo v, es decir, no podía invertirse. Entonces, en la etapa 40 se emite un mensaje de error.
Resumiendo el procedimiento recién descrito y mostrado en la figura 2 para la inversión modular mediante el uso del coprocesador 16 puede definirse en pseudocódigo de la siguiente manera:
Entradas: números enteros u � 0 y v > 1 así como un factor de ampliación aleatorio f con f > 2v
Salidas: inverso modular x = u-1 (mod v) con -v < x < v, o error, cuando u y v no son coprimos
Procedimiento:
SEA U:= f u + 1; V = f v (1)
SIEMPRE QUE V � f + v REALIZAR (2)
SEA T := V; V := UmodV; U := T (3)
SI V > f-v (4)
ENTONCES EMITIR EL RESULTADO V-f (5)
SI NO, EMITIR MENSAJE DE ERROR (6)
La línea (1) del pseudocódigo anterior corresponde a la etapa 30 en la figura 2. Las líneas (2) y (3) definen el bucle según la etapa 32; a este respecto en la línea (3) se introduce una variable auxiliar T, para implementar la asignación según las etapas 34 de procesamiento. Las líneas (4) a (6) corresponden a la diferenciación de casos de la etapa 36.
A continuación se designan los valores de las variables de programa U y V antes del inicio del bucle con U0 y V0 o tras la pasada de bucle de orden (i+1) con Ui+1 y Vi+1. Se aplican por tanto las siguientes designaciones:
U0=fu+1 y V0=fv Como ya se ha mencionado, la serie de Ui y Vi corresponde exactamente a la serie de los resultados intermedios que se obtienen cuando se aplica el procedimiento euclídeo no ampliado a los valores f u + 1y f v. El número de pasadas de bucle, es decir, el número de las reducciones modulares necesarias, en el procedimiento descrito en este caso y en el procedimiento euclídeo aplicado a los valores u y v es aproximadamente igual.
Para explicar el funcionamiento del procedimiento de manera intuitiva, en primer lugar se remite al procedimiento euclídeo ampliado, que con respecto al valor de entrada u y el módulo v además del divisor común más grande gcd(u, v) también determina los coeficientes A, ! de una combinación lineal con Au -!v = gcd(u, v) y IAI < v. Cuando se aplica este procedimiento euclídeo ampliado a U’ = f u y V = f v en lugar de u y v, se obtienen exactamente los mismos resultados intermedios en las reducciones modulares y finalmente una combinación lineal AU’ -!V = gcd(U’, V) = f · gcd(u, v) con los mismos valores de A y ! que anteriormente.
Ahora se supone el procedimiento euclídeo no ampliado con el valor de entrada U = U’ + 1 con la perturbación y el módulo V. Si se considera que mediante la perturbación reducida cambian los resultados intermedios de las reducciones modulares sólo en un factor multiplicativo f, en el procedimiento euclídeo no ampliado tras una fase de iteración i aparece el resto Vi = AU -!V = f · gcd(u, v) + A. Como gcd(u, v) = 1, entonces puede determinarse el inverso modular A de manera sencilla a partir de este resto, que aproximadamente presenta la misma magnitud que
f.
Si bien la suposición recién realizada no es válida en general por completo, sin embargo, sí en una medida suficiente. De manera formal la exactitud del procedimientos se obtiene del hecho de que para gcd(u, v) = 1 existe un i, para el que se aplica que Vi-1> 2f -v y f + v > Vi > f - v y (Vi - f)·u = 1 (mod v). Si por el contrario gcd(u, v) f 1, entonces se aplica que para cada Vi o bien Vi > 2f -v o bien Vi : v.
El factor de ampliación f puede seleccionarse en principio de manera aleatoria, siempre que sólo presente la magnitud mínima f > 2v mencionada anteriormente. En algunas configuraciones el factor de ampliación f puede ser una segunda potencia, de modo que pueda implementarse la multiplicación de los valores u y v por el factor de ampliación f mediante una sencilla operación de desplazamiento. Sin embargo, en el ejemplo de realización descrito en el presente documento el factor de ampliación f se determina como f = 3 · 2k para un número entero k con 2k > v. Entonces se aplican las inecuaciones 2 f -v >2k+2 > f+ v y f - v > 2k+1. Por tanto es suficiente en las etapas 32 y 36, comprobar la longitud de bits de V. Mediante esta medida se reduce el esfuerzo de acondicionamiento en el coprocesador 16.
La reducción modular U mod V realizada como parte de las etapas 34 de procesamiento puede implementarse mediante cualquier procedimiento en sí conocido. En el ejemplo de realización descrito en el presente documento se realiza una división de números enteros, cuyo resto representa el resultado deseado. Como procedimiento de división se utiliza un procedimiento de resta y suma binario sencillo tal como se indica por ejemplo como el algoritmo D en las páginas 272 - 275 del libro ya citado de D. E. Knuth. Este procedimiento es adecuado en particular cuando el coprocesador 16 puede realizar rápidamente sumas, restas y operaciones de desplazamiento en números enteros largos.
En una alternativa de realización puede modificarse el procedimiento descrito hasta ahora porque se utiliza la configuración propuesta por Lehmer del procedimiento euclídeo. Esta configuración, que es especialmente adecuada para números grandes, se indica como algoritmo L en las páginas 346 -348 del libro ya citado de D. E. Knuth. En este caso se obtienen los mismos cocientes que en el procedimiento euclídeo “clásico”, descrito anteriormente, de modo que en general no cambia el flujo de cálculo.
En una implementación a modo de ejemplo se utilizó como coprocesador 16 el Advanced Crypto Engine (ACE) del microcontrolador Infineon-SLE66CX322P. Este coprocesador 16 realiza las operaciones básicas habituales, por ejemplo la suma, resta y desplazamiento por bits, siempre con el ancho de registro completo de 560 ó 1120 bits. La implementación está prevista para procedimientos EC, en los que casi no se producen cálculos con longitudes de bits de más de 512 bits. Aun cuando el procedimiento descrito en el presente documento lleva aproximadamente a una duplicación de las longitudes de bits de los valores que van a procesarse, esto prácticamente no tiene importancia debido al ancho de registro aún mayor del coprocesador 16.
El procedimiento descrito en el presente documento requiere aproximadamente el mismo número de operaciones que un procedimiento euclídeo no ampliado. De este modo se evita el esfuerzo adicional requerido por lo demás para al realización de un procedimiento euclídeo ampliado. El ahorro real depende de la configuración exacta del coprocesador 16 y del ahorro en el control del coprocesador 16 (“instrucciones de pegado” (glue instructions) necesarias). En la implementación mencionada a modo de ejemplo en el presente documento se obtienen las siguientes duraciones de ejecución:
160 bits 192 bits 256 bits 320 bits
4,80 ms 5,73 ms 7,46 ms 9,16 ms
Procedimiento del presente ejemplo de realización
2,09 ms 2,43 ms 3,16 ms 4,45 ms
De este modo, en general mediante el procedimiento descrito en el presente documento la velocidad de la inversión modular con longitudes de bits típicas para los procedimientos EC pudo más que duplicarse.
Se entiende que los detalles de la descripción anterior sólo son ejemplos de posibles configuraciones de la presente invención tal como se define mediante las reivindicaciones adjuntas. Son posibles y evidentes para el experto modificaciones adicionales, en particular en cuanto al cálculo de los valores ampliados, las etapas de procesamiento realizadas y la condición de realización.

Claims (7)

  1. REIVINDICACIONES
    1. Procedimiento para el uso de un coprocesador (16) para la determinación del inverso modular x de un valor de entrada u con respecto a un módulo v, en el que:
    -
    a partir del valor de entrada u se determina un primer valor ampliado U con una longitud de bits aumentada con respecto al valor de entrada u, de tal manera que en una sección de bits del primer valor ampliado U se encuentra la información del valor de entrada u, en el que la determinación del primer valor ampliado U comprende la multiplicación del valor de entrada u por un factor de ampliación f y en el que f > 2v,
    -
    a partir del módulo v se determina un segundo valor ampliado V con una longitud de bits aumentada con respecto al módulo v, de tal manera que en una sección de bits del segundo valor ampliado V se encuentra la información del módulo v, en el que la determinación del segundo valor ampliado V comprende la multiplicación del módulo v por el factor de ampliación f,
    -
    el coprocesador (16) está previsto para cálculos de números enteros con al menos la longitud de bits aumentada,
    -
    al menos uno de los valores ampliados U, V contiene una perturbación en una posición de bit, que está distanciada de aquellas posiciones de bit, en las que se encuentra la información del valor de entrada u o del módulo v,
    -
    partiendo de los dos valores ampliados U y V mediante el uso del coprocesador (16) se realizan etapas (34) de procesamiento de un procedimiento euclídeo, siempre que se cumpla una condición de realización predeterminada, y
    -
    el inverso modular x se determina en función del resultado de las etapas (34) de procesamiento realizadas.
  2. 2.
    Procedimiento según la reivindicación 1, caracterizado porque el factor de ampliación f es una segunda potencia, de modo que en los valores ampliados U, V la información del valor de entrada u y del módulo v se ha desplazado a posiciones de bit más elevadas.
  3. 3.
    Procedimiento según la reivindicación 1 ó 2, caracterizado porque las etapas (34) de procesamiento contienen una reducción modular realizada mediante el uso del coprocesador (16).
  4. 4.
    Procedimiento según una de las reivindicaciones 1 a 3, caracterizado porque las etapas (34) de procesamiento, partiendo de los dos valores ampliados U y V, corresponden a una serie de asignaciones (U, V) := (V, U mod V).
  5. 5.
    Procedimiento según una de las reivindicaciones 1 a 4, caracterizado porque el procedimiento está previsto para una aplicación criptográfica en un soporte (10) de datos portátil, en particular para un procedimiento EC.
  6. 6.
    Producto de programa informático, que presenta instrucciones de programa, para hacer que un microcontrolador
    (12) realice un procedimiento con las características de una de las reivindicaciones 1 a 5.
  7. 7. Soporte (10) de datos portátil, en particular una tarjeta con chip o módulo de chip, que está configurado para la realización de un procedimiento con las características de una de las reivindicaciones 1 a 5.
ES06013333T 2005-06-29 2006-06-28 Uso de un coprocesador para inversión modular Active ES2404410T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102005030286 2005-06-29
DE200510030286 DE102005030286A1 (de) 2005-06-29 2005-06-29 Verwendung eines Koprozessors zur modularen Inversion

Publications (1)

Publication Number Publication Date
ES2404410T3 true ES2404410T3 (es) 2013-05-27

Family

ID=37496866

Family Applications (1)

Application Number Title Priority Date Filing Date
ES06013333T Active ES2404410T3 (es) 2005-06-29 2006-06-28 Uso de un coprocesador para inversión modular

Country Status (3)

Country Link
EP (1) EP1746495B1 (es)
DE (1) DE102005030286A1 (es)
ES (1) ES2404410T3 (es)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8290151B2 (en) 2007-10-12 2012-10-16 Infineon Technologies Ag Device and method for determining an inverse of a value related to a modulus
CN105988772B (zh) * 2015-03-04 2019-04-26 上海复旦微电子集团股份有限公司 模逆运算器
CN105988771B (zh) * 2015-03-04 2019-10-22 上海复旦微电子集团股份有限公司 模逆运算器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3615622B2 (ja) * 1996-06-28 2005-02-02 株式会社ルネサステクノロジ マイクロコンピュータ
DE10222212A1 (de) * 2002-05-16 2003-12-04 Giesecke & Devrient Gmbh Ausspähungsgeschützte modulare Inversion

Also Published As

Publication number Publication date
EP1746495A1 (de) 2007-01-24
DE102005030286A1 (de) 2007-01-04
EP1746495B1 (de) 2013-02-27

Similar Documents

Publication Publication Date Title
Fong et al. Field inversion and point halving revisited
US6714648B2 (en) IC card equipped with elliptic curve encryption processing facility
Barrett Implementing the Rivest Shamir and Adleman public key encryption algorithm on a standard digital signal processor
CN110351087B (zh) 流水线型的蒙哥马利模乘运算方法
US20210243006A1 (en) Integrated circuit for modular multiplication of two integers for a cryptographic method, and method for the cryptographic processing of data based on modular multiplication
US7603558B2 (en) Montgomery transform device, arithmetic device, IC card, encryption device, decryption device and program
ES2404410T3 (es) Uso de un coprocesador para inversión modular
CN114527956B (zh) 抗spa攻击的sm2算法中非定点标量乘法的计算方法
Savaş et al. Montgomery inversion
ES2299857T3 (es) Transicion entre representaciones enmascaradas de un valor durante calculos criptograficos.
US8023645B2 (en) Circuit arrangement for and method of performing an inversion operation in a cryptographic calculation
US11502836B2 (en) Method for performing cryptographic operations on data in a processing device, corresponding processing device and computer program product
EP2369568B1 (en) Scalar multiplier and scalar multiplication program
WO2009101147A1 (en) An apparatus and a method for calculating a multiple of a point on an elliptic curve
US7574469B2 (en) Method for generating the multiplicative inverse in a finite field GF(p)
US10133554B2 (en) Non-modular multiplier, method for non-modular multiplication and computational device
ES2377715T3 (es) Cálculo del inverso modular de un valor
Han et al. Fast algorithms for elliptic curve cryptosystems over binary finite field
Chevallier-Mames et al. Faster double-size modular multiplication from Euclidean multipliers
JP2004125891A (ja) べき乗剰余演算器
Bos et al. Efficient modular multiplication
KR100297110B1 (ko) 모듈러곱셈기
Lim et al. Elliptic curve digital signature algorithm over GF (p) on a residue number system enabled microprocessor
JP3779479B2 (ja) Icカード
US20120237025A1 (en) Device and method for determining an inverse of a value related to a modulus