ES2888429T3 - Desarrollo parcial para seguridad de software - Google Patents
Desarrollo parcial para seguridad de software Download PDFInfo
- Publication number
- ES2888429T3 ES2888429T3 ES16305629T ES16305629T ES2888429T3 ES 2888429 T3 ES2888429 T3 ES 2888429T3 ES 16305629 T ES16305629 T ES 16305629T ES 16305629 T ES16305629 T ES 16305629T ES 2888429 T3 ES2888429 T3 ES 2888429T3
- Authority
- ES
- Spain
- Prior art keywords
- parts
- units
- calculation units
- driving value
- computer program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 22
- 238000004590 computer program Methods 0.000 claims abstract description 22
- 238000000034 method Methods 0.000 claims abstract description 18
- 230000004224 protection Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 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
-
- 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/16—Obfuscation or hiding, e.g. involving white box
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/302—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
Método para proteger un programa informático en el que se van a ejecutar una pluralidad de N unidades de cálculo dependiendo de un valor impulsor (DV), siendo el valor impulsor (DV) una secuencia de valores de condición que tienen N unidades (abaabbabbbabbaaba), cada unidad tiene V posibles valores, en los que V >= 2 el valor impulsor (DV) está dedicado a manejar datos sensibles, cada una de la pluralidad de N unidades de cálculo que comprende un código para realizar cálculos mediante el uso de datos sensibles y susceptible de permitir la fuga de datos sensibles, siendo dicho método caracterizado por que comprende los pasos de: - desenrollar (S1) k1 + ... + ki + ... + kn partes de unidades de cálculo, donde cada una de las partes de ki tiene Pi unidades de cálculo, Pi ≠ P (i + 1), i = 1, 2,. ..n, n> 1, N = k1 x P1 + ... + ki x Pi + ... + kn x Pn, con Pi> 1 y Pi <N y, al reescribirlos en una secuencia equivalente de unidades de cálculo proteger los datos sensibles, dicho paso de desenrollado (S1) resulta en VP1 + ... + VPi+ ... VPn posibles partes de las unidades de cálculo (AA, AB, BA, BB, AA, AAB, ABA, ABB, BAA, BAB, BBA, BBB), - introducir, en el programa informático protegido, las instrucciones correspondientes a la VP1+ ... + VPi+ ... VPn posibles partes de las unidades de cálculo; y además introduciendo en el programa de computadora protegido instrucciones para: - procesar el valor impulsor por k1, ..., ki, ..., kn partes de unidades (aba, abb, abb, ba, bb, aa, ba) y seleccionar (S2) cuál entre las VP1+ ... + VPi+ ... VPn posibles partes de las unidades de cálculo se ejecutarán según la parte de las unidades P1, ..., Pi, ..., Pn del valor impulsor procesado, lo que permite que el valor impulsor se actualice dinámicamente al modificar sus partes.
Description
DESCRIPCIÓN
Desarrollo parcial para seguridad de software
Campo de la invención
La presente invención se refiere a un método para proteger intrínsecamente la manipulación de un valor sensible por un programa informático, dicho valor impulsa el manejo de otros datos sensibles.
La invención también se refiere a un producto de programa informático obtenido mediante el uso de dicho método. En un ámbito general, la invención se refiere a la seguridad de productos de software que implementan algoritmos criptográficos, en particular los que implementan algoritmos RSA (STD/CRT) o ECC.
Antecedentes de la invención
La tendencia actual es implementar funciones sensibles, que manejan datos sensibles, en software. En cuanto a las funciones criptográficas, esta tendencia se denomina "criptografía de caja blanca". Esto se refiere normalmente a cualquier aplicación descargada de una tienda de aplicaciones y que se ejecuta en un teléfono inteligente no seguro para atacantes, en un teléfono inteligente controlado por un atacante, en un emulador de teléfono o cualquier otro aparato utilizado con el propósito de analizar la aplicación a través de su ejecución. En tal caso, un atacante tiene acceso completo al comportamiento del software objetivo.
El software se desarrolla mediante el uso de diferentes estructuras de flujo de control. Una primera, el bucle que constituye una unidad de cálculo/operaciones, itera hasta que se alcanza una condición final y llamaremos "valor impulsor" a la secuencia de valores que toma el iterador del bucle. Otras dos estructuras de flujo de control, que sirven para propósitos similares, son las llamadas si..entonces..sino y cambia..caso. Tienen como objetivo ejecutar varias unidades de cálculo en función del valor de una condición o de un valor utilizado por un selector. La Figura 1A muestra una representación de un caso de bucle conocido en la técnica anterior para el siguiente valor impulsor = a b a a b b a b. Las minúsculas se utilizan para los valores tomados por el valor impulsor, mientras que las mayúsculas se utilizan para designar el código real ejecutado por cada unidad de cálculo. Por tanto, el número de unidades de cálculo es N = 8 y el número de valores posibles para cada unidad es V = 2.
Si un bucle se basa en un valor secreto que el atacante no debe recuperar, es bien sabido que el comportamiento del bucle en sí mismo filtra el valor secreto. Por tanto, el caso del bucle no es seguro.
Una protección conocida contra este problema es el desenrollado de bucles. Según esta técnica, el bucle se reescribe como una secuencia de operación equivalente sin filtrar más el valor secreto, ya que el valor sensible en sí ya no necesita ser conocido ni manipulado en el momento de la ejecución. El valor sensible incluye el valor impulsor en sí. De hecho, las protecciones conocidas están disponibles en el tipo de código lineal resultante de los bucles desenrollados. Estas protecciones no están adaptadas a la implementación en bucles. Además, los bucles desenrollados aumentan la velocidad de ejecución. Sin embargo, los bucles desenrollados ocupan mucho espacio. De hecho, un bucle se puede desenrollar para ganar velocidad a expensas del tamaño del código.
Por tanto, el desenrollado tiene dos inconvenientes. La primera es que, si el bucle tiene una gran cantidad de iteraciones, es decir, cuando la secuencia del valor impulsor es grande, entonces el aumento del tamaño del código cuando se desenrolla es demasiado perjudicial. En segundo lugar, el valor impulsor, que define la secuencia desenrollada, no puede cambiar después del tiempo de compilación, ya que el código desenrollado tendría que actualizarse en el campo.
La Figura 1B muestra un caso de bucle completamente desenrollado como también se conoce en la técnica anterior para el mismo valor impulsor que en la Figura 1A. Por lo tanto, el código resultante es más grande que un código basado en bucles, aquí N/V = 4 veces más, expresado por el tamaño acumulado de las cajas sólidas en cada figura (unidad de cálculo 2x1 en la Figura 1A, unidades de cálculo 1x8 en la Figura 1B) . Por lo tanto, no se puede acceder a ninguna flexibilidad, excepto si se almacenan varios bucles completamente desenrollados en el programa informático, que rápidamente no es sostenible en términos de espacio.
Como conclusión, los bucles enrollados son compactos y el valor impulsor se puede modificar, pero no son seguros. Los bucles totalmente desenrollados son más seguros pero no ahorran espacio y solo aplican un valor impulsor y, por lo tanto, no son actualizables.
En consecuencia, serían deseables en la técnica otras soluciones alternativas y ventajosas.
Compendio de la invención
La presente invención tiene como objetivo proporcionar una mejor compensación entre el aumento del tamaño del código y la capacidad de modificar el valor impulsor del bucle.
Un método según la invención se define por el objeto de la reivindicación 1.
El principio de la invención es tratar el valor impulsor por partes en lugar de por unidades. Supongamos que el valor tiene N unidades, tal que N = k x P. Entonces el valor también se puede ver como k partes de P unidades. Supongamos que una unidad puede tomar V valores posibles, normalmente una unidad es un bit y V = 2.
Hay VAP partes posibles de P unidades. Es posible calcular previamente todas las partes posibles de las unidades P desenrollando las secuencias correspondientes e incrustándolas en la implementación. Este punto aborda el problema de la eficiencia del espacio de desenrollar, dando la oportunidad de ajustar P. Cuanto más grande es P, más partes posibles hay, más espacio ocupa.
Para procesar el valor impulsor, la invención lo considera por partes en lugar de por unidades. Hay k partes y para cada parte, se procesa la correspondiente secuencia desenrollada calculada previamente. Este punto aborda la capacidad de actualizar dinámicamente el valor impulsor, modificando sus partes, ya que todas las secuencias correspondientes posibles están integradas en la implementación y, por lo tanto, disponibles. Esto es de particular interés en un contexto de seguridad en el que se desea e incluso se requiere la aleatorización de valores en algunos casos. La invención permite una optimización de código basada en una compensación de espacio-tiempo, en particular para N grande donde un bucle completamente desenrollado no cumpliría las restricciones de tamaño, por ejemplo para exponente RSA con N = 2048 y V = 2.
Según los parámetros de la invención ki y Pi de las partes desenrolladas se construyen para tener N = k1 x P1 ... ki x Pi ... kn x Pn y el programa informático finalmente ejecutado incrusta V a P1 ... V a Pi ... V a Pn posibles partes desenrolladas de unidades para elegir al procesar las partes k1 ... ki ... kn.
Esto se aplica en particular a los casos en los que N no se puede escribir como k * P. Consiste en una generalización del principio de la invención. También ofrece la posibilidad de aplicar diferentes niveles de seguridad en diferentes partes del valor impulsor. Las partes que manejan datos confidenciales estarían más distribuidas que las partes que no manejan datos confidenciales donde el uso de bucles no sería dañino.
Según una característica específica, ki y Pi se eligen teniendo en cuenta la seguridad y el espacio disponible.
Esta característica es esencial cuando el nivel de seguridad se determina previamente para al menos algunas partes del valor impulsor y/o cuando se encuentran fuertes limitaciones de espacio. En particular, es el caso de los algoritmos de clave pública, por ejemplo, cuando se manipula el exponente privado durante la exponenciación modular para lograr una firma RSA.
La presente invención también se refiere a un producto de programa informático inherentemente protegido según la invención y, por tanto, que comprende partes desenrolladas e instrucciones para ejecutar un valor impulsor mediante el uso de las partes desenrolladas.
Un programa informático como el obtenido con la invención presenta protección para los valores sensibles que se manejan dentro de cada una de las partes desenrolladas.
Para la consecución de los fines anteriores y relacionados, una o más realizaciones comprenden las características que se describen a continuación en su totalidad y se señalan particularmente en las reivindicaciones.
Breve descripción de los dibujos
La siguiente descripción y los dibujos adjuntos exponen en detalle ciertos aspectos ilustrativos y son indicativos de algunas de las diversas formas en las que pueden emplearse los principios de las realizaciones. Otras ventajas y características novedosas resultarán evidentes a partir de la siguiente descripción detallada cuando se considere junto con los dibujos y se pretende que las realizaciones descritas incluyan todos estos aspectos y sus equivalentes.
• Las Figuras 1A y 1B muestran respectivamente una representación de un caso de bucle para un valor impulsor dado con unidades de cálculo ejecutadas condicionalmente como se conoce en la técnica anterior y una representación del caso de bucle completamente desenrollado equivalente para el mismo valor impulsor que también se conoce en la técnica anterior;
• Las Figuras 2A y 2B muestran respectivamente una pluralidad de secuencias desenrolladas equivalentes calculadas previamente para todas las partes posibles de unidades P para el ejemplo de la figura 1 y el procesamiento del valor impulsor después de dividir el programa informático original en partes;
• Las Figuras 3A y 3B muestran respectivamente una pluralidad de secuencias desenrolladas equivalentes calculadas previamente para otras posibles partes de tres unidades y el procesamiento del valor impulsor después de dividir el programa informático original en partes de tres y dos unidades;
• La Figura 4 muestra un diagrama de flujo del método de la invención.
Descripción detallada de realizaciones de la invención
Para una comprensión más completa de la invención, la invención se describirá ahora en detalle con referencia a los dibujos adjuntos. La descripción detallada ilustrará y describirá lo que se considera una realización preferida de la invención. Los mismos elementos se han designado con las mismas referencias en los diferentes dibujos. En aras de la claridad, en los dibujos sólo se han mostrado y se describirán aquellos elementos y pasos que son útiles para la comprensión de la presente invención.
La Figura 2A muestra un ejemplo de antecedente en el que una pluralidad de secuencias desenrolladas equivalentes calculadas previamente para todas las partes posibles de P unidades para el ejemplo de la figura 1 donde N = 8. En el ejemplo de la figura 2A, k = 4, P = 2 y V = 2. Todas las partes posibles de las unidades P son AA AB BA y BB.
La Figura 2B ilustra el procesamiento del valor impulsor después de dividir el programa informático original en partes.
En consecuencia, las ramas del procesamiento que se muestran en la figura 2B se ejecutan según el valor del par de unidades en el valor impulsor.
Así, cuando se ejecuta el programa informático de la invención, primero se ejecuta la segunda rama, luego la primera, luego la cuarta y por último la segunda.
Como resultado, el programa informático comprende las cuatro ramas como desenrolladas y que protegen inherentemente el valor sensible. Normalmente, un valor sensible manejado de tal manera puede beneficiarse de contramedidas conocidas al nivel del valor impulsor en un lado, mediante el uso de un valor impulsor diferente pero funcionalmente equivalente cada vez, también conocido como cegamiento de exponente, por ejemplo en el caso RSA, y en el nivel de ejecución de la unidad de cálculo en el otro lado, por ejemplo mediante la aplicación de técnicas de ofuscación de código. El desenrollado parcial aumenta las posibilidades de ofuscación, aumentando así el nivel de seguridad, en comparación con la ofuscación aplicada a una sola unidad de cálculo.
La Figura 3A muestra una pluralidad de secuencias desenrolladas equivalentes calculadas previamente para otras posibles partes de tres unidades. Las ocho partes posibles de tres unidades son: AAA, AAB, ABA, ABB, BAA, BAB, BBA, BBB. Por tanto, el programa informático comprenderá todas estas secuencias desenrolladas que se llamarán según el valor impulsor. Tal división de las unidades es una decisión de diseño que se debe tomar con respecto a las limitaciones de espacio, velocidad y seguridad e ilustra la flexibilidad del procesamiento por partes.
La Figura 3B según la invención muestra el procesamiento del valor impulsor después de dividir el programa informático original en partes de tres y dos unidades para el siguiente valor impulsor ejemplar: a b a a b b a b b b a b b a a b a. Aquí el número de unidades N = 17 y V = 2. En este ejemplo, los parámetros para distribuir las secuencias desenrolladas pueden ser: k1 = 3, P1 = 3, k2 = 4, P2 = 2. Las secuencias desenrolladas calculadas previamente de dos unidades son las de la figura 2A.
En la figura 3B se ilustra el procesamiento del valor impulsor según la invención. Con la invención, no hay restricciones sobre la elección y el orden de las partes. En otras palabras, para p en ABA ABB ABB BA BB AA BA también podría procesarse como para p en AB AAB BA BBB ABB AA BA u otras combinaciones siempre que k1 x P1 ... ki x Pi ... kn x Pn = N y que se respete el orden de las unidades iniciales en el valor impulsor.
Esta característica aumenta la posibilidad de hacer infructuoso cualquier ataque ya que la invención permite que no se reitere ningún grupo o parte de bucles en sucesivas ejecuciones del programa informático. Por lo tanto, el valor impulsor se puede actualizar dinámicamente, lo que es de particular interés cuando los datos sensibles son un secreto que requiere una protección dinámica. Incluso es posible procesar un valor impulsor diferente pero funcionalmente equivalente, por ejemplo como se lograría en el caso de una contramedida de cegamiento del exponente RSA.
La Figura 4 muestra un diagrama de flujo del método de la invención. Dicho método comprende un primer paso S1 de desenrollar un valor impulsor DV que da como resultado un conjunto de posibles partes AA AB BA BB del programa informático. Dicho desenrollado se monitoriza mediante los parámetros ki y Pi elegidos en función de la seguridad esperada y del espacio disponible en el dispositivo donde se va a almacenar el programa informático resultante. El método comprende además un paso S2 de introducir instrucciones para seleccionar la sucesión de partes en la ejecución del valor impulsor. Este paso puede resultar en una sucesión de partes constantemente idéntica o, preferiblemente, en una sucesión de partes siempre cambiante. Esto introduce un nivel de protección adicional al usar la invención.
Claims (3)
1. Método para proteger un programa informático en el que se van a ejecutar una pluralidad de N unidades de cálculo dependiendo de un valor impulsor (DV), siendo el valor impulsor (DV) una secuencia de valores de condición que tienen N unidades (abaabbabbbabbaaba), cada unidad tiene V posibles valores, en los que V > 2 el valor impulsor (DV) está dedicado a manejar datos sensibles, cada una de la pluralidad de N unidades de cálculo que comprende un código para realizar cálculos mediante el uso de datos sensibles y susceptible de permitir la fuga de datos sensibles, siendo dicho método caracterizado por que comprende los pasos de:
- desenrollar (S1) k1 ... ki ... kn partes de unidades de cálculo, donde cada una de las partes de ki tiene Pi unidades de cálculo, Pi t P (i 1), i = 1,2,. ..n, n> 1, N = k1 x P1 ... ki x Pi ... kn x Pn, con Pi> 1 y Pi <N y, al reescribirlos en una secuencia equivalente de unidades de cálculo proteger los datos sensibles, dicho paso de desenrollado (S1) resulta en VP1 ... VPi+ ... VPn posibles partes de las unidades de cálculo (AA, AB, BA, BB, AA, AAB, ABA, ABB, BAA, BAB, BBA, BBB),
- introducir, en el programa informático protegido, las instrucciones correspondientes a la VP1+ ... VPi+ ... VPn posibles partes de las unidades de cálculo;
y además introduciendo en el programa de computadora protegido instrucciones para:
- procesar el valor impulsor por k1, ..., ki, ..., kn partes de unidades (aba, abb, abb, ba, bb, aa, ba) y seleccionar (S2) cuál entre las VP1+ ... VPi+ ... VPn posibles partes de las unidades de cálculo se ejecutarán según la parte de las unidades P1, ..., Pi, ..., Pn del valor impulsor procesado, lo que permite que el valor impulsor se actualice dinámicamente al modificar sus partes.
2. Método según la reivindicación 1, en el que ki y Pi se eligen teniendo en cuenta la seguridad y el espacio disponible.
3. Producto de programa informático protegido según el método de cualquiera de las reivindicaciones 1 y 2.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP16305629.4A EP3252988B1 (en) | 2016-05-31 | 2016-05-31 | Partial unrolling for software security |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2888429T3 true ES2888429T3 (es) | 2022-01-04 |
Family
ID=56571270
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES16305629T Active ES2888429T3 (es) | 2016-05-31 | 2016-05-31 | Desarrollo parcial para seguridad de software |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US11121852B2 (es) |
| EP (1) | EP3252988B1 (es) |
| ES (1) | ES2888429T3 (es) |
| WO (1) | WO2017208245A1 (es) |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA2542556C (en) * | 2005-06-03 | 2014-09-16 | Tata Consultancy Services Limited | An authentication system executing an elliptic curve digital signature cryptographic process |
| US10361844B2 (en) * | 2015-04-20 | 2019-07-23 | Certicom Corp. | Generating cryptographic function parameters based on an observed astronomical event |
| US10375070B2 (en) * | 2015-04-20 | 2019-08-06 | Certicom Corp. | Generating cryptographic function parameters from compact source code |
| US10140437B2 (en) * | 2015-05-05 | 2018-11-27 | Nxp B.V. | Array indexing with modular encoded values |
-
2016
- 2016-05-31 ES ES16305629T patent/ES2888429T3/es active Active
- 2016-05-31 EP EP16305629.4A patent/EP3252988B1/en active Active
-
2017
- 2017-06-01 WO PCT/IL2017/050614 patent/WO2017208245A1/en not_active Ceased
- 2017-06-01 US US16/306,340 patent/US11121852B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US20190182026A1 (en) | 2019-06-13 |
| WO2017208245A1 (en) | 2017-12-07 |
| EP3252988A1 (en) | 2017-12-06 |
| EP3252988B1 (en) | 2021-07-28 |
| US11121852B2 (en) | 2021-09-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN107690681B (zh) | 用于集成电路数据路径保密性及其扩展的技术 | |
| ES2890138T3 (es) | Método para proteger un proceso criptográfico con Sbox contra ataques de canales laterales de orden superior | |
| US20170126396A1 (en) | Apparatus and method for encryption | |
| US8976960B2 (en) | Methods and apparatus for correlation protected processing of cryptographic operations | |
| US9722778B1 (en) | Security variable scrambling | |
| CN107798248A (zh) | 防止差分故障分析的软件保护 | |
| US10735179B2 (en) | Automatic insertion of masking into an algorithm | |
| JP5401477B2 (ja) | 誤りに基づく攻撃から電子回路を保護する方法 | |
| CN108011706A (zh) | 数据处理装置和用于数据的加密处理的方法 | |
| US8699702B2 (en) | Securing cryptographic process keys using internal structures | |
| CN106487497A (zh) | 对rijndael算法的dpa保护 | |
| US10411880B2 (en) | Apparatus and method for encryption | |
| ES2299857T3 (es) | Transicion entre representaciones enmascaradas de un valor durante calculos criptograficos. | |
| JP6919973B2 (ja) | プログラムコードのコンピュータ支援難読化方法 | |
| US10341089B2 (en) | High-speed AES with transformed keys | |
| US20200151007A1 (en) | Lightweight dispatcher for program control flow flattening | |
| JP2005056413A (ja) | 複数の同じ計算の保護 | |
| WO2017025252A1 (en) | Method to secure keccak algorithm against side-channel attacks | |
| Vandersmissen et al. | A white-box speck implementation using self-equivalence encodings | |
| US11121852B2 (en) | Partial unrolling for software security | |
| ES2843098T3 (es) | Carga segura de datos secretos de registros de hardware no protegidos | |
| EP3238113B1 (en) | Hiding of a program execution | |
| US11232213B2 (en) | Mixed hardware and software instructions for cryptographic functionalities implementation | |
| ES2373334T3 (es) | Protección de un algoritmo criptográfico. | |
| US20180060585A1 (en) | System for program counter encryption |