ES2911889T3 - Generación de secuencias clave para operaciones criptográficas - Google Patents

Generación de secuencias clave para operaciones criptográficas Download PDF

Info

Publication number
ES2911889T3
ES2911889T3 ES16788725T ES16788725T ES2911889T3 ES 2911889 T3 ES2911889 T3 ES 2911889T3 ES 16788725 T ES16788725 T ES 16788725T ES 16788725 T ES16788725 T ES 16788725T ES 2911889 T3 ES2911889 T3 ES 2911889T3
Authority
ES
Spain
Prior art keywords
sequence
key
subkeys
bit values
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES16788725T
Other languages
English (en)
Inventor
Karine Villegas
Brecht Wyseur
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nagravision SARL
Original Assignee
Nagravision SARL
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nagravision SARL filed Critical Nagravision SARL
Application granted granted Critical
Publication of ES2911889T3 publication Critical patent/ES2911889T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

Un método para generar a partir de una clave principal una secuencia de subclaves para operaciones criptográficas, en el que cada subclave está definida por valores de bits respectivos, el método se implementa mediante un cifrado en bloque con un programa de claves que toma como entrada la clave principal, el cifrado en bloque utiliza las subclaves de la secuencia como claves circulares, el método comprende: aplicar una función unidireccional de entrada a la clave principal para generar una clave de trabajo; aplicar una pluralidad de subfunciones a la clave de trabajo para generar salidas intermedias respectivas; aplicar una función unidireccional de salida a cada salida intermedia para generar una salida de transformación respectiva; y generar las subclaves de la secuencia estableciendo los respectivos valores de bits de las subclaves de la secuencia usando los respectivos valores de bits de las salidas de transformación.

Description

DESCRIPCIÓN
Generación de secuencias clave para operaciones criptográficas
La presente divulgación se refiere a la generación a partir de una clave principal de una secuencia de subclaves para operaciones criptográficas. Más específicamente, aunque no exclusivamente, la presente divulgación se refiere a un cifrado en bloque que tiene un programa de claves de acuerdo con la secuencia y el uso del cifrado en bloque para el encriptado y descifrado de un mensaje.
Antecedentes
Los cifrados de bloques criptográficos, como DES o AES, ya sea implementados en hardware o en software, pueden ser el objetivo de ataques físicos. En tales ataques, un atacante recopila información de varios tipos durante la operación del cifrado en bloque. Los tipos de información utilizados en tales ataques incluyen:
• información de canal lateral que se filtra de la ejecución del cifrado en bloque, como consumo de energía, información de tiempo o radiación magnética;
• información de análisis de fallas diferenciales o de colisión;
• los dos anteriores.
El atacante puede utilizar esta información para descubrir la clave secreta utilizada durante la ejecución del cifrado en bloque.
Los cifrados de bloques funcionan con claves circulares, que son subclaves que se derivan de la clave secreta o principal de acuerdo con un programa de claves, mediante un algoritmo denominado normalmente programa de claves. En general, los ataques de falla o de canal lateral conducen a la recuperación de una clave circular. Debido a las correlaciones entre la clave principal y las claves circulares inherentes a la programación de claves de los cifrados de bloque como AES o DES, es relativamente fácil derivar la clave secreta de una clave circular recuperada.
Un atacante puede apuntar a la ejecución del programa clave (en cuyo caso es probable que el ataque sea un ataque de plantilla que modele la señal obtenida del canal lateral y su ruido), la aplicación del cifrado en bloque en el encriptado o descifrado, o tanto el programa clave como la ejecución del cifrado en bloque. En el estado actual de la técnica, la clave principal se puede recuperar de cualquier operación usando un ataque de canal lateral único u otros ataques en una sola subclave. Ejemplos de posibles ataques incluyen análisis de canal lateral (CPA-Correlation Power Analysis, DPA-Differential Power Analysis) o DFA-Differential Fault Analysis de la operación de encriptado/descifrado. Para el algoritmo de programación clave, un ataque de canal lateral de plantilla es un ejemplo de un ataque factible.
En un enfoque propuesto en la literatura (P. Junod and S. Vaudenay. FOX: a new family of block ciphers. Selected Areas in Cryptography 2004: Waterloo, Canadá, agosto 9-10, 2004. Lecture Notes in Computer Science. Springer-Verlag), el programa de claves se ha diseñado de manera que cada clave circular se genera aplicando una función criptográfica, resistente a colisiones y unidireccional a la clave principal secreta. De esta forma, se reducen o eliminan las correlaciones entre las claves circulares y entre las claves circulares y la clave secreta, por lo que es poco probable que tenga éxito un ataque basado en la recuperación de una única clave circular utilizando información de análisis de fallas o de canal lateral. Si bien el uso de una función unidireccional de esta manera para reducir las correlaciones entre claves es una etapa adelante, serían deseables mejoras adicionales en la resistencia a los ataques, específicamente de canal lateral u otros ataques físicos.
El documento de patente WO 98/1122 A1 divulga dividir una entrada en d bloques para aplicar funciones hash seguras en los d bloques. La función hash segura utiliza una función de estiramiento y una función de compresión para proporcionar un valor hash seguro.
Resumen
Algunos aspectos de la divulgación se establecen en las reivindicaciones independientes adjuntas. Algunas características opcionales de realizaciones específicas se establecen en las reivindicaciones dependientes que dependen de ellas.
En algunas realizaciones, se propone un método de generación de una secuencia de subclaves para operaciones criptográficas a partir de una clave principal de acuerdo con la reivindicación 1. Por ejemplo, en algunas realizaciones, cada bit de la salida de una o más funciones unidireccionales se usa solo una vez para establecer un valor de bit correspondiente de todos los valores de bits de las subclaves. Por lo tanto, existe una relación de uno a uno entre un valor de bit de la salida de una o más funciones unidireccionales y su valor de bit correspondiente de las subclaves.
Ventajosamente, la derivación de bits de subclave a partir de los respectivos bits de salida de una o más funciones unidireccionales elimina o al menos reduce las correlaciones entre la clave principal y las subclaves, así como entre las subclaves, lo que dificulta o incluso imposibilita recuperar la clave principal u otras subclaves de una sola subclave, por ejemplo, como se encuentra mediante un ataque de canal lateral. Al mismo tiempo, al usar la clave principal solo una vez (en lugar de usar la clave principal cada vez que se genera una subclave), se reduce la vulnerabilidad de la clave principal a un ataque de canal lateral, porque las oportunidades para recuperar la clave física se reduce la información que podría conducir al descubrimiento de la clave principal.
En el contexto de las operaciones criptográficas, se entenderá por función unidireccional una función fácil de calcular para generar una salida a partir de una entrada (por ejemplo en el sentido de que la complejidad computacional es polinomial en el tiempo y el espacio, o más prácticamente, dentro de un cierto número de operaciones de la máquina o unidades de tiempo (segundos o milisegundos) y que es prácticamente no invertible, lo que significa que no es realista encontrar o reconstruir la entrada a partir de la salida (en el sentido de que la complejidad computacional podría involucrar esfuerzo de super polinomio, superando los recursos accesibles). Esto a menudo se denomina resistencia previa a la imagen. Además, en este contexto, los bits de salida de una función unidireccional serán independientes entre sí en el sentido de que no hay información en el estado de un bit con respecto al estado de otros bits de la salida.
Además, normalmente es preferible, pero no obligatorio, que una función unidireccional en este contexto también tenga las propiedades de una segunda resistencia a la imagen previa y una resistencia a la colisión.
En particular, una o más de las siguientes funciones unidireccionales (combinaciones de funciones unidireccionales) pueden usarse de acuerdo con diversas realizaciones. Esto incluye, pero no se limita a:
• Hashes criptográficos, como SHA-1, SHA-256, RIPEMD-160, SHA-3, etc.;
• Funciones unidireccionales de propósito especial con salidas más grandes, por ejemplo, la función Rabin x A 2 mod N, siendo N el producto de dos números primos grandes, o versiones de orden superior de esta función;
• Funciones pseudo hash ligeras para disminuir los requisitos de recursos computacionales, como xxhash o SipHash;
• una construcción de Davis-Meyer basada en una permutación, preferiblemente liviana (una permutación liviana) es capaz de ejecutarse en dispositivos con una potencia informática muy baja;
• un producto con una matriz no reversible;
• uso del problema del logaritmo discreto: aX mod p, siendo p un primo, a un generador de Zp*, y x la entrada de la función unidireccional
En realizaciones en las que se requiere más de un cálculo unidireccional, las respectivas funciones unidireccionales utilizadas pueden ser las mismas o pueden ser diferentes entre sí.
En algunas realizaciones, los valores de bits respectivos de al menos dos de las subclaves se establecen de acuerdo con los valores de bits respectivos de una función unidireccional, de acuerdo con una relación predefinida. De esta forma, se pueden generar dos o más subclaves mediante el cálculo de una única función unidireccional. En un caso particular, los valores de bits respectivos de todas las subclaves de la secuencia se establecen de acuerdo con los valores de bits respectivos de una función unidireccional. En este caso, todas las subclaves son generadas por una sola función unidireccional, lo que requiere un solo uso de la clave principal y garantiza que la clave principal esté protegida por las características unidireccionales de la función unidireccional y que los bits de las subclaves y, por lo tanto, las subclaves son independientes entre sí debido a la independencia de los bits de salida de la función unidireccional.
En algunas realizaciones, operar en la clave principal genera una pluralidad de salidas intermedias usando subfunciones respectivas. Una función unidireccional aplicada a cada salida intermedia genera entonces una salida unidireccional respectiva y una o más de las subclaves se generan a partir de cada salida unidireccional. Al generar una pluralidad de salidas intermedias usando la clave principal solo una vez, y luego usando las respectivas funciones unidireccionales para generar las subclaves, las funciones unidireccionales que producen menos bits de los necesarios para generar todas las subclaves se pueden usar para generar las subclaves mientras sigue usando la clave principal una sola vez.
En algunas realizaciones, las salidas intermedias se generan aplicando primero una primera subfunción a la clave principal para generar una primera salida intermedia, seguido de la aplicación repetida de una subfunción siguiente a la salida intermedia anterior para generar una salida intermedia siguiente. Se aplican funciones unidireccionales respectivas a cada salida intermedia para generar una o más de las subclaves correspondientes de la secuencia. De esta forma se pueden generar las subclaves de la secuencia. El procesamiento de la subfunción a la correspondiente o más subclaves se puede realizar de forma síncrona (calculando una subfunción y la(s) subclave(s) correspondiente(s), luego calculando la siguiente subfunción y la(s) subclave(s) correspondiente(s), y así sucesivamente). Alternativamente, todas las subfunciones pueden procesarse primero, almacenando las salidas (de la subfunción y/o la función unidireccional), y las subclaves pueden generarse posteriormente a partir de los valores almacenados.
En lugar de pasar las salidas intermedias a través de funciones unidireccionales respectivas, en algunas realizaciones todas las salidas intermedias pasan a través de una única función unidireccional (o incluso una sola instancia de la misma función unidireccional), que es la primera y las siguientes funciones unidireccionales son la misma función. Independientemente, las subfunciones pueden ser diferentes entre sí o pueden ser todas iguales, por ejemplo, un operador de bits tal como un operador de desplazamiento o rotación. Dado que cada aplicación de las funciones secundarias es acumulativa en la secuencia, las entradas a la(s) función(es) unidireccional(es) variarán con la secuencia de aplicaciones repetidas de la misma función y, por lo tanto, producirán una secuencia de subclaves variables. Dado que las salidas intermedias se pasan a través de una función unidireccional para generar las subclaves de la secuencia, incluso para operaciones simples y posiblemente repetitivas para generar las salidas intermedias, será al menos igual de difícil inferir la clave principal u otras subclaves de una subclave recuperada, ya que es difícil invertir las funciones unidireccionales. Al mismo tiempo, dado que la clave principal solo se usa una vez para generar la primera salida intermedia, es menos probable que se descubra en un ataque de canal lateral u otro ataque físico. Además, en algunas realizaciones, la clave principal se puede disociar aún más de las subclaves generadas pasándola a través de una función unidireccional y pasando el resultado a la primera subfunción, lo que aumenta la dificultad de recuperar la clave principal de un criptoanálisis a partir de una subclave descubierta utilizando información de canal lateral.
En algunas realizaciones, donde las funciones secundarias son acumulativas en el sentido de que la cadena de operaciones correspondiente puede capturarse en una sola función compuesta y también son invertibles, esto puede aprovecharse para generar una secuencia inversa de subclaves. Por ejemplo, la secuencia inversa puede usarse como una secuencia de descifrado de subclaves que es la inversa de una secuencia de encriptado de subclaves, para descifrar un mensaje cifrado con un cifrado en bloque que tiene un programa de claves que genera la secuencia de encriptado de subclaves. Para evitar dudas, aquí se hace referencia a una cadena de mensaje sin cifrar como texto sin formato o mensaje de texto sin formato sin ninguna implicación en cuanto a que el contenido del mensaje sea texto, sino que “texto” se refiere más bien a cualquier cadena de símbolos, alfanuméricos o de otro tipo. Asimismo, el término texto cifrado o mensaje de texto cifrado debe entenderse, en consecuencia, como una versión cifrada del mensaje.
En algunas realizaciones para generar una secuencia inversa de una secuencia de subclaves generadas usando una secuencia de subfunciones que son invertibles y tienen una función compuesta que proporciona como salida la última salida intermedia en la generación de la secuencia directa de subfunciones , se sigue el mismo proceso que el anterior, siendo la primera subfunción la función compuesta y siendo las siguientes subfunciones las respectivas funciones inversas de las siguientes subfunciones de la secuencia directa, en orden inverso. Si bien la secuencia directa se ha descrito anteriormente como una secuencia de encriptado y la secuencia inversa como una secuencia de descifrado, se apreciará que los roles se pueden intercambiar y que la generación eficiente de las correspondientes secuencias directas e inversas de subclaves puede tener una aplicación más amplia.
En algunas realizaciones, las subfunciones utilizadas en la generación de subclaves no se ejecutan en una secuencia encadenada como se describió anteriormente, cada subfunción posterior toma la salida de la subfunción anterior como una entrada, sino que las subfunciones son ejecutadas de forma independiente, por ejemplo, de forma asíncrona o en paralelo. Esto significa que cada subfunción debe recibir su entrada de forma independiente. Para evitar el uso de la clave principal más de una vez en estas realizaciones, la clave principal se pasa una vez a través de una función unidireccional adicional, por ejemplo, una función unidireccional como se discutió anteriormente, y luego se proporciona el resultado a cada una de las subfunciones, evitando así múltiples lecturas de la clave principal. A continuación, las subclaves se generan a partir de la salida de las funciones secundarias a través de funciones unidireccionales respectivas o una función unidireccional compartida, como se describió anteriormente.
Una o más de las siguientes funciones secundarias (combinaciones de funciones secundarias) se pueden usar de acuerdo con varias realizaciones, incluidas, entre otras, las siguientes:
• funciones afines (por definición invertibles)
• funciones booleanas invertibles
• Operadores invertibles de Bit o Byte, como XOR/ADD con constante, Shift/rotation, XOR/ADD de diferentes bits del estado, permutaciones de bits. •
• una función de búsqueda de tabla invertible
• una función de exponenciación invertible
• una construcción Feistel
• Una combinación de lo anterior
Las subfunciones pueden comprender una o más de las clases de funciones anteriores. Específicamente, las subfunciones pueden comprender funciones de la misma una de las clases anteriores o la misma función que varía en sus parámetros. Como se describió anteriormente, las subfunciones pueden ser idénticas y/o una única subfunción usada repetidamente, en algunas realizaciones. Cualquiera de las subfunciones anteriores puede combinarse con cualquiera de las funciones unidireccionales anteriores de acuerdo con diversas realizaciones. En algunas realizaciones, la(s) función(es) secundaria(s) son funciones de búsqueda de tabla invertibles y la(s) función(es) unidireccional(es) son construcciones de Davis-Meyer basadas en una permutación ligera. Si bien es deseable que las subfunciones sean invertibles para permitir algunas de las realizaciones anteriores que requieren la inversión de las subfunciones, esto no es necesario en todas las realizaciones.
Como se mencionó anteriormente, las funciones unidireccionales pueden ser las mismas o algunas o todas las funciones unidireccionales pueden ser mutuamente diferentes. La misma función unidireccional puede implementarse, por ejemplo, en hardware, en una sola instancia y puede tomar entradas de las funciones secundarias en secuencia para producir la secuencia correspondiente de subclaves. Por lo tanto, se entenderá que la referencia a la función unidireccional en plural incluye el singular en el sentido de que todas las funciones unidireccionales pueden ser la misma función unidireccional única y pueden implementarse como una sola instancia lógica o física de esa única función unidireccional.
Los aspectos de la divulgación incluyen un cifrado en bloque con un programa de claves definido por una secuencia de subclaves (una secuencia de generación de subclaves) como se describió anteriormente, y el uso de dicho cifrado en bloque para el encriptado y descifrado de mensajes.
Otros aspectos de la divulgación incluyen sistemas que tienen medios para implementar etapas de procesamiento para generar secuencias de subclaves y/o procesar (cifrar/descifrar) mensajes como se describió anteriormente; productos de programas informáticos y codificación de señales en forma física de instrucciones codificadas que, cuando se ejecutan en un procesador, implementan las etapas de procesamiento descritos anteriormente; y uno o más medios grabables tangibles o dispositivos de memoria, por ejemplo, discos ópticos o magnéticos o dispositivos de estado sólido, que almacenan instrucciones codificadas que, cuando se ejecutan en un procesador, implementan las etapas de procesamiento descritos anteriormente. Además, estos aspectos se extienden a la combinación de tales productos y señales de programas informáticos, medios grabables tangibles y dispositivos de memoria en combinación con un procesador para ejecutar las instrucciones, por ejemplo, en un ordenador de propósito general.
Aún otros aspectos de la divulgación incluyen un dispositivo de acuerdo con la reivindicación 4. Las realizaciones de un dispositivo de este tipo comprenden circuitos integrados de aplicación específica, conjuntos de puertas programables en campo, sistemas en chip y dispositivos de circuito integrado, o combinaciones de los mismos. Se entenderá que en los aspectos en los que el procesamiento comprende tanto el encriptado como el descifrado, el encriptado y el descifrado se pueden realizar en el mismo dispositivo o cada uno se puede realizar en un dispositivo separado con mensajes pasados entre los dispositivos separados.
Breve descripción de los dibujos
Ahora se describirán realizaciones específicas, a modo de ejemplo, para ilustrar aspectos de la divulgación y con referencia a los dibujos adjuntos, en los que:
Las Figuras 1 a 4 ilustran diferentes modos de un cifrado en bloque con un generador de claves circulares;
La Figura 5 ilustra una implementación de un generador de claves circulares que permite la ejecución paralela de subfunciones para generar claves circulares;
La Figura 6 ilustra una versión recursiva de la implementación de la Figura 5;
La Figura 7 ilustra una implementación de un generador de claves circulares con ejecución secuencial de subfunciones;
La Figura 8 ilustra una implementación de un generador de claves circulares con ejecución secuencial de subfunciones para generar una secuencia inversa de claves circulares;
La Figura 9 ilustra una versión recursiva de las implementaciones de las Figuras 7 y 8; y
La Figura 10 ilustra una implementación de un generador de claves circulares que genera una secuencia de claves circulares utilizando una única función unidireccional.
Descripción detallada de realizaciones específicas
Con referencia a las Figuras 1 a 4, un cifrado 10 de bloque comprende un generador 200 de claves circulares que toma como entrada una clave principal K almacenada en un registro 100. El generador 200 de claves circulares genera una secuencia 120 de claves circulares K0, k-i, k2,..., kN-1. Un módulo 300 de encriptadotoma como entrada la secuencia de claves 120 circulares y un texto plano de un registro 400. El módulo 300 de encriptado cifra el texto 400 sin formato con la primera clave de la secuencia, luego cifra el resultado con la segunda clave de la secuencia, y así sucesivamente para todas las claves de la secuencia, y como resultado envía un texto cifrado a un registro 500. Con referencia a la Figura 2, en un modo de descifrado del cifrado 10 de bloque, el módulo 300 de encriptado se reemplaza con un módulo 302 de descifrado que toma como entrada un texto cifrado del registro 500 y una secuencia 142 de descifrado que es la inversa de la secuencia 140 de encriptado de claves 142 circulares. El módulo 302 de descifrado descifra el texto 500 cifrado aplicando la primera clave de la secuencia 140 (la última clave de la secuencia 120) al texto 500 cifrado, luego la segunda clave 142 en la secuencia 140 al resultado de esa operación, y así sucesivamente, hasta que se utilice la última clave de la secuencia 140 para producir el texto 400 sin formato. Se entenderá que, de acuerdo con la realización, los módulos de encriptado y descifrado del cifrado 10 de bloques se implementan en el mismo dispositivo o circuito (en algunas realizaciones comparten módulos computacionales) o en diferentes dispositivos y circuitos.
En algunas realizaciones, como se ilustra esquemáticamente en las Figuras 1 y 2, las claves circulares se generan de forma independiente, es decir, cada clave circular se almacena por separado para almacenar la secuencia 120, 140 completa de claves circulares, lo que permite generar las claves circulares de la secuencia en cualquier orden o en paralelo (y la secuencia de descifrado que se generará leyendo la secuencia de encriptado en orden inverso sin más cálculos). En otras realizaciones, como se ilustra esquemáticamente en las Figuras 3 y 4, las claves circulares se generan en secuencia una a la vez. Si bien esto es ventajoso porque requiere menos memoria para almacenar las claves circulares y exponer solo una clave circular a la vez, requiere que la secuencia inversa de claves circulares se calcule nuevamente, mientras que en las realizaciones como se muestra en las Figuras 1 y 2, las claves circulares almacenadas simplemente se pueden recorrer en el orden inverso.
Con referencia a la figura 5, ahora se describe una realización específica del generador 200 de claves circulares. La clave principal K pasa a través de una función 220 unidireccional, también denominada x, y el resultado luego pasa a través de un conjunto 240 de subfunciones 242, también denominadas F0, F1, F2,..., Fn-1. El resultado de cada subfunción 242 luego se pasa a través de una subfunción 262, también denominada H. El resultado de cada subfunción 242 puede alimentarse a una función 262 unidireccional común a todas las subfunciones, o cada subfunción 242 puede tener una función 262 unidireccional correspondiente para formar un conjunto de instancias de funciones 260 unidireccionales, que todas pueden implementar la misma función unidireccional H, o diferentes funciones unidireccionales, por ejemplo, una función 262 unidireccional diferente para cada subfunción 242. Estas operaciones dan como resultado un conjunto de claves 122 circulares como salida de una o más funciones 262 unidireccionales, en una secuencia 120 de subclaves 122, también denominada K0 , k-1, k2,..., kN-1.
Tomando la secuencia 120 como una secuencia de encriptado, la secuencia de descifrado puede obtenerse simplemente leyendo la secuencia 120 en orden inverso en realizaciones en las que se almacenan todas las claves 122 circulares. En otras realizaciones, la secuencia de descifrado se puede obtener generando la secuencia inversa de claves circulares ejecutando las subfunciones 242 en orden inverso a la secuencia 240, por ejemplo, donde solo se almacena y genera una clave circular sobre la marcha.
En algunas realizaciones, independientemente de si las claves 122 circulares se calculan de una sola vez o sobre la marcha, se utilizan las siguientes funciones para x, F y H, donde p, q, p*, q*, pi y qi son números primos grandes:
• x := K2 mod N*, con N*=p*q*
• Fi(x) := x2 mod Ni, con Ni=piqi
• H(y) := y8 mod N, con N=p q; y:=Fi(x)
Los números primos para p* y q*, se eligen de manera que en la práctica no sea posible calcular la raíz cuadrada. Por ejemplo, en algunas realizaciones log2(|N*|) es al menos 2048 bits. Los otros primos pi y qi se eligen de manera similar, por ejemplo, tal que log2(|Ni|) es la mitad del número de bits de la salida de x (la mitad de log2(|N*|)) y p y q se eligen de tal manera que log2(|N|) es mayor o igual al número de bits necesarios en las claves 122 circulares. Para proteger la clave principal K del análisis de canal lateral, se puede agregar un múltiplo aleatorio de N* a K en la lectura, o K se puede almacenar con una constante agregada, como en las realizaciones que usan una operación mod N* como una primera etapa, esto no afectará la salida de x.
Con referencia a la figura 6, ahora se describen algunas realizaciones en las que solo se almacena una única clave circular Ki en un registro 640 y se genera sobre la marcha para generar la secuencia 120. Tales realizaciones son particularmente adecuadas para la implementación en circuitos dedicados en los que la ejecución se puede realizar rápidamente en el hardware y la capacidad de almacenamiento puede ser limitada. Un registro 100 que contiene un valor para la clave principal K es leído por un módulo 220 que implementa x. El módulo 220 calcula x(K) y lo almacena en un registro interno. Un módulo 610 de subfunción configurado para calcular una subfunción Fi para cada iteración de generación de claves se comunica con un registro 620 que contiene una secuencia de parámetros, cada uno de los cuales define una instancia específica de Fi para cada iteración: F0, F1,... Fn-2, Fn-1. El módulo 610 de subfunciones pasa su salida a un módulo 630 unidireccional que implementa la función unidirecciona1H para generar una salida Ki y almacenarlo en un registro 640. El módulo 610 de subfunciones está configurado de tal manera que envía un disparador en una conexión de disparador 652 al módulo 220 para recibir el valor de x(K) nuevamente (alternativamente, este valor puede almacenarse en un registro en el módulo 610 de subfunciones o en otro lugar). Al recibir el valor de x(K), el siguiente parámetro para definir Fi+1 se lee del registro 620 y un valor para Ki+1 se calcula a través del módulo 630 unidireccional.
Las realizaciones descritas hasta ahora protegen la clave principal pasándola a través de una primera función unidireccional x y calculan las claves 122 circulares a partir de este valor como entradas independientes a las respectivas subfunciones 242. Ahora se describen realizaciones alternativas con referencia a las Figuras 7 a 9, en las que una primera subfunción 242 de la secuencia 240 de subfunciones toma la clave principal K como entrada y subsiguientes subfunciones F1, F2,..., Fn-1244 a 248 (F1, F2,..., Fn-1) cada uno toma la salida de la subfunción anterior como entrada, por ejemplo, la subfunción 244 toma como entrada la salida de la subfunción 242, y la subfunción 246 toma como entrada la salida de la subfunción 244, y así sucesivamente. La salida de cada subfunción 242 a 248 en la secuencia 240 se pasa nuevamente a través de una función 262 unidireccional, como se discutió anteriormente con referencia a la Figura 5 para producir a su vez como salida una secuencia 120 de claves 122 a 128 circulares, nuevamente como se describió anteriormente con referencia a la Figura 5.
En algunas realizaciones específicas, Fi se elige de las clases de funciones descritas anteriormente específicamente en algunas realizaciones Fi: es una función de consulta de tabla, y la función unidirecciona1H(y) se elige entre las clases de funciones descritas anteriormente, específicamente en algunas realizaciones, H(y) es una construcción de Davis-Meyer basada en una permutación ligera. En algunas realizaciones, la función unidirecciona1H se puede elegir como se indica arriba, es decir, H(y) := y8 mod N. En algunas realizaciones, una primera función unidireccional x, como se describió anteriormente, puede interponerse entre K y la primera subfunción 242 (F0) de la secuencia 240.
Tomando la secuencia de claves 120 circulares como la secuencia de encriptado, la secuencia de descifrado puede derivarse simplemente leyendo la secuencia 120 al revés, en realizaciones en las que las claves 122 a 128 circulares individuales permanecen almacenadas. Cuando las claves 122 a 128 circulares no están disponibles, por supuesto pueden calcularse mediante la secuencia 240 de subfunciones, como se ha descrito anteriormente, con los resultados leídos en orden inverso una vez calculados. Sin embargo, puede ser deseable comenzar el cálculo de la secuencia de desencriptación con la primera clave circular de la secuencia de desencriptación, que es la última clave circular de la secuencia de encriptado. Esto significa que la primera clave a utilizar está disponible en primer lugar y permite realizaciones en las que las claves circulares se calculan sobre la marcha y no se almacenan. Algunas realizaciones que permiten la inversión de la secuencia de claves circulares para derivar una secuencia de descifrado 130 de claves 122 a 128 circulares se describen ahora con referencia a la Figura 8. Estas realizaciones son adecuadas para calcular la secuencia 134 inversa o de descifrado de una secuencia 120 directa o de descifrado derivada usando las subfunciones 242 a 248, que son invertibles y de las cuales una función compuesta que calcula directamente el resultado de la secuencia 240 de subfunciones se puede construir como una función compuesta de las subfunciones 242 a 248 de la siguiente manera:
F{o^ n-d F0° Fi °... ° Fn_2° Fn.i
Con referencia a la Figura 8, una primera subfunción 252 de la secuencia 250 inversa calcula la función compuesta F{ü^ n-1} de las subfunciones de la secuencia 240 directa y la salida pasa a través de una función 262 unidireccional para generar una primera clave 128 circular en la secuencia de clave 130 circular inversa, correspondiente a la última clave 128 circular de la secuencia 120 directa, eso es Kn-1. La salida de la subfunción 252 también pasa a la siguiente subfunción 254 de la secuencia 250 inversa, que corresponde a la función inversa de la última función 248 de la secuencia 240 directa, Fn-1-1. La salida de la subfunción 254 vuelve a pasar a través de una función 262 unidireccional para generar la siguiente clave circular en la secuencia 130 inversa, Kn-2, la penúltima clave circular en la secuencia 120 directa. La siguiente subfunción 256 en la secuencia 250 inversa corresponde a la inversa de la penúltima subfunción en la secuencia 240 directa, Fn-2-1, y se usa para generar la siguiente clave circular en la secuencia 130 inversa, y así sucesivamente, hasta que la última subfunción en la secuencia 250 inversa que corresponde a la inversa de la segunda subfunción en la secuencia 240 directa se usa para generar la última clave 122 circular en la secuencia 130 inversa, que es la primera clave circular en la secuencia 120 directa.
Como se mencionó anteriormente, en estas realizaciones, se requiere que las subfunciones sean invertibles y componibles en una función compuesta. En algunas realizaciones, las funciones secundarias son funciones de búsqueda de tablas invertibles u operadores de bits de desplazamiento o rotación. Mientras las subfunciones sean invertibles y componibles, las subfunciones de la secuencia 240 pueden ser todas iguales, subfunciones únicas, usadas repetidamente, o pueden ser cada una diferente, o una combinación de las dos.
Con referencia a la figura 9, algunas realizaciones en las que solo una única clave circular Ki se almacena en un registro 640 y las claves circulares se generan sobre la marcha para generar la secuencia 120 usando una secuencia 240 de subfunciones que se describe ahora. Se entenderá que estas realizaciones son igualmente adecuadas para producir la secuencia 130 descrita anteriormente utilizando la correspondiente secuencia 250 de subfunciones. Nuevamente, dichas realizaciones son particularmente adecuadas para la implementación en circuitos dedicados en los que la ejecución puede realizarse rápidamente en el hardware y la capacidad de almacenamiento puede ser limitada.
Un registro 100 que contiene un valor para la clave principal K es leído por un módulo 610 de subfunciones. Como se describió anteriormente, el módulo 610 de subfunciones también lee uno o más parámetros para definir la función Fi para la iteración relevante y evalúa Fi, suministrando el resultado como salida a un módulo 630 unidireccional que calcula una función unidireccional de su entrada y almacena el resultado como la clave circular Ki en el registro 640. El módulo 610 también proporciona su propia salida nuevamente a su entrada a través de una línea 660 que activa el cálculo de la siguiente subfunción F¡+1 y por lo tanto Ki+1 a través del módulo 630 de función unidireccional.
Todas las realizaciones anteriores se han descrito en términos de generación de una sola clave circular Ki de una subfunción correspondiente Fi. En estas realizaciones, el número de bits en la salida de la(s) función(es) unidireccional(es) H debe ser igual o mayor que el número de bits de la ronda Ki. Por supuesto, se entenderá que en algunas realizaciones la salida de las funciones unidireccionales puede tener menos bits que los requeridos para las subclaves. En tales realizaciones, por ejemplo, cuando el número de bits de salida de la función unidireccional es la mitad del número de bits necesarios, o 1/m más generalmente, los procesos anteriores pueden ejecutarse dos o m veces para generar los bits necesarios. Del mismo modo, en algunas realizaciones, la salida de dos (m) funciones unidireccionales que se ejecutan una después de la otra se puede combinar para generar las subclaves en secuencia, agrupando de hecho claves circulares adyacentes (como se ilustra en las figuras) para formar una clave circular de bits suficientes.
Por otro lado, en algunas realizaciones, el número de bits en la salida de H es al menos m-veces el de una sola clave circular Ki y m claves circulares se generan a partir de la salida de la función unidirecciona1H aplicada a una subfunción Fi correspondiente. En otras palabras, en estas realizaciones, m claves circulares Kim+j, j = 1, 2, ... , m, se generan a partir de cada subfunción Fi. Por ejemplo, si la salida de H tiene 2048 bits, 16 claves circulares de 128 bits Ki se pueden generar a partir de la salida de esa función.
En algunas realizaciones, los bits de salida de H se asignan a los bits de Ki por una relación predeterminada. Por ejemplo, si el número de bits de Ki es n, los primeros n bits de la salida de H se utilizan para establecer los bits de Kc, los siguientes n bits de la salida de H se utilizan para establecer los bits de K1, Etcétera. Por supuesto, son igualmente posibles otras relaciones, por ejemplo, usar los primeros m bits de la salida de H para establecer los primeros bits de todos los Ki, utilizando los segundos m bits de la salida de H para establecer los segundos bits de Ki, etc., o cualquier otro mapeo predeterminado.
En algunas realizaciones no cubiertas por las reivindicaciones, ahora descritas con referencia a la Figura 10, una única función 280 unidireccional produce una salida con un número suficiente de bits para generar el número requerido de claves circulares Ki en la secuencia 120, es decir, hay m rondas de claves en la secuencia en términos de la discusión anterior. Dado que todas las claves circulares se generan a partir de la salida de una sola función unidireccional, no se requieren subfunciones Fi o, alternativamente, la función 280 unidireccional puede verse como la combinación de una única subfunción Fi y una función unidireccional H. Como se ilustra en la Figura 10 y se describe anteriormente, en algunas realizaciones, los bits de negros contiguos de la salida de la función 280 unidireccional se utilizan para definir Ki claves circulares correspondientes, aunque son igualmente posibles otros esquemas de asignación de bits de salida de funciones unidireccionales a bits de claves circulares, como se ha descrito anteriormente.
Si bien la descripción específica anterior hizo referencia a algunas funciones específicas para implementar x, H y Fi, muchas otras funciones adecuadas son posibles sujetas a las limitaciones explicadas anteriormente, cuando corresponda, en las diversas realizaciones, y se le ocurrirán fácilmente a una persona experta en la técnica. Específicamente, algunas funciones adecuadas se han discutido anteriormente y se pueden usar en combinación con las realizaciones específicas descritas.

Claims (6)

REIVINDICACIONES
1. Un método para generar a partir de una clave principal una secuencia de subclaves para operaciones criptográficas, en el que cada subclave está definida por valores de bits respectivos, el método se implementa mediante un cifrado en bloque con un programa de claves que toma como entrada la clave principal, el cifrado en bloque utiliza las subclaves de la secuencia como claves circulares, el método comprende:
aplicar una función unidireccional de entrada a la clave principal para generar una clave de trabajo;
aplicar una pluralidad de subfunciones a la clave de trabajo para generar salidas intermedias respectivas; aplicar una función unidireccional de salida a cada salida intermedia para generar una salida de transformación respectiva; y
generar las subclaves de la secuencia estableciendo los respectivos valores de bits de las subclaves de la secuencia usando los respectivos valores de bits de las salidas de transformación.
2. Un método de acuerdo con la reivindicación 1, en el que establecer los respectivos valores de bits comprende establecer los respectivos valores de bits de al menos dos de las subclaves de acuerdo con los respectivos valores de bits de las salidas de transformación de acuerdo con una relación predefinida.
3. Un método de acuerdo con la reivindicación 1, en el que establecer los respectivos valores de bits comprende establecer los respectivos valores de bits de todas las subclaves de la secuencia de acuerdo con los respectivos valores de bits de las salidas de transformación de acuerdo con una relación predefinida.
4. Un dispositivo para generar a partir de una clave principal una secuencia de subclaves para operaciones criptográficas, en el que cada subclave está definida por valores de bits respectivos, el dispositivo está configurado para implementar un cifrado en bloque con un programa de claves que toma como entrada la clave principal y utilizar las subclaves de la secuencia como claves circulares en el cifrado en bloque, el dispositivo comprende una memoria para almacenar la clave principal y al menos una subclave y un procesador configurado para:
aplicar una función de entrada unidireccional a la clave principal para generar una clave de trabajo;
aplicar una pluralidad de subfunciones a la clave de trabajo para generar salidas intermedias respectivas; aplicar una función unidireccional de salida a cada salida intermedia para generar una salida de transformación respectiva; y
generar las subclaves de la secuencia estableciendo los respectivos valores de bits de las subclaves de la secuencia usando los respectivos valores de bits de las salidas de transformación.
5. Un producto de programa informático que comprende instrucciones codificadas que, cuando se ejecutan en un dispositivo de procesamiento, implementan un método de acuerdo con una cualquiera de las reivindicaciones 1 a 3.
6. Uno o más medios legibles por ordenadora o un dispositivo de memoria que almacena instrucciones codificadas que, cuando se ejecutan en un dispositivo de procesamiento, implementan un método de acuerdo con una cualquiera de las reivindicaciones 1 a 3.
ES16788725T 2015-11-06 2016-11-02 Generación de secuencias clave para operaciones criptográficas Active ES2911889T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB1519612.4A GB201519612D0 (en) 2015-11-06 2015-11-06 Key sequence generation for cryptographic operations
PCT/EP2016/076436 WO2017076911A1 (en) 2015-11-06 2016-11-02 Key sequence generation for cryptographic operations

Publications (1)

Publication Number Publication Date
ES2911889T3 true ES2911889T3 (es) 2022-05-23

Family

ID=55132394

Family Applications (1)

Application Number Title Priority Date Filing Date
ES16788725T Active ES2911889T3 (es) 2015-11-06 2016-11-02 Generación de secuencias clave para operaciones criptográficas

Country Status (10)

Country Link
US (2) US10742394B2 (es)
EP (1) EP3371928B8 (es)
KR (1) KR102620649B1 (es)
CN (1) CN108476132B (es)
BR (1) BR112018009137B1 (es)
ES (1) ES2911889T3 (es)
GB (1) GB201519612D0 (es)
MX (1) MX2018005700A (es)
SG (1) SG11201803741PA (es)
WO (1) WO2017076911A1 (es)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109347625B (zh) * 2018-08-31 2020-04-24 阿里巴巴集团控股有限公司 密码运算、创建工作密钥的方法、密码服务平台及设备
CN111654367B (zh) 2018-08-31 2023-05-12 创新先进技术有限公司 密码运算、创建工作密钥的方法、密码服务平台及设备
CN110572251B (zh) * 2019-08-13 2020-09-22 武汉大学 一种模板攻击方法以及设备抗模板攻击的评估方法
CN110704856B (zh) * 2019-10-09 2021-08-20 成都安恒信息技术有限公司 一种基于运维审计系统的秘密共享方法
CN111162907B (zh) * 2019-12-28 2023-05-23 飞天诚信科技股份有限公司 一种协商密钥的生成方法及智能卡设备
CN111342951B (zh) * 2020-02-09 2023-03-14 深圳大学 流密码系统的生成方法、装置及终端设备
CN112311527A (zh) * 2020-09-17 2021-02-02 裴文耀 一种主密钥变换为多项式表格子密钥查表的加密方法
EP4117221A1 (en) * 2021-07-09 2023-01-11 STMicroelectronics S.r.l. Method for performing cryptographic operations in a processing device, corresponding processing device and computer program product
CN115022000B (zh) * 2022-05-27 2023-12-01 北京交大微联科技有限公司 铁路信号系统的通信方法、装置及电子设备
CN115017530B (zh) * 2022-08-08 2022-12-16 创云融达信息技术(天津)股份有限公司 一种数据安全存储设备及方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892829A (en) * 1997-01-08 1999-04-06 Bell Communications Research, Inc. Method and apparatus for generating secure hash functions
US6185679B1 (en) * 1998-02-23 2001-02-06 International Business Machines Corporation Method and apparatus for a symmetric block cipher using multiple stages with type-1 and type-3 feistel networks
US6185673B1 (en) 1998-06-30 2001-02-06 Sun Microsystems, Inc. Apparatus and method for array bounds checking with a shadow register file
US8479016B2 (en) * 2006-03-10 2013-07-02 Irdeto B.V. Method and system for obfuscating a cryptographic function
CN1878059A (zh) * 2006-07-07 2006-12-13 北京财富投资有限公司 一种分组加密及解密算法
US8130946B2 (en) * 2007-03-20 2012-03-06 Michael De Mare Iterative symmetric key ciphers with keyed S-boxes using modular exponentiation
US20080304664A1 (en) * 2007-06-07 2008-12-11 Shanmugathasan Suthaharan System and a method for securing information
US20090245510A1 (en) * 2008-03-25 2009-10-01 Mathieu Ciet Block cipher with security intrinsic aspects
EP2197144A1 (en) * 2008-12-15 2010-06-16 Thomson Licensing Methods and devices for a chained encryption mode
JP5552541B2 (ja) * 2009-12-04 2014-07-16 クリプトグラフィ リサーチ, インコーポレイテッド 検証可能な耐漏洩性暗号化および復号化
CN101895389B (zh) * 2010-07-16 2012-06-06 黑龙江大学 采用比例计算的基于组合编码的文件加密和解密的方法

Also Published As

Publication number Publication date
CN108476132B (zh) 2021-11-19
SG11201803741PA (en) 2018-06-28
EP3371928B8 (en) 2022-05-18
WO2017076911A1 (en) 2017-05-11
BR112018009137B1 (pt) 2023-12-26
US11546135B2 (en) 2023-01-03
US10742394B2 (en) 2020-08-11
KR20180081559A (ko) 2018-07-16
EP3371928B1 (en) 2022-04-06
CN108476132A (zh) 2018-08-31
BR112018009137A8 (pt) 2019-02-26
MX2018005700A (es) 2018-12-11
US20210021405A1 (en) 2021-01-21
BR112018009137A2 (pt) 2018-11-06
GB201519612D0 (en) 2015-12-23
US20180316490A1 (en) 2018-11-01
KR102620649B1 (ko) 2024-01-03
EP3371928A1 (en) 2018-09-12

Similar Documents

Publication Publication Date Title
ES2911889T3 (es) Generación de secuencias clave para operaciones criptográficas
US10320554B1 (en) Differential power analysis resistant encryption and decryption functions
Mitali et al. A survey on various cryptography techniques
JP7031580B2 (ja) 暗号化装置、暗号化方法、復号化装置、及び復号化方法
JP2010140026A (ja) 連鎖暗号モードのための方法および装置
US9565018B2 (en) Protecting cryptographic operations using conjugacy class functions
Aldaya et al. AES T-Box tampering attack
CN114697095A (zh) 一种混合加解密方法、系统、装置及介质
Kim et al. Efficient Implementation of AES and CTR_DRBG on 8-bit AVR-based Sensor Nodes
Andreeva et al. AES-COPA v.
Abbas et al. An efficient implementation of PBKDF2 with RIPEMD-160 on multiple FPGAs
Iftikhar et al. Evaluating the Performance Parameters of Cryptographic Algorithms for IOT-based Devices
Murtaza et al. Fortification of aes with dynamic mix-column transformation
Patel et al. Hybrid security algorithms for data transmission using AES-DES
CN116488795A (zh) 一种gcm-aes处理方法和装置
Ketan et al. An amalgam approach using AES and RC4 algorithms for encryption and decryption
Aghajanzadeh et al. Developing a new hybrid cipher using AES, RC4 and SERPENT for encryption and Decryption
Singh et al. Study & analysis of cryptography algorithms: RSA, AES, DES, T-DES, blowfish
CN111740818A (zh) 一种数据处理方法、装置、设备及存储介质
WO2022096141A1 (en) Method for processing encrypted data
Putra et al. Performance Analysis Of The Combination Of Advanced Encryption Standard Cryptography Algorithms With Luc For Text Security
RU2775253C1 (ru) Способ криптографического преобразования с одновременной выработкой производного ключа шифрования
Andreeva et al. AES-COBRA v1
Fitzgerald An Introduction to Authenticated Encryption
Liu et al. Analysis of the Reconfiguration Feature of Cryptographic Algorithms