ES2299857T3 - Transicion entre representaciones enmascaradas de un valor durante calculos criptograficos. - Google Patents
Transicion entre representaciones enmascaradas de un valor durante calculos criptograficos. Download PDFInfo
- Publication number
- ES2299857T3 ES2299857T3 ES04764804T ES04764804T ES2299857T3 ES 2299857 T3 ES2299857 T3 ES 2299857T3 ES 04764804 T ES04764804 T ES 04764804T ES 04764804 T ES04764804 T ES 04764804T ES 2299857 T3 ES2299857 T3 ES 2299857T3
- Authority
- ES
- Spain
- Prior art keywords
- value
- masking
- masked representation
- mask
- masked
- 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
- 230000007704 transition Effects 0.000 title claims abstract description 72
- 238000000034 method Methods 0.000 claims abstract description 156
- 230000000873 masking effect Effects 0.000 claims abstract description 144
- 238000004364 calculation method Methods 0.000 claims abstract description 65
- 230000001419 dependent effect Effects 0.000 claims abstract description 9
- 230000015654 memory Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 abstract description 5
- 230000009466 transformation Effects 0.000 description 12
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 239000008000 CHES buffer Substances 0.000 description 2
- MKWKNSIESPFAQN-UHFFFAOYSA-N N-cyclohexyl-2-aminoethanesulfonic acid Chemical compound OS(=O)(=O)CCNC1CCCCC1 MKWKNSIESPFAQN-UHFFFAOYSA-N 0.000 description 2
- 239000000969 carrier Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Radar Systems Or Details Thereof (AREA)
Abstract
Método implementado por ordenador para la transición desde una primera representación enmascarada (y) de un valor (d) que ha de mantenerse secreto a una segunda representación enmascarada (v) del valor (d), en el que se impide que se espíe el valor (d) que ha de mantenerse secreto, en el que la primera representación enmascarada (y) se basa en una primera regla de enmascaramiento que presenta una primera máscara (x) y la segunda representación enmascarada (v) se basa en una segunda regla de enmascaramiento que presenta una segunda máscara (u), y en el que, al calcular la segunda representación enmascarada (v), se utiliza al menos una tabla (T, C) previamente calculada que presenta una pluralidad de entradas y el cálculo se lleva a cabo dependiendo de al menos un parámetro de ocultación (z).
Description
Transición entre representaciones enmascaradas
de un valor durante cálculos criptográficos.
La invención se refiere en general al campo de
la criptografía, y más en particular al campo de proteger cálculos
criptográficos de ser espiados. La invención se refiere
especialmente a la transición entre representaciones enmascaradas
de un valor, basándose las representaciones enmascaradas en
diferentes reglas en diferentes reglas de enmascaramiento. La
invención es especialmente adecuada para su utilización en un
portador de datos portátil tal como una tarjeta inteligente, por
ejemplo, en diferentes diseños, o un módulo de chip.
Los métodos de encriptación tales como IDEA
(algoritmo internacional de encriptación de datos, International
Data Encryption Algorithm), SAFER K-64 y RC5 así
como algoritmos hash tales como MD5 o SHA-1 ejecutan
cálculos criptográficos en los que los datos de carga útil y los
datos de clave se combinan entre sí mediante una serie de
diferentes operaciones de cálculo. En este caso, se utilizan
frecuentemente las operaciones de cálculo Xor_{L},
Add_{M} y Mult_{M}. La operación Xor_{L}
es la operación or exclusiva en cuanto a bits sobre L bits; ésta
corresponde a la suma en (Z/2Z)^{L}. La operación
Add_{M} es la suma módulo un módulo M \in
Z, y la operación Mult_{M} es la multiplicación
módulo un módulo M \in Z. Los casos L = 8, 16, 32 son de
particular importancia para Xor_{L}, los casos M = 2^{8},
2^{16}, 2^{32} son de particular importancia para
Add_{M}, y los casos M = 2^{8}+1, 2^{16} +1 son de
particular importancia para Mult_{M}.
Además, en el método IDEA se utiliza una
multiplicación modificada, en el que esta multiplicación modificada
se designa por el símbolo infijo \otimes . Esta multiplicación
IDEA se define por d \otimes d' I^{-1}
(Mult_{M}(I(d), I(d')) para d,
d' \in {0, ..., 2^{16}-1}, el módulo
M = 2^{16}+1 y la siguiente "transformación I":
La multiplicación IDEA tiene ventajas
criptográficas, porque garantiza que el valor cero no está contenido
en el intervalo de datos de la multiplicación Mult_{M} que
se lleva a cabo, y además, porque se utiliza un número primo como
el módulo M.
Si se llevan a cabo operaciones de cálculo tales
como las que se acaban de mencionar utilizando datos no protegidos,
puede hacerse una inferencia hacia atrás para los operandos y el
resultado con la ayuda de SPA (análisis de potencia simple,
Simple Power Analysis) o DPA (análisis de potencia
diferencial, Differential Power Analysis). De esta manera,
puede espiarse claves o información secreta. Los métodos SPA y DPA
se basan en medir el consumo de potencia mientras que se ejecutan
cálculos criptográficos utilizando un dispositivo controlado
mediante programa. En el caso de un ataque SPA, se analiza una única
ejecución de cálculo. Sin embargo, en un ataque DPA, sin embargo,
se evalúan estadísticamente una pluralidad de ejecuciones de
cálculo. En la elección de palabras del presente documento, los
métodos de ataque relacionados en los que, además de o en lugar de
consumo de potencia, se mide al menos otro parámetro físico, también
se denominan como métodos SPA o DPA, respectivamente.
Como una medida contra tales ataques, la
oportunidad presenta en sí, alterar los datos que han protegerse de
ser espiados mediante un valor que, como regla, se selecciona
aleatoriamente. Este valor se conoce como una "máscara", y el
algoritmo de cálculo, según qué datos que han de protegerse se
procesan junto con la máscara con el fin de obtener una
representación enmascarada de los datos que han de protegerse, en el
presente documento, se denomina como una "regla de
enmascaramiento". Las etapas de cálculo criptográfico se llevan a
cabo entonces utilizando los datos enmascarados. Si un atacante
logra identificar los valores procesados en las etapas de cálculo
criptográfico, entonces este espionaje se refiere sólo a
representaciones enmascaradas y no a los datos que han de a
protegerse de ser espiados.
La regla de enmascaramiento Xor_{L} y
la regla de enmascaramiento Add_{M} se emplean
frecuentemente para ocultar o camuflar datos. En la regla de
enmascaramiento Xor_{L}, denominada también como
"enmascaramiento booleano", el valor d que va a protegerse se
representa mediante una representación enmascarada y con la
máscara x, que normalmente se selecciona aleatoriamente, de
tal manera que se cumple que y = Xor_{L} (x,
d). En la regla de enmascaramiento Add_{M}, denominada
también como "enmascaramiento aritmético", el valor d
que va a protegerse se representa mediante una representación
enmascarada y con la máscara x, que normalmente se
selecciona aleatoriamente, de tal manera que 0\leq x \leq
M-1 y se cumple que y = Add_{M} (x,
d). Una ligera modificación de la regla de enmascaramiento
Add_{M} es la regla de enmascaramiento Sub_{M},
en la que se elige y = Sub_{M} (d, x), donde
Sub_{M} (d, x) es el número no negativo más pequeño
y para el que se cumple que Add_{M} (x, y) =
d.
Se entiende que la regla de enmascaramiento
respectiva que se utiliza tiene que ser compatible con la etapa de
cálculo o la serie de etapas de cálculo que van a realizarse. Este
es el caso si, por ejemplo, la etapa de cálculo o la serie de
etapas de cálculo, puede(n) aplicarse también, con ligeras
modificaciones como mucho, a la representación enmascarada del
valor que va a protegerse y entonces da como resultado esencialmente
la representación enmascarada del resultado deseado. Por tanto, por
ejemplo, la regla de enmascaramiento Xor_{L} es claramente
compatible con las etapas de cálculo de or exclusiva y permutaciones
de bits, aunque no con operaciones de suma o multiplicación.
Sin embargo, al ejecutar métodos criptográficos
complejos, tal como se citó en la introducción, las series de
etapas de cálculo se alternan frecuentemente las cuales son sólo
compatibles con diferentes reglas de enmascaramiento. Por lo tanto,
en la interfaz entre tales series de etapas, tiene que efectuarse
una transición entre representaciones enmascaradas de un valor que
va a protegerse que se basan en diferentes reglas de
enmascaramiento. El problema en este caso es diseñar la transición
de reglas de enmascaramiento, de tal manera que un atacante no pueda
obtener ninguna información útil referente a los datos que han de
protegerse.
A partir del documento WO 02/51064 A1 se conocen
métodos para la transición de reglas de enmascaramiento desde una
regla de enmascaramiento booleano a una regla de enmascaramiento
aritmético y viceversa. En una primera disposición, se utiliza en
la misma una tabla, tabla que, para una máscara dada fija, mapea una
representación enmascarada según la primera regla de
enmascaramiento sobre la representación enmascarada correspondiente
según la segunda regla de enmascaramiento. En una segunda
disposición, se aplica una tabla de este tipo a secciones de
valores que presentan una longitud de bits mayor que la longitud de
bits del índice de tabla. Además, en este caso, se emplea una tabla
de acarreo.
El artículo "On Boolean and Arithmetic
Masking against Differential Power Analysis" de J. S. Coron y
L. Goubin, divulgado en el desarrollo de la conferencia del
"Workshop on Cryptographic Hardware and Embedded Systems 2000
(CHES 2000)", volumen 1965 de "Lecture Notes in Computer
Science", Springer-Verlag, 2000, páginas 231
a 237, describe un método para la transición desde una regla de
enmascaramiento booleano a una regla de enmascaramiento aritmético
en la que una máscara, que depende de un parámetro de ocultación, se
introduce en el transcurso del cálculo o bien complementada o bien
no complementada. En este artículo, se hace referencia a un posible
ataque DPA contra este método.
A partir del artículo "A Sound Method for
Switching between Boolean and Arithmetic Masking" de L.
Goubin, divulgado en el desarrollo de la conferencia del
"Workshop on Cryptographic Hardware and Embedded Systems 2001
(CHES 2001)", volumen 2162 de "Lecture Notes in Computer
Science", Springer-Verlag, 2001, páginas 3 a
15, se conocen métodos de cálculo para la transmisión entre reglas
de enmascaramiento booleano y aritmético, que, en dicho artículo,
se las califica como seguras frente a ataques DPA.
El documento DE 198 22 217 A1 describe un método
para proteger datos de ser espiados en el que se revierte el
enmascaramiento antes de que se lleven a cabo operaciones que no son
compatibles con la regla de enmascaramiento utilizada.
La pluralidad de diferentes fuentes de
información de las que el atacante puede hacer uso potencialmente,
es una dificultad particular al proteger la transición de reglas de
enmascaramiento de ser espiada. Existe el problema de que, durante
el transcurso del cálculo, tanto los estados de las variables como
los cambios de estado de las variables así como los bits de estado
de un procesador, y los cambios de los mismos, deberían mantenerse
estadísticamente independientes de los datos que han de protegerse.
A este respecto, los "bits de estado" se refieren a los bits
de registro de procesador (indicadores) que indican por ejemplo, un
acarreo, o la presencia de un número negativo, u otra propiedad que
dependa de un resultado de cálculo. Si simplemente una de estas
fuentes potenciales de información no se bloquea, entonces siendo
habiendo riesgo de un análisis DPA satisfactorio.
La considerable restricción de recursos que está
presente, en particular, en tarjetas inteligentes y otros
portadores de datos portátiles, presenta una dificultad adicional.
Sería deseable diseñar la transición de reglas de enmascaramiento
con respecto a la potencia de cálculo necesaria así como con
respecto al espacio de memoria necesario para el programa y para
datos auxiliares tan eficazmente como sea posible y tan
económicamente como sea posible en términos de almacenamiento,
respectivamente.
Por consiguiente, la invención tiene el objetivo
de resolver los problemas mencionados anteriormente, completamente
o en parte, y de proporcionar una técnica para proteger la
transición entre representaciones enmascaradas de un valor,
basándose las representaciones enmascaradas en diferentes reglas de
enmascaramiento, de ser espiada. En realizaciones preferidas, esta
técnica ha de estar adaptada particularmente a las condiciones
reales presentes en portadores de datos portátiles.
Según la invención, este objetivo se consigue,
completamente o en parte, mediante un método que comprende las
características de la reivindicación 1, un método que comprende las
características de la reivindicación 4, un producto de programa
informático según la reivindicación 15 y un dispositivo, en
particular un portador de datos portátil, según la reivindicación
16. Las reivindicaciones dependientes se refieren a realizaciones
preferidas de la invención.
La invención, según un primer aspecto, se basa
en la idea fundamental de que al calcular la segunda representación
enmascarada se utiliza al menos una tabla calculada previamente y de
que el cálculo se lleva a cabo dependiendo de al menos un parámetro
de ocultación. Sorprendentemente, mediante esta combinación, puede
impedirse de manera segura que los datos que han de mantenerse
secretos sean espiados.
La invención, según un segundo aspecto, se basa
en la idea fundamental de utilizar al menos una tabla de
comparación, que, para cada índice de tabla, proporciona el
resultado de una comparación entre un valor que depende del índice
de tabla y un valor que depende de al menos un valor de
enmascaramiento. Utilizando una tabla de este tipo, también es
posible proteger un cálculo de ser espiado con requisitos de memoria
aceptables.
La transición según la invención se lleva a cabo
desde una primera regla de enmascaramiento a una segunda regla de
enmascaramiento y desde una primera máscara a una segunda máscara.
Normalmente, la primera regla de enmascaramiento es diferente de la
segunda regla de enmascaramiento, puesto que de otro modo, no sería
necesaria ninguna transición de reglas de enmascaramiento. La
primera máscara y la segunda máscara pueden ser la misma o
diferentes. En realizaciones preferidas la segunda máscara puede
seleccionarse libremente; puede, por ejemplo, ser un parámetro de
entrada del método de transición. De esta manera, puede aumentarse
adicionalmente la seguridad del cálculo criptográfico puesto que,
además de la transición de reglas de enmascaramiento, se lleva a
cabo una transición de máscaras para una segunda máscara
seleccionada nuevamente, por ejemplo, una segunda máscara
seleccionada aleatoriamente.
En algunas realizaciones, la tabla o tablas
utilizadas pueden predefinirse y, por ejemplo, cargarse en el
portador de datos en el transcurso de inicializar o personalizar el
portador de datos. Preferiblemente, sin embargo, la tabla o tablas
se calcula(n) y almacena(n) en una etapa preparatoria
del método. Dicha etapa del método puede tener lugar inmediatamente
antes de la transición de reglas de enmascaramiento, o puede tener
lugar poco antes de la transición de reglas de enmascaramiento.
Puede utilizarse una tabla o un conjunto de tablas para varias
transiciones de reglas de enmascaramiento, donde puede ser
aconsejable, sin embargo, por razones de seguridad, calcular nuevas
tablas o conjuntos de tablas de vez en cuando o después de un número
predeterminado de transiciones.
Se consigue un grado de seguridad
particularmente alto si cada entrada en la tabla, o en al menos una
de las tablas, respectivamente, depende de al menos un valor de
enmascaramiento predeterminado. Este valor de enmascaramiento, o
cada uno de los valores de enmascaramiento, respectivamente, se
determina(n) preferiblemente de manera aleatoria. En algunas
realizaciones, el valor de enmascaramiento puede considerarse como
una máscara adicional a la que se adapta la tabla.
Para aumentar el grado de seguridad de ser
espiado, también puede preverse el uso de, durante el transcurso
del cálculo, al menos un resultado intermedio para una etapa de
cálculo adicional, donde el resultado intermedio se utiliza,
dependiendo del parámetro de ocultación, o bien de una manera
complementada o bien de una manera no complementada.
Si se utiliza una tabla de comparación, entonces
en realizaciones preferidas un valor que se introduce en el
resultado de comparación almacenado en la tabla depende del valor de
enmascaramiento o bien complementado o bien no complementado. De
esta manera, el transcurso del cálculo y los datos procesador
durante el cálculo se ocultan adicionalmente. La tabla de
comparación puede diseñarse para ser particularmente económica en
cuanto a requisitos de memoria si cada entrada proporciona un
resultado de comparación en la forma de un valor binario, es decir,
un único bit.
Con el fin de conseguir requisitos de memoria
aceptables para almacenar la tabla, la tabla comprende
preferiblemente bastante menos entradas que las que podrían
direccionarse por la longitud de bits de las máscaras y/o
representaciones enmascaradas. En realizaciones preferidas, tienen
lugar entonces accesos repetidos a la tabla, en las que, para cada
acceso, algunos bits de un resultado intermedio se evalúan y forman
la base para el acceso a la tabla. En tales realizaciones, la
longitud de bits de las máscaras y/o representaciones enmascaradas
es un múltiplo, preferiblemente un múltiplo entero, de la longitud
de bits del índice de tabla, es decir, el logaritmo con base 2 del
número de entradas direccionables en la tabla.
También, en una tabla de comparación, la
longitud de bits del índice de tabla es de manera preferible
considerablemente menor que la longitud de bits de las variables
utilizadas en el transcurso del cálculo. En realizaciones
preferidas, entonces se aplica repetidamente la tabla de
comparación a secciones de bits sucesivas de un resultado intermedio
con el fin de determinar un valor de acarreo para cada sección de
bits. Los valores de acarreo determinados de esta manera pueden
evaluarse individualmente, o pueden combinarse en un valor de
acarreo común para todo el cálculo.
En realizaciones ventajosas de la invención,
mientras se mantiene la primera regla de enmascaramiento, tiene
lugar inicialmente una transición desde la primera a una tercera
máscara, en la que la tercera máscara se adapta a la disposición de
la al menos una tabla. La al menos una tabla se utiliza entonces
para llevar a cabo la transición a la segunda regla de
enmascaramiento. Con esto, en algunas realizaciones, una transición
lleva a una cuarta máscara, estando predeterminada la transición por
la disposición de la tabla. Por lo tanto, en una etapa adicional,
aunque manteniendo preferiblemente la segunda regla de
enmascaramiento, se cambia la representación enmascarada, de tal
manera que ya no se basa en la cuarta máscara, sino en la segunda
máscara deseada. También se contemplan realizaciones de este método
en las que la primera máscara y la tercera máscara son idénticas
y/o la segunda máscara y la cuarta máscara son idénticas.
El producto de programa informático según la
invención presenta instrucciones de programa con el fin de
implementar el método según la invención. Tal producto de programa
informático puede ser un medio material, por ejemplo, una memoria
de semiconductores, un disquete o un CD-ROM. Sin
embargo, el producto de programa informático también puede ser un
medio no material, por ejemplo, una señal transportada a través de
una red informática. El producto de programa informático puede, en
particular, contener instrucciones de programa que, en el transcurso
de la fabricación, inicialización o personalización de un portador
de datos portátil, se introducen en el
mismo.
mismo.
El dispositivo según la invención puede, en
particular, ser un portador de datos portátil, por ejemplo, una
tarjeta inteligente o un módulo de chip. Un portador de datos de
este tipo comprende de una manera que es conocida como tal, al
menos un procesador, varias memorias formadas mediante diferentes
tecnologías y diversos conjuntos auxiliares tales como, por
ejemplo, circuitos de interfaz, generadores de sincronismo y
elementos de conexión.
En desarrollos adicionales preferidos, el
producto de programa informático y/o el dispositivo
comprende(n) características que corresponden a las
características mencionadas en la presente descripción y/o las
características enumeradas en las reivindicaciones dependientes del
método.
Características, objetivos y ventajas
adicionales de la invención son evidentes a partir de la siguiente
descripción de varias realizaciones de muestra y realizaciones
alternativas. Las siguientes secciones A a G se refieren a:
Sección A, un ejemplo de comparación de un
método para la transición desde una regla de enmascaramiento
Add_{2^{L}} a una regla de enmascaramiento
Xor_{L},
Sección B, una primera realización de muestra de
la invención para la transición desde la regla de enmascaramiento
Add_{2^{L}} la regla de enmascaramiento
Xor_{L},
Sección C, una segunda realización de muestra de
la invención para la transición desde la regla de enmascaramiento
Add_{2^{L}} la regla de enmascaramiento
Xor_{L},
Sección D, una realización de muestra de la
invención para la transición desde la regla de enmascaramiento
Add_{2^{L}} una regla de enmascaramiento
Add_{2^{L}+1},
Sección E, una realización de muestra de la
invención para la transición desde la regla de enmascaramiento
Add_{2^{L}+1} la regla de enmascaramiento
Add_{2^{L}},
Sección F, una realización de muestra de la
invención para la transición desde una regla de enmascaramiento
Add_{2^{L}} una regla de enmascaramiento I(-), y
Sección G, una realización de muestra de la
invención para la transición desde la regla de enmascaramiento
I(-) a la regla de enmascaramiento Add_{2^{L}}.
En el presente documento se utilizan los
siguientes nombres y notaciones:
N\hskip0,4cm conjunto de números
naturales
Z\hskip0,4cm conjunto de enteros
V(L) el conjunto de secuencias de bits de
longitud L para L en N. Una secuencia de bits
x \in V(L) también se considera como un número en
el intervalo 0, 1, ..., 2^{L-1} en virtud del
mapeado (x_{L-1}, ..., x_{0})
|\rightarrow
x_{L-1}2^{L-1}+...+x_{0},
de tal manera que V(L) se corresponde con el conjunto de
números {0, 1, ..., 2^{L-1}}.
x[i] El bit
i^{primero/segundo/tercero/cuarto}x_{i} de x =
(x_{L-1}, ..., x_{0}) \in
V(L) para i = 0, ..., L-1.
x\oplus_{L}y Notación infija
para Xor_{L} (x,y).
x +_{L}y Notación infija para
Add_{L} (x,y).
Sub_{L} (x,y) el menor número no
negativo z para el que se cumple que y +_{L}z
= x.
x -_{L}y Notación infija para
Sub_{L} (x,y).
\overline{x} El complemento de uno
x\oplus_{L} (1, ..., 1); a menudo, simplemente se utiliza
el término "complemento" en el presente documento en lugar de
"complemento de uno".
(x|y) Concatenación de las secuencias de bits
de x e y.
Los métodos descritos en las secciones A a C se
refieren en cada caso a la transición desde una regla de
enmascaramiento Add_{2^{L}} a una regla de
enmascaramiento Xor_{L}. Supóngase L en N y M =
2^{L}; en la práctica, el valor de L es 8 ó 16 ó 32 en la
mayoría de los casos.
Los parámetros de entrada de los tres métodos
descritos en las secciones A a C son en cada caso los valores
x, y y u, donde y es una representación
enmascarada de un valor secreto d \in V(L) con una
regla de enmascaramiento Add_{M} y una máscara x; lo
que quiere decir que se cumple que x +_{M} d =
y. El valor u \in V(L) designa la máscara,
con respecto a la cual la representación enmascarada que ha de
calcularse nuevamente ha a expresarse después de la transición de
reglas de enmascaramiento.
Como sus salidas respectivas, los métodos
descritos en las secciones A a C en casa caso generan un valor
v \in V(L), que representa la representación
enmascarada del valor secreto d con la regla de
enmascaramiento Xor_{L} y la máscara u; lo que
quiere decir que se cumple que u \oplus_{L} v =
d.
El método descrito como un ejemplo de
comparación en la presente sección A, funciona utilizando una tabla
"grande". Debido a la alta demanda de espacio de memoria así
como la gran cantidad de tiempo implicado en calcular la tabla,
este método, cuando se ejecuta mediante un portador de datos
portátil, puede llevarse a la práctica como mucho para valores de
L pequeños, por ejemplo, hasta L=8. La descripción
dada aquí sirve principalmente para proporcionar una mejor
comprensión de las realizaciones de muestra que se describirán en
las secciones B a G.
En el método descrito aquí, se genera una tabla
T en etapas preparatorias (A.a) y (A. b), cuyas entradas se
refieren a la transición desde la regla de enmascaramiento
Add_{2^{L}}, con una máscara r seleccionada
aleatoriamente, a la regla de enmascaramiento Xor_{L}, con
una máscara s seleccionada aleatoriamente. Los números
aleatorios r, s también se denominan "valores de
enmascaramiento":
- (A.a)
- Seleccionar números aleatorios r, s \in V(L).
- (A.b)
- Generar la tabla T[0, ..., 2^{L} -1] con:
T(i) = Xor_{L} (Sub_{M}
(i, r), s) para i = 0, ..., (2^{L} -1).
La transición de reglas de enmascaramiento tiene
lugar en las etapas siguientes (A.1) a (A.3). En la etapa (A.1), la
representación enmascarada y se convierte a partir de la
máscara x en la máscara r dada por la tabla T. En la
etapa (A.2), la transición desde la regla de enmascaramiento
Add_{2^{L}} a la regla de enmascaramiento Xor_{L}
tiene lugar por medio de un acceso a la tabla. En la etapa (A.3), el
resultado intermedio o recogido de la tabla T se convierte a
partir de la máscara s, tal como viene dado por la tabla T,
en una representación enmascarada con respecto a la máscara
u deseada:
- (A.1)
- Calcular i = Sub_{M} (Add_{M} (y, r), x ).
- (A.2)
- Fijar o = T(i).
- (A.3)
- Calcular v = Xor_{L} (s, Xor_{L} (o, u) ).
El método impide ataques DPA. Al ejecutar el
método, los estados y las transiciones de estados de los bits de
estado de un procesador son, en particular, independientes del valor
secreto d.
Los métodos descritos en las secciones
siguientes B a G representan un desarrollo adicional significativo
del método que se describe en este momento. En particular, en estos
métodos se utilizan tablas "más pequeñas", y el cálculo de
elementos i y o de transición de máscaras está formado
por varias operaciones de acceso a tablas.
Los siguientes comentarios respecto a posibles
modificaciones del método aquí descrito son aplicables análogamente
a los métodos descritos en las secciones B a G.
En una realización alternativa, puede preverse
que la tabla T se construya utilizando T(i) =
Xor_{L} (Add_{M} (i, r), s)) en
lugar de T(i) = Xor_{L} (Sub_{M} (i,
r), s). En este caso, se entiende que los cálculos
adicionales necesitan adaptarse correspondientemente.
En una realización alternativa adicional, el
cálculo i = Add_{M} (Sub_{M} (r, x),
y) también puede realizarse en la etapa (A.1) en lugar de
i = Sub_{M} (Add_{M} (y, r),
x). En cada caso, ambas operaciones no deberían ejecutarse
inmediatamente una después de la otra. Además, es ventajoso borrar
el registro de estado del procesador en una etapa intermedia, puesto
que de otro modo el cambio del bit de acarreo dependería de los
datos.
En lugar de v = Xor_{L}
(s, Xor_{L} (o, u)) en la etapa (A.3),
también puede realizarse el cálculo v =
Xor _{L} (o, Xor _{L} (s,
u)) con los mismos efectos en realizaciones alternativas.
Además, en realizaciones alternativas del
método, pueden ahorrarse algunas etapas de cálculo si se
utiliza(n) x = r y/o u = s.
En la realización de muestra que va a
describirse ahora, el método de la sección A se adapta al efecto de
que, en lugar de una tabla "grande", se utilizan una tabla T
"pequeña" de conversión y una tabla C de comparación
adicional. La tabla C de comparación contiene información referente
a un acarreo que se produce en ciertas etapas de cálculo. Cada
entrada en la tabla C de comparación está formada por sólo un único
bit. En una implementación concreta del método, por ejemplo, cada
ocho entradas de tabla pueden resumirse en un byte de memoria, o la
tabla C de comparación puede configurarse utilizando bits que no son
necesarios en otras estructuras de
datos.
datos.
El tamaño de las tablas T y C se fija
normalmente cuando se implementan los métodos descritos en el
presente documento. Con este fin, el número l de bits
procesados en cada ejecución de conversión se seleccionada como un
factor "pequeño" de L. En la presente realización de
muestra, l es el ancho de bits del índice i de tabla,
y el número de entradas en cada tabla T, C asciende a 2^{l}.
Además, las entradas de la tabla T de conversión tienen el mismo
ancho l de bits. En implementaciones típicas, por ejemplo,
pueden utilizarse los valores (L, l) = (32, 8), (16, 8) o
(16, 4). Además, supóngase k = L/l y m =
2^{l}. En realizaciones variantes, puede preverse que el tamaño
2^{l} de la tabla no se fije completamente durante la
implementación, sino que en su lugar se determine el valor l,
que posiblemente depende de un parámetro adecuado, sólo en tiempo
de ejecución.
Al seleccionar el valor l, debería
considerarse que valores l pequeños provocan una gran
cantidad de esfuerzo de cálculo en el método de transición de
máscaras y poco esfuerzo de cálculo en la preparación; para valores
grandes de l, sucede lo contrario. Además, el gasto en cuanto
a requisitos de memoria para las tablas T y C es más pequeño cuando
menor sea el valor l seleccionado. En total, el valor
l debería, como regla, fijarse de tal manera que, con
requisitos de memoria aceptables, el tiempo de cálculo total
necesario sea tan pequeño como sea posible.
Si se utilizan la inclusión natural de {0, ...,
M-1} en {0,..., 2^{L'}-1} y la proyección
natural de {0, ..., 2^{L'}-1} a {0, ...,
M-1} para un valor L' > L, respectivamente,
entonces también puede utilizarse una factorización L' =
kl en realizaciones alternativas. Por ejemplo, esto en
ventajoso en casos en los que L no tiene un factor l
adecuado. Se entiende que las puntualizaciones hechas en el párrafo
actual y los dos párrafos anteriores también son aplicables de
manera correspondiente a los métodos descritos en las secciones C a
G.
Las etapas (B.a) a (B.c) se ejecutan en la
preparación del método aquí descrito. En las etapas (B.a) y (B.b),
los valores de enmascaramiento r, s y el parámetro de
ocultación z se seleccionan aleatoriamente, y en la etapa
(B.c), las tablas T, C se forman basándose en estos valores. Al
calcular ambas tablas T, C, en la etapa (B.c), los valores de
enmascaramiento r, s se utilizan de una manera complementada
si el parámetro de ocultación z presenta el valor "1",
y los valores de enmascaramiento r, s se utilizan de una
manera no complementada si el parámetro de ocultación z
presenta el valor "0":
- (B.a)
- Seleccionar dos números aleatorios r, s \in V(l) como valores de enmascaramiento.
- (B.b)
- Seleccionar un bit aleatorio z \in {0, 1} como un parámetro de ocultación.
- (B.c)
- Generar las tablas T[0, ..., m-1] y C[0, ..., m-1] con:
La transición de reglas de enmascaramiento se
realiza mediante las siguientes etapas (B.1) a (B.10). A este
respecto, en las etapas (B.1) y (B.3) se llevan a cabo diferentes
cálculos dependiendo del valor del parámetro de ocultación
z. Las etapas (B.5) a (B.9) forman un bucle en el que una
sección de ancho de l bits de dos resultados intermedios de
ancho de L bits g y y' se procesa en cada paso.
Como resultado, los l bits de la representación enmascarada
v que va a calcularse se determinan en cada paso del
bucle:
\vskip1.000000\baselineskip
El método descrito aquí impide los ataques DPA
puesto que, durante el transcurso del cálculo, ambos bits c
y \tilde{c} así como todos de los bits de estado del procesador
que ejecuta el cálculo así como los resultados intermedios son
independientes del valor secreto d, dado que los valores
aleatorios x, u, r, s, z varían de manera independiente.
Como regla, si son necesarias varias
transiciones de reglas de enmascaramiento en un método
criptográfico, las etapas preparatorias (B.a) a (B.c) necesitan
ejecutarse sólo una vez, al principio. Las tablas T y C pueden
utilizarse entonces para cada transición de reglas de
enmascaramiento, por lo que el gasto global se reduce
considerablemente. Cuando se utilizan las mismas máscaras x
y/o u para un número de transiciones de reglas de
enmascaramiento, entonces las etapas (B.1) y/o (B.2) pueden
realizarse para todas estas transiciones juntas como etapas
preparatorias.
En realizaciones variantes, puede preverse que
la tabla T se defina utilizando T(i) = Xor_{l}
(Add_{m} (i, r ...), s ...) en lugar
de utilizar T(i) = Xor_{l} (Sub_{m}
(i, r ...), s ...). En este caso, la
definición de c y las etapas de cálculo del método adicional tienen,
por supuesto, que ajustarse de manera correspondiente.
Según una realización alternativa adicional, el
valor g en la etapa (B.1) también puede escribirse como una
expresión en r e y en lugar de una expresión en
r y x, si se realizan los ajustes correspondientes
para las etapas de cálculo adicionales.
El método puede además modificarse con el efecto
de que, en la etapas (B.1) y (B.2), en lugar de trabajar utilizando
(r|...|r) y (s|...|s), se
utilicen k valores diferentes para cada uno de los valores
de enmascaramiento, es decir, que se haga uso de (r_{k}|
... |r_{1} ) y ( s_{k}| ...|s_{1}
). Sin embargo, en este caso es necesario generar y almacenar un
número correspondiente de tablas T_{i} y C_{i}
(i = 1, ..., k).
Las etapas (B.1) a (B.3) son, en el método aquí
descrito, cálculos sobre V(L). En realizaciones alternativas,
cada una de estas etapas puede ejecutarse, respectivamente,
mediante k operaciones sobre V(l).
Como una alternativa a la etapa (B.6),
(i_{k}| ... | i_{1}) = Sub_{M}
(y, g) también puede calcularse antes de ejecutar el
bucle. En este caso, puede establecerse i = i_{j} en
el cuerpo del bucle, en cada paso. Sin embargo, este proceso de
cálculo ofrece menos protección contra ataques DPA.
Como una alternativa a la generación única del
bit aleatorio z como el parámetro de ocultación en la etapa
preparatoria (B.b), el parámetro de ocultación z también
puede seleccionarse nuevamente de manera aleatoria en cada
transformación de regla de enmascaramiento. Las modificaciones
necesarias para esta alternativa se explican en la sección C
siguiente.
\vskip1.000000\baselineskip
En el método descrito en la sección B anterior,
la tabla C de comparación de un bit de ancho se genera en adición a
la tabla T, que comprende valores V(l). Si el valor l
es el mismo que el ancho de palabra del procesador utilizado, o es
un múltiplo entero o un factor entero del mismo, puede ser
problemático encontrar una estructura de datos adecuada para la
tabla C. Por lo tanto, el método descrito en la presente sección, a
diferencia del método de la sección B, se adapta de tal manera que
las entradas en la tabla T sólo tienen un ancho de bits de
l-1. Esto tiene la ventaja de que ambas tablas T y C pueden
configurarse en un único campo en la memoria, presentando el campo
m entradas de l bits cada una.
\newpage
De nuevo, el método utiliza los valores l,
k y m como puntos de partida que, como regla, se han
fijado cuando se implementa el método como una decisión de diseño.
Como en la sección B, supóngase el valor l un factor
"pequeño" de L, por ejemplo, (L, l) = (32, 8),
(16, 8), (16, 4), y supóngase k = L/l y
m=2^{l}. En la preparación se ejecutan las siguientes
etapas (C.a) y (C.b):
(C.a) Seleccionar números aleatorios r
\in V(l) y s \in V(l-1) como
valores de enmascaramiento.
(C.b) Generar las tablas T[0, ...,
m-1] y C[0, ..., m-1] con:
La operación "Sub_{m}(i, r)
>> 1" en la etapa (C.b) designa, en este caso, desplazar su
operando Sub_{m}(i, r) una posición de bit,
concretamente a la derecha o a la izquierda, respectivamente, de
tal manera que se pierde el bit menos significativo.
La transición de reglas de enmascaramiento se
ejecuta mediante las siguientes etapas (C.1) a (C.12). En el método
descrito en la sección B, las etapas (C.1) y (C.2) ya se ejecutaban
en asociación con las etapas preparatorias (B.b) y (B.c), mientras
que las etapas (C.3) a (C.12) corresponden en líneas generales a las
etapas (B.1) a (B.10):
\vskip1.000000\baselineskip
Como la tabla T en el presente método contiene
valores de V(l-1), se deja espacio en cada entrada para un
bit adicional en cada una, que puede utilizarse para almacenar el
valor de la tabla C. La etapa (C.10) puede ejecutarse entonces con
una única operación de acceso a memoria. En total, el método es, por
lo tanto, particularmente eficaz en relación con la aritmética
computacional y el acceso al almacenamiento.
Las notas realizadas en la sección B anterior
referentes al método allí descrito se aplican análogamente al
presente método.
En la etapa (C.1) del método descrito aquí, el
parámetro de ocultación z se elige nuevamente para cada
transformación de máscara como un bit aleatorio. Esta técnica puede
utilizarse análogamente para el método según la sección B. Por otro
lado, la técnica descrita en la sección B, concretamente la técnica
de seleccionar aleatoriamente el parámetro de ocultación z
ya en las etapas preparatorias y dejar que el parámetro de
ocultación z influya en las tablas T y C, también puede
utilizarse en una realización alternativa del método que se
describe en este momento.
En lugar del valor r'[0], un bit
aleatorio, en una realización alternativa, también puede emplearse
en la etapa (C.4) en el cálculo de h. Dicho bit aleatorio
debe también utilizarse entonces en lugar de i[0] en la etapa
(C.11).
Las secciones D y E se refieren a la transición
entre la regla de enmascaramiento Add_{2^{L}} y la regla de
enmascaramiento Add_{2^{L}+1}. Las siguientes dos
observaciones se utilizarán para M en N, donde la
observación (*) es relevante para la presente sección y la
observación (**) es relevante para la sección E:
A partir de las observaciones (*) y (**) puede
derivarse que el resultado de comparación c depende
significativamente del valor d que ha de mantenerse secreto.
Por lo tanto, existe el problema de calcular
Sub_{M+1}(b, c) o Add_{M}(b, c),
respectivamente, de tal manera que no exista correlación entre el
valor secreto d y los resultados intermedios y/o los bits de
estado de un procesador, lo que resulta de las etapas individuales
del cálculo.
Si el cálculo de 300 (b, a)
se soporta mediante una instrucción de comparación del procesador
que es segura frente a DPA, entonces la transición de reglas de
enmascaramiento puede tener lugar en ambas direcciones según las
observaciones (*) y (**). A este respecto, los valores se utilizan
preferiblemente de una manera complementada o no complementada,
dependiendo de un bit aleatorio.
Sin embargo, en vista del tema que se trata,
debería suponerse que el consumo de energía del procesador cuando
se ejecuta una instrucción de comparación depende del resultado de
la comparación o de la diferencia b-a,
respectivamente. Los métodos descritos en la presente sección y en
la siguiente sección realizan la transición de reglas de
enmascaramiento para valores de módulo que tienen la forma de
M = 2^{L}, L en N, de una manera que es
segura frente a DPA. Tales valores de módulo son útiles en la
práctica; frecuentemente se cumple que L = 8 o L = 16
o L = 32. Los requisitos de espacio de memoria de los métodos
son moderados.
El método descrito en la presente sección recibe
tres valores x, y y u como parámetros de entrada,
donde y es una representación enmascarada de un valor secreto
d \in V(L) con la regla de enmascaramiento
Add_{M} y una máscara x; lo que quiere decir que se
cumple que x +_{M}d = y. El valor u \in
{0, 1, ..., M} \subset V(L+1) proporciona la
máscara, con respecto a la cual la representación enmascarada que
va a calcularse nuevamente ha de expresarse después de la transición
de reglas de enmascaramiento. Como una salida, el método genera un
valor v \in V(L+1) que representa la representación
enmascarada del valor secreto d utilizando la regla de
enmascaramiento Add_{M+1} y la máscara u; lo que
quiere decir que se cumple que u +_{M+1}d =
v.
De nuevo, se genera una tabla C de comparación
en las etapas preparatorias del método (D.a) a (D.c), cuyo cálculo
se basa en un parámetro de ocultación z seleccionado
aleatoriamente y un valor de enmascaramiento r seleccionado
aleatoriamente. En este caso, se ha fijado un factor "pequeño"
l de L, por ejemplo (L, l) = (32, 8), (16, 8),
(16, 4) cuando se implementa el método. En lo sucesivo, se hace
referencia al valor L/l como k. Se hace
referencia al valor máximo del índice i de tabla como
m con m = 2^{l}; la tabla C de comparación
comprende m+1 entradas, presentando cada entrada un bit:
La transición de reglas de enmascaramiento se
ejecuta mediante las siguientes etapas (D.1) a (D.9). En este caso,
en la etapa (D.1) se calcula una representación enmascarada b
del valor d utilizando la máscara a. Las etapas (D.4)
y (D.5) forman un bucle, durante el cual se calcula el valor de
comparación c, expresado en una forma oculta como c'
con c'=c \oplus_{l} z. En las etapas (D.6) a
(D.8) la transición a la regla de enmascaramiento
Add_{M+1} se lleva a cabo según la observación (*)
calculando el valor Sub_{M+1}(b, c) de una manera
oculta. En la etapa (D.9), mientras se mantiene la regla de
enmascaramiento Add_{M+1}, la máscara a se
transforma en la máscara u deseada:
Similar a los métodos según las secciones B y C,
también es aconsejable, en el presente método, ejecutar el cálculo
de (b'_{k} | ... | b'_{1} ) en las etapas
(D.1), (D.2) y/o el cálculo de v = ( v_{k} | ...
| v_{1} ) en la etapa (D. 9) individualmente para cada
b'_{j} y v_{k}, respectivamente. Esto también
puede realizarse dentro del bucle formado por las etapas (D.4) y
(D.5).
En el cálculo oculto de Sub_{M+1}(b,
c), c se resta de u en las etapas (D.6) a (D.8), y
entonces se suma a b. En este caso, se utiliza la relación
c = c' \oplus_{l} z. Debería tenerse cuidado de que
c no se procese desenmascarado y también, de que no surjan
otras dependencias entre z y c'.
Todos los cálculos pueden implementarse sin
problemas de tal manera que no haya distinciones de casos que
dependan de los datos o números aleatorios. Si también es necesaria
una transición de reglas de enmascaramiento desde Add_{M}
a Xor_{L} en el transcurso del método criptográfico, y si
uno de los métodos descritos en las secciones B o C se utiliza con
este fin, entonces la tabla C ya existiría, hasta la primera entrada
que ha de añadirse, dado que se elige el mismo parámetro
l.
El método, cuando se implementa cuidadosamente,
impide los ataques DPA puesto que todos los valores c' y los
bits de estado del procesador que se establecen y se despejan
durante el transcurso del cálculo, son independientes del valor
d que ha de protegerse.
Como una alternativa a la generación única del
bit aleatorio z como un parámetro de ocultación en la etapa
preparatoria (D.a), el parámetro de ocultación z también
puede seleccionarse aleatoriamente nuevamente para cada
transformación de regla de enmascaramiento. Las modificaciones
necesarias para esto se explican en la siguiente sección E; son
aplicables de manera correspondiente también al método descrito en
la presente sección.
El método descrito en la presente sección
ejecuta una transformación de regla de enmascaramiento en una
dirección opuesta a la dirección del método de la sección D. El
presente método utiliza la observación (**) de la sección D
anterior.
Supóngase L en N, y supóngase
M = 2^{L}. El método recibe los valores x, y y
u como valores de entrada, donde y es una
representación enmascarada de un valor secreto d \in {0,
1,..., M} \subset V(L+1) con la regla de
enmascaramiento Add_{M+1} y la máscara x; lo que
quiere decir que se cumple que x +_{M+1}d =
y. El valor u \in V(L) proporciona la
máscara de la representación enmascarada que va a calcularse. Como
su salida, el método genera un valor v \in V(L) para
el que se cumple que u+_{M}d = v. Dicho de
otro modo, v es la representación enmascarada del valor
secreto d utilizando la regla de enmascaramiento Add_{M} y
la máscara u.
El método se describe aquí utilizando los
parámetros l, k y m, cuyos valores ya se han
fijado, como regla, cuando se implementa el método. El valor
l es un factor "pequeño" de L, por ejemplo
(L, l) = (32, 8), (16, 8) o (16, 4). Los valores
k y m vienen dados por k = L/l y
m = 2^{l}. En las etapas preparatorias (E.a) y (E.b) del
método, se genera una tabla C de comparación para un valor de
enmascaramiento r seleccionado aleatoriamente:
- (E.a)
- Seleccionar un número aleatorio r \in V(l) como un valor de enmascaramiento.
- (E.b)
- Generar la tabla C[0, ..., m] con:
-
9
La transición de reglas de enmascaramiento se
ejecuta mediante las siguientes etapas (E.1) a (E.11). Se determina
un parámetro de ocultación z en la etapa (E.1), influyendo
también el parámetro de ocultación z en los siguientes
cálculos. En la etapa (E.3) se calcula una representación
enmascarada b del valor d utilizando una máscara
a, formada a partir de r y z. Las etapas (E.6)
y (E.7) forman un bucle, durante el cual se calcula el valor de
comparación c, expresado en una forma oculta como c'.
En las etapas (E.8) a (E.10), la transición a la regla de
enmascaramiento Add_{M} se lleva a cabo según la
observación (**) calculando el valor
Add_{M}(b,c) de una manera oculta. En la
etapa (E.11), mientras se mantiene la regla de enmascaramiento
Add_{M}, la máscara a se transforma en la máscara
u
deseada:
deseada:
Similar a los métodos según las secciones B y C,
también es aconsejable en el presente método ejecutar el cálculo de
(b'_{k}|...| b'_{1} ) en las etapas (E.3),
(E.4) y/o el cálculo de v = ( v_{k} | ... |
v_{1}) en la etapa (E.11) individualmente para cada
b'_{j} y v_{k}, respectivamente. Este cálculo
también puede tener lugar dentro del bucle formado por las etapas
(E.6) y (E.7).
En el cálculo oculto de Add_{M}(b,
c), en las etapas (E.8) a (E.10), c se suma a u,
que entonces se suma a b. En este caso, se utiliza la
relación c = c' \oplus_{l} b_{k+1}
\oplus_{l} z. Debería tenerse cuidado de que c no
se procese desenmascarado y también de que no se produzcan otras
dependencias entre z y c.
Todos los cálculos pueden implementarse sin
problemas de tal manera que no haya distinciones de casos que
dependan de los datos o números aleatorios. Si también es necesario
un intercambio de regla de enmascaramiento desde Add_{M} a
Xor_{L} en el transcurso del método criptográfico, y si uno
de los métodos descritos en las secciones B o C se utiliza con este
fin, entonces la tabla C ya existiría, hasta la primera entrada que
ha de añadirse, siempre que se elija el mismo parámetro
l.
En una realización alternativa, la etapa (E.8)
puede implementarse como 100 también es posible una
modificación correspondiente para el método descrito en la sección
D.
En el método descrito aquí, el parámetro de
ocultación z se selecciona nuevamente en la etapa (E.1) como
un bit aleatorio para cada transformación de máscara. Esta técnica
puede utilizarse análogamente en el método según la sección D. Por
otro lado, la técnica descrita en la sección D, concretamente la
técnica de seleccionar aleatoriamente el parámetro de ocultación
z ya en las etapas preparatorias y dejar que el parámetro de
ocultación z influya en la tabla C de comparación, también
puede utilizarse en una realización alternativa del método que se
describe en este momento.
Las secciones F y G se refieren a la transición
entre la regla de enmascaramiento Add_{2^{L}} y una regla
de enmascaramiento a la que se hace referencia en el presente
documento como la regla de enmascaramiento I(-): esta
transición es necesaria, en particular, para el método IDEA y la
multiplicación IDEA definidos en la introducción del presente
documento.
Para M en N, supóngase que la
transformación I_{M}: {0, 1, ..., M-1} \rightarrow
{1, 2, 3, ..., M} se define por I_{M} (0) =
M e I_{M} (d) = d para d \neq
0. Para M = 2^{16}, I_{M} corresponde a la
transformación I del método IDEA definido en la introducción
del presente documento. Por simplicidad, en lugar de
I_{M}, simplemente se utilizará en lo sucesivo la
designación I.
Según la regla de enmascaramiento I(-),
el valor d que ha de protegerse se representa mediante una
representación enmascarada y utilizando una máscara
x, que normalmente se selecciona aleatoriamente, de tal
manera que se cumple que y = Add_{M+1} (x,
I(d)).
Los métodos de transición descritos en las
secciones F y G se basan en las dos observaciones siguientes para
M en N, que son similares a las dos observaciones (*)
y (**) ya dadas anteriormente:
Similar a las secciones D y E anteriores, existe
el problema de calcular Sub_{M+1} (b, c) o
Add_{M} (b, c), respectivamente, de una manera que
sea segura frente a DPA.
El método descrito en la presente sección está
previsto para M = 2^{L}. El método recibe tres valores
x, y y u como parámetros de entrada, donde y es
una representación enmascarada de un valor secreto d \in
V(L) con la regla de enmascaramiento Add_{M} y una
máscara x; lo que quiere decir que se cumple que x
+_{M}d = y. El valor u \in {0, 1, ..., M}
\subset V(L+1) proporciona la máscara sobre la cual la
representación enmascarada, que va a calcularse nuevamente, ha de
expresarse después de la transición de reglas de enmascaramiento.
Como una salida, el método genera un valor v \in
V(L+1), que representa la representación enmascarada del
valor secreto d utilizando la regla de enmascaramiento
I(-) y la máscara u; lo que quiere decir que se
cumple que u +_{M+1} I(d) = v.
El método comprende las etapas preparatorias
(F.a) y (F.b) así como las etapas (F.1) a (F.11) para la transición
de reglas de enmascaramiento. Debido a la similitud de las
observaciones (*) y (***), el presente método es muy similar al
descrito en la sección D. La diferencia ocasionada por la regla de
enmascaramiento I(-) radica simplemente en la etapa (F.5),
que se modifica comparada con la etapa (D.3).
Una diferencia adicional al método descrito en
la sección D es que el parámetro de ocultación z no sólo se
selecciona aleatoriamente una vez en una etapa preparatoria, sino
que se selecciona nuevamente en cada transformación de regla de
enmascaramiento. Esta posibilidad ya se citó en la sección D como
una realización alternativa del método que se describe en dicha
sección, y el presente método puede servir como un modelo para
cambios necesarios. Por supuesto, el presente método, similar al de
la sección D o también al descrito en la siguiente sección G, puede
modificarse de tal manera que el parámetro de ocultación z se
determine anteriormente, concretamente en las etapas
preparatorias.
preparatorias.
El método se describe aquí utilizando los
parámetros l, k y m, cuyos valores, como regla, ya se
han fijado cuando se implementa el método. El valor l es un
factor "pequeño" de L, por ejemplo, (L, l) =
(16, 8) o (16, 4). Los valores k y m vienen dados por
k = L/l y m = 2^{l}. Las etapas
preparatorias (F.a) y (F.b) del método son:
- (F.a)
- Seleccionar un número aleatorio rV(l) como un valor de enmascaramiento.
- (F.b)
- Generar la tabla de comparación C [0, ..., m] con:
\vskip1.000000\baselineskip
-
12
\vskip1.000000\baselineskip
Para la transición de reglas de enmascaramiento,
se ejecutan las siguientes etapas (F.1) a (F.11):
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
Las notas e indicaciones dadas en la sección D
se aplican de manera correspondiente al método descrito aquí.
\vskip1.000000\baselineskip
El método descrito en la presente sección
ejecuta una transformación de regla de enmascaramiento en una
dirección que es opuesta a la dirección del método en la sección F.
El presente método utiliza la observación (****) de la sección F
anterior.
Supóngase L en N, y supóngase
M = 2^{L}. El método recibe los valores x, y y
u como valores de entrada, donde y es una
representación enmascarada de un valor secreto d \in
V(L) con la regla de enmascaramiento I(-) y la
máscara x; lo que quiere decir que se cumple que
I(d)+_{M+1}x=y. El valor u \in
V(L) proporciona la máscara de la representación enmascarada
que va a calcularse. Como una salida, el método genera un valor
v \in V(L) para el que se cumple
u +_{M}d = v. Dicho de otro modo, v es la representación enmascarada del valor secreto d con la regla de enmascaramiento Add_{M} y la máscara u.
u +_{M}d = v. Dicho de otro modo, v es la representación enmascarada del valor secreto d con la regla de enmascaramiento Add_{M} y la máscara u.
El método comprende las etapas preparatorias
(G.a) a (G.c) y las etapas (G.1) a (G.9) para la transición de
reglas de enmascaramiento. Debido a la similitud de las
observaciones (**) y (****), el presente método es muy similar al
descrito en la sección E. La diferencia ocasionada por la regla de
enmascaramiento I(-) radica simplemente en las etapas (G.1)
y (G.3), que se modifican comparadas con las etapas (E.3) y (E.5)
correspondientes.
Una diferencia adicional al método descrito en
la sección E es que, en el presente método, el parámetro de
ocultación z no se selecciona aleatoriamente en cada
transformación de regla de enmascaramiento, sino sólo una vez en la
etapa preparatoria (G.a). Esta posibilidad ya se citó en la sección
E como una realización alternativa del método que se describe en
dicha sección, y el presente método puede servir como un modelo
para los cambios necesarios. Por supuesto, el presente método,
similar al descrito en la sección E o también al descrito en la
sección F anterior, puede modificarse de tal manera que la
transformación de regla de enmascaramiento real comprenda la
determinación del parámetro de ocultación z.
El método se describe aquí utilizando los
parámetros l, k y m, cuyos valores ya se han
fijado, como regla, cuando se implementa el método. El valor
l es un factor "pequeño" de L, por ejemplo (L,
l) = (16, 8) o (16, 4). Los valores k y m vienen
dados por k = L/l y m = 2^{l}. Las etapas
preparatorias (G.a) a (G.c) del método son:
\vskip1.000000\baselineskip
Para la transición de reglas de enmascaramiento,
se ejecutan las siguientes etapas (G.1) a (G.9):
Las notas e indicaciones dadas en las sección E
se aplican de manera correspondiente al método descrito aquí.
A partir del ejemplo dado en las siguientes
tablas 1 a 4 está claro que en el método que se describe en este
momento, todos los valores u' y todos los valores de bits de
estado de un procesador que se producen durante el transcurso del
cálculo sin independientes del valor secreto d. Por lo tanto,
el método, cuando se implementa cuidadosamente, es seguro frente a
un ataque DPA.
Los detalles citados en las secciones A a G
anteriores no deberían tomarse como restricciones del alcance de
protección de la invención, sino que en su lugar deberían servir
como ejemplos de realizaciones preferidas. Muchas otras
modificaciones son posibles y obvias para el experto. Por tanto, los
métodos descritos pueden modificarse fácilmente, por ejemplo, de
tal manera que puedan utilizarse para la regla de enmascaramiento
Sub_{M} ya mencionada en la introducción del presente
documento, en lugar de la regla de enmascaramiento
Add_{M}. Además, las modificaciones y notas expuestas
anteriormente en asociación con un método de transición también
son, como regla, aplicables de manera correspondiente a los otros
métodos. Por lo tanto, el alcance de la invención no debería
determinarse por las realizaciones de muestra descritas, sino por
las reivindicaciones adjuntas y sus equivalentes.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
Claims (16)
1. Método implementado por ordenador para la
transición desde una primera representación enmascarada (y)
de un valor (d) que ha de mantenerse secreto a una segunda
representación enmascarada (v) del valor (d), en el
que se impide que se espíe el valor (d) que ha de mantenerse
secreto, en el que la primera representación enmascarada (y)
se basa en una primera regla de enmascaramiento que presenta una
primera máscara (x) y la segunda representación enmascarada
(v) se basa en una segunda regla de enmascaramiento que
presenta una segunda máscara (u), y en el que, al calcular la
segunda representación enmascarada (v), se utiliza al menos
una tabla (T, C) previamente calculada que presenta una pluralidad
de entradas y el cálculo se lleva a cabo dependiendo de al menos un
parámetro de ocultación (z).
2. Método según la reivindicación 1,
caracterizado porque cada entrada en la tabla o cada entrada
en al menos una de las tablas (T, C), respectivamente, depende de
al menos un valor de enmascaramiento (r, s)
predeterminado.
3. Método según la reivindicación 2,
caracterizado porque la tabla o al menos una de las tablas,
respectivamente, es una tabla (C) de comparación que, para cada
índice (i) de tabla, proporciona el resultado de una
comparación entre un valor dependiente del índice (i) de
tabla y un valor dependiente del valor de enmascaramiento o al
menos uno de los valores de enmascaramiento (r, s),
respectivamente.
4. Método implementado por ordenador para la
transición desde una primera representación enmascarada (y)
de un valor (d) que ha de mantenerse secreto a una segunda
representación enmascarada (v) del valor (d), en el
que se impide que se espíe el valor (d) que ha de mantenerse
secreto, en el que la primera representación enmascarada (y)
se basa en una primera regla de enmascaramiento que presenta una
primera máscara (x) y la segunda representación enmascarada
(v) se basa en una segunda regla de enmascaramiento que
presenta una segunda máscara (u), comprendiendo el método la
etapa de ejecutar un cálculo utilizando al menos una tabla (C) de
comparación que proporciona, para cada índice (i) de tabla,
el resultado de una comparación entre un valor dependiente del
índice (i) de tabla y un valor dependiente de al menos un
valor de enmascaramiento (r, s).
5. Método según la reivindicación 3 o la
reivindicación 4, caracterizado porque el valor dependiente
del valor de enmascaramiento o al menos uno de los valores de
enmascaramiento (r, s), respectivamente, depende del valor
de enmascaramiento (r, s) o bien complementado o bien no
complementado, dependiendo del parámetro de ocultación (z) o
de al menos uno de los parámetros de ocultación,
respectivamente.
6. Método según una cualquiera de las
reivindicaciones 3 a 5, caracterizado porque cada entrada en
la tabla (C) de comparación proporciona un valor binario.
7. Método según una cualquiera de las
reivindicaciones 3 a 6, caracterizado porque la tabla (C) de
comparación se aplica repetidamente a secciones sucesivas de un
resultado intermedio, con el fin de determinar valores de acarreo
respectivos.
8. Método según una cualquiera de las
reivindicaciones 1 a 7, caracterizado porque al determinar la
segunda representación enmascarada (v), se utiliza al menos
un resultado intermedio de una manera complementada o no
complementada, dependiendo del parámetro de ocultación (z) o
de al menos uno de los parámetros de ocultación,
respectivamente.
9. Método según una cualquiera de las
reivindicaciones 1 a 8, caracterizado porque un índice (i) de
tabla de la tabla o de al menos una de las tablas (T, C),
respectivamente, presenta una longitud de bits que asciende a una
fracción de la longitud de bits de la primera y/o la segunda
representación enmascarada (y, v), y porque al determinar la
segunda representación enmascarada (v) tiene lugar un acceso
repetido a la tabla o al menos una de las tablas (T, C),
respectivamente.
10. Método según una cualquiera de las
reivindicaciones 1 a 9, caracterizado porque el método
comprende las etapas de:
- determinar una tercera representación
enmascarada del valor (d) que ha de mantenerse secreto, donde
la tercera representación enmascarada se basa en la primera regla
de enmascaramiento que presenta una tercera máscara;
- transformar la tercera representación
enmascarada en una cuarta representación enmascarada del valor
(d) que ha de mantenerse secreto utilizando la tabla o al
menos una de las tablas (T, C), respectivamente, donde la cuarta
representación enmascarada se basa en la segunda regla de
enmascaramiento que presenta una cuarta máscara; y
- determinar la segunda representación
enmascarada (v) del valor (d) que ha de mantenerse
secreto a partir de la cuarta representación enmascarada.
11. Método según una cualquiera de las
reivindicaciones 1 a 10, caracterizado porque la segunda
máscara (u) puede seleccionarse libremente.
12. Método según una cualquiera de las
reivindicaciones 1 a 11, caracterizado porque la tabla o al
menos una de las tablas (T, C), respectivamente, se predetermina o
se calcula en una etapa preparatoria del método.
13. Método según una cualquiera de las
reivindicaciones 1 a 12, caracterizado porque, mientras se
ejecuta el método, los valores de bits de estado de un procesador
son estadísticamente independientes del valor (d) que ha de
mantenerse secreto.
14. Método según una cualquiera de las
reivindicaciones 1 a 13, caracterizado porque el método sirve
para la protección contra ataques SPA y/o DPA.
15. Producto de programa informático que
presenta una pluralidad de instrucciones de programa que provocan
que al menos un procesador ejecute un método según una cualquiera de
las reivindicaciones 1 a 14.
16. Dispositivo, en particular un portador de
datos portátil, que presenta al menos un procesador y al menos una
memoria, donde el dispositivo está adaptado para ejecutar un método
según una cualquiera de las reivindicaciones 1 a 14.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10341096A DE10341096A1 (de) | 2003-09-05 | 2003-09-05 | Übergang zwischen maskierten Repräsentationen eines Wertes bei kryptographischen Berechnungen |
DE10341096 | 2003-09-05 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2299857T3 true ES2299857T3 (es) | 2008-06-01 |
Family
ID=34223401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES04764804T Expired - Lifetime ES2299857T3 (es) | 2003-09-05 | 2004-09-03 | Transicion entre representaciones enmascaradas de un valor durante calculos criptograficos. |
Country Status (6)
Country | Link |
---|---|
US (1) | US8290145B2 (es) |
EP (1) | EP1664979B1 (es) |
AT (1) | ATE384302T1 (es) |
DE (2) | DE10341096A1 (es) |
ES (1) | ES2299857T3 (es) |
WO (1) | WO2005024606A1 (es) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE521432C2 (sv) * | 1999-06-03 | 2003-11-04 | Alfa Laval Corp Ab | Sätt att ställa in ett gränsskikts radiella nivå i en centrifugalseparator |
EP1836554B1 (en) * | 2004-12-01 | 2008-04-16 | Telecom Italia S.p.A. | Method and related device for hardware-oriented conversion between arithmetic and boolean random masking |
DE102004061312B4 (de) * | 2004-12-20 | 2007-10-25 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Detektieren eines potentiellen Angriffs auf eine kryptographische Berechnung |
CA2688592C (en) * | 2007-10-01 | 2014-04-15 | Research In Motion Limited | Substitution table masking for cryptographic processes |
US8473751B2 (en) * | 2007-12-13 | 2013-06-25 | Oberthur Technologies | Method for cryptographic data processing, particularly using an S box, and related device and software |
JP4837058B2 (ja) * | 2009-03-10 | 2011-12-14 | 株式会社東芝 | 演算装置及びプログラム |
EP2634953A1 (en) * | 2012-03-02 | 2013-09-04 | Gemalto SA | Countermeasure method against side channel analysis for cryptographic algorithms using boolean operations and arithmetic operations |
FR2994608B1 (fr) * | 2012-08-16 | 2015-09-04 | Oberthur Technologies | Procede de traitement cryptographique comprenant un acces securise a une pluralite de tables de substitution, dispositifs et produit programme d'ordinateur correspondants. |
US9886593B2 (en) * | 2013-08-02 | 2018-02-06 | Yevgeniya (Virginia) Mushkatblat | Data masking systems and methods |
US11126933B2 (en) * | 2015-04-28 | 2021-09-21 | Ncr Corporation | Reservation processing |
FR3048529B1 (fr) * | 2016-03-01 | 2018-03-23 | Ingenico Group | Procede de modulation d'acces a une ressource, dispositif et programme correspondant |
DE102017002153A1 (de) * | 2017-03-06 | 2018-09-06 | Giesecke+Devrient Mobile Security Gmbh | Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung |
US11985225B2 (en) * | 2018-05-14 | 2024-05-14 | Nchain Licensing Ag | Computer-implemented systems and methods for using veiled values in blockchain |
DE102022115195A1 (de) | 2022-06-17 | 2023-12-28 | Infineon Technologies Ag | Verarbeitung von kryptografischen Daten |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59200549A (ja) * | 1983-04-26 | 1984-11-13 | Fujitsu Ltd | ブロツク化デ−タのスクランブル方式 |
FR2650458B1 (fr) * | 1989-07-25 | 1991-10-11 | Trt Telecom Radio Electr | Procede de traitement d'une permutation irreguliere de donnees protegees par chiffrement |
US5452358A (en) * | 1994-02-08 | 1995-09-19 | Apple Computer, Inc. | Method and apparatus for improving the security of an electronic codebook encryption scheme utilizing a data dependent encryption function |
DE19822217B4 (de) | 1998-05-18 | 2018-01-25 | Giesecke+Devrient Mobile Security Gmbh | Zugriffsgeschützter Datenträger |
IL139935A (en) * | 1998-06-03 | 2005-06-19 | Cryptography Res Inc | Des and other cryptographic processes with leak minimization for smartcards and other cryptosystems |
JP2001013870A (ja) * | 1999-06-29 | 2001-01-19 | Nec Corp | 共通鍵暗号化又は復号化方法と、共通鍵暗号化又は復号化プログラムを記録した記憶媒体 |
US6295606B1 (en) * | 1999-07-26 | 2001-09-25 | Motorola, Inc. | Method and apparatus for preventing information leakage attacks on a microelectronic assembly |
AU773982B2 (en) * | 1999-10-25 | 2004-06-10 | Cyphermanx Consultants Limited | Method for making data processing resistant to extraction of data by analysis of unintended side-channel signals |
FR2809893B1 (fr) * | 2000-06-02 | 2002-11-15 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique sur courbe elliptique |
US20020114451A1 (en) * | 2000-07-06 | 2002-08-22 | Richard Satterfield | Variable width block cipher |
US7000111B1 (en) * | 2000-11-07 | 2006-02-14 | Ericsson Inc. | Method for masking secret multiplicands |
FR2818472B1 (fr) * | 2000-12-19 | 2003-02-14 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete |
JP4596686B2 (ja) * | 2001-06-13 | 2010-12-08 | 富士通株式会社 | Dpaに対して安全な暗号化 |
FR2828608B1 (fr) * | 2001-08-10 | 2004-03-05 | Gemplus Card Int | Procede securise de realisation d'une operation d'exponentiation modulaire |
US7142670B2 (en) * | 2001-08-14 | 2006-11-28 | International Business Machines Corporation | Space-efficient, side-channel attack resistant table lookups |
US7257590B2 (en) * | 2001-08-29 | 2007-08-14 | Nokia Corporation | Method and system for classifying binary strings |
DE102004023902A1 (de) | 2004-05-13 | 2005-12-01 | Giesecke & Devrient Gmbh | Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung |
-
2003
- 2003-09-05 DE DE10341096A patent/DE10341096A1/de not_active Withdrawn
-
2004
- 2004-09-03 DE DE502004005976T patent/DE502004005976D1/de not_active Expired - Lifetime
- 2004-09-03 US US10/570,744 patent/US8290145B2/en active Active
- 2004-09-03 ES ES04764804T patent/ES2299857T3/es not_active Expired - Lifetime
- 2004-09-03 AT AT04764804T patent/ATE384302T1/de not_active IP Right Cessation
- 2004-09-03 EP EP04764804A patent/EP1664979B1/de not_active Expired - Lifetime
- 2004-09-03 WO PCT/EP2004/009852 patent/WO2005024606A1/de active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
EP1664979A1 (de) | 2006-06-07 |
WO2005024606A1 (de) | 2005-03-17 |
ATE384302T1 (de) | 2008-02-15 |
DE502004005976D1 (de) | 2008-03-06 |
EP1664979B1 (de) | 2008-01-16 |
US20070058800A1 (en) | 2007-03-15 |
DE10341096A1 (de) | 2005-03-31 |
US8290145B2 (en) | 2012-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2299857T3 (es) | Transicion entre representaciones enmascaradas de un valor durante calculos criptograficos. | |
Aranha et al. | LadderLeak: Breaking ECDSA with less than one bit of nonce leakage | |
Longa et al. | Four-dimensional gallant-lambert-vanstone scalar multiplication | |
Goundar et al. | Scalar multiplication on Weierstraß elliptic curves from Co-Z arithmetic | |
US20100058477A1 (en) | System and method for revising boolean and arithmetic operations | |
Kammler et al. | Designing an ASIP for cryptographic pairings over Barreto-Naehrig curves | |
EP2884387B1 (en) | Efficient modular addition resistant to side-channel attacks | |
US20090310775A1 (en) | Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations | |
PT1068695E (pt) | PROCESSO DE PROTECÃO DE UM CONJUNTO ELECTRËNICO DE CRIPTOGRAFIA COM CHAVE SECRETA CONTRA OS ATAQUES POR ANáLISE FSICA | |
KR100442218B1 (ko) | 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 | |
CN106656467A (zh) | 加密装置及方法 | |
Yang et al. | Symmetric key cryptography on modern graphics hardware | |
Hutter et al. | NaCl’s crypto_box in hardware | |
Guinet et al. | Arybo: Manipulation, canonicalization and identification of mixed boolean-arithmetic symbolic expressions | |
Jalali et al. | NEON SIKE: Supersingular isogeny key encapsulation on ARMv7 | |
US20050232416A1 (en) | Method and device for determining a result | |
US20080010332A1 (en) | EFFICIENT COMPUTATION OF THE MODULO OPERATION BASED ON DIVISOR (2n-1) | |
Walter | Some security aspects of the MIST randomized exponentiation algorithm | |
Milo et al. | A fast, GPU based, dictionary attack to OpenPGP secret keyrings | |
Brumley | Faster software for fast endomorphisms | |
Oliveira et al. | Software implementation of Koblitz curves over quadratic fields | |
Regazzoni et al. | Instruction set extensions for secure applications | |
Seo et al. | SIKE in 32-bit ARM processors based on redundant number system for NIST level-II | |
Xu et al. | High-throughput block cipher implementations with SIMD | |
Pereida García et al. | Size, Speed, and Security: An Ed25519 Case Study |