ES2293677T3 - Aparato y metodo mejorados para la multiplicacion y exponenciacion modulares basadas en la multiplicacion de montgomery. - Google Patents

Aparato y metodo mejorados para la multiplicacion y exponenciacion modulares basadas en la multiplicacion de montgomery. Download PDF

Info

Publication number
ES2293677T3
ES2293677T3 ES98910967T ES98910967T ES2293677T3 ES 2293677 T3 ES2293677 T3 ES 2293677T3 ES 98910967 T ES98910967 T ES 98910967T ES 98910967 T ES98910967 T ES 98910967T ES 2293677 T3 ES2293677 T3 ES 2293677T3
Authority
ES
Spain
Prior art keywords
bit
bits
adder
multiplication
multiplier
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
ES98910967T
Other languages
English (en)
Inventor
Isaac Hadad
Benjamin Arazi
Carmi David Gressel
Itai Dror
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.)
Western Digital Israel Ltd
Original Assignee
SanDisk IL Ltd
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
Priority claimed from IL12077697A external-priority patent/IL120776A0/xx
Priority claimed from IL12131197A external-priority patent/IL121311A/xx
Application filed by SanDisk IL Ltd filed Critical SanDisk IL Ltd
Application granted granted Critical
Publication of ES2293677T3 publication Critical patent/ES2293677T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/728Methods 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 using Montgomery reduction

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)
  • Error Detection And Correction (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

Unidad aritmético lógica (ALU) microelectrónica para realizar una multiplicación modular de tipo Montgomery de P(AuB)N, donde P(PuB)N es modularmente congruente con AuBuI mod N, donde I es un 2-n mod N, A, B y N son operandos de n bits de longitud, siendo N impar, comprendiendo el aparato: registros de memoria principales primeros (70, 80; 1000) y segundos (200, 210; 1005), cada registro para mantener un operando de n bits de longitud, estando adaptados respectivamente dichos registros para almacenar el multiplicador, B, y el módulo N; un dispositivo (390, ...) para multiplicar de forma simultánea una primera cadena (A i) de k bits por un primer bit (B d) entrante y una segunda cadena (N 0, Y 0) de k bits por un segundo bit (Y 0, N d) entrante y acumular el resultado, teniendo el dispositivo sólo un sumador (410) con acarreo acumulado, teniendo al menos k+1 bits de longitud, estando adaptado el dispositivo para seleccionar como un valor de entrada al sumador con acarreo acumulado un valor de cadena de todo ceros, la primera cadena de k bits, la segunda cadena de k bits o la suma precalculada de la primera y segunda cadenas de k bits, estando adaptado el aparato para introducir en una primera fase: los bits menos significativos de B como primeros bits entrantes; los bits consecutivos de un valor previsto generado "sobre la marcha", Y 0, como segundos bits entrantes en el dispositivo; los k bits consecutivos del multiplicando (A) como la primera cadena de k bits; y los k bits menos significativos consecutivos de N como segunda cadena de k bits, estando adaptado el aparato para introducir en una segunda fase: los bits menos significativos consecutivos de B como primeros bits entrantes; los bits consecutivos de N, como segundos bits entrantes en el dispositivo; los k bits consecutivos del multiplicando (A) como la primera cadena de k bits; y los k bits menos significativos consecutivos de Y0, generados en la primera fase, como la segunda cadena de k bits; un dispositivo (430) lógico para determinar Y0, de manera que los k bits menos significativos enviados desde el sumador (410) con acarreo acumulado en la primera fase son ceros, recibiendo el dispositivo lógico como entradas: el bit menos significativo de la primera cadena (Ai) de k bits; el primer bit (Bd) entrante; un bit de salida de acarreo menos significativo desde el sumador (410) con acarreo acumulado; el siguiente al bit menos significativo desde el sumador (410) con acarreo acumulado; el siguiente bit desde un registro (S) de almacenamiento temporal; y un bit de salida de acarreo desde un sumador (460), estando adaptado el sumador (410) con acarreo acumulado para enviar valores de forma simultánea mientras que se suman multiplicandos en el sumador (410) con acarreo acumulado; y un mecanismo de transferencia de salida, adaptado en una segunda fase para enviar un resultado P(A-B)N final desde el sumador (410) con acarreo acumulado.

Description

Aparato y método mejorados para la multiplicación y exponenciación modulares basadas en la multiplicación de Montgomery.
Campo de la invención
La presente invención se refiere a aparatos y métodos para la multiplicación y exponenciación modulares y para división entera serie.
Antecedentes de la invención
Un dispositivo microelectrónico compacto para realizar multiplicación y exponenciación modulares sobre números grandes se describe en la solicitud de patente estadounidense 5.513.133.
El documento EP-A-0566498 describe un dispositivo de firma digital y un proceso que está destinado para realizar operaciones aritméticas modulares empleadas en criptografía módem. El dispositivo comprende medios para llevar a cabo exponenciación modular y/o multiplicaciones modulares.
Sumario de la invención
La presente invención busca proporcionar aparatos y métodos mejorados para la multiplicación y exponenciación modulares y para la división entera serie.
Por tanto se proporciona, según una realización preferida de la presente invención, una unidad aritmético lógica (ALU, Arithmetic Logic Unit) microelectrónica según se define en la reivindicación 1.
Además, según una realización preferida de la presente invención, el sistema está operativo para multiplicar al menos un par de entradas enteras de cualquier longitud de bits.
Aún además según una realización preferida de la presente invención, el al menos un par de entradas enteras incluye dos pares de entradas enteras.
Adicionalmente según una realización preferida de la presente invención, la ALU está operativa para generar un producto de entradas enteras y para reducir el tamaño del producto sin calcular previamente una constante J_{0} de Montgomery forzada a cero.
También se proporciona, según otra realización preferida de la presente invención, un aparato de división entera serie que incluye un dispositivo de división serie operativo para recibir un dividendo de cualquier longitud de bits y un divisor de cualquier longitud de bits y para calcular un cociente y un resto.
El aparato incluye un par de registros para almacenar un par de entradas enteras y está operativo para multiplicar un par de entradas enteras, al menos una de las cuales supera la longitud de bits de su registro respectivo, sin intercalación.
También se proporciona, según todavía otra realización preferida de la presente invención, un sistema de multiplicación y exponenciación modulares que incluye un dispositivo de multiplicación serie- paralelo que presenta sólo un acumulador con acarreo acumulado y que está operativo para realizar un par de multiplicaciones y para sumar los resultados de las mismas.
Adicionalmente se proporciona, según aún otra realización preferida de la presente invención, un método de multiplicación y exponenciación modulares que incluye proporcionar una unidad aritmético lógica (ALU) serie-paralelo que incluye un único dispositivo de multiplicación modular que presenta un único sumador con acarreo acumulado, y que emplea la ALU serie- paralelo para realizar multiplicación y exponenciación modulares.
Además se proporciona, según todavía otra realización preferida de la presente invención, un método para multiplicación natural (no modular) de enteros grandes, incluyendo el método proporcionar una unidad aritmético lógica (ALU) serie-paralelo que incluye un único dispositivo de multiplicación modular que presenta un único sumador con acarreo acumulado, y que emplea la ALU serie-paralelo para realizar multiplicación natural (no modular) de números grandes.
El aparato puede adaptarse para multiplicar un primer entero de cualquier longitud de bits por un segundo entero de cualquier longitud de bits para obtener un primer producto, multiplicar un tercer entero de cualquier longitud de bits por un cuarto entero de cualquier longitud de bits para obtener un segundo producto, y sumar el primer y segundo producto con un quinto entero de cualquier longitud de bits para obtener una suma.
El aparato puede adaptarse para realizar multiplicación y exponenciación modulares con un multiplicando, un multiplicador y un módulo de cualquier longitud de bits.
El sistema también puede incluir un sistema de precálculo de doble multiplicando para ejecutar la multiplicación modular de Montgomery con sólo una constante precalculada.
El aparato puede adaptarse para realizar la multiplicación de Montgomery que incluye generar un producto de entradas enteras que incluyen un multiplicador y un multiplicando, y ejecutar reducción modular sin calcular previamente una constante J_{0} de Montgomery.
La constante J_{0} de Montgomery puede incluir una función de N mod 2^{k}, donde N es un módulo de la reducción modular y k es la longitud de bits del multiplicando.
Puede realizarse una secuencia de operaciones de multiplicación de Montgomery intercaladas.
Cada una de las operaciones de multiplicación de Montgomery intercaladas puede realizarse sin calcular previamente el número de veces que el módulo debe sumarse en una congruencia de la operación de multiplicación con el fin de forzar un resultado con al menos k ceros significativos.
El sistema también puede incluir un preprocesador de datos operativo para recoger y sumar en serie los multiplicandos generados en una i-ésima operación de multiplicación de Montgomery intercalada para generar así una suma y para introducir la suma en una (i+1)-ésima operación de multiplicación de Montgomery.
La función puede incluir un inverso aditivo o un inverso multiplicativo de N mod 2^{k}.
J_{0} puede calcularse reajustando A_{i} y B a cero y ajustando S_{0}=1.
La presente invención también se refiere a una unidad aritmético lógica, ALU, microelectrónica compacta para realizar multiplicación, división, suma, resta y exponenciación modulares y normales (naturales, en el campo de enteros no negativo) sobre enteros muy grandes. Cuando se hace referencia a multiplicación y elevación al cuadrado modulares utilizando métodos de Montgomery, se hace referencia a las partes específicas del dispositivo como un coprocesador aritmético modular, y se utiliza el acrónimo MAP.
La presente invención también se refiere al procesamiento aritmético de enteros grandes. Estos números grandes pueden estar en el campo natural de enteros (no negativos) o en el campo de Galois de números primos, GF(p), y también del módulo primo compuesto. Más específicamente, la invención se refiere a un dispositivo que puede implementar multiplicaciones/exponenciaciones modulares de números grandes, que es adecuado para realizar las operaciones esenciales para protocolos de encriptación y autenticación criptográfica de clave pública, que trabajan sobre operandos cada vez mayores y que no pueden ejecutarse de manera eficaz con los coprocesadores aritméticos modulares de la generación actual, y que no pueden ejecutarse de manera segura mediante implementaciones de software. La invención puede realizarse mediante cualquier procesador de 4 bits o superior, que consigue velocidades que pueden sobrepasar a los procesadores de señales digitales actuales.
La presente invención también se refiere a la implementación hardware de aritmética de enteros de grandes operandos, especialmente en lo que se refiere a manipulaciones numéricas en un derivado de un procedimiento conocido como el método intercalado de multiplicación modular de multiprecisión de Montgomery utilizado en sistemas orientados a software de encriptación, pero también de valor intrínseco en operaciones aritméticas básicas sobre enteros de grandes operandos; en particular, A\cdotB+C\cdotD+S, en la que no hay límite teórico sobre los tamaños de A, B, C, D, o S. Además, el dispositivo se adapta especialmente bien para realizar multiplicación y exponenciación modulares. El dispositivo básico es particularmente adecuado para ser un coprocesador aritmético modular (MAP), incluyendo también un dispositivo para realizar división de enteros muy grandes, en la que el divisor puede presentar una longitud de bits tan larga como el registro de módulo N y la longitud de bits del dividendo puede ser tan grande como la longitud de bits de dos registros concatenados.
El dispositivo realiza preferiblemente todas las funciones de la patente estadounidense 5.513.133, con el mismo orden de puertas lógicas, en menos de la mitad del número de ciclos de reloj de la máquina. Esto es principalmente parte porque sólo hay un multiplicador serie/paralelo de doble acción en lugar de dos multiplicadores de mitad de tamaño utilizando el mismo mecanismo acumulador con acarreo acumulado, el componente principal de un multiplicador serie paralelo convencional. La nueva unidad aritmético lógica, ALU, o específicamente el coprocesador aritmético lógico, MAP, obvia preferible de manera intrínseca un proceso de multiplicación separado que habría precedido al nuevo proceso. Este proceso también habría requerido una segunda constante J_{0} de Montgomery, que también se obvia ahora preferiblemente. Expresado de manera diferente, en lugar de las dos constantes de los procedimientos de Montgomery previos y los retardos encontrados, ahora sólo se calcula una constante, y se elimina preferiblemente el retardo provocado por las multiplicaciones de tipo J (explicadas posteriormente) ahora superfluas.
Además, mediante un control mejora de las manipulaciones de datos, entre la CPU y su dispositivo periférico, los operandos que se realizan sobre operandos más grandes que el tamaño del registro natural del dispositivo pueden realizarse en tiempos de procesamiento reducidos utilizando menos memoria de almacenamiento temporal.
Se conocen tres métodos relacionados para realizar multiplicación modular con metodología de Montgomery.[P.L. Montgomery, "Modular multiplication without trial division", Mathematics of Computation, vol. 44, páginas 519 a 521, 1985], denominado en lo sucesivo como "Montgomery", [S.R Dussé and B.S. Kaliski Jr., "A cryptographic library for the Motorola DSP 56000", Proc Eurocrypt '90, Springer-Verlag, Berlín, 1990] denominado en lo sucesivo como "Dussé", y el método de la patente estadounidense 4.514.592 a nombre de Miyaguchi, y el método de la patente estadounidense 5.101.431, a nombre de Even, y el método de la patente estadounidense 5.321.752 a nombre de Iwamura, y el método de la patente estadounidense 5.448.639, a nombre de Arazi, y el método de la patente estadounidense 5.513.133 a nombre de Gressel.
La arquitectura preferida es la de una máquina que puede integrarse a cualquier diseño de microcontrolador, mapeada en la memoria del controlador central mientras trabaja en paralelo con el controlador, que para comandos muy largos intercambia constantemente o alimenta operandos a y desde el mecanismo de alimentación de datos, permitiendo cálculos aritméticos modulares de cualquier longitud común donde el tamaño de la memoria volátil del coprocesador necesaria para las manipulaciones debería ser pocas veces de más de tres veces la longitud del operando más grande.
Esta solución utiliza sólo un dispositivo de multiplicación que sirve de manera inherente para la función de dos dispositivos de multiplicación, en implementaciones previas. Utilizando tecnologías comunes actuales, permite la integración de la solución completa incluyendo un microcontrolador con memorias en un circuito microelectrónico de 4 por 4,5 por 0,2 mm.
La invención también se dirige a la arquitectura de un dispositivo digital que está previsto para ser un periférico para un procesador digital convencional, con características de cálculo, lógicas y de arquitectura novedosas con respecto a los procesos publicados por Montgomery y Dussé, tal como se describe en detalle posteriormente.
Se proporcionan un proceso concurrente y una única arquitectura de hardware, para realizar exponenciación modular sin división preferiblemente con el mismo número de operaciones tal como se realizaría con un dispositivo de multiplicación/división clásico, donde un dispositivo clásico realizaría tanto una multiplicación como una división en cada operación. Una característica adicional de una realización preferida de la presente invención es la concurrencia de operaciones realizadas por el dispositivo para permitir longitudes de operandos ilimitadas, con una utilización eficaz e ininterrumpida de recursos, permitiendo las funciones aritméticas básicas de enteros de grandes operandos.
Las ventajas realizadas por una realización preferida de esta invención resultan de una secuencia sincronizada de procesos en serie, que se fusionan para conseguir simultáneamente (en paralelo) tres operaciones de multiplicación sobre operandos de n bits, utilizando un multiplicador serie/paralelo de k bits multiplexado en (n+k) ciclos de reloj eficaces, logrando el equivalente a tres cálculos de multiplicación, tal como prescribe Montgomery.
Mediante sincronización y detección sobre la marcha y precarga sobre la marcha y adición simultánea de los operandos que van a utilizarse a continuación, la máquina opera de una manera determinística, en la que todas las multiplicaciones y exponenciaciones se ejecutan en un número predeterminado de ciclos de reloj. Las bifurcaciones condicionales se sustituyen por dispositivos de compensación y de detección local, proporcionando así una base para el mecanismo de control de tipo sencillo que, cuando se redefine, incluye normalmente una serie de contadores en cascada autoexcitantes. Las operaciones básicas descritas en el presente documento pueden ejecutarse en tiempo determinístico utilizando el dispositivo descrito en la patente estadounidense 5.513.133 que se fabrica tanto por Motorola en East Kilbride, Escocia bajo el nombre comercial SC-49, como por SGS-Thomson in Rousset, Francia, bajo el nombre comercial ST16-CF51.
La máquina presenta demandas particularmente pobres sobre la memoria no volátil para la mayoría de las operaciones, puesto que los operandos se cargan dentro y almacenan en el dispositivo durante la duración total de la operación; sin embargo, la máquina explota preferiblemente la CPU sobre la cual está agregada, para ejecutar cargas y descargas sencillas y el secuenciamiento de comandos a la máquina, mientras que la máquina realiza sus cálculos de grandes números. El tiempo de procesamiento de exponenciación es casi independiente de la CPU que lo controla. En la práctica, no son necesarios cambios de arquitectura cuando la máquina se agrega a cualquier CPU. El dispositivo de hardware es autónomo y puede agregarse a cualquier bus de CPU.
Se proporciona preferiblemente un aparato para acelerar el proceso de multiplicación y exponenciación modulares, incluyendo medios para precalcular las constantes necesarias.
Las realizaciones preferidas de la invención descritas en el presente documento proporcionan un operador matemático modular para aplicaciones criptográficas de clave pública en tarjetas inteligentes portátiles, normalmente idénticas en forma y tamaño a las tarjetas de banco y de crédito de banda magnética comunes. En la nueva generación de dispositivos criptográficos de clave pública se están utilizando tarjetas inteligentes similares (como la de la patente estadounidense 5.513.133) para controlar el acceso a ordenadores, bases de datos, e instalaciones críticas; para regular y hacer seguro el flujo de datos en transacciones comerciales, militares y domésticas; para desencriptar programas codificados de televisión de pago, etc. Debería apreciarse que estos dispositivos también se incorporan en terminales de fax y ordenadores, bloqueos de puertas, máquinas expendedoras, etc.
El hardware descrito lleva a cabo la multiplicación y exponenciación modular aplicando el operador 800 de una manera novedosa. Además, la elevación al cuadrado puede llevarse a cabo con el mismo método, aplicándolo a un multiplicando y un multiplicador que sean iguales. La exponenciación modular implica una sucesión de multiplicaciones y elevaciones al cuadrado modulares, y por lo tanto se lleva a cabo mediante un método que comprende la aplicación repetida, combinada y orientada de manera adecuada de los métodos de multiplicación, elevación al cuadrado y exponenciación comentados anteriormente.
Cuando se describe el funcionamiento de una realización preferida de la ALU se describe la sincronización en ciclos de reloj eficaces, que hacen referencia a aquellos ciclos en los que la unidad está realizando una operación aritmética, en contraposición con los ciclos de reloj reales, que incluirían ciclos inactivos en donde la ALU puede permanecer, y pueden modificarse ajustes de multiplexadores, biestables y otros dispositivos, en preparación para una nueva fase de operaciones.
En una realización preferida, un método para ejecutar una multiplicación modular de Montgomery, (con referencia a la elevación al cuadrado y a la multiplicación normal) en la que el multiplicando A (que puede almacenarse o bien en la RAM volátil de la CPU o bien en el registro 130 S_{A}), el multiplicador B en el registro 1000 B, que es una concatenación de 70 y 80, y el módulo N en el registro 1005 N, que es una concatenación de 200 y 210, comprenden m caracteres de k bits cada uno, no siendo generalmente el multiplicando y el multiplicador mayor que el módulo, comprende las etapas de:
1) cargar el multiplicador B y el módulo, N, en los respectivos registros de longitud de n bits, donde n=m \cdot k;
{al multiplicar en el campo normal de los enteros positivos naturales, N es un segundo multiplicador}
{si n es mayor que los registros B, N y S, los valores se cargan y descargan normalmente dentro y fuera de estos registros durante el transcurso de una iteración, permitiendo a la máquina poder manipular virtualmente cualquier longitud de módulo}
2) ajustar la salida del registro S_{B} a cero, S*d Vaciar(250)=1 para la primera iteración;
3) reajustar indicadores de acarreo y acarreo negativo (controles, no especificados en la patente);
4) ejecutar m iteraciones, comprendiendo cada iteración las siguientes operaciones:
a)
transferir el siguiente carácter A_{i-1} del multiplicando A desde el almacenamiento volátil hasta la memoria 290 intermedia de carga Ai.
b)
cargar en serie simultáneamente la memoria 320 intermedia de carga Ci, con N_{0} (los k bits LS de N), mientras se rota los contenidos de la memoria intermedia de carga Ai, sumando así en serie los contenidos de la memoria intermedia de carga Ai con N_{0} mediante el sumador 330 FA1 serie, cargando así en serie la memoria intermedia de carga Ai + Ci con la suma N_{0} + A_{i-1}.
La fase de precarga termina aquí. Esta fase se ejecuta normalmente mientras que el MAP estaba realizando una iteración de multiplicación previa. Los procesos a) y b) pueden ejecutarse simultáneamente, en los que el carácter A_{i-1} se carga dentro de su registro respectivo, mientras que el flujo Ai se sincroniza con la rotación del registro 320 N_{0} cargando R2. De manera simultánea, el flujo Ai y el flujo N_{0} se suman y se cargan dentro del registro 340 R3.
Al elevar al cuadrado una cantidad del registro B, pueden ejecutarse en el mismo en la inicialización, las etapas a) y b) los primeros k bits de Bd se insertan en R1, cuando se rota el registro B_{0}, simultáneamente con el registro N_{0}. Las siguientes cadenas B_{i} de k bits se precargan en el registro R1, según se alimentan en serie en la ALU.
c) La máquina se detiene. Los operandos en las memorias R1, R2 y R3 intermedias están retenidos en los circuitos 360, 370 y 380 de retención L1, L2 y L3. El circuito de retención L0 - "0", es un pseudocircuito de retención, y éste es simplemente una señal de comando literal que se introduce en cada una de las puertas Y en las entradas o salidas del multiplexador 390.
d) para los siguientes k ciclos de reloj eficaces
i) en cada ciclo de reloj eficaz el DETECTOR Y0 prevé el siguiente bit Y_{0} y carga este bit a través del multiplexador 300, M3, en la memoria intermedia de carga Ci, mientras se desplazan los bits Ai del registro R1 y se carga simultáneamente la memoria intermedia de carga Ci con k bits de Y_{0} y se suma la salida de R1 con Y_{0} y se carga este valor en la memoria R3 intermedia.
ii) multiplicar simultáneamente N_{0} (en el circuito L2 de retención Ci) por el bit Y_{0} entrante, y multiplicar Ai por el siguiente bit entrante de Bd, escogiendo de manera lógica, a través del multiplexador 390 M_K, el valor deseado de uno de los cuatro circuitos L0, L1, L2 o L3 de retención; sumando así los dos resultados. Si ni el bit Y_{0} ni el bit B es uno, un valor de todos cero se multiplexa en el CSA, si sólo el bit N_{0} es uno, sólo N_{0} se multiplexa/suma en el. CSA, si sólo el bit B es un uno, se suma A_{i-1} en el CSA, si tanto el bit B y el bit N_{0} son unos, entonces A_{i-1} + N_{0} se suman en el CSA,
iii) sumar entonces a esta suma; según sale en serie bit a bit del acumulador de k+1 bits con acarreo acumulado, (el flujo X); el siguiente bit relevante de Sd mediante el sumador 460 FA2 serie.
En MM estos primeros k bits del flujo Z son ceros.
En la primera fase se ha calculado el resultado de Y_{0} \cdot N_{0}+A_{i-1} \cdot B_{o} + S_{0}, todos los k bits LS cero aparecieron en el flujo Z* saliente, y los k+1 bits MS del dispositivo de multiplicación se acumulan en el acumulador de acarreo acumulado CSA (Carry Save Accumulator), las memorias R1, R2 y R3 intermedias de precarga mantiene los valores A_{i-1}, Y_{0} y A_{i-1} + Y_{0}, respectivamente.
e) en el último k(m+1)-ésimo ciclo de reloj eficaz, se detiene la máquina, las memorias R2 y R3 intermedias se retienen en L2 y L3. El valor de L1 no cambia.
Las condiciones iniciales y de continuación para los siguientes k\cdot(m-1) ciclos de reloj eficaces son:
los multiplicadores son los flujos de bits de B, partiendo del bit k-ésimo de B y el flujo de bit restante de N, también partiendo del bit k-ésimo de N;
y los multiplicandos en L1, L2 y L3 son A_{i-1}, Y_{0} y A_{i-1} + Y_{0}, al principio el sumador CS contiene el valor tal como se describió en d), y se alimentará el flujo S en los siguientes k(m-1) bits en el sumador FA2 total;
durante los siguientes k\cdotm ciclos, Nd, de reloj eficaces, los k ciclos de reloj retardados en la unidad 470 se restan en el restador 480 serie, del flujo Z, para detectar si (Z/2^{k} mod 2^{k*m}), resultado que va a ir al registro B o S, es mayor que o igual a N. Independientemente de lo que se detecte por el Testador 460 serie, si en el {(m+1)\cdotk}-ésimo ciclo de reloj eficaz, el biestable SO_{1} del CSA es un uno, entonces el resultado total es definitivamente mayor que N y se restará N del resultado, cuando el resultado, parcial o final, sale de su registro.
f) para los siguientes k\cdot(m-1) ciclos de reloj eficaces:
el registro 210 N_{0} se rota o bien de forma sincrónica con los bits A_{i} entrantes, o en cualquier otro momento adecuado, cargando R1, R2 y R3 tal como se describió en a) y b), para la siguiente iteración,
para estos k\cdot(m-1) ciclos de reloj eficaces, los bits MS restantes de N multiplicarán ahora Y_{0}, los bits MS de B restantes continuarán multiplicando A_{i-1}. Si ni el bit N ni el bit B es uno, un valor de todo ceros se 1 multiplexa en el CSA. Si sólo el bit B es un uno, Y_{0} se multiplexa/suma en el CSA. Si sólo el bit B es un uno, A_{i-1} se suma al CSA. Si tanto el bit B como el bit Y_{0} son unos, entonces A_{i-1} + Y_{0} se suman en el CSA.
Simultáneamente, la salida serie del CSA se suma a los siguientes k\cdot(m-1) bits S mediante el sumador FA2, unidad 460, que envía el flujo Z,
la parte relevante del flujo de salida Z contiene los primeros k(m-1) bits no cero de Z.
El flujo Z se conmuta en el registro S_{B}, para las primeras m-1 iteraciones y en el registro S_{B} o B, según se define para la última iteración;
en la última iteración, el flujo Z que, independientemente de los k bits cero LS, es el flujo B* final. Este flujo se dirige el registro B, para reducirse por N, si fuese necesario, cuando se usa en multiplicaciones y elevaciones al cuadrado posteriores;
en la última iteración, Nd, los k ciclos de reloj retardados se restan, mediante un restador serie, del flujo Z para detectar si el resultado, que va a B, es mayor que o igual a N.
Al final de esta fase, todos los bits de los registros N, B y SB se han alimentado en la ALU, y los k+1 bits finales de resultados están en el CSA, listos para vaciarse.
g) el dispositivo se detiene. El vaciador 250, S; el vaciador 240 B; y el vaciador 260 N se ajustan para enviar cadenas de ceros, para garantizar que en la fase siguiente los últimos k+1 bit más significativos se vaciarán del CSA. (En una multiplicación normal, el multiplexador 450 M7 se ajusta para aceptar el último acarreo de la iteración anterior de S). S tiene m\cdotk+1 bits significativos, pero el registro S sólo tiene mk células para recibir estos datos. El último bit se guarda intrínsicamente en el mecanismo de desbordamiento. Tal como se explicó en e, los k ciclos Nd de reloj retardados en 470 se restan del flujo Z, se sincronizan con las salidas significativas de X, para proporcionar un ajuste fino al mecanismo de detección para determinar si el resultado que va en el registro B o S es mayor que o igual a N. 480 y 490 comprenden un dispositivo comparador serie, en el que sólo se guardan el último bit de orden de acarreo negativo para cálculos modulares, y el bit (k\cdotm+1)-ésimo para multiplicaciones normales en el campo natural de enteros.
Esta orden de desbordamiento/acarreo negativo se detecta en el m\cdotk-ésimo ciclo de reloj eficaz.
\newpage
h) Se temporiza el dispositivo otros k ciclos, vaciando completamente el CSA, mientras que otros k bits salen de Z al registro de salida definido.
La instrucción al biestable relevante que ordena al restador 90 ó 500 ejecutar una resta de N en los siguientes flujos de salida se ajusta en último, el k(m+1)-ésimo, ciclo de reloj eficaz de la iteración si (Z/2^{k}-N)\geqN (Z incluye el m\cdotk-ésimo bit MS), detectado por las siguientes señales:
el bit SO1, que es el bit de salida de datos de la segunda célula menos significativa del CSA, es un uno,
o si el bit CO_{Z}, que es la salida de acarreo interno en el sumador 460 X+S, es un uno,
o si el bit de acarreo negativo del restador 480 detector no está ajustado.
El mecanismo aparece en la patente estadounidense 5.513.133 como fabricado tanto por Motorola como por SGS-Thomson. Para la multiplicación en el campo de los números naturales, es preferible detectar un desbordamiento, si el (m-k)-ésimo bit MS es un uno, que puede ocurrir en el multiplicador superescalar y no puede ocurrir en el mecanismo de la patente estadounidense 5.513.133. Este desbordamiento puede usarse entonces en la siguiente iteración para insertar un MS uno en el flujo S (resultado temporal).
j) es ésta la última iteración
NO, volver a c)
SÍ, continuar en m)
k) el valor correcto del resultado puede salir ahora del registro B o S.
Se prevén los bits Y_{0} de la siguiente manera en la unidad 430 de DETECCIÓN YOS-YO a partir de cinco cantidades determinísticas:
i
el bit LS del circuito de retención A1-L1 Y el siguiente bit del flujo Bd; A_{0}\cdotB_{d};
ii
el bit LS de salida de acarreo fuera del acumulador con acarreo acumulado, CO_{0};
iii
el bit S_{sal} de la segunda célula LS del CSA; SO_{1};
iv
el siguiente bit del flujo S, S_{d};
v
el bit de salida de acarreo del sumador 460 total; CO_{Z};
Se aplica función XOR sobre estos cinco valores conjuntamente para producir el siguiente bit Y_{0}; Y_{0i};
1
Si el bit Y_{0i} es un uno, entonces se suma normalmente otro N del mismo rango (multiplicado por la potencia necesaria de 2), de lo contrario el módulo N no se suma normalmente.
Multiplicación de enteros naturales largos en el campo normal de números.
Este aparato es adecuado para realizar eficazmente multiplicaciones y sumas de enteros normales. Si estos operandos no tienen todos una longitud más larga de k bits, el proceso se ejecuta preferiblemente sin intercalación, dirigiéndose el flujo Z de 2k+1 bits hacia el almacenamiento final. Para enteros más largos de k bits, el proceso es similar al proceso aritmético modular intercalado descrito anteriormente, salvo porque el resultado será ahora posiblemente un bit más largo que dos veces la longitud del operando más largo. Además, el aparato de la invención puede, utilizando los recursos disponibles en el dispositivo descrito, realizar simultáneamente dos multiplicaciones separadas, A, el multiplicando, cargado preferiblemente en segmentos en el registro R1-Ai, por B, el multiplicador, de A, cargado preferiblemente en el registro B tal como se designó anteriormente, más N, un segundo multiplicador, cargado preferiblemente en el registro N, por un operando, C, cargado en el registro R2, más S, un flujo de bits que entra en el aparato, en la primera iteración, sólo desde la Sd, línea de señales, preferiblemente desde el registro S_{A}.
El aparato DETECCIÓN Y_{0} no se utiliza. Los multiplicandos se suman en el registro R3 antes del inicio de una iteración. En el inicio de la iteración, los registros R1, R2 y R3 se copian en los circuitos L1, L2 y L3 de retención hasta el final de una iteración. Mientras, durante los mk+k+1 ciclos de reloj efectivos de una iteración, los siguientes segmentos de A y C se precargan de nuevo y se suman como preparación para la siguiente iteración.
En cada iteración, los primeros k bits LS del resultado en el flujo Z que se dirigen, ahora, (no por definición cero, como en MM) a un almacenamiento separado, vaciados para acumular la parte LS del resultado, de nuevo de manera adecuada el registro S_{A}. Los mk+1 bits más significativos comprenden el S_{B}, cantidad temporal, para la siguiente iteración. En la última fase, similar a g, i y j, el CSA se vacía del valor acumulado. La parte LS, para números que son más largos que los registros multiplicadores, puede salir a través del registro de salida de datos normales y del descargador, unidades 60 y 30, respectivamente.
El MS, bit 2m-ésimo del resultado se lee del bit de ÚLTIMO ACARREO del FA2, unidad 460, a través de la línea de señales de DESBORDAMIENTO.
Breve descripción de los dibujos
La presente invención se entenderá y apreciará a partir de la siguiente descripción detallada, tomada junto con los dibujos en los que:
las figuras 1A-1B, tomadas en conjunto, forman un diagrama de bloques simplificado de una unidad (ALU) aritmético lógica superescalar serie-paralelo construida y operativa según una realización de la presente invención;
la figura 2 es un diagrama de bloques simplificado de una implementación preferida del aparato de división entera serie de la figura 1A que también es útil por separado para aplicaciones de división entera serie, en particular para números muy largos;
la figura 3 es un diagrama de bloques simplificado de un ordenador criptográfico de clave pública para tarjetas inteligentes o terminales que incluye la unidad aritmético lógica serie-paralelo de las figuras 1A-1B;
la figura 4 es una tabla que muestra las etapas de operación de una división de un dividendo por un divisor utilizando el aparato de división de la figura 2, para un ejemplo en el que la longitud de bits efectiva del divisor es la mitad de la longitud de bits efectiva del dividendo; y
la figura 5 es una tabla que muestra las etapas de operación de una división de un dividendo por un divisor utilizando el aparato de división de la figura 2, para un ejemplo en el que la longitud de bits efectiva del divisor es inferior a la mitad de la longitud de bits efectiva del dividendo.
Descripción de realizaciones preferidas
Las figuras 1A-1B, tomadas en su conjunto, forman un diagrama de bloques simplificado de una unidad (ALU) aritmético lógica serie-paralelo construida y operativa según una realización preferida de la presente invención. El aparato de las figuras 1A-1B incluye preferiblemente los siguientes componentes:
Multiplexadores independientes - elementos de conmutación controlada que seleccionan una señal o flujo de bits de una multiplicidad de entradas de señales y dirigen esta señal seleccionada hacia una única salida. Los multiplexadores están marcados con (M1 a M13), y son partes intrínsecas de elementos más grandes.
Multiplexador (390) M_K, es una serie de k+1 multiplexadores independientes, y escoge cuál de las cuatro entradas k o k+1 deben añadirse en el CSA, (410).
B (1000), S_{A} (130), S_{B} (180) y N (1005) son los cuatro registros principales de la serie principal en una realización preferida.
El S_{A} es redundante conceptualmente y en la práctica, pero puede acelerar de manera considerable cálculos de números muy largos, y ahorrar recursos de memoria volátil, especialmente en el caso en el que la longitud del módulo es de 2\cdotk\cdotm bits de longitud, y también simplifica cálculos de divisiones largas.
Los sumadores serie y restadores serie son elementos lógicos que tienen dos entradas serie y una salida serie, y suman o realizan la resta en dos cadenas largas de bits. Los componentes (90 y 480) son restadores, y los (330 y 460) son sumadores serie. El tiempo de propagación desde la entrada hasta la salida es muy pequeño. El restador (90) serie reduce B* hasta B si B* es mayor que o igual a N. El restador (480) serie se usa como parte de un componente comparador para detectar si B* será mayor que o igual a N. El sumador (330) total suma los dos flujos de bits que alimentan la memoria (340) intermedia de carga, con un valor que es igual a la suma de los valores, en las memorias (290 y 320) intermedias de carga.
Los cargadores y descargadores, (10 y 20), y (30 y 40) rápidos, respectivamente, son dispositivos para acelerar el flujo de datos desde el controlador de la CPU. Pueden comprender DMA u otros aceleradores de hardware, en una realización preferida. Las referencias (20 y 40) son para invertir la palabra de datos según sea necesario para reconciliar la entrada y la salida de la división de la figura 2.
\newpage
La entrada (50) de datos es un dispositivo de entrada paralelo salida serie, puesto que el presente dispositivo ALU es un procesador sistólico alimentado en serie, y los datos se alimentan en la entrada, en paralelo, y se procesan en serie.
La salida (60) de datos es un dispositivo entrada serie salida paralelo, para emitir resultados desde el coprocesador. El generador de cocientes es la parte de la figura 2 que genera un bit cociente en cada iteración del mecanismo de división.
Las señales de vaciado en Bd, (240); en S*d, (250); y en Nd, (260), se realizan para garantizar que los últimos k+1 bits pueden vaciar el CSA, como una alternativa sería un elemento de salida paralelo de k+1 bits complicado para recuperar los k+1 bits MS del acumulador.
Las memorias R1, (290); R2, (320); y R3, (340) intermedias de carga son registros de desplazamiento de entrada serie salida paralelo adaptados para recibir las tres posibles combinaciones de multiplicandos de más de cero.
Se hace que los circuitos L1, (360); L2, (370); y L3, (380), de retención reciban las salidas de las memorias intermedias de carga permitiendo así a las memorias intermedias de carga para procesar la siguiente fase de datos antes de que estos datos se retengan preferiblemente en L2, L2 y L3.
Detección Y0, (430), es el dispositivo lógico que determina el número de veces que se acumula el módulo, para que una cadena de k bits de ceros LS salga en Z en elevaciones al cuadrado y multiplicaciones de Montgomery.
Los dispositivos (100, 220 y 230) de retardo de un bit se insertan en los flujos de datos respectivos para adaptarlos a los problemas de sincronización entre los dispositivos de preparación de datos en la figura 1A, y los dispositivos de procesamiento de datos en la figura 1B.
El registro (470) de desplazamiento, de retardo de k bits, garantiza que si Z/2^{k} es mayor que o igual a N, la comparación de Z/2^{k} y N se hará con sincronización.
El acumulador con acarreo acumulado es casi idéntico a un multiplicador serie/paralelo, salvo por el hecho de que pueden sumarse tres valores diferentes mayores de cero, en lugar del valor único retenido habitualmente en la entrada del multiplicador s/p.
Inserción de último acarreo, (440), se utiliza para insertar el (mk+1)-ésimo bit del flujo S, ya que el registro S tiene sólo mk bits de longitud.
La detección de acarreo negativo/desbordamiento, (440), puede o bien detectar si un resultado es mayor que o igual al módulo (de N), o bien si el (mk)-ésimo bit es un uno.
El mecanismo de control no está ilustrado, pero se entiende preferiblemente que es un conjunto de dispositivos de conteo en cascada, con un conjunto de conmutadores para el flujo de datos sistólico.
Para la multiplicación modular en el campo de números primos y primos compuestos, se define A y B como el multiplicando y el multiplicador, y N el módulo que es normalmente mayor que A o B. N también indica el registro en el que se almacena el valor del módulo. N, puede, en algunos casos, ser menor que A. Se definen A, B y N como operandos de m k = n bits de longitud. Cada grupo de k bits se denominará un carácter, definido el tamaño del grupo por el tamaño del dispositivo de multiplicación. Entonces A, B y N tienen cada uno m caracteres de longitud. Para simplificar el seguimiento de las explicaciones del procedimiento etapa a etapa, se supone que A, B y N tienen 512 bits de longitud, (n = 512); se supone que k tiene 64 bits de longitud debido a la longitud económica actual de tal multiplicador y las velocidades de manipulación de datos de CPU sencillas; y m = 8 es el número de caracteres en un operando y también el número de iteraciones en bucles de elevación al cuadrado o multiplicación con un operando de 512 bits. Todos los operandos son enteros positivos. Más en general, A, B, N, n, k y m pueden tomar cualquier valor adecuado.
En funciones no modulares, los registros N y S pueden usarse para el almacenamiento temporal de otros operandos aritméticos.
Se utiliza el símbolo \equiv para indicar congruencia de números modulares, por ejemplo, 16 \equiv 2 mod 7, y se dice que 16 es congruente con 2 módulo 7 cuando 2 es el resto cuando 16 se divide por 7. Cuando se escribe Y mod N \equiv X mod N, tanto Y como X pueden ser mayores que N; sin embargo, para X e Y positivos, los restos serán idénticos. Obsérvese también que la congruencia de un entero Y negativo es Y + u N, donde N es el módulo, y si la congruencia de Y va a ser inferior a N, u será el entero más pequeño que dará un resultado positivo.
Se usa el símbolo ¥ para indicar congruencia en un sentido más limitado. Durante los procedimientos descritos en el presente documento, a menudo un valor es o bien el valor deseado o bien igual al valor deseado más el módulo. Por ejemplo, X ¥ 2 mod 7. X puede ser igual a 2 ó 9. Se dice que X tiene congruencia limitada a 2 mod 7.
Cuando se escribe X = A mod N, X se define como el resto de A dividido por N; por ejemplo, 3 = 45 mod 7.
En teoría de números, la inversa multiplicativa modular es un concepto básico. Por ejemplo, la inversa multiplicativa modular de X se escribe como X^{-1}, que se define por X X^{-1} mod N = 1. Si X = 3 y N = 13, entonces X^{-1} = 9, es decir, el resto de 3.9 dividido por 13 es 1.
Los acrónimos MS y LS se usan para expresar lo más significativo y los menos significativo cuando se hace referencia a bits, caracteres y valores de operandos completos, tal como es convencional en nomenclatura digital.
A lo largo de esta memoria específica, N designa tanto el valor N, como el nombre del registro de desplazamiento que contiene N. Un superíndice asterisco sobre un valor indica que el valor, como tal, está potencialmente incompleto o sujeto a cambio. A es el valor del número que va a exponenciarse y n es la longitud en bits del operando N. Tras la inicialización cuando A se "normaliza según Montgomery" a A* (A*=2^{n} A, se explicará a continuación), A* y N son valores constantes a lo largo de la etapa intermedia en la exponenciación. Durante la primera iteración, tras la inicialización de una exponenciación, B es igual a A*. B es también el nombre del registro en el que reside el valor acumulado que finalmente es igual al resultado deseado de la exponenciación. S* indica un valor temporal y S, SA y SB indican, también, el registro o registros en los que se almacenan todos excepto el único bit MS de S. (S* concatenado con este bit MS es idéntico a S.) S(i-1) indica el valor de S en la salida de la iteración i-ésima; S_{0} indica el carácter LS de un valor S(i)-ésimo.
Se denomina al proceso 800 (A\cdotB)N, (definido posteriormente), como multiplicación en el campo P, o algunas veces, simplemente, una operación de multiplicación.
Como se ha usado la estructura convencional de un multiplicador serie/paralelo como la base para construir un multiplicador serie paralelo de doble función, se diferencia entre la parte de suma del multiplicador, que se basa en una acumulación con acarreo acumulado, (al contrario de un sumador con acarreo hacia delante, o un acarreo de propagación, de los que el primero es considerablemente más complicado y el segundo muy lento), y lo denomina un sumador o acumulador con acarreo acumulado, y se ocupa por separado del mecanismo de precarga y del multiplexador y de los circuitos de retención, que permiten multiplicar simultáneamente A por B y C por D, sumar ambos resultados, por ejemplo, A\cdotB+C\cdotD, convirtiendo este acumulador en un motor muy potente. Se añade lógica adicional a este multiplicador con el fin de proporcionar una operación de detección prevista necesaria para la reducción modular y la suma en serie necesaria para proporcionar aritmética modular potente y aritmética entera corriente en números muy grandes.
Multiplicación modular de Montgomery
En un enfoque clásico para calcular una multiplicación modular, A\cdotB mod N, el resto del producto A\cdotB se calcula mediante un procedimiento de división. La implementación de una división convencional de operandos grandes es más difícil de realizar que multiplicaciones serie/paralelo.
Usando el método de reducción modular de Montgomery, esencialmente se sustituye la división por multiplicaciones utilizando dos constantes precalculadas. En el procedimiento demostrado en el presente documento, sólo existe una constante precalculada, que es una función del módulo. Esta constante se calcula, o puede calcularse, usando este dispositivo ALU.
Se proporciona ahora una presentación simplificada del procedimiento de Montgomery, tal como se usa en este dispositivo, seguido de una descripción preferida completa.
Si se tiene un número impar (un bit LS de uno), por ejemplo 1010001 (=81_{10}) siempre puede transformarse este número impar en un número par (un único bit LS de cero) sumándolo a otro número impar de compensación y fijación, por ejemplo, 1111 (=15_{10}); tal como 1111 + 1010001 = 1100000 (96_{10}). En este caso particular, se ha hallado un número que produjo cinco ceros LS, debido a que se conocía con antelación la cadena completa, 81, y pudo determinarse fácilmente un número binario que pudo sumarse a 81, y que produciría un nuevo número binario que tendría tantos ceros LS como se necesitasen. Este número de fijación debe ser impar, sino no tiene ningún efecto sobre los bits LS progresivos de un resultado.
Si el proceso es un proceso con acarreo acumulado serie/paralelo temporizado, en el que se desea tener un número continuo de ceros LS, y en el que en cada ciclo de reloj sólo tiene que fijarse el siguiente bit, en cada ciclo de reloj es suficiente sumar el fijo, si el siguiente bit fuese posiblemente un uno o no sumar el fijo si el posible bit fuese un cero. Sin embargo, con el fin de no producir desbordamiento entre bits (dobles acarreos), este fijo se suma preferiblemente con anterioridad al multiplicando, para sumarse en el acumulador cuando el bit multiplicador relevante es uno, y el detector Y también detecta un uno.
Ahora, como en una aritmética modular, solo interesa el resto de un valor dividido por el módulo, se sabe que puede sumarse el módulo cualquier número de veces a un valor y todavía tener un valor que tendría el mismo resto. Esto significa que puede sumarse YN=\sumy_{i}2^{1} N a cualquier entero, y todavía tener el mismo resto; siendo Y el número de veces que se suma el módulo, N, para producir los ceros LS requeridos. Tal como se describe, el módulo que se suma sólo puede ser impar. Existen métodos en los que los módulos pares se definen como 2^{i} veces el número impar que resulta cuando i es el número de ceros LS en el número par.
El problema solucionado mediante las variaciones intercaladas de Montgomery, tiene como objetivo reducir el lugar de almacenamiento limitado que se tiene para números, y el tamaño económico de los multiplicadores. Esto es especialmente útil cuando se realizan funciones criptográficas de clave pública en las que se están multiplicando constantemente un entero grande, por ejemplo, n=1024 bit, por otro entero grande; un procedimiento que produciría normalmente un entero de 2048 bits de doble longitud.
Puede sumarse N5 (el módulo) las veces suficientes a A\cdotB=X o A.B+S=X durante el proceso de multiplicaciones (o elevaciones al cuadrado) de modo que se tiene un número, Z, que tiene n ceros LS, y, como máximo n+1 bits MS.
Se puede seguir usando tales números, independientemente de los n bits LS, si se tiene en cuenta que ignorando esos ceros, se divide el resultado deseado por 2''.
Cuando se ignoran los n bits LS y sólo se usan los n (o n+1) bits más significativos, entonces se ha multiplicado eficazmente el resultado por 2^{-n}, el inverso modular de 2^{n}. Si se volviese a multiplicar posteriormente este resultado por 2^{n} mod N (o 2^{n}) se obtendría un valor congruente con el resultado deseado (que tiene el mismo resto) tal como A\cdotB+S mod N. Tal como se observa, usando la MM, se multiplica preferiblemente el resultado por 2^{2n} para reducir el factor parasitario 2^{-n} que se vuelve a introducir por la MM.
Ejemplo
A\cdotB+S mod N = (12\cdot11+10) mod 13 = (1100\cdot1011+1010)_{2} mod 1011_{2}.
Se sumará 2^{i} N cuando se necesite un fijo en uno de los n bits LS.
\vskip1.000000\baselineskip
100
Y el resultado es 10001 0000_{2} mod 13=17\cdot2^{4} mod 13.
Puesto que 17 es mayor que 13, se resta 13 y el resultado es:
1000
formalmente 2^{-n}(AB+S)mod N = 9 (12\cdot11 +10) mod 13 \equiv 4.
En la aritmética de Montgomery sólo se utiliza el resultado (4) MS distinto de cero y, de hecho, se recuerda que el resultado real se ha dividido por 2^{n} habiéndose forzado n ceros en el resultado MM.
Se ha sumado (8+2)\cdot13=10\cdot13 que multiplicó eficazmente el resultado por 2^{4} mod 13 \equiv 3. De hecho, si se han usado los ceros superfluos puede decirse que se ha realizado, A\cdotB+Y\cdotN+S -(12\cdot11+10\cdot13+10) en un procedimiento, que se describirá como posibilidad en una realización preferida.
Comprobar- (12\cdot11+10) mod 13 = 12; 4 \cdot 3 = 12.
En resumen, el resultado de una multiplicación de Montgomery es el resultado deseado multiplicado por 2^{-n}.
Para recuperar el resultado anterior como un resultado deseado usando el mismo método de multiplicación, se tendría que aplicar una multiplicación de Montgomery al resultado anterior por 2^{2n}, lo que puede denominarse H, puesto que cada MM deja un factor parasitario de 2^{-n}.
La función de multiplicación de Montgomery 800(A\cdotB)N realiza una multiplicación módulo N del producto A\cdotB en el campo P. (En el ejemplo anterior, en el que se derivó 4). Se realiza la recuperación desde el campo P al campo modular normal representando P en el resultado de 800(A\cdotB)N usando la constante H precalculada. Ahora, si P \equiv 800(A\cdotB)N, entonces se tiene que 800(P\cdotH)N= A\cdotB mod N; realizándose así una multiplicación modular normal en dos multiplicaciones en el campo P.
La reducción modular de Montgomery evita una serie de operaciones de multiplicación y división en operandos que tienen n y 2n bits de longitud, realizando una serie de multiplicaciones, sumas y restas sobre operandos que no tienen una longitud de n ó n+1 bits. El procedimiento completo proporciona un resultado que es menor que o igual a N. Para A, B y N impar dados, siempre existe una Q, de manera que A \cdot B + Q \cdot N dará como resultado un número cuyos bits LS son cero, o:
2
Esto significa que se tiene una expresión de 2n bits de longitud, cuyos bits LS son cero.
Ahora, considérese I\cdot2n \equiv 1 mod N (I existe para todo N impar). La multiplicación de ambos lados de la ecuación anterior por I proporciona las siguientes congruencias:
a partir del lado izquierdo de la ecuación:
\vskip1.000000\baselineskip
3
y a partir del lado derecho:
4
por lo tanto:
5
\vskip1.000000\baselineskip
Esto también significa que se introduce un factor parasitario I=2^{-n} mod N cada vez que se realiza una multiplicación en el campo P.
Se define el operador 800 de manera que:
6
\vskip1.000000\baselineskip
y a esto se denomina "multiplicación de A por B en el campo P", o multiplicación de Montgomery.
\vskip1.000000\baselineskip
La recuperación desde el campo P puede calcularse operando 800 sobre P\cdotH, realizando:
7
Se puede derivar el valor de H sustituyendo P en la congruencia anterior. Se encuentra que:
8
(obsérvese que A\cdotB\cdotI \leftarrow P; H\leftarrowH; I\leftarrow y cualquier operación de multiplicación introduce un 1 parasitario).
\vskip1.000000\baselineskip
Si H es congruente con el inverso del múltiplo de I^{2} entonces la congruencia es válida, por lo tanto:
9
(H es una función de N y se denomina parámetro H).
\vskip1.000000\baselineskip
En los métodos de Montgomery convencionales, para representar el operador 800 sobre A\cdotB, puede emplearse el siguiente proceso, usando la constante J precalculada:
1) X = A\cdotB
2) Y = (X\cdotJ) mod 2^{n} (sólo son necesarios los n bits LS)
3) Z = X + Y\cdotN
4) S = Z /2^{n} (El requisito de J es que fuerza que Z sea divisible por 2^{n})
5) P ¥ S mod N (N debe restarse de S, si S \geq N)
Finalmente, en la etapa 5):
10
[Tras la resta de N, si fuese necesario:
11
Siguiendo lo anterior:
12
y:
13
Con el fin de que Z sea divisible por 2^{n} (los n bits LS de Z son preferiblemente cero) existirá la siguiente congruencia:
14
\vskip1.000000\baselineskip
Con el fin de que exista está congruencia, N \cdot J mod 2^{n} son congruentes a -1 o:
\vskip1.000000\baselineskip
15
y se ha hallado la constante J.
Por lo tanto, J es una constante precalculada que es una función sólo de N. Sin embargo, en una máquina que emite un resultado MM, bit a bit, debería hacerse la previsión de sumar N_{S} en cada caso en el que, de otro modo, el bit de salida en la cadena LS hubiera sido un cero, obviando así la necesidad de precalcular J y calcular posteriormente Y = A\cdotB\cdotJ mod 2^{n}, puesto que Y puede detectarse bit a bit usando lógica cableada. También se ha descrito que este método sólo puede funcionar para N_{S} impar.
Por lo tanto, como es evidente, el procedimiento descrito emplea tres multiplicaciones, una suma, y un máximo de una resta para A, B, N dados, y una constante precalculada para obtener 800(A\cdotB)N. Usando este resultado, el mismo procedimiento y una constante precalculada, H, (una función del módulo N) se podrá hallar A B mod N. Puesto que A también puede ser igual a B, este operador básico puede usarse como un dispositivo para elevar al cuadrado o multiplicar en la aritmética modular.
\vskip1.000000\baselineskip
Multiplicación modular de Montgomery intercalada
La sección anterior describe un método para la multiplicación modular que implicó multiplicaciones de operandos que tenían todos n bits de longitud y resultados que requirieron 2n + 1 bits de espacio de almacenamiento.
Usando la reducción intercalada de Montgomery (tal como se describe en el artículo mencionado anteriormente por Dussé), es posible realizar las operaciones de multiplicación con operandos más pequeños, registros y multiplicadores hardware que permiten la implementación de un dispositivo electrónico con relativamente pocas puertas
lógicas.
En primer lugar se describirá cómo puede funcionar el dispositivo, si en cada iteración de la intercalación se calcula el número de veces que se suma N, usando la constante J_{0}. Después, se describirá cómo intercalar, usando una derivación cableada de Y_{0}, que eliminará la fase Jo+ de cada multiplicación {2) en el 1 siguiente ejemplo}, y permitirá integrar las funciones de dos multiplicadores/serie independientes en un único multiplicador genérico nuevo que puede realizar A\cdotB+C\cdotN+S a más del doble de velocidad usando recursos de silicio similares.
Usando un multiplicador de k bits, es conveniente definir caracteres de k bits de longitud; existen m caracteres en n bits; es decir, m\cdotk = n.
J_{0} será el carácter LS de J.
Por lo tanto:
16
\vskip1.000000\baselineskip
Obsérvese que las constantes J y J_{0} son números de compensación que cuando se representan sobre la posible salida, dice cuantas veces sumar el módulo, con el fin de tener un número predefinido de ceros menos significativos. Se describirá posteriormente una ventaja adicional al presente dispositivo serie; puesto que, debido a que el siguiente bit serie de salida puede determinarse fácilmente, siempre puede sumarse el módulo (siempre impar), al siguiente resultado intermedio. Este es el caso si, sin esta suma, el bit de salida, el bit serie LS que sale de CSA, hubiese sido un "1"; sumando así el módulo al resultado intermedio par previo y por tanto proporcionando otro cero LS en la cadena de salida. Se recuerda que se mantiene la congruencia, puesto que independientemente de cuántas veces se sume el módulo al resultado, el resto es constante.
\newpage
En el uso convencional de la reducción intercalada de Montgomery, se representa 800(A\cdotB)N en m iteraciones tal como se describe en las etapas (1) a (5):
Inicialmente S(0) = 0 (el valor ¥ de S en el inicio de la primera iteración).
Para i = 1, 2....m:
1) X = S(i-1) + A_{i-1}\cdotB (A_{i-1} es el carácter (i-1)-ésimo de A; S(i-1) es el valor de S en el inicio de la i-ésima iteración).
2) Y_{0} = X_{0} \cdot J_{0} mod 2^{k} (Los k bits LS del producto de X_{0} \cdot J_{0})
(El procedimiento usa y calcula sólo los k bits LS, por ejemplo, los 64 bits menos significativos).
En la implementación preferida, se obvia esta etapa, debido a que en una máquina serie Y_{0} puede preverse bit a bit.
3) Z = X + Y_{0}\cdotN
4) S(i) = Z/2^{k} (Los k bits LS son siempre 0, por lo tanto Z siempre es divisible por 2^{k}. Esta división es equivalente a un desplazamiento a la derecha de k bits puesto que los k bits LS de Z son todos ceros; o tal como se observará en el circuito, simplemente se ignoran los k bits LS de Z.
5) S(i) = S(i) mod N (N va a restarse de aquellos S(i) que sean mayores que N).
Finalmente, en la última iteración (tras la resta de N, cuando sea necesario), C = S(m) = 800(A \cdot B) N. Para derivar F = A\cdotB mod N, el cálculo en el campo P, se realiza 800(C \cdotH)N.
Se desea saber, en una realización preferida, que para todos los S(i), S(i) es menor que 2N. Esto también significa, que el último resultado (S(m)) siempre puede reducirse a una cantidad inferior a N con, como máximo, una resta de N.
Se observa que para operandos que se usan en el procedimiento:
S(i-1) < 2^{n+i} (el registro temporal puede ser un bit mayor que el registro B o N),
\vskip1.000000\baselineskip
17
Por definición:
18
\vskip1.000000\baselineskip
(El valor de S en el final del proceso, antes de una posible resta). Para todo Z, Z (i) <2^{n+k+1}.
\vskip1.000000\baselineskip
19
por lo tanto:
20
\vskip1.000000\baselineskip
y puesto que Z_{max} se divide por 2^{k}:
21
Debido a que N_{min}> 2^{n}-2, S (m) max siempre es menor que 2\cdotN_{min} y, por lo tanto, todo lo que se necesita es una resta sobre un resultado final.
22
Ejemplo de una multiplicación modular intercalada de Montgomery
Los cálculos siguientes en formato hexadecimal aclaran el significado del método intercalado:
N = a59, (el módulo), A = 99b, (el multiplicador), B = 5c3 (el multiplicando), n = 12, (la longitud en bits de N),
k = 4, (el tamaño en bits del multiplicador y también el tamaño de un carácter), y m =3, puesto que n = k\cdotm.
J_{0} = 7 puesto que 7 \cdot 9 = -1 mod 16 y H - 2^{2.12} mod a59 \equiv 44b.
El resultado esperado es F \equiv A\cdotB mod N \equiv 99b\cdot5c3 mod a59 \equiv 375811 mod a59 = 220_{16}. Inicialmente: S(0) = 0.
23
Se lleva a cabo la recuperación desde el campo P calculando
800(C\cdotH)N:
De nuevo, inicialmente: S(0) = 0
200
201
que es el valor esperado de 99b 5c3 mod a59.
Si en cada etapa se ignoran los k ceros LS, en esencia se están multiplicando los n bits MS por 2^{k}. Así mismo, en cada etapa, el i-ésimo segmento del multiplicador es también un número multiplicado por 2^{ik}, proporcionándole el mismo rango que S(i).
Exponenciación
La siguiente derivación de una secuencia [D. Knuth, The art of computer programming, vol. 2: Seminumerical algorithms, Addison-Wesley, Reading Mass., 1981] denominado en lo sucesivo como "Knuth", explica una secuencia de elevaciones al cuadrado y multiplicaciones que implementa una exponenciación modular.
Tras precalcular la constante de Montgomery, H= 2^{2n}, puesto que este dispositivo puede tanto elevar al cuadrado como multiplicar en el campo P, se calcula:
24
Considerando que E(j) indica el bit j en la representación binaria del exponente E, partiendo del bit MS cuyo índice es 1 y concluyendo con el bit LS cuyo índice es q, se puede exponenciar tal como sigue para exponentes impares:
240
Tras la última iteración, el valor de B es ¥ para A^{E} mod N, y C es el valor final.
Para aclarar, se usará el siguiente ejemplo:
241
Puesto que E(4) era impar, la última multiplicación será por A, para eliminar el I^{-1} parasitario.
242
Un método para calcular el parámetro H mediante un proceso recíproco se describe en la patente estadounidense 5.513.133.
Un proceso de división largo
La figura 2 ilustra una realización preferida de un dispositivo de procesamiento determinístico para realizar una división larga, usando dispositivos de manipulación de datos disponibles en el procesador de la figura 1A.
Las Figuras 4 y 5 son ejemplos del funcionamiento del aparato de la figura 2.
En un proceso de división, en el que el divisor, d, está en el intervalo de d, 2^{n-1} < d < 2''; y el dividendo, D, está en el intervalo de D, 2^{2n-1} < D < 2^{2n}; el aparato se usa de la manera más sencilla. Se precarga d en el registro (1005) de desplazamiento a la derecha N (una concatenación de los registros (210 y 200) N_{0} y N_{1}) en la figura 2, se precargan los n bits MS del dividendo, D, en el registro (1000) de desplazamiento a la derecha B, y los n bits LS de D se cargan de forma inversa en el registro (130) de desplazamiento a la derecha S_{A}. Esto es fundamental, puesto que se dispondrían los dígitos para la división larga manual teniendo en cuenta que los nuevos bits LS se alimentan desde S_{A} hasta S_{B} en cada nueva resta de prueba. El registro S_{B} se precarga con todo ceros.
En la iteración de inicialización, el biestable (170) de desbordamiento de la figura 2 se reajusta inicialmente. El registro N, que ahora contiene al divisor, d, se resta a modo de prueba de B, los bits MS de D, mientras que se hacen rotar ambos registros B y N; en los que las salidas se alimentan al restador (90) serie, cuya salida es B-fN, f=1 para restar, f=0 para no restar. El generador (120) de cocientes es un detector que determina si B\geqN, y transmite un SIGUIENTE RESTA que determina si d se restará de B, en (90), en la siguiente iteración; esta señal es un uno si y solo si, B es mayor que o igual a N. Este bit de SIGUIENTE RESTA indica éxito, y es el bit más significativo del cociente, y también se temporiza en el registro (180) S_{B}. Según se temporiza en el registro S_{B}, se desplaza un cero fuera del registro S_{B}, en el registro S_{A}, forzando un NUEVO BIT LS fuera del registro S_{A}. Obsérvese que puesto que todos estos registros son registros de desplazamiento a la derecha, tanto el cociente en S_{B} como el valor del dividendo en S_{A}, se mantienen en orden inverso.
En las siguientes iteraciones, en el primer ciclo de reloj eficaz, un NUEVO BIT LS, desplazado fuera del S_{A} precede a la salida, R, de (90), multiplicando así R por 2 y sumando el valor del NUEVO BIT LS a 2R. Este valor concatenado se vuelve a rotar en el registro B, y también se somete a prueba en (120), para determinar si en la siguiente ronda f=1 o f=0.
\newpage
Finalmente, el resto está en el registro B, n bits del cociente están en el registro S_{B} y los bits más significativos están en el registro S_{A}.
El más significativo de tanto el dividendo como el divisor está preferiblemente en las células de bits más significativos del registro B y el registro N, para todos los tamaños de D y d. El número de iteraciones necesarias para obtener un resultado disminuye para los D que son menores que 2^{2n-1}, y aumenta para los d que son menores que 2^{n-1}. El dispositivo se acciona mediante hardware, y pueden proporcionarse compensaciones firmware para desplazar los operandos cuando se descarga el dispositivo.
El programa que reside en la memoria no volátil de la figura 3, establece preferiblemente que se carguen los registros, y define para el registro de control un número de iteraciones necesarias para un proceso de división satisfactorio. Los bits del cociente se vuelven a invertir, byte a byte, cuando se procesan a través del descargador de salida de datos inversos, unidades (60 y 40).
Este procesador es un elemento útil para calcular el parámetro H, y también se usa preferiblemente en cálculos de funciones Euclideas.
El aparato de división entera serie de la figura 1A y el multiplicador de doble función de la figura 1B que realiza A x B + C x D + S, no funcionan normalmente de forma simultánea.
En el ejemplo de la figura 4, el dividendo B es 187 (10111011), el divisor N es 7 (111), y una vez que se lleva a cabo la división, se halla que el cociente es 20 (10100) y se halla que el resto es 7 (111).
En el ejemplo de la figura 5, el dividendo B es 173 (10101101), el divisor N es 5 (101), y una vez que se lleva a cabo la división, se encuentra que el cociente es 34 (100010) y se halla que el resto es 3 (11).
Se ilustra un acumulador de acarreo acumulado en la figura 5 de la patente estadounidense 5.513.133 a nombre de Gressel.
Se ilustra un sumador total serie en la figura 7 de la patente estadounidense a la que se hizo referencia anteriormente a nombre de Gressel.
Se ilustra un restador serie en la figura 8 de la patente estadounidense a la que se hizo referencia anteriormente a nombre de Gressel.
Se ilustra el aparato de división en la figura 9 de la patente estadounidense a la que se hizo referencia anteriormente a nombre de Gressel.
La expresión "campo normal de enteros" se refiere a enteros no negativos, por ejemplo, números naturales.
Según una realización preferida de la presente invención, el sistema mostrado y descrito en el presente documento funciona para calcular J_{0} reajustando a y b a cero y ajustando S_{0} = 1.
Una parte de la descripción de este documento de patente contiene material que está sujeto a protección de derechos de propiedad intelectual ("copyright"). El propietario de los derechos de propiedad intelectual no tiene ninguna objeción a la reproducción por facsímil, por cualquier persona, del documento de patente o la descripción de la patente, tal como aparece en los registros o archivos de patentes de la oficina de patentes y marcas, pero se reservan todos los derechos de propiedad intelectual sean los que fueren.
Se apreciará que los componentes software de la presente invención pueden implementarse, si se desea, en forma de ROM (memoria de solo lectura). Generalmente, los componentes software pueden implementarse en hardware, si se desea, usando técnicas convencionales.
Se apreciará que diversas características de la invención que, para mayor claridad, se describen en los contextos de realizaciones independientes también pueden proporcionarse juntas en una única realización. A la inversa, diversas características de la invención que, por brevedad, se describen en el contexto de una única realización también pueden proporcionarse por separado o en cualquier combinación secundaria adecuada.
Los expertos en la técnica apreciarán que la presente invención no se limita a 10 que se ha mostrado y descrito anteriormente en el presente documento de forma particular. En su lugar, el alcance de la presente invención sólo se define mediante las reivindicaciones que siguen.
\vskip1.000000\baselineskip
Referencias citadas en la descripción
La lista de referencias citadas por la solicitud es sólo para la conveniencia del lector. No forma parte del documento de patente europea. Aunque se ha tenido gran cuidado al reunir las referencias, las errores u omisiones no pueden excluirse y la OEP renuncia a toda responsabilidad en este aspecto.
Documentos de patentes citados en esta descripción:
\bullet US 5513133 A [0002] [0027] [0029] [0035] [0038] [0046] [0046] [0110] [0122]
\bullet EP 0566498 A [0003]
\bullet US 4514592 A, Miyaguchi [0029]
\bullet US 5101431 A, Even [0029]
\bullet US 5321752 A, Iwamura [0029]
\bullet US 5448639 A, Arazi [0029]
Bibliografía citada en la descripción que no son patentes
\bullet P. L. MONTGOMERY. Modular multiplication without trial division. Mathematics of Computation, 1985, vol. 44, 519-521 [0029]
\bullet A cryptographic library for the Motorola DSP 56000. S.R DUSSÉ; B.S. KALISKI JR. Proc Eurocrypt '90. Springer-Verlag, 1990 [0029]
\bullet D. KNUTH. The art of computer programming. Seminumerical algorithms, Addison-Wesley, Reading Mass., 1981, vol. 2 [0105]

Claims (16)

1. Unidad aritmético lógica (ALU) microelectrónica para realizar una multiplicación modular de tipo Montgomery de P(A\cdotB)N, donde P(P_\cdotB)N es modularmente congruente con A\cdotB\cdotI mod N, donde I es un 2^{-n} mod N, A, B y N son operandos de n bits de longitud, siendo N impar, comprendiendo el aparato:
registros de memoria principales primeros (70, 80; 1000) y segundos (200, 210; 1005), cada registro para mantener un operando de n bits de longitud, estando adaptados respectivamente dichos registros para almacenar el multiplicador, B, y el módulo N;
un dispositivo (390, ...) para multiplicar de forma simultánea una primera cadena (A_{i}) de k bits por un primer bit (B_{d}) entrante y una segunda cadena (N_{0}, Y_{0}) de k bits por un segundo bit (Y_{0}, N_{d}) entrante y acumular el resultado, teniendo el dispositivo sólo un sumador (410) con acarreo acumulado, teniendo al menos k+1 bits de longitud, estando adaptado el dispositivo para seleccionar como un valor de entrada al sumador con acarreo acumulado un valor de cadena de todo ceros, la primera cadena de k bits, la segunda cadena de k bits o la suma precalculada de la primera y segunda cadenas de k bits, estando adaptado el aparato para introducir en una primera fase:
los bits menos significativos de B como primeros bits entrantes;
los bits consecutivos de un valor previsto generado "sobre la marcha", Y_{0}, como segundos bits entrantes en el dispositivo;
los k bits consecutivos del multiplicando (A) como la primera cadena de k bits; y
los k bits menos significativos consecutivos de N como segunda cadena de k bits,
estando adaptado el aparato para introducir en una segunda fase:
los bits menos significativos consecutivos de B como primeros bits entrantes;
los bits consecutivos de N, como segundos bits entrantes en el dispositivo;
los k bits consecutivos del multiplicando (A) como la primera cadena de k bits; y
los k bits menos significativos consecutivos de Y_{0}, generados en la primera fase, como la segunda cadena de k bits;
un dispositivo (430) lógico para determinar Y_{0}, de manera que los k bits menos significativos enviados desde el sumador (410) con acarreo acumulado en la primera fase son ceros, recibiendo el dispositivo lógico como entradas:
el bit menos significativo de la primera cadena (Ai) de k bits;
el primer bit (Bd) entrante;
un bit de salida de acarreo menos significativo desde el sumador (410) con acarreo acumulado;
el siguiente al bit menos significativo desde el sumador (410) con acarreo acumulado;
el siguiente bit desde un registro (S) de almacenamiento temporal; y
un bit de salida de acarreo desde un sumador (460),
estando adaptado el sumador (410) con acarreo acumulado para enviar valores de forma simultánea mientras que se suman multiplicandos en el sumador (410) con acarreo acumulado; y
un mecanismo de transferencia de salida, adaptado en una segunda fase para enviar un resultado P(A-B)N final desde el sumador (410) con acarreo acumulado.
2. Aparato según la reivindicación 1, adaptado para activar sumas en el sumador (410) con acarreo acumulado mediante bits multiplicadores de orden sucesivamente superior que se cargan uno tras otro en serie.
3. Aparato según la reivindicación 2, adaptado, en respuesta a los bits multiplicadores cargados sucesivamente:
para no producir ninguna suma en el sumador (410) con acarreo acumulado si tanto el bit multiplicador de entrada como un bit Y_{0} de entrada correspondiente son ceros;
sumar sólo el multiplicando A_{i} si el bit multiplicador de entrada es un uno y el bit Y_{0} correspondiente es un cero;
sumar sólo el módulo N, si el bit multiplicador es un cero, y el bit Y_{0} correspondiente es un uno; y
sumar la suma del módulo N con el multiplicando A_{i} si tanto el bit multiplicador de entrada y el bit Y_{0} correspondiente son unos.
4. Aparato según la reivindicación 3, adaptado para precargar valores A_{i} de multiplicandos y valores N de módulos en dos memorias (290, 320) intermedias precargadas designadas, y para sumar estos valores en una tercera memoria (340) intermedia de precarga de multiplicando, obviando la necesidad de sumar cada valor de multiplicando por separado, cuando los bits Y_{0} y el multiplicador correspondientes son ambos unos.
5. Aparato según la reivindicación 4, adaptado para alimentar las memorias (290, 320, 340) intermedias precargadas en serie y para precargar valores de multiplicando en las memorias intermedias de precarga sobre la marcha desde cualquiera de los registros (1000, 1005) o desde la CPU mediante cualquiera de los registros.
6. Aparato según la reivindicación 1, adaptado para introducir los valores multiplicadores en serie y para enviar la salida del sumador (410) con acarreo acumulado en serie, en el que el dispositivo (430) de detección está adaptado para prever, en sólo un bit, si el valor del módulo debe sumarse en el sumador con acarreo acumulado.
7. Aparato según la reivindicación 1 ó la reivindicación 6, adaptado para enviar los k ceros menos significativos desde el dispositivo de multiplicación modular controlado por las siguientes tres cantidades para prever un siguiente bit Y_{0}:
i)
el bit menos significativo de registro A_{i} Y el siguiente bit del flujo B, A_{0}\cdotB_{d};
ii)
el bit de salida de acarreo menos significativo del sumador con acarreo acumulado, CO_{0}; y
iii)
el bit S_{sal} de la segunda célula menos significativa del sumador con acarreo acumulado, SO_{1}.
8. Aparato según la reivindicación 7, adaptado para aplicar funciones XOR sobre los tres valores A_{0}, \cdot B_{d}, CO_{0} y SO_{1} juntos para enviar un bit previsto Y_{0} válido.
9. Aparato según la reivindicación 1, que comprende además un comparador (480, 490) adaptado para detectar una salida del dispositivo de multiplicación modular, de cuya salida se ignoran los k bits menos significativos, en el que la salida es mayor que el módulo N y menor que 2N, estando adaptado el comparador para controlar una reducción modular usando una salida de valor desde el registro de memoria al que se destina un flujo de salida desde el dispositivo multiplicador, evitando así la necesidad de adjudicar un segundo dispositivo de almacenamiento de memoria para valores de producto de Montgomery menores.
10. Aparato según la reivindicación 1, en el que un comparador serie está adaptado para detectar cuando una salida Z/2^{k} del dispositivo de multiplicación modular es mayor que 2^{n}, estando adaptado así para ajustar un bit de desbordamiento.
11. Aparato según la reivindicación 1, adaptado para realizar, sustituyendo la entrada de multiplicador Y_{0} por una entrada constante de cero, la multiplicación entera natural de A_{i} por B en el campo normal de enteros.
12. Aparato según la reivindicación 1, adaptado para realizar, sustituyendo la entrada de multiplicador Y_{0} por una entrada constante de cero, la multiplicación entera natural de A_{i} por B mientras que otro valor, S, que sale de un registro de n bits, puede sumarse con la misma para generar un valor A_{i} por B más S.
13. Aparato según la reivindicación 1, adaptado para realizar, sustituyendo la entrada de multiplicador Y_{0} por la salida de un registro de memoria para alimentar un operando C y sustituyendo el operando N por un operando D alternativo, la multiplicación entera natural de A_{i} por B y C por D mientras que otro valor, S, que sale de otro registro, puede sumarse con la misma en el campo normal de enteros para generar un valor A_{i} por B más C por D más S.
14. Aparato según la reivindicación 1, adaptado para realizar la multiplicación modular de Montgomery con solo una variable de Montgomery precalculadá y sin necesitar el uso de una constante J_{0} de Montgomery.
15. Aparato según la reivindicación 1, adaptado para calcular una constante J_{0} de Montgomery reajustando tanto el valor del operando A_{i} como el valor del operando B a cero y ajustando un valor de resultado parcial, So, a 1.
16. Aparato según la reivindicación 1, en el que dicho dispositivo está adaptado para realizar una exponenciación modular de tipo Montgomery.
ES98910967T 1997-05-04 1998-03-29 Aparato y metodo mejorados para la multiplicacion y exponenciacion modulares basadas en la multiplicacion de montgomery. Expired - Lifetime ES2293677T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IL12077697A IL120776A0 (en) 1997-05-04 1997-05-04 Apparatus and methods for modular multiplication and exponentiation based on montgomery multiplication
IL121311 1997-07-14
IL120776 1997-07-14
IL12131197A IL121311A (en) 1997-07-14 1997-07-14 Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication

Publications (1)

Publication Number Publication Date
ES2293677T3 true ES2293677T3 (es) 2008-03-16

Family

ID=26323418

Family Applications (1)

Application Number Title Priority Date Filing Date
ES98910967T Expired - Lifetime ES2293677T3 (es) 1997-05-04 1998-03-29 Aparato y metodo mejorados para la multiplicacion y exponenciacion modulares basadas en la multiplicacion de montgomery.

Country Status (9)

Country Link
US (1) US6185596B1 (es)
EP (1) EP1008026B1 (es)
JP (2) JP2001527673A (es)
KR (1) KR100684134B1 (es)
AT (1) ATE372541T1 (es)
AU (1) AU6516498A (es)
DE (1) DE69838390T2 (es)
ES (1) ES2293677T3 (es)
WO (1) WO1998050851A1 (es)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6317769B1 (en) * 1996-09-18 2001-11-13 International Business Machines Corporation Apparatus for calculating of Bc (mod n) with repeatedly shifting a holding value
CA2316227C (en) * 1998-01-02 2009-08-11 Cryptography Research, Inc. Leak-resistant cryptographic method and apparatus
US7587044B2 (en) * 1998-01-02 2009-09-08 Cryptography Research, Inc. Differential power analysis method and apparatus
EP1090480B1 (en) 1998-06-03 2019-01-09 Cryptography Research, Inc. Improved des and other cryptographic processes with leak minimization for smartcards and other cryptosystems
JP4216475B2 (ja) * 1998-07-02 2009-01-28 クリプターグラフィー リサーチ インコーポレイテッド 漏洩抵抗力を有する暗号索引付き鍵の更新方法及びデバイス
IL128007A (en) * 1999-01-11 2003-02-12 Milsys Ltd Enhancements on compact logic devices and also for accelerating and securing computations in modular arithmetic especially for use in public key cryptographic co-processors designed for elliptic curve and rsa type computations
FR2791157A1 (fr) * 1999-03-17 2000-09-22 St Microelectronics Sa Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
FR2791155B1 (fr) * 1999-03-17 2001-05-11 St Microelectronics Sa Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
FR2791156B1 (fr) 1999-03-17 2001-05-11 St Microelectronics Sa Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
IL135247A0 (en) * 2000-03-23 2003-06-24 Cipherit Ltd Method and apparatus for the calculation of modular multiplicative inverses
US7240204B1 (en) * 2000-03-31 2007-07-03 State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Scalable and unified multiplication methods and apparatus
US6691143B2 (en) 2000-05-11 2004-02-10 Cyberguard Corporation Accelerated montgomery multiplication using plural multipliers
JP4955182B2 (ja) * 2000-05-15 2012-06-20 サンディスク アイエル リミテッド 整数の計算フィールド範囲の拡張
FR2809894B1 (fr) * 2000-05-31 2002-10-25 France Telecom Procede de cryptographie, microcircuit pour carte a puce et cartes a puce incluant un tel microcircuit
IL140267A0 (en) 2000-12-13 2003-09-17 Milsys Ltd Dual processor trusted computing environment
US6963977B2 (en) * 2000-12-19 2005-11-08 International Business Machines Corporation Circuits and methods for modular exponentiation
US20020116429A1 (en) * 2000-12-19 2002-08-22 International Business Machines Corporation System and method for modular multiplication
US7607165B2 (en) * 2001-03-09 2009-10-20 The Athena Group, Inc. Method and apparatus for multiplication and/or modular reduction processing
FR2822260A1 (fr) * 2001-03-14 2002-09-20 Bull Sa Procedes et dispositifs pour accelerer le temps de calcul d'un produit de montgomery d'un multiplication et d'une exponentiation modulaire
JP3820909B2 (ja) * 2001-04-24 2006-09-13 ソニー株式会社 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム
DE10127195A1 (de) * 2001-06-05 2002-12-19 Infineon Technologies Ag Prozessor mit interner Speicherkonfiguration
US6917956B2 (en) * 2001-08-14 2005-07-12 Sun Microsystems, Inc. Apparatus and method for efficient modular exponentiation
US20030072442A1 (en) * 2001-10-01 2003-04-17 Blakley George Robert Cisponentiation method, software, and device for exponentiation
US7376235B2 (en) * 2002-04-30 2008-05-20 Microsoft Corporation Methods and systems for frustrating statistical attacks by injecting pseudo data into a data system
US20040010470A1 (en) * 2002-07-09 2004-01-15 Mills Charles A. Anti-piracy system for software and digital entertainment
KR100458031B1 (ko) * 2003-03-14 2004-11-26 삼성전자주식회사 몽고메리 유형의 모듈라 곱셈 장치 및 방법
US7050475B2 (en) * 2003-05-02 2006-05-23 Litelaser Llc Waveguide laser
CN1985458B (zh) * 2003-11-16 2013-05-08 桑迪斯克以色列有限公司 增强的自然蒙哥马利指数掩蔽和恢复的方法和装置
EP1692800B1 (en) 2003-11-16 2010-06-30 SanDisk IL Ltd Enhanced natural montgomery exponent masking
US7664810B2 (en) * 2004-05-14 2010-02-16 Via Technologies, Inc. Microprocessor apparatus and method for modular exponentiation
US7583717B2 (en) * 2004-08-30 2009-09-01 Videojet Technologies Inc Laser system
US7296359B2 (en) * 2004-10-27 2007-11-20 Videojet Technologies Laser alignment system and method
DE102006025569A1 (de) * 2005-10-28 2007-05-03 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen einer Multiplikations-Additions-Operation und zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE102006025713B9 (de) 2005-10-28 2013-10-17 Infineon Technologies Ag Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE102006025673B9 (de) 2005-10-28 2010-12-16 Infineon Technologies Ag Rechenwerk zum Reduzieren einer Eingabe-Zahl bezüglich eines Moduls
DE102006025677B4 (de) * 2005-10-28 2020-03-12 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer Summe mit einem Rechenwerk mit begrenzter Wortlänge
EP1975906B1 (en) 2006-01-13 2012-07-04 Fujitsu Ltd. Montgomery s algorithm multiplication remainder calculator
JP5027422B2 (ja) * 2006-02-09 2012-09-19 ルネサスエレクトロニクス株式会社 剰余演算処理装置
US7805479B2 (en) * 2006-03-28 2010-09-28 Michael Andrew Moshier Scalable, faster method and apparatus for montgomery multiplication
US8229109B2 (en) * 2006-06-27 2012-07-24 Intel Corporation Modular reduction using folding
US20080043406A1 (en) * 2006-08-16 2008-02-21 Secure Computing Corporation Portable computer security device that includes a clip
US7925011B2 (en) * 2006-12-14 2011-04-12 Intel Corporation Method for simultaneous modular exponentiations
US20080263115A1 (en) * 2007-04-17 2008-10-23 Horizon Semiconductors Ltd. Very long arithmetic logic unit for security processor
US8042025B2 (en) * 2007-12-18 2011-10-18 Intel Corporation Determining a message residue
US8626816B2 (en) * 2008-02-26 2014-01-07 International Business Machines Corporation Method, system and computer program product for detecting errors in fixed point division operation results
US8402078B2 (en) * 2008-02-26 2013-03-19 International Business Machines Corporation Method, system and computer program product for determining required precision in fixed-point divide operations
EP2334006B1 (en) * 2009-12-10 2016-03-23 Nxp B.V. Side-channel resistant modular exponentiation
FR2974201B1 (fr) 2011-04-18 2013-04-12 Inside Secure Circuit de multiplication de montgomery
FR2974202B1 (fr) 2011-04-18 2013-04-12 Inside Secure Procede de multiplication de montgomery
CN103699358B (zh) * 2013-12-05 2016-11-23 西安交通大学 一种适用于大数的快速模平方运算电路
US10025556B2 (en) * 2014-09-08 2018-07-17 Atmel Corporation Optimized multi-precision division
US11508263B2 (en) 2020-06-24 2022-11-22 Western Digital Technologies, Inc. Low complexity conversion to Montgomery domain
US11468797B2 (en) 2020-06-24 2022-10-11 Western Digital Technologies, Inc. Low complexity conversion to Montgomery domain
WO2022115108A1 (en) * 2020-11-27 2022-06-02 Pqsecure Technologies, Llc An architecture for small and efficient modular multiplication using carry-save adders
TWI802095B (zh) 2021-11-22 2023-05-11 財團法人工業技術研究院 模數乘法電路與對應之計算模數乘法之方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3621218A (en) * 1967-09-29 1971-11-16 Hitachi Ltd High-speed divider utilizing carry save additions
US4110832A (en) * 1977-04-28 1978-08-29 International Business Machines Corporation Carry save adder
US4514592A (en) 1981-07-27 1985-04-30 Nippon Telegraph & Telephone Public Corporation Cryptosystem
US4538238A (en) * 1983-01-18 1985-08-27 Honeywell Information Systems Inc. Method and apparatus for calculating the residue of a signed binary number
KR19990024971A (ko) * 1997-09-09 1999-04-06 정선종 모듈러 승산장치
CA2008774C (en) * 1989-01-30 1999-10-05 Hikaru Morita Modular multiplication method and the system for processing data
JP2710412B2 (ja) * 1989-06-20 1998-02-10 日本電気株式会社 乗除算回路
US5185714A (en) * 1989-09-19 1993-02-09 Canon Kabushiki Kaisha Arithmetic operation processing apparatus
US5101431A (en) 1990-12-14 1992-03-31 Bell Communications Research, Inc. Systolic array for modular multiplication
US5321752A (en) * 1991-09-05 1994-06-14 Canon Kabushiki Kaisha Method of and apparatus for encryption and decryption of communication data
IL101623A (en) * 1992-04-16 1997-06-10 Fortress U & T 2000 Ltd Digital signature device
US5513133A (en) * 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
US5349551A (en) * 1993-07-30 1994-09-20 The United States Of America As Represented By The Director Of National Security Agency Device for and method of preforming an N-bit modular multiplication in approximately N/2 steps
GB2332542B (en) * 1997-12-20 2002-08-07 Motorola Ltd Data processing system for performing multiplication and multiplication method

Also Published As

Publication number Publication date
DE69838390D1 (de) 2007-10-18
EP1008026B1 (en) 2007-09-05
KR20010012222A (ko) 2001-02-15
EP1008026A1 (en) 2000-06-14
ATE372541T1 (de) 2007-09-15
DE69838390T2 (de) 2008-05-29
AU6516498A (en) 1998-11-27
WO1998050851A1 (en) 1998-11-12
US6185596B1 (en) 2001-02-06
JP2009230153A (ja) 2009-10-08
KR100684134B1 (ko) 2007-02-16
JP2001527673A (ja) 2001-12-25
EP1008026A4 (en) 2000-06-14

Similar Documents

Publication Publication Date Title
ES2293677T3 (es) Aparato y metodo mejorados para la multiplicacion y exponenciacion modulares basadas en la multiplicacion de montgomery.
JP3636740B2 (ja) モジュラ・乗算を遂行するための超小形電子系装置、および超小形電子系装置を使用する方法
US6748410B1 (en) Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication
US7904719B2 (en) Extending the range of computational fields of integers
WO2000005645A1 (en) Circuit and method of modulo multiplication
US8078661B2 (en) Multiple-word multiplication-accumulation circuit and montgomery modular multiplication-accumulation circuit
EP0890147A1 (en) Co-processor for performing modular multiplication
EP0938790B1 (en) A method and device for executing a decrypting mechanism through calculating a standardized modular exponentiation for thwarting timing attacks
EP1068565B1 (en) Acceleration and security enhancements for elliptic curve and rsa coprocessors
CN101021777A (zh) 基于除数(2n-1)的有效求模操作运算
Höller et al. Hardware/software co-design of elliptic-curve cryptography for resource-constrained applications
US8626811B2 (en) Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine
US6766346B2 (en) System and method for computing a square of a number
US20070168411A1 (en) Reduction calculations
US20080263115A1 (en) Very long arithmetic logic unit for security processor
GB2318892A (en) Co-processor for performing modular multiplication
Gutub High speed hardware architecture to compute galois fields GF (p) montgomery inversion with scalability features
JP2003114618A (ja) データ処理装置
Mihajloska Trpcheska et al. Programmable processing element for crypto-systems on FPGAs
KR100400210B1 (ko) 디지털 서명을 위한 모듈라 곱셈장치
Põldre Cryptoprocessor PLD001
Lee et al. Efficient Architecture for Exponentiation and Division in GF (2 m) Using Irreducible AOP
Großschädl A new serial/parallel architecture for a low power modular multiplier
GB2318890A (en) Co-processor for performing modular multiplication
GB2318891A (en) Co-processor for performing modular multiplication