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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/728—Methods 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.
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.
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.
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};
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.
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.
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.
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
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:
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:
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
y a partir del lado
derecho:
por lo
tanto:
\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:
\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:
Se puede derivar el valor de H sustituyendo P
en la congruencia anterior. Se encuentra que:
(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:
(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):
[Tras la resta de N, si fuese
necesario:
Siguiendo lo anterior:
y:
Con el fin de que Z sea divisible por 2^{n}
(los n bits LS de Z son preferiblemente cero) existirá la
siguiente congruencia:
\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
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
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.
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:
\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
Por definición:
\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
por lo
tanto:
\vskip1.000000\baselineskip
y puesto que Z_{max} se divide
por
2^{k}:
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.
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.
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.
Se lleva a cabo la recuperación desde el campo P
calculando
De nuevo, inicialmente: S(0) = 0
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).
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:
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:
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:
Puesto que E(4) era impar, la última
multiplicación será por A, para eliminar el I^{-1}
parasitario.
Un método para calcular el parámetro H mediante
un proceso recíproco se describe en la patente estadounidense
5.513.133.
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
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.
\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]
\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.
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)
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)
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 |
-
1998
- 1998-03-29 AU AU65164/98A patent/AU6516498A/en not_active Abandoned
- 1998-03-29 DE DE69838390T patent/DE69838390T2/de not_active Expired - Lifetime
- 1998-03-29 AT AT98910967T patent/ATE372541T1/de not_active IP Right Cessation
- 1998-03-29 ES ES98910967T patent/ES2293677T3/es not_active Expired - Lifetime
- 1998-03-29 JP JP54788398A patent/JP2001527673A/ja not_active Withdrawn
- 1998-03-29 KR KR1019997010171A patent/KR100684134B1/ko not_active IP Right Cessation
- 1998-03-29 EP EP98910967A patent/EP1008026B1/en not_active Expired - Lifetime
- 1998-03-29 WO PCT/IL1998/000148 patent/WO1998050851A1/en active IP Right Grant
- 1998-04-01 US US09/050,958 patent/US6185596B1/en not_active Expired - Lifetime
-
2009
- 2009-06-12 JP JP2009140914A patent/JP2009230153A/ja active Pending
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 |