ES2842954T3 - Dispositivos y método de acuerdo de clave - Google Patents

Dispositivos y método de acuerdo de clave Download PDF

Info

Publication number
ES2842954T3
ES2842954T3 ES18725118T ES18725118T ES2842954T3 ES 2842954 T3 ES2842954 T3 ES 2842954T3 ES 18725118 T ES18725118 T ES 18725118T ES 18725118 T ES18725118 T ES 18725118T ES 2842954 T3 ES2842954 T3 ES 2842954T3
Authority
ES
Spain
Prior art keywords
key
polynomial
network node
shared
module
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
ES18725118T
Other languages
English (en)
Inventor
Sauvik Bhattacharya
Morchon Oscar Garcia
Ludovicus Marinus Gerardus Maria Tolhuizen
Ronald Rietman
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
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 Koninklijke Philips NV filed Critical Koninklijke Philips NV
Application granted granted Critical
Publication of ES2842954T3 publication Critical patent/ES2842954T3/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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0852Quantum cryptography
    • H04L9/0858Details about key distillation or coding, e.g. reconciliation, error correction, privacy amplification, polarisation coding or phase coding
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public 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/3026Public 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 details relating to polynomials generation, e.g. generation of irreducible polynomials

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Electromagnetism (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)

Abstract

Un primer nodo de red electrónico (110) configurado para un protocolo de acuerdo de clave, comprendiendo el primer nodo de red - una interfaz de comunicación (120) dispuesta para una comunicación digital con un segundo nodo de red, y - un circuito procesador configurado para - obtener un polinomio compartido (a), compartiéndose el polinomio compartido con el segundo nodo de red a través de la interfaz de comunicación, seleccionándose coeficientes del polinomio compartido (a) módulo un primer módulo q, - generar un polinomio de clave privada (skI; skR), acotándose coeficientes del polinomio de clave privada en valor absoluto por una cota (s), siendo la cota (s) menor que un segundo módulo (p), siendo el segundo módulo (p) menor que el primer módulo (q), - generar un polinomio de clave pública (pkI; pkR) al - calcular un producto de polinomios entre el polinomio compartido (a) y el polinomio de clave privada (skI) módulo el primer módulo (q) obteniendo un producto de polinomios, - ajustar a escala coeficientes del producto de polinomios descendentemente hasta el segundo módulo (p), siendo un coeficiente ajustado a escala igual al coeficiente sin ajustar a escala multiplicado por el segundo módulo (p), dividido por el primer módulo (q) y redondeado al número entero más cercano, - enviar el polinomio de clave pública del primer nodo de red al segundo nodo de red, - recibir un polinomio de clave pública (pkR; pkI) del segundo nodo de red, - calcular un polinomio de clave sin procesar como un producto de polinomios entre la clave pública recibida del segundo nodo y el polinomio de clave privada del primer nodo de red módulo el segundo módulo (p), y calcular la clave compartida a partir de la clave sin procesar, en donde el primer nodo de red está configurado además para - recibir datos de conciliación (h) del segundo nodo de red, - calcular una clave compartida aplicando una función de conciliación (rec) a los datos de conciliación recibidos y múltiples coeficientes del polinomio de clave sin procesar, o en donde el primer nodo de red está configurado además para - obtener la clave compartida y los datos de conciliación a partir de múltiples coeficientes del polinomio de clave sin procesar, - enviar los datos de conciliación al segundo nodo de red.

Description

DESCRIPCIÓN
Dispositivos y método de acuerdo de clave
Campo de la invención
La invención se refiere a un nodo de red, un método de acuerdo de clave, un dispositivo de selección de parámetros, un método de selección de parámetros y un medio legible por ordenador.
Antecedentes de la invención
En criptografía, un protocolo de acuerdo de clave es un protocolo mediante el cual dos o más partes que aún no comparten una clave común pueden acordar una clave de este tipo. Preferiblemente, ambas partes pueden influir en el resultado de tal manera que ninguna de las partes pueda forzar la elección de la clave. Un atacante que escuche furtivamente todas las comunicaciones entre las dos partes no debería aprender nada acerca de la clave. No obstante, aunque el atacante que ve la misma comunicación aprende poco o nada, las propias partes pueden inferir una clave compartida.
Los protocolos de acuerdo de clave son útiles, por ejemplo, para asegurar la comunicación, por ejemplo, para cifrar y/o autenticar mensajes entre las partes.
Se introdujeron protocolos de acuerdos de clave prácticos en 1976, cuando Whitfield Diffie y Martin Hellman introdujeron la noción de criptografía de clave pública. Estos propusieron un sistema de acuerdo de clave entre dos partes que hace uso de la dificultad aparente de calcular logaritmos en un campo finito GF(q) con q elementos. Usando el sistema, dos usuarios pueden acordar una clave simétrica. La clave simétrica se puede usar entonces para, por ejemplo, una comunicación cifrada entre las dos partes.
Los métodos de acuerdo de clave actuales aplicables cuando las partes aún no tienen un secreto compartido, tales como el método de acuerdo de clave de Diffie-Hellman, requieren operaciones matemáticas con uso intensivo de recursos. Por ejemplo, el de Diffie-Hellman requiere que se realicen operaciones de exponenciación en un campo finito. Tanto el exponente como el tamaño del campo pueden ser grandes. Esto hace que los protocolos de acuerdo de clave sean menos adecuados para dispositivos de recursos bajos. Por otro lado, los protocolos de acuerdo de clave serían muy útiles en dispositivos con recursos restringidos. Por ejemplo, en áreas de aplicación tales como Internet de las Cosas, redes inalámbricas ad hoc y similares, se podría usar un acuerdo de clave para proteger los enlaces entre dispositivos. Otro ejemplo es la comunicación entre un lector y una etiqueta electrónica, por ejemplo, un lector de tarjetas y una tarjeta inteligente, o un lector de etiquetas y una etiqueta, por ejemplo, una etiqueta de RFID o una etiqueta de NFC. Sería ventajoso tener un protocolo de acuerdo de clave que imponga una carga menor sobre al menos una de las dos partes, es decir, sobre la etiqueta electrónica.
Con el fin de facilitar una comunicación segura entre las partes, los protocolos de acuerdo de clave se subdividen a veces en esquemas de intercambio de clave criptográfica (KEX) y de encapsulación de clave criptográfica (KEM). Los esquemas de encapsulación de clave criptográfica (KEM) usan criptografía asimétrica para establecer un secreto compartido entre dos partes, usando un valor conocido públicamente (por ejemplo, una clave pública) y un valor poseído secretamente (por ejemplo, una clave secreta) para cada parte.
Los esquemas de KEX implican el intercambio de clave pública por cada parte, que es usada entonces independientemente por la otra parte junto con su propia clave secreta para calcular el secreto compartido común. Un ejemplo bien conocido de esquema de KEX es el intercambio de clave de Diffie-Hellman, mencionado anteriormente, cuya seguridad se basa en resolver el problema de logaritmo discreto. Una característica interesante de algunos esquemas de KEX es que el secreto compartido final real nunca se intercambia entre las partes, ni siquiera en forma cifrada, sino que es calculado independientemente por las dos partes en cada extremo. Esto da como resultado una característica deseable conocida como confidencialidad directa, que asegura que incluso el comprometimiento de la clave secreta a largo plazo de una parte por un atacante en el futuro no comprometerá la confidencialidad de un mensaje cifrado intercambiado en el pasado.
Los esquemas de KEM establecen un secreto compartido entre dos entidades o partes usando criptografía asimétrica, por una parte, habitualmente el iniciador de la comunicación, para cifrar (usando la clave pública de la otra parte) y transmitir un secreto compartido a la otra parte, conocida como el respondedor, quien puede entonces descifrar este (usando su clave secreta) y entonces usar el mismo para comunicarse de forma segura con la parte iniciadora. Los esquemas de KEM no pueden lograr la confidencialidad directa, debido a que cualquier atacante que comprometa la clave secreta de una parte para una sesión pasada y haya registrado todos los mensajes intercambiados entre las partes en esa sesión puede recuperar el secreto compartido para esa sesión particular.
Debido a las necesidades de seguridad crecientes en Internet de las Cosas, es necesario que los esquemas de intercambio de clave también logren una eficiencia alta (es decir, una cantidad mínima de requisitos de comunicación o de ancho de banda) y, al mismo tiempo, sigan siendo seguros contra adversarios clásicos, así como con capacidad cuántica.
Joppe W. Bos y col. 'Post-quantum key exchange for the TLS protocol from the ring learning with errors problem', IACR 2016, divulga un nodo de red electrónico configurado para un protocolo de acuerdo de clave usando Aprendizaje con Errores.
Andrey Bogdanov y col. "On the Hardness of Learning with Rounding over Small Modulus", Network and Parallel Computing, Lecture Notes in Computer Science, 2015, divulga un protocolo basándose en Aprendizaje con Redondeo. Chris Peikert y col. 'Lattice Cryptography for the Internet', Network and Parallel Computing, Lecture Notes in Computer Science, 2014, divulga un protocolo basado en retículo para el intercambio de clave autenticada basándose en Aprendizaje con Errores.
Sumario de la invención
Se proporciona un nodo de red electrónico configurado para un protocolo de acuerdo de clave. El nodo de red se denominará primer nodo de red para distinguir este de un segundo nodo de red con el que se comunica el mismo. Se proporciona un primer nodo de red electrónico que aborda estas y otras preocupaciones. El nodo de red está configurado para un protocolo de acuerdo de clave, que podría ser, por ejemplo, un esquema de intercambio de clave (KEX) o uno de encapsulación de clave (KEM). El primer nodo de red comprende
- una interfaz de comunicación dispuesta para una comunicación digital con un segundo nodo de red, y
- un circuito procesador configurado para
- obtener un polinomio compartido, compartiéndose el polinomio compartido con el segundo nodo de red a través de la interfaz de comunicación, seleccionándose coeficientes del polinomio compartido módulo un primer módulo q,
- generar un polinomio de clave privada, acotándose coeficientes del polinomio de clave privada en valor absoluto por una cota,
- generar un polinomio de clave pública al
- calcular un producto de polinomios entre el polinomio compartido y el polinomio de clave privada módulo el primer módulo obteniendo un producto de polinomios,
- ajustar a escala coeficientes del producto de polinomios descendentemente hasta un segundo módulo, siendo un coeficiente ajustado a escala igual al coeficiente sin ajustar a escala multiplicado por el segundo módulo, dividido por el primer módulo y redondeado al número entero más cercano, siendo el segundo módulo menor que el primer módulo, siendo la cota como máximo el segundo módulo,
- enviar el polinomio de clave pública del primer nodo de red al segundo nodo de red,
- recibir un polinomio de clave pública del segundo nodo de red,
- calcular un polinomio de clave sin procesar como un producto de polinomios entre la clave pública recibida del segundo nodo y el polinomio de clave privada del primer nodo de red módulo el segundo módulo, y calcular la clave compartida a partir de la clave sin procesar.
Debido a que el polinomio de clave privada está acotado y el polinomio de clave pública se ajusta a escala descendentemente, se reduce la tara de cálculo y de comunicación del acuerdo de clave. Además, al usar polinomios en lugar de, por ejemplo, matrices, la tara de cálculo y de ancho de banda se reduce adicionalmente. Ventajosamente, los polinomios cumplen con la propiedad conmutativa, simplificando adicionalmente el protocolo. En algunas realizaciones, los polinomios que se usan son módulo un polinomio de n-ésimo grado, por ejemplo, Xn 1, de tal manera que los mismos tienen n coeficientes. Habitualmente, los polinomios de clave privada tienen el mismo número de coeficientes (n) que el polinomio compartido, pero esto no es necesario. Por ejemplo, los polinomios de clave privada pueden tener un grado o número de coeficientes más bajo que el polinomio compartido. Estos pueden tener incluso un número diferente de coeficientes entre el primer y el segundo nodo. Obsérvese que, incluso si el número de coeficientes en un polinomio de clave privada es igual al número de coeficientes de los polinomios compartidos, estos pueden ser más dispersos.
Las multiplicaciones de polinomios son módulo un polinomio de reducción de grado n. Servirá cualquier polinomio de reducción, aunque puede haber ventajas al elegir polinomios de reducción específicos. Por ejemplo, en una realización, el polinomio compartido se elige de tal manera que no tenga divisor común alguno con el polinomio de reducción. Una ventaja de esta característica es que los polinomios de clave pública se distribuirán de manera más uniforme. El polinomio de reducción también se puede elegir como irreducible. Esto último restringirá la elección de los polinomios de reducción hasta cierto punto, pero tiene, por otro lado, la ventaja de que no se necesita una prueba de primalidad relativa con el polinomio compartido.
No es necesario que los módulos p y q sean primos y, de hecho, son preferiblemente una potencia de 2. Además, es muy preferido que p divida a q. Por ejemplo, en una realización, el primer módulo tiene un tamaño de bits de 12 o más, y/o el segundo módulo tiene un tamaño de bits de 7 o más. La seguridad se aumenta si el polinomio compartido no se usa demasiado a menudo. Debido a que el polinomio compartido puede ser público, y al menos es compartido, este puede ser conocido por un atacante. El atacante podría usar esta ventaja para realizar un cálculo previo sobre este polinomio. Para evitar esta vía de ataque, se prefieren cambios frecuentes del polinomio de clave compartida. En una realización, se negocia un nuevo polinomio de clave compartida después de un número fijo de acuerdos de clave, por ejemplo, incluso cada vez que se realiza un acuerdo de clave. Además, el polinomio de clave privada se podría sustituir con cierta frecuencia.
Debido a la operación de redondeo hacia abajo, un ataque que observe el tráfico entre el primer nodo y el segundo nodo no será capaz de reconstruir los polinomios privados usados por los nodos. Por otro lado, los primeros nodos son capaces de obtener una clave compartida, debido a que estos tienen más información que un atacante; el primer y el segundo nodo tienen su propio polinomio de clave privada además del polinomio de clave pública recibido.
El redondeo puede provocar diferencias entre la clave sin procesar calculada en el primer nodo y en el segundo nodo. No obstante, a partir de ello se puede calcular una clave compartida. Hay varias formas de lograr esto.
En una realización, el primer nodo de red está configurado además para
- recibir datos auxiliares del segundo nodo de red, comprendiendo los datos auxiliares información que permite inferir la misma clave compartida en el primer y el segundo nodo cancelando diferencias entre las claves sin procesar inferidas en el primer y el segundo nodos, y
- calcular una clave compartida a partir de los datos auxiliares y múltiples coeficientes del polinomio de clave sin procesar. En este caso, el primer nodo de red sería responsable de generar los datos auxiliares. Esto también es posible al revés, con el primer nodo de red generando los datos auxiliares y el segundo nodo de red usando los mismos. Por ejemplo, en una realización, el primer nodo de red está configurado además para
- obtener la clave compartida y los datos auxiliares a partir de múltiples coeficientes del polinomio de clave sin procesar,
- enviar los datos auxiliares al segundo nodo de red.
Por lo tanto, en una realización, un nodo iniciador recibe del nodo respondedor su clave pública y, además, datos auxiliares. Usando solo la clave pública, el nodo iniciador es capaz de llegar a casi a la misma clave sin procesar que el nodo respondedor. Sin embargo, puede haber diferencias entre las dos claves sin procesar.
Los datos auxiliares proporcionan información adicional a un nodo de red para guiar al mismo, de tal manera que el nodo de red llegue a la misma clave compartida a la que llegó el emisor de los datos auxiliares. Los datos auxiliares pueden ser algún tipo de información redundante y, en última instancia, preferiblemente no se usarán en la propia clave compartida.
Los datos auxiliares pueden ser parte de los datos calculados a partir de la clave privada, por ejemplo, parte de la clave sin procesar. Los datos auxiliares pueden ser datos adicionales, por ejemplo, datos de suma de verificación, por ejemplo, un síndrome calculado para los datos calculados a partir de los datos secretos. Por ejemplo, los datos auxiliares pueden comprender información de redundancia acerca de la clave sin procesar, o acerca de la clave compartida. Se pueden obtener datos auxiliares añadiendo una o más palabras de código. En su lugar, se pueden obtener datos auxiliares calculando unos así denominados síndromes de códigos de corrección de errores, por ejemplo, para la clave sin procesar o para la clave compartida. En algunas realizaciones, se dan dos tipos diferentes de datos auxiliares, los datos de conciliación y las claves encapsuladas; se dan ejemplos prácticos de estos dos tipos.
En una realización, los datos auxiliares son los así denominados datos de conciliación. Por ejemplo, los datos de conciliación pueden comprender información acerca de la clave sin procesar. Por ejemplo, los datos de conciliación pueden comprender bits de la clave sin procesar inferida por un nodo. Los datos de conciliación permiten que el otro nodo cancele las diferencias entre las claves sin procesar inferidas por los dos lados y calcule la misma clave compartida.
Usando datos de conciliación, se puede superar la diferencia entre el polinomio de clave sin procesar calculado en el primer y el segundo nodo de red. Uno de los nodos calcula datos de conciliación y el otro los usa. Los datos de conciliación pueden ser tan pequeños como 1 bit por cada coeficiente que se usa para calcular la clave compartida. Algunas realizaciones usan más, por ejemplo, 2 o más bits.
Otra opción para superar la diferencia entre las claves sin procesar calculadas en ambos lados es usar la encapsulación de clave. A través de la encapsulación, se protege la clave compartida y, además, diferencias pequeñas entre las claves sin procesar provocan una diferencia pequeña y corregible entre las claves compartidas desencapsuladas. Por ejemplo, para encapsular una clave, en primer lugar, se puede añadir redundancia adicional. Esto se puede hacer, por ejemplo, correlacionando los bits en la clave compartida con números módulo p, por ejemplo, correlacionando un bit 0 con 0 y un bit 1 con p/2. Una correlación más vasta usa un código de corrección de errores, por ejemplo, un código de repetición. Otros ejemplos de códigos de corrección de errores incluyen el código de Hadamard, Reed-Solomon, BCH, etc. Después de codificar la clave compartida y sumar la redundancia, la clave sin procesar se suma mod p a la clave compartida codificada, para obtener la clave compartida encapsulada. En lugar de la suma, también se pueden usar otras funciones de combinación, por ejemplo, resta mod p.
No es necesario que se generen o que se usen datos auxiliares, por ejemplo, datos de conciliación, datos de corrección de errores, etc., para todos los coeficientes de la clave sin procesar. No es necesario que se usen todos los coeficientes de la clave sin procesar para calcular la clave compartida, solo es necesario que se tengan en cuenta para los datos auxiliares aquellos coeficientes que se usan realmente. Por ejemplo, en una realización, la clave compartida se infiere de un número fijo y/o coeficientes predeterminados de la clave sin procesar. Entonces se obtienen, se envían, se reciben y/o se aplican datos de conciliación solo para esos coeficientes, y para menos que todos los coeficientes del polinomio de clave sin procesar. En una realización, los coeficientes que se usan para la clave compartida pueden variar. Por ejemplo, uno del primer y el segundo nodo, por ejemplo, el nodo iniciador, envía una semilla al otro nodo. Ambos nodos usan la semilla para decidir aleatoriamente qué coeficientes tener en cuenta para los datos auxiliares y para la clave compartida.
Obsérvese que, para ambos tipos de datos auxiliares, un nodo de red, por ejemplo, un nodo respondedor, está configurado para obtener la clave compartida y obtener los datos auxiliares a partir de al menos múltiples coeficientes del polinomio de clave sin procesar. En el caso de los datos de conciliación, tanto la clave compartida como los datos auxiliares se pueden obtener a partir de múltiples coeficientes de la clave sin procesar. En el caso de la encapsulación, los datos auxiliares se obtienen de los múltiples coeficientes de la clave sin procesar y la clave compartida. Múltiples coeficientes pueden ser todos los coeficientes.
Una ventaja de los métodos de acuerdo de clave de acuerdo con realizaciones es que estos tienen requisitos de ancho de banda menores debido al ajuste a escala, y tienen requisitos computacionales más bajos debido a la cota sobre los coeficientes en los polinomios de clave privada. Por ejemplo, en una realización, la cota en valor absoluto sobre los coeficientes del polinomio de clave privada es 2, o la cota es 1, correspondiendo esto último a binario con signo. Las realizaciones preferidas usan una cota de 1, en donde los coeficientes son o bien binarios (0 o 1) o bien binarios con signo (0, -1 o 1); siendo esto último lo más preferido.
Cabe destacar que la tara se puede reducir adicionalmente limitando el número de coeficientes no nulos, incluso si el número de los propios coeficientes es mucho mayor. Por ejemplo, en una realización, el dispositivo se puede configurar con un número predeterminado de coeficientes no nulos. Este número se puede imponer de diferentes formas. Por ejemplo, en una realización, se genera un polinomio de clave privada con como máximo el número de coeficientes no nulos (que se denomina peso de Hamming de un polinomio). Es beneficioso, aunque no necesario, que el polinomio de clave privada sea tan aleatorio como sea posible dadas las condiciones impuestas al mismo. Por ejemplo, con un peso de Hamming dado y acotado en el tamaño de los coeficientes, un polinomio de clave privada se puede elegir de manera uniformemente aleatoria a partir de los polinomios de clave privada candidatos, por ejemplo, a partir de todos los polinomios de clave privada que satisfacen las cotas.
Otra forma de imponer el peso de Hamming es eligiendo el polinomio de clave privada a partir de una distribución de probabilidad. La distribución de probabilidad tiene un número esperado fijo de coeficientes no nulos para el polinomio de clave privada. En este caso, puede suceder que a veces un polinomio de clave privada tenga un peso de Hamming un poco más alto o un poco más bajo. Por ejemplo, en una realización, los coeficientes del polinomio de clave privada se pueden elegir a partir de una distribución de probabilidad no uniforme, en donde la probabilidad de un coeficiente nulo es mayor que la probabilidad de un coeficiente no nulo.
El tamaño exacto del peso de Hamming no parece ser crítico. Especialmente, en ejemplos de tamaño de producción, en donde el número de coeficientes es mayor, una buena elección parece ser aproximadamente el número de coeficientes dividido por 5 (0,2 n). Sin embargo, es posible estimar un peso de Hamming mínimo minimizando hs (el / n \
peso de Hamming) con la condición de que log2 ( ^ I hs sea al menos, por ejemplo, 127, o más, preferiblemente al menos 255.
Los aspectos de la invención incluyen un dispositivo y un método para buscar buenos conjuntos de parámetros. Los nodos de red son dispositivos electrónicos. Por ejemplo, estos pueden ser dispositivos electrónicos móviles, tales como un ordenador de tipo teléfono móvil, de tipo tableta o de tipo tarjeta inteligente. El nodo de red puede ser un descodificador de salón, un ordenador, un televisor y similares. El método de acuerdo de clave descrito en el presente documento se puede aplicar en una amplia gama de aplicaciones prácticas. Tales aplicaciones prácticas incluyen la seguridad en Internet (de las Cosas). Se pueden aplicar protocolos a protocolos tales como IKE, TLS, SSH y otros. En general, el esquema propuesto es post-cuánticamente seguro tanto para casos de uso de Internet generales como para entornos con recursos restringidos. El acuerdo de clave se puede usar siempre que se requiera una comunicación segura, por ejemplo, confidencial, entre dos nodos. Este puede ser el caso en una red de sensores, pero también, por ejemplo, para asegurar transacciones financieras.
Un método de acuerdo con la invención se puede implementar en un ordenador como un método implementado por ordenador, o en hardware especializado, o en una combinación de ambos. El código ejecutable para un método de acuerdo con la invención puede almacenarse en un producto de programa informático. Los ejemplos de productos de programa informático incluyen dispositivos de memoria, dispositivos de almacenamiento óptico, circuitos integrados, servidores, software en línea, etc. Preferentemente, el producto de programa informático comprende código de programa no transitorio almacenado en un legible por ordenador para realizar un método de acuerdo con la invención cuando dicho producto de programa se ejecuta en un ordenador.
En una realización preferida, el programa informático comprende código de programa informático adaptado para realizar todas las etapas de un método de acuerdo con la invención cuando el programa informático se ejecuta en un ordenador. Preferiblemente, el producto de programa informático se incorpora en un medio legible por ordenador. Otro aspecto de la invención proporciona un método para hacer que el programa informático esté disponible para su descarga. Este aspecto se usa cuando el programa informático se carga en, por ejemplo, la Tienda de Aplicaciones App Store de Apple, la Tienda de Aplicaciones Google Play o la Tienda Windows de Microsoft, y cuando el programa informático está disponible para su descarga desde una tienda de este tipo.
Breve descripción de los dibujos
Se describirán detalles, aspectos y realizaciones adicionales de la invención, solo a modo de ejemplo, con referencia a los dibujos. Elementos en las figuras se ilustran por simplicidad y claridad y no necesariamente se han dibujado a escala. En las figuras, los elementos que corresponden a elementos ya descritos pueden tener los mismos números de referencia. En los dibujos,
la figura 1 muestra esquemáticamente un ejemplo de una realización de una red de acuerdo de clave, la figura 2 muestra esquemáticamente un ejemplo de una realización de una clave sin procesar,
la figura 3 muestra esquemáticamente un ejemplo de una realización de un método de intercambio de clave electrónica,
la figura 4a muestra esquemáticamente un medio legible por ordenador que tiene una parte escribible que comprende un programa informático de acuerdo con una realización,
la figura 4b muestra esquemáticamente una representación de un sistema procesador de acuerdo con una realización,
la figura 5 muestra esquemáticamente un ejemplo de una realización de una red de acuerdo de clave, la figura 6a muestra esquemáticamente un ejemplo de una realización de un dispositivo de selección de parámetros,
la figura 6b muestra esquemáticamente un ejemplo de una realización de un método de selección de parámetros. Lista de números de referencia en las figuras 1-2, 5, 6a:
100 una red de acuerdo de clave
110 un nodo de red de tipo iniciador
120 una interfaz de comunicación
130 una unidad de polinomio compartido
140 una unidad de polinomio de clave privada
150 una unidad de polinomio de clave pública
160 una unidad de clave compartida
162 una clave sin procesar
164 datos de conciliación (h)
166 una clave compartida
210 un nodo de red de tipo respondedor
220 una interfaz de comunicación
230 una unidad de polinomio compartido
240 una unidad de polinomio de clave privada
250 una unidad de polinomio de clave pública
260 una unidad de clave compartida
262 una clave sin procesar
264 datos de conciliación (h)
266 una clave compartida
300 un coeficiente de un polinomio de clave sin procesar
301 una parte más significativa
302 una parte medianamente significativa
303 una parte menos significativa
500 una red de acuerdo de clave
510 un nodo de red de tipo iniciador
520 un nodo de red de tipo respondedor
560 una unidad de clave compartida
564 una clave codificada
570 una unidad de clave compartida
573 una clave compartida generada
574 una clave compartida codificada
576 una clave compartida encapsulada
600 un dispositivo de selección de parámetros
602 una interfaz de salida
610 generador de conjuntos de parámetros
620 unidad de selección de p, q
630 optimizador de n, m
640 optimizador
Descripción detallada de las realizaciones
Aunque la presente invención es susceptible de realización en muchas formas diferentes, una o más realizaciones específicas se muestran en los dibujos y se describirán con detalle en el presente documento, entendiendo que la presente divulgación se ha de considerar como ilustrativa de los principios de la invención y no se pretende que limite la invención a las realizaciones específicas mostradas y descritas.
En lo sucesivo, por razones de comprensión, se describen elementos de realizaciones durante el funcionamiento. Sin embargo, será evidente que los elementos respectivos están dispuestos para realizar las funciones que se describen como las realizan los mismos.
Además, la invención no está limitada a las realizaciones, y la invención radica en todas y cada una de las características novedosas, o combinaciones de características novedosas, descritas en el presente documento o indicadas en reivindicaciones dependientes mutuamente diferentes.
La figura 1 muestra esquemáticamente un ejemplo de una realización de una red de acuerdo de clave 100.
En la figura 1 se muestran dos nodos de red en el sistema: un nodo de red 110 de tipo iniciador y un nodo de red 210 de tipo respondedor. En una realización del sistema de acuerdo de clave, el número de nodos puede ser mayor, incluso mucho mayor, que dos, por ejemplo, más de 1000 nodos, por ejemplo, más de 106 nodos.
La diferencia entre un nodo de red de tipo iniciador o respondedor es cómo se ocupa este de los datos de conciliación. Un nodo de red de tipo iniciador recibe datos de conciliación y los aplica para obtener la clave compartida, mientras que un nodo de red de tipo respondedor genera datos de conciliación y los envía al nodo de red de tipo iniciador. El nodo de red de tipo respondedor no necesita datos de conciliación para obtener la clave compartida. Habitualmente, uno de tipo iniciador también iniciará el protocolo de acuerdo de clave entre los dos nodos de red, debido a que esto puede reducir el número de rondas ejecutadas entre los dos nodos de red. Sin embargo, esto no es necesario; el protocolo de acuerdo de clave también podría ser iniciado por un nodo de red de tipo respondedor.
Además, en una realización del nodo de red, el nodo de red está configurado para funcionar de acuerdo con un modo de iniciador y de acuerdo con un modo de respondedor. Por ejemplo, si el nodo de red inicia un acuerdo de clave, por ejemplo, envía un mensaje a otro nodo de red que señaliza el inicio del protocolo de acuerdo de clave, entonces el nodo de red puede conmutar al modo de iniciador. Si el nodo de red responde a un acuerdo de clave, por ejemplo, recibe un mensaje desde otro nodo de red que señaliza el inicio del protocolo de acuerdo de clave, entonces el nodo de red puede conmutar al modo de respondedor. Aunque esto es conveniente en la práctica, esta opción tampoco es estrictamente necesaria; por ejemplo, en un sistema de acuerdo de clave, algunos modos solo se pueden configurar como iniciadores y algunos solo se pueden configurar como nodos respondedores. Una consecuencia de esto será que algunos nodos no pueden acordar conjuntamente una clave compartida. Para algunas redes, esto no tiene por qué ser un problema, por ejemplo, en redes ad hoc, o redes inalámbricas ad hoc, etc., siempre que una cantidad suficientemente grande de pares de nodos de red se puedan comunicar y acordar una clave compartida.
El nodo iniciador 110 comprende una interfaz de comunicación 120. El nodo respondedor 210 comprende una interfaz de comunicación 220. Las interfaces de comunicación se pueden disponer para una comunicación digital con los otros nodos en el sistema de acuerdo de clave. Sin embargo, no es necesario que en todo momento se puedan alcanzar todos los nodos en el sistema.
Las interfaces de comunicación 120 y 220 están dispuestas para una comunicación digital. Por ejemplo, las interfaces de comunicación se pueden disponer para comunicarse a través de una red informática. Por ejemplo, la interfaz de comunicación se puede disponer para una comunicación inalámbrica, por ejemplo, Wi-Fi, ZigBee, Bluetooth y similares, y/o cableada, por ejemplo, Ethernet, USB y similares. La comunicación entre los nodos 110 y 210 también puede ser una combinación de conexiones cableadas e inalámbricas. Por ejemplo, los nodos en el sistema 100, incluyendo los nodos 110 y 120, pueden comprender un almacenamiento electrónico que contiene un identificador de comunicación, que identifica de forma única el nodo dentro del sistema 100. Por ejemplo, el identificador de comunicación se puede incluir en mensajes digitales intercambiados entre los nodos 110 y 210, por ejemplo, para direccionar el mensaje. Por ejemplo, el identificador de comunicación puede ser una dirección de IP, una dirección de MAC y similares.
En una realización, el nodo de red electrónico está configurado para un protocolo de intercambio de clave (KEX). El protocolo implica intercambiar mensajes entre los nodos 110 y 210 a través de las interfaces de comunicación 120 y 220, y realizar cálculos sobre, por ejemplo, datos recibidos desde el otro nodo. La ejecución del protocolo de acuerdo de clave se implementa en un circuito procesador, ejemplos del cual se muestran a continuación. La figura 1 muestra unidades funcionales que pueden ser unidades funcionales del circuito procesador. Por ejemplo, la figura 1 se puede usar como un modelo de una organización funcional posible del circuito procesador. El circuito procesador no se muestra separado de las unidades en la figura 1. Por ejemplo, las unidades funcionales mostradas en la figura 1 también se pueden implementar total o parcialmente en instrucciones informáticas que se almacenan en los nodos de red y son ejecutables por un microprocesador del nodo de red.
En las realizaciones relacionadas con la figura 1, el nodo iniciador 110 y el nodo respondedor 210 están configurados para un protocolo de intercambio de clave (KEX). Los esquemas de KEX implican el intercambio de datos públicos, a menudo denominados claves públicas, por cada parte, que entonces son usados independientemente por la otra parte junto con sus datos privados, a menudo denominados clave secreta, para calcular el secreto compartido común. Una característica interesante de algunas realizaciones es que el secreto compartido final real nunca se intercambia entre las partes, ni siquiera en forma cifrada, sino que es calculado independientemente por las dos partes en cada extremo. Esto da como resultado una característica deseable conocida como confidencialidad directa, que asegura que incluso el comprometimiento de las claves secretas a largo plazo de una parte por un atacante en el futuro no comprometerá la confidencialidad de un mensaje cifrado intercambiado en el pasado.
Las realizaciones de las invenciones no dependen de un tercero de confianza para proporcionar una comunicación confidencial. No es necesario que el canal de comunicación entre las interfaces de comunicación 120 y 220 sea necesariamente un canal seguro. Los atacantes pueden ser capaces de escuchar furtivamente el canal de comunicación. Incluso de este modo, la clave acordada entre los nodos 110 y 210 puede ser segura. Si el canal de comunicación se protege contra alteraciones, se puede obtener un grado de autenticación en la medida en la que sea proporcionado por el canal. Sin embargo, si el canal entre las interfaces de comunicación 120 y 220 no se protege contra alteraciones, ningún esquema de KEX logrará una autenticación. Para obtener una autenticación, se pueden combinar realizaciones con cualquier mecanismo de autenticación conocido, por ejemplo, un mecanismo de autenticación implícito, por ejemplo, usando claves públicas certificadas, o un mecanismo de autenticación explícito, por ejemplo, usando firmas digitales.
Un ejemplo bien conocido de esquema de KEX es el intercambio de clave de Diffie-Hellman, cuya seguridad se basa en resolver el problema de logaritmo discreto. En la invención, se define un mecanismo de intercambio de clave cuya dureza se basa en un así denominado problema de Aprendizaje con Redondeo (LWR). La dureza del problema de LWR se puede basar en la suposición de dureza del así denominado problema de Aprendizaje con Errores (LWE) cuando el número de instancias de LWE está acotado. Debido a que la dureza del caso promedio del problema de LWE se basa en la dureza del peor caso de ciertos problemas basados en retículos relacionados, que son difíciles de resolver para un ordenador cuántico, este esquema de intercambio de clave es un protocolo de acuerdo de clave post­ cuánticamente seguro. Debido a que la realización usa el problema de LWR en un anillo, también se hará referencia a este problema como el problema de LWR en Anillo.
El problema de Aprendizaje con Errores (LWE) es un problema matemáticamente difícil, que da lugar a esquemas criptográficos post-cuánticos debido a su presunta dificultad incluso contra ordenadores cuánticos, y una seguridad bien entendida. Sin embargo, los esquemas que surgen de este son habitualmente pesados en cuanto al desempeño, con respecto a las complejidades tanto computacionales como de comunicación. El problema del aprendizaje con errores (LWE) se puede describir como sigue:
Para un vector de n dimensiones s e Zq y una distribución de errores x sobre Zq, la distribución de LWE A ^ x (s) sobre ZJ x Zq se obtiene eligiendo un vector a uniforme y aleatoriamente a partir de ZJ y un error e a partir de x, y emitiendo (a,b = (a,s) e)e Zq x Zq.
El problema de LWE de búsqueda es hallar s e Zq dadas arbitrariamente muchas muestras independientes (ai, bi) a partir de A ^ x (s) El problema de LWE de decisión, denotado por LWEn, q, x(D) es distinguir la distribución A ^ x (s) de la distribución uniforme sobre ZJ x Zq con una ventaja no despreciable, para una s ^ D fija.
El problema de LWR es una versión "desaleatorizada" del problema de LWE, usando redondeo con un módulo "p" en lugar de insertar errores para ocultar información secreta, e introduciendo entonces un error determinista ajustando a escala descendentemente desde Zq (en donde q es el módulo de LWE original) a Zp.
Para un vector de n dimensiones s e Zq, la distribución de LWR A ^ p(s) sobre ZJ x Zp se obtiene eligiendo un vector a uniforme y aleatoriamente a partir de Z£ y emitiendo (a, [^-(a,s}?])e Z" x Zv.
En el presente caso, m denota el número entero más cercano a x. El problema de LWR de búsqueda se define en términos de hallar el secreto s de manera exactamente igual al problema de LWE de búsqueda. El problema de LWR de decisión es distinguir la distribución A ^ p(s) de la distribución uniforme sobre ZJ x Zp con m instancias para una s ^ D fija. Se ha mostrado que los problemas de LWR de búsqueda y de decisión son al menos tan difíciles como los problemas de LWE correspondientes cuando m está acotado de tal manera que 2 mBp/q es una constante (en donde B es una cota sobre los errores en el problema de LWE).
Los esquemas de intercambio de clave post-cuántico basándose en el problema de LWE gozan de una confianza generalizada debido a la seguridad bien entendida del problema de LWE. Sin embargo, no existe esquema alguno de intercambio de clave basado en LWE que sea ligero en cuanto al desempeño y que se pueda usar en entornos con recursos restringidos. Los algoritmos existentes incluyen diversas operaciones que son lentas en dispositivos de recursos limitados, tales como: la multiplicación de matrices módulo q, el muestreo a partir de una distribución de probabilidad tal como una distribución gaussiana y el cálculo o la transmisión de matrices con entradas grandes. En la invención, las dos partes generan dos polinomios que son aproximada pero no exactamente iguales. Para llegar a un acuerdo exacto, se envían algunos datos de conciliación. Un esquema para hacer esto se explica en una solicitud de patente del mismo solicitante, con el título "Reaching agreement on a secret value", presentada ante la OEP el 4 de noviembre de 2016, con el número de solicitud 16197277.3; por ejemplo, el método en las páginas 7 a 10 se puede usar para la conciliación en algunas realizaciones de acuerdo con la invención. También se pueden adoptar variantes divulgadas en otra parte de la solicitud de patente citada.
En esta solicitud, se usará la siguiente notación para las siguientes tres funciones:
1. Función de redondeo
Figure imgf000009_0001
para q, bh, B e Z, £>/, > 1, B < log2 q - bh, sea
B = log2 q - B. Entonces,
L]B ’bhl v ^ l 2 B-v ' (mod 2B)
Intuitivamente, Lvls-bh extrae los B bits más significativos de {v 2'°g <'1B*bh)}, en donde la segunda componente es un factor de redondeo para asegurar errores de redondeo no sesgados.
2. Función de redondeo cruzado (. }b, bh: Para q, bh, B e Z, bh > 1, B < log2 q - bh, sea
B = log2 q - B. Entonces,
O eb/l : v -> L 2 v I (mod ?bh)
Intuitivamente, m s ’bf’ extrae los bh bits menos significativos de los (6 bh) bits más significativos de v.
3. Función de conciliación rec(w, b):
para q, bh, B e Z, bh > 1, B < log2 q - bh, w e Zq, b e [0,26ft),
Figure imgf000009_0002
en donde v es el elemento más cercano a wtal que r “ b~
Estas tres funciones se pueden aplicar, coeficiente a coeficiente, a polinomios.
La función de conciliación citada anteriormente se usa como ejemplo en el presente documento. Como se ha hecho notar, también se podrían usar los métodos de conciliación de la solicitud citada anteriormente. La figura 2 es una ilustración esquemática de las funciones de redondeo y de redondeo cruzado. Como ejemplo, la figura 2 muestra un coeficiente de un polinomio de clave sin procesar 300. El coeficiente 300 se ilustra como una cadena de bits, con los bits más significativos a la izquierda y los bits menos significativos a la derecha. Intuitivamente, la función de redondeo aplicada al coeficiente corresponde a los B bits en la parte más significativa 301, la función de redondeo cruzado a los bh bits siguientes en la parte intermedia 302. Se puede descartar el log2q - B - bh menos significativo.
El nodo iniciador 110 comprende una unidad de polinomio compartido 130. El nodo respondedor 210 comprende una unidad de polinomio compartido 230. Las unidades de polinomio compartido 130 y 230 están configuradas para obtener un polinomio compartido (a) que se comparte entre los dos nodos. Los coeficientes del polinomio compartido a son números enteros seleccionados módulo un primer módulo q. Existen muchas formas de asegurar que se comparta el mismo polinomio entre los nodos 110 y 210, especialmente dado el hecho de que el polinomio a no necesariamente se mantiene privado para los nodos 110 y 210.
Por ejemplo, uno de los nodos, por ejemplo, el nodo iniciador 110, por ejemplo, en la unidad de polinomio compartido 130, puede seleccionar un polinomio a, por ejemplo, aleatoriamente con elementos módulo q. Los coeficientes se pueden enviar entonces a través de las unidades de comunicación al otro nodo, por ejemplo, a la unidad de polinomio compartido 230. En este caso, esta última unidad de polinomio compartido 230 simplemente recibirá el polinomio y lo almacenará. El polinomio a también puede, en su lugar, ser elegido por el nodo respondedor 210 y enviado al nodo iniciador 110.
Los dos nodos también pueden cooperar en la elección del polinomio a. Por ejemplo, cada nodo puede seleccionar algunos de los coeficientes y enviar estos al otro lado. Por ejemplo, los nodos iniciadores pueden seleccionar los coeficientes de grados impares y el nodo respondedor los coeficientes de grados pares, etc. De esta manera, ninguno de los dos nodos tiene control sobre el polinomio a final. Por ejemplo, los dos nodos podrían seleccionar cada uno un polinomio completo a y comunicar este al otro lado. Después de esto, los dos polinomios se pueden sumar módulo q. Para evitar dar una ventaja al último nodo en enviar el polinomio, un compromiso sobre el polinomio elegido puede ser enviado en primer lugar por dicho último nodo.
Una forma interesante de reducir la tara de enviar el polinomio completo a es generar una semilla aleatoria y enviar la semilla aleatoria a través del canal de comunicación al otro nodo. Después de recibir la semilla, el primer y el segundo nodo de red pueden usar la misma para generar el polinomio a de cualquiera de las formas anteriores. La misma semilla aleatoria se usa para inicializar con una semilla un generador de números pseudoaleatorios determinista que, a su vez, genera el polinomio (a) a partir de la salida del generador de números pseudoaleatorios. Como anteriormente, cada nodo puede enviar una semilla, por ejemplo, para generar diferentes partes de a, o las dos semillas se pueden combinar, por ejemplo, sumar, o someter a una operación O - Exclusivo, etc., y la semilla combinada se puede usar para generar a.
Las semillas se pueden seleccionar, por ejemplo, de generador de números aleatorios adicional, por ejemplo, un generador de números aleatorios verdaderos. Los nodos también se pueden configurar con una lista de números aleatorios, por ejemplo, durante la fabricación. En este caso, los nodos seleccionan un número aleatorio siguiente a partir de la lista cada vez que se genera un nuevo polinomio a para un nuevo acuerdo de clave. Si se agota la lista de números aleatorios, esta se puede reponer desde una fuente de confianza.
Si se desea que el polinomio compartido sea relativamente primo con un polinomio de reducción, que no es, en sí mismo, irreducible, entonces se podría generar un polinomio compartido relativamente primo a partir de la semilla. Por ejemplo, en primer lugar, se puede generar un polinomio aleatorio a partir de la semilla y, a continuación, se puede generar el primer polinomio en una cierta ordenación después de que se haya seleccionado el polinomio generado que es relativamente primo con respecto al polinomio de reducción. Como alternativa, se verifica si un polinomio generado es relativamente primo con el polinomio de reducción. De no ser así, se genera una nueva semilla, hasta que se genera un polinomio compartido que es relativamente primo con el polinomio de reducción.
En una realización, se dispone un primer nodo de red para obtener un polinomio compartido (a) generando una semilla aleatoria y enviando la semilla aleatoria a través del canal de comunicación al otro nodo, usando el primer y el segundo nodo de red la semilla aleatoria para inicializar con una semilla un generador de números pseudoaleatorios determinista, generando el polinomio (a) a partir de la salida del generador de números pseudoaleatorios.
El nodo iniciador 110 comprende una unidad de polinomio de clave privada 140. El nodo respondedor 210 comprende una unidad de polinomio de clave privada 240. La unidad de polinomio de clave privada 140 está configurada para generar un polinomio de clave privada ski; la unidad de polinomio de clave privada 240 está configurada para generar un polinomio de clave privada skR. Los coeficientes de los polinomios de clave privada son números enteros acotados en valor absoluto por una cota s. Por ejemplo, un coeficiente en un polinomio de clave privada se puede elegir entre -s y s (cotas incluidas).
Los inventores de la presente invención han hallado que, sorprendentemente, elegir la cota para que sea pequeña tiene una ventaja doble: las multiplicaciones de polinomios con los polinomios de clave privada son más rápidas y la distancia entre las claves sin procesar calculadas en cada lado es menor (véase posteriormente). Esto último significa que se necesitan menos datos de conciliación y/o que es menor la posibilidad de un fallo en el protocolo debido a que los nodos acordaron una clave diferente. La cota s se elige para que sea como máximo el segundo módulo, por ejemplo, menor o igual que el segundo módulo. Esta elección es ventajosa debido a que más tarde se multiplica módulo p. Este se puede restringir a como máximo (o menos de) la mitad del segundo módulo (p/2 ) si se permiten coeficientes con signo de los polinomios de clave privada.
La cota puede ser más baja que el segundo módulo o la mitad del segundo módulo y, en la práctica, la cota se elegirá habitualmente mucho menor que eso. En una realización, la cota s sobre el valor absoluto de los coeficientes del polinomio de clave privada (ski, skR) es 2 (s = 2). Es decir, todos los coeficientes de un polinomio de clave privada son uno u otro de -2, -1, 0, 1 o 2. Para multiplicar el polinomio a con un polinomio de clave privada solo se necesitan sumas, restas y desplazamientos sobre 1 bit. Por lo tanto, una multiplicación de polinomios de este tipo se puede implementar de forma muy eficiente.
Desde una perspectiva de implementación, los mejores resultados se logran eligiendo que la cota sea 1 (s = 1). Es decir, los coeficientes de un polinomio de clave privada son solo los valores -1, 0 y 1. También se hará referencia a esto como 'binario con signo'. La multiplicación de polinomios con un polinomio en binario con signo solo implica sumas y restas. No es necesaria unidad de multiplicación alguna para la multiplicación módulo p o q. La cota s = 1 se puede restringir aún más usando solo coeficientes binarios, por ejemplo, 0 o 1; sin embargo, en algunas realizaciones, al menos algunos de los coeficientes son 1, -1 y 0.
También son posibles otros números pequeños para s, por ejemplo, si s = 3, los coeficientes permitidos son: 0, 1, -1, 2, -2, 3, -3. Las rutinas de multiplicación para multiplicar con estos números pueden estar comprendidas en los nodos. Por ejemplo, 1, -1 puede ser manejado por un sumador/restador, - 2, 2 puede ser manejado por un desplazamiento seguido de un sumador/restador, y 3, -3 se puede manejar sumando/restando tanto el número desplazado como el no desplazado.
En una realización, el polinomio de clave privada comprende solo coeficientes que son 0, potencias de dos y, opcionalmente, potencias negativas de dos, debido a que es fácil multiplicar con las mismas.
En una realización, el polinomio de clave privada contiene números tanto positivos como negativos. Sin embargo, también es posible restringir adicionalmente el polinomio de clave privada a números no negativos. Por ejemplo, los coeficientes del polinomio de clave privada pueden estar entre 0 y s (cotas incluidas). Por ejemplo, eligiendo s = 1 en este último caso se evitan operaciones tanto de multiplicación como de resta.
Se hará referencia al número de coeficientes de polinomios en lugar de a su grado, para evitar complicaciones en caso de que el coeficiente de grado más alto sea 0. Con n se hará referencia al número de coeficientes del polinomio compartido a. Habitualmente, el polinomio de clave privada y el polinomio compartido tendrán el mismo número de coeficientes, pero esto no es necesario. En una realización, los polinomios de clave privada también tienen n coeficientes. Todas las multiplicaciones de polinomios son módulo un polinomio de grado n. Prácticamente hablando, el polinomio puede ser xn 1, aunque también servirían otros polinomios. Obsérvese que el conjunto de polinomios
Figure imgf000011_0001
forma un anillo. Este anillo no será habitualmente un campo: Tanto q como xn 1 pueden ser compuestos, y habitualmente lo serán. Obsérvese que las operaciones de redondeo, que se analizan a continuación, correlacionan este anillo con un anillo menor, de una manera incompatible con la multiplicación de anillos. Esta interrupción deliberada de la estructura matemática complica el análisis y aumenta la seguridad. El número de coeficientes n se elige lo suficientemente grande para obtener un número suficiente de bits en la clave compartida y para obtener un nivel de seguridad suficientemente alto.
Además de restringir el tamaño de los coeficientes del polinomio de clave privada, se obtienen ventajas adicionales restringiendo el número de elementos no nulos. Se hará referencia al peso de Hamming hs de un polinomio como su número de coeficientes no nulos
Los inventores de la presente invención investigaron diferentes formas de restringir el peso de los polinomios de clave privada.
Por ejemplo, se puede seleccionar una cota superior para el peso de Hamming de un polinomio de clave privada. En una realización, los polinomios de clave privada del iniciador y del respondedor (ski, skR respectivamente) tienen el mismo peso de Hamming fijo.
La seguridad mejora si - sujeto a las condiciones - se elige un polinomio de clave privada de manera uniformemente aleatoria a partir de los polinomios de clave privada candidatos, es decir, a partir de los polinomios que satisfacen los requisitos elegidos, por ejemplo, en cuanto a las cotas sobre los coeficientes (s) y el peso de Hamming. Por ejemplo, si se desea imponer la condición de que el peso de Hamming sea 50, entonces es ventajoso seleccionar un polinomio de clave privada de entre el conjunto de todos los polinomios con el número correcto de coeficientes que tienen un peso de Hamming de 50. Se conocen algoritmos eficientes para seleccionar una cadena de bits uniformemente aleatoria de cualquier peso de Hamming deseado.
Una forma diferente de restringir el peso de Hamming de los polinomios de clave privada es elegir coeficientes de un polinomio de clave privada (ski, skR) a partir de una distribución de probabilidad. Por ejemplo, los coeficientes del polinomio de clave privada (ski, skR) se pueden elegir a partir de una distribución de probabilidad no uniforme, en donde la probabilidad de un coeficiente nulo es mayor que la probabilidad de un coeficiente no nulo. En una realización, la distribución de probabilidad se elige de tal manera que esta dé un peso de Hamming esperado predeterminado. Por ejemplo, para elegir un polinomio con n coeficientes y un peso de Hamming esperado hs, se puede seleccionar cada coeficiente como no nulo con una probabilidad hs/n. El coeficiente no nulo se puede elegir como 1 o -1, por ejemplo, con igual probabilidad.
Un peso de Hamming en los polinomios que sea demasiado pequeño puede afectar a la seguridad. Por ejemplo, para n
el caso binario con signo, se puede elegir el peso de Hamming hs tal que log2 l ^ ) hs sea al menos 127, más preferiblemente al menos 255. La razón es hacer inviable un ataque de fuerza bruta haciendo un bucle a lo largo de los polinomios de clave privada. En una realización, el peso de Hamming hs es tan pequeño como sea posible para satisfacer la cota anterior. En realizaciones prácticas, para un n mayor, simplemente se puede seleccionar el peso de Hamming para que sea proporcional al número de coeficientes, por ejemplo, se puede establecer hs = an, por ejemplo, con a = 0,2. De manera más general, se puede, por ejemplo, escoger 0,1 < a < 0,9.
El nodo iniciador 110 comprende una unidad de polinomio de clave pública 150. El nodo respondedor 210 comprende un polinomio de clave pública 250. La unidad de polinomio de clave pública calcula un polinomio de clave pública a partir del polinomio a y un polinomio de clave privada sk.
Los términos público y privado pretenden transmitir que la clave compartida no se puede obtener solo con conocimiento de información pública, o no sin conocimiento de una cierta información privada. Sin embargo, no existe requisito alguno de que se comparta activamente información pública. Por ejemplo, el protocolo de acuerdo de clave se podría ejecutar a través de un canal (presuntamente) seguro, que mantiene las claves públicas a salvo de oyentes furtivos. En este caso, el protocolo de acuerdo de clave proporciona una capa adicional de seguridad en caso de que se viole la seguridad del canal.
La unidad de polinomio de clave pública calcula un polinomio de clave pública (pki, pkR para el iniciador y el respondedor, respectivamente) calculando un producto de polinomios entre el polinomio compartido (a) y el polinomio de clave privada (sk o skR, respectivamente) módulo el primer módulo (q) obteniendo un producto de polinomios, reduciendo el polinomio módulo un polinomio de reducción y ajustando a escala el resultado descendentemente.
Sin embargo, no se revela esta multiplicación de polinomios intermedia. El conocimiento del polinomio compartido a y el resultado de esta multiplicación de polinomios antes de ajustar a escala descendentemente revelaría la clave privada, debido a que esta se puede calcular dividiendo el polinomio a. La etapa de ajuste a escala realizada por la unidad de polinomio de clave pública bloquea esta opción. La unidad de polinomio de clave pública ajusta a escala los coeficientes del producto de polinomios descendentemente hasta un segundo módulo p. El segundo módulo p es menor que el primer módulo q. Un coeficiente ajustado a escala es igual al coeficiente sin ajustar a escala multiplicado por el segundo módulo (p), dividido por el primer módulo (q) y redondeado al número entero más cercano. Por ejemplo, si x es un coeficiente sin ajuste a escala módulo q en el producto de polinomios, el coeficiente ajustado a escala se
puede seleccionar como M ^ ^en donde L 1 representa el número entero más cercano. Después de la operación de ajuste a escala, deja de ser posible calcular de forma sencilla la clave privada a partir de la clave pública y el polinomio a.
Los coeficientes de un polinomio de clave pública se pueden representar como números enteros en el intervalo [0, p -1], Los coeficientes de un polinomio de clave privada también se pueden representar como números enteros en el [ - J , f
intervalo [0, p -1 ]. Existe una ventaja en la elección de los coeficientes en el intervalo 22 para reducir el tamaño de los números enteros para multiplicaciones posteriores. Como se ha señalado anteriormente, el polinomio de clave privada también puede tener coeficientes elegidos en el intervalo [-s, s] o incluso [0, s].
La multiplicación del polinomio a y un polinomio de clave privada s se hace módulo el primer módulo q. Para este fin, el nodo de red puede comprender una unidad de reducción modular para reducir módulo q. Si los coeficientes del polinomio de clave privada s son pequeños, por ejemplo, están acotados por 1, o acotados por 1 en valor absoluto, se puede simplificar la reducción modular; durante la multiplicación de polinomios, cada vez que un coeficiente se vuelve mayor que q o menor que 0, el resultado se devuelve al intervalo de 0 a q - 1 restando o sumando q.
Tanto el nodo iniciador como el nodo respondedor envían su polinomio de clave pública al otro nodo, por ejemplo, usando las interfaces de comunicación 120 y 220. Los inventores de la presente invención hallaron al menos tres ventajas que se obtienen ajustando a escala descendentemente el producto de polinomios. Antes que nada, se evita la generación y la adición explícita de ruido en el producto de polinomios. La introducción de ruido requiere el cálculo de una distribución de probabilidad, por ejemplo, una distribución gaussiana. Esto es relativamente intensivo desde el punto de vista computacional. En segundo lugar, se reducen los requisitos de comunicación. Debido a que el segundo módulo p es menor que el primer módulo q, se necesitan menos bits para representar un coeficiente del polinomio de clave pública que el de un polinomio de clave privada. En tercer lugar, los cálculos que implican el polinomio de clave pública son menores debido a que estos implican números menores. Es sorprendente que una única medida proporcione simultáneamente tres ventajas.
Se prefiere sumamente que el segundo módulo p divida al primer módulo q. Cabe destacar que los inventores de la presente invención hallaron que ni el primer ni el segundo módulo necesitan ser un número primo. De hecho, se halló que elegir el segundo módulo (p) y/o el primer módulo (q) como una potencia de 2 tiene la ventaja de que las claves pública y privada se distribuyen de manera uniforme. En una realización, tanto el primer como el segundo módulo es una potencia de 2.
En una realización, se requiere además que 2B bh divida a p además de a los módulos p y q que son potencias de dos. Esto provoca claves compartidas uniformes incluso si se observan los datos de conciliación. B es el número de bits de clave compartida extraídos por coeficiente de clave sin procesar. En algunas realizaciones, no se usan todos los coeficientes de la clave sin procesar, en ese caso B es el número de bits de clave compartida extraídos por coeficiente usado.
No es necesario que los tamaños de los módulos sean muy grandes. Por ejemplo, en una realización, el segundo módulo tiene un tamaño de bits de 12 o más, y/o el primer módulo tiene un tamaño de bits de 8 o más. Son posibles tamaños mayores o menores dependiendo de los requisitos de seguridad. En una realización, q está en el rango de 212 a 216, p está en el rango 27 a 29 (inclusive). Los valores de p y q se pueden elegir para que sean mayores o menores según sea dictado por las demandas de seguridad.
El nodo iniciador 110 comprende una unidad de clave compartida 160. El nodo respondedor 210 comprende una unidad de clave compartida 260. Las unidades de clave compartida son diferentes en el sentido de que estas o bien generan y transmiten o bien reciben y aplican los datos de conciliación.
Tanto la unidad de clave compartida 160 como la unidad de clave compartida 260 están configuradas para calcular una clave sin procesar 162, 262 como un producto de polinomios módulo el segundo módulo (p) entre la clave pública recibida del otro nodo y el polinomio de clave privada del propio nodo de red, seguido de reducción módulo el polinomio de reducción. Obsérvese que, si se omitiera la operación de ajuste a escala, ambas partes calcularían una clave sin procesar idéntica. Es decir, resultarían claves idénticas sin ajustar a escala y todos los cálculos se realizarán módulo q. Sin embargo, debido al ajuste a escala, no es necesario que ambas claves sin procesar sean idénticas. El cálculo de la clave sin procesar se hace módulo p. Los nodos de red pueden comprender una unidad modular para reducir el resultado de las multiplicaciones módulo p.
La unidad de clave compartida 260 del nodo respondedor 210 está dispuesta para obtener la clave compartida 266 y los datos de conciliación 264 a partir de la clave sin procesar 262, y para enviar los datos de conciliación 264 al nodo de red iniciador 110. Los datos de conciliación pueden adoptar la forma de uno o más bits en la clave sin procesar. Los bits elegidos como datos de conciliación se ignoran para el fin de generar una clave.
La unidad de clave compartida 260 elige algunos bits a partir de los coeficientes de la clave sin procesar para formar una clave a partir de los mismos. Por ejemplo, se pueden concatenar los bits elegidos. En una realización, los bits elegidos se introducen en una función de obtención de clave (KDF), por ejemplo, una función de hash criptográfico. Se da un ejemplo de una KDF en, por ejemplo, la CMLA_KDF de la Especificación Técnica de CMLA, Versión: V1.43-20131218, o la función KDF definida en "Especificación de DRM", Om A-TS-DRM-DRM-V2_0_2-20080723-A, Alianza Móvil Abierta™, Versión 2.0.2, sección 7.1.2, etc. La función de obtención de clave se puede aplicar a los coeficientes de los bits de clave en la clave sin procesar, por ejemplo, obtenidos por la función de redondeo, por ejemplo, después de la concatenación, o a partir de las salidas de la función de conciliación, por ejemplo, también después de la concatenación.
Algunos bits que no se eligen como bits de clave se pueden seleccionar como datos de conciliación. Por último, algunos bits se pueden descartar por completo. En una realización, los bits de clave se seleccionan de entre las partes de MSB de los coeficientes de clave sin procesar, los datos de conciliación se seleccionan de entre partes intermedias de los coeficientes de clave sin procesar, las partes menos significativas de la clave sin procesar se pueden descartar. Por ejemplo, los bits de clave se pueden obtener aplicando la función de redondeo a los coeficientes de la clave sin procesar; los bits de conciliación se pueden obtener aplicando la función de redondeo cruzado a los coeficientes de la clave sin procesar.
Los datos de conciliación de clave obtenidos a partir de la clave sin procesar por la unidad de clave compartida 260 se envían al nodo iniciador 110.
La unidad de clave compartida 160 está configurada para recibir los datos de conciliación 164 (h) del segundo nodo de red y para calcular una clave compartida aplicando una función de conciliación a los datos de conciliación recibidos y al polinomio de clave sin procesar 162. Por ejemplo, la función de conciliación se puede aplicar a cada uno de los coeficientes de la clave sin procesar 162 y la parte correspondiente de los datos de conciliación. Por ejemplo, si los datos de conciliación 164 eran parte de la clave sin procesar generada por la unidad de respondedor 210, el nodo iniciador puede seleccionar una clave sin procesar que podría haber sido obtenida por el nodo 210 y es compatible con los datos de conciliación recibidos, por ejemplo, tiene los mismos bits intermedios que los recibidos. Una forma de hacer esto es usar la función de conciliación definida anteriormente. Como resultado, se recuperan los mismos bits que el nodo 210 usó para crear la clave compartida. Concatenando los bits de la misma forma, o introduciendo estos en la misma KDF, se obtiene la misma clave compartida 166. En una realización, la clave compartida es una clave simétrica.
No se necesitan muchos datos de conciliación, solo un único bit puede ser suficiente. Sin embargo, se observó que es ventajoso aumentar el número de bits de conciliación a 2 bits o más, debido a que esto reduce la probabilidad de fallo del protocolo.
1 o 2 son valores típicos para B y bh. En el presente documento, B es el número de bits de clave extraídos por coeficiente de clave sin procesar, y bh es el número de bits de conciliación por coeficiente de clave sin procesar. El número de coeficientes (n) se elige de tal manera que el producto de n y B sea mayor o igual que un tamaño de clave deseado, por ejemplo, n B > 256.
Se podría reutilizar uno del polinomio a y el polinomio de clave privada para múltiples ejecuciones del protocolo de acuerdo de clave (si ambos son iguales, se obtendría la misma clave compartida). Esto reduciría la tara de comunicación, especialmente si se reutiliza el polinomio a. Sin embargo, los inventores de la presente invención se dieron cuenta de que es innecesario reutilizar ninguno del polinomio a y el polinomio de clave privada debido a que ninguna autenticación está conectada a estos elementos. En una realización preferida, se obtienen un nuevo polinomio a y una nueva clave privada para cada nuevo intercambio de clave. Esto tiene la ventaja de que los atacantes no tienen la opción de observar información adicional observando múltiples ejecuciones del protocolo. Además, se mejora la confidencialidad directa.
Después de que se haya completado el protocolo y ambos nodos hayan calculado una clave compartida, uno de los nodos puede enviar un mensaje de confirmación de clave al otro nodo para verificar que estos han acordado la misma clave. Por ejemplo, un mensaje de confirmación de clave puede ser un hash de la clave compartida, un cifrado de un valor fijo, un cifrado de un valor aleatorio junto con el valor aleatorio. La confirmación de clave también se puede realizar usando un protocolo de puesta a prueba - respuesta. También se puede elegir omitir la confirmación de clave. Si las partes obtienen una clave compartida diferente, entonces fallará una comunicación posterior realizada entre las mismas. Por ejemplo, la clave compartida se puede usar para cifrar y/o autenticar comunicaciones adicionales, por ejemplo, mensajes digitales. Si estas llegaron a una clave compartida diferente, entonces pueden fallar el descifrado y/o la verificación.
A continuación, se describen realizaciones ventajosas específicas adicionales. El sistema básico que representa la presente invención es un protocolo, denominado en adelante esquema de intercambio de clave (KEX), que puede ser llevado a cabo por dos entidades o partes, denominadas en lo sucesivo Iniciador y Respondedor con el fin de establecer un secreto compartido entre ellas mismas que solo es conocida por estas. Para este fin, las mismas usan un número de parámetros de sistema comunes que estas han de acordar antes de llevar a cabo el esquema de KEX, una cierta información privada que es poseída por cada una de ellas, denominada en adelante sus claves secretas, y una cierta información pública que es poseída por cada una de ellas, denominada en adelante sus claves públicas. La seguridad del esquema de KEX se basa en el problema de Aprendizaje con Redondeo (LWR) cuya seguridad se basa en el problema de Aprendizaje con Errores (LWE), protegiendo la confidencialidad del secreto compartido y la confidencialidad de las claves secretas del Iniciador y del Respondedor.
En los ejemplos siguientes, los polinomios de clave privada son binarios con signo.
Una realización del esquema de KEX comprende tres fases: Estructuración, generación de clave e intercambio de clave. En una realización, las fases de esta realización del esquema de intercambio de clave de los inventores de la presente invención son como sigue:
• Estructuración: El iniciador y el respondedor acuerdan los siguientes números enteros positivos:
i. q, p: Tal que p\q.
ii. n y O(X) = X + 1. Todas las multiplicaciones de polinomios son módulo este polinomio de reducción iii. hs < n. Este es el peso de Hamming de los polinomios de clave privada
iv. B: Número de bits extraídos por coeficiente de las claves sin procesar de las dos partes, mientras se crea la clave o secreto compartido final.
v. bh: Número de bits extraídos por coeficiente de las claves sin procesar de las dos partes, mientras se crean los datos de conciliación.
vi. a ^ Rq. Un polinomio aleatorio, en donde Rq = Zq [X]/(0(X)) es el anillo residual de un anillo ciclotómico módulo un número entero q. Preferiblemente, a y O son relativamente primos.
• Generación de clave: Tanto el iniciador como el respondedor generan sus pares de clave pública - clave secreta como sigue: i.
i. Clave secreta: Un polinomio secreto sk ^ HWTn(hs), por ejemplo, un polinomio aleatorio con n coeficientes y peso de Hamming hs
ii. Clave pública: pfc
Figure imgf000014_0001
La selección de los parámetros comunes se puede integrar en un protocolo tal como TLS o IKE si los parámetros específicos se correlacionan con un identificador dado. Por ejemplo, se puede usar un identificador de protocolo, por ejemplo, en TLS el elemento de conjunto de cifrado, para codificar los parámetros comunes. El polinomio público también se puede inferir de una semilla, por ejemplo, mediante una función hash. En una solución diferente, el iniciador decidirá algunos parámetros que se enviarán al respondedor.
• Intercambio de clave: Este esquema de intercambio de clave propuesto - intercambio de clave entre un iniciador I y un respondedor R - usa redondeo y polinomios secretos dispersos que contienen entradas ternarias, lo que conduce al establecimiento de un secreto compartido K entre I y R.
Figure imgf000015_0003
Para fines de implementación, el parámetro n debería ser ventajosamente una potencia de 2, sin embargo, esto no es un requisito de diseño.
Seleccionar el peso de Hamming no es crítico, pero suponiendo un nivel de seguridad objetivo en bits de S (post­ cuántico) y 2S (clásico). Con el fin de asegurar que una búsqueda exhaustiva y por fuerza bruta de la clave secreta con el fin de estimar sus coeficientes tenga una carga de trabajo suficientemente alta, el número de secretos en los vectores de clave secreta (teniendo cada uno un peso de Hamming hs) debería satisfacer:
Figure imgf000015_0001
en donde, 22S es el tiempo de ejecución del algoritmo de búsqueda cuántica de Grover y 2S es el tiempo de ejecución de un algoritmo de búsqueda clásico. Por ejemplo, S puede ser 128 o 256, etc. Obsérvese que esta cota es para el caso en el que la cota sobre los valores absolutos de los coeficientes de los polinomios de clave privada es 1. Se puede establecer una cota similar para cotas s mayores.
La selección de los polinomios de clave privada se puede realizar de forma probabilística. La generación probabilística de clave privada simplifica la implementación. Cuando se crea la clave secreta ski e {0, ±1}n ^ HWTn(hs) y skRe{0, ±1}n ^ HWTn(hs)n, en lugar de generar hs coeficientes no nulos para las claves secretas, cada /-ésimo coeficiente de clave secreta sk en esta realización se crearía como sigue:
skl = 1 ,con probabilidad = (~ ) ,
skl = —1 ,con probabilidad = (~ ) ,
Figure imgf000015_0002
Como alternativa, si la generación es determinista, entonces se puede hacer lo siguiente usando una PRF segura convencional: si hay hs elementos no nulos (o bien 1 o bien -1) en un vector de n posiciones, entonces la salida de la PRF selecciona posiciones aleatorias en la columna junto con valores aleatorios 1 o -1 hasta que la PRF seleccione hs elementos no nulos en diferentes ubicaciones. Por ejemplo, la salida de PRF se puede dividir en bloques de [logn ] bits 1 en los que los primeros [logn ] bits del bloque identifican la posición del elemento no nulo y el último bit del bloque determina si el elemento es 1 o -1. El vector se puede usar como coeficientes del polinomio de clave privada.
El intercambio de clave propuesto tiene varias ventajas.
Complejidad computacional: Debido a que el polinomio de clave secreta es disperso y tiene coeficientes, 0, 1 y -1, los cálculos módulo q en el esquema de los inventores de la presente invención son rápidos. Específicamente, se pueden optimizar altamente las multiplicaciones que implican polinomios con un número alto de coeficientes (por ejemplo, durante la generación de claves públicas y claves sin procesar). Complejidad de comunicación: Debido al uso del redondeo a un módulo más bajo, se es capaz de reducir el tamaño de cada coeficiente de una clave pública y una clave sin procesar, logrando requisitos de ancho de banda significativamente más bajos. Esto se cuantifica en las dos tablas siguientes, en donde se muestran los requisitos de ancho de banda del esquema propuesto de los inventores de la presente invención (con y sin el uso de redondeo, respectivamente). Las realizaciones se comparan con el protocolo basado en LWE descrito en "Frodo: Take off the ring! Practical, Quantum-Secure Key Exchange from LWE', por J. Bos, C. Costello, L. Ducas, I. Mironov, M. Naehrig, V. Nikolaenko, A. Raghunathan, D. Stebila.
El ancho de banda se calcula como el tamaño total de los mensajes de intercambio de clave intercambiados (es decir, claves públicas y datos de conciliación) y no incluye el intercambio del polinomio público a.
Anteriormente se ha descrito el uso de secretos dispersos pequeños en combinación con Aprendizaje con Redondeo (LWR), por ejemplo, para el diseño de un intercambio de clave basado en retículo. A continuación, se proporcionan realizaciones adicionales, se describe cómo se pueden elegir los parámetros y se dan varios ejemplos. Sea Zq, para un número entero q > 1, tal que denote el anillo cociente Z/qZ. Se define R = Z[X\/(Xn + 1) como el anillo de polinomios enteros módulo X 1. Se usa Rq= Zq[X]/(Xn 1) para denotar el anillo de polinomios enteros módulo X + 1 en donde cada coeficiente se reduce módulo q. En el caso de que x sea una distribución de probabilidad sobre R, entonces .$
x *— cl A y denota el muestreo de x e R de acuerdo con la distribución X- La escritura de *— R significa que todos los coeficientes del polinomio o vector a se eligen de manera uniforme y aleatoria a partir de Zq. Dz,o representa la distribución gaussiana discreta sobre Z parametrizada por el parámetro gaussiano a e ^ y definida asignando un peso - x 2 proporcional a exp (— ) a todos los números enteros x. Para los números enteros n, h en donde 0 < h < n, HWTn(h) muestrea de manera uniforme y aleatoria polinomios o vectores que contienen n componentes con exactamente h componentes no nulas a partir de la distribución o bien {0, 1} o bien {-1, 0, 1}. Las funciones HelpRec () y Rec () usados en el cálculo de los datos de conciliación y la conciliación de la clave compartida final, respectivamente, son los mismos que se definen en [1\ (se dan referencias a continuación).
En las siguientes etapas que son realizadas por Alice y Bob (los participantes en el intercambio de clave), HWTn(h) muestrea a partir de la distribución ternaria {-1, 0, 1} por razones de ilustración.
Como comparación, se hará referencia a New Hope [2\ y la forma en la que New Hope configura sus parámetros [2\. New Hope es un esquema de intercambio de clave basándose en lW e en Anillo. Sin embargo, New Hope usa distribuciones de secreto y de ruido que se asemejan mejor a la distribución gaussiana original. Por lo tanto, cuando se calcula una clave pública b = as + e (mod q) o cuando se calcula una clave v’ = bs’ + e" (mod q), los autores proponen usar la Transformada Teórica de Números. Cuando se hace esto:
b = a N TT(s ) NTT(e ) v ’ = bN T T (s ’) N T T (e " )
y '
Anteriormente, los elementos con virgulilla representan vectores después de aplicar la NTT. a se calcula directamente. Y, en la práctica, Alice y Bob intercambian los coeficientes de b y b ’. NTT son las siglas de Transformada Teórica de Números.
NTT permite realizar operaciones más rápidamente, sin embargo, NTT también plantea algunos requisitos.
• es necesario que n sea una potencia de dos
• q es un número primo tal que q = 1 (mod 2n)
Esto obliga a New Hope a elegir un valor relativamente grande de n, en concreto 1024, y simultáneamente también determina q. Para estos parámetros, los autores de New Hope determinan entonces el nivel de seguridad que ofrece el esquema.
Un problema abordado por la presente invención es la elección de parámetros usando secretos pequeños de tal manera que se puedan elegir parámetros de configuración pequeños que proporcionen un nivel de seguridad dado al tiempo que se asegura un buen desempeño.
Obsérvese que New Hope [2\ divulga parámetros de configuración. Sin embargo, no hay alternativa a los parámetros propuestos por los autores de New Hope, debido a que es necesario que n sea una potencia de dos de tal manera que la elección propuesta (n = 1024) dé como resultado que la implementación basada en NTT sea posible en ese ajuste. Sin embargo, este es un requisito que es impuesto más por el uso de NTT que por argumentos de seguridad. La imposición de la restricción anterior sobre la forma de n da como resultado una elección que es mayor de lo necesario con el fin de lograr también un nivel de seguridad dado.
Las realizaciones descritas en el presente documento usan secretos pequeños en combinación con redondeo que no requieren NTT para lograr un buen desempeño. Debido a que este esquema no requiere NTT, los valores de n y q se pueden elegir sin las restricciones impuestas por NTT.
A continuación, se divulgan realizaciones con parámetros (q, p, n) que cumplen las siguientes condiciones:
a) q es tan pequeño como sea posible
b) se puede calcular un bit de clave a partir de cada coeficiente del vector de clave que determina p
c) n es tan pequeño como sea posible mientras se asegura que, en combinación con el q elegido y un número óptimo de muestras m, el nivel de seguridad proporcionado es al menos A.
El sistema calcula esos parámetros (q, p, n) que son aplicados entonces por Alice y Bob en un intercambio de clave usando secretos pequeños.
El análisis de seguridad de un KEX basado en LWE en Anillo implica analizar la probabilidad de éxito de un atacante con acceso al algoritmo de reducción de retículo BKZ y emplear una versión adaptada del ataque primigenio para resolver el problema de SVP único. Este ataque es adaptado por el atacante con el fin de explotar el hecho de que el secreto es inusualmente pequeño y, además, incluso posiblemente disperso. Esta adaptación se realiza usando un ajuste a escala de retículo con el fin de equiparar las varianzas del secreto y las componentes de ruido en el vector más corto único que busca el atacante, usando reducción de retículo, y se inspira en las técnicas detalladas en [3]. Analizar la probabilidad de éxito de este ataque primigenio adaptado produce el valor más pequeño de n que no puede ser atacado por una instancia dada de la reducción de retículo BKZ con un tamaño de bloque dado b, suponiendo una llamada al oráculo de SVP dentro del algoritmo, y teniendo un tiempo de ejecución de 2cb ciclos de reloj de CPU, en donde c es una constante experimental para la que ya existen estimaciones heurísticas.
A continuación, se describe el algoritmo para hallar los parámetros más pequeños (q, p, n) que permiten la generación de un bit de clave por coeficiente del vector de clave, para el número óptimo de muestras m, para lograr un nivel de seguridad A dado. En una realización, este algoritmo se ejecuta en un servidor, o en Alice o en Bob a los que se les da el nivel de seguridad objetivo A. Dado el nivel de seguridad, estos calculan los parámetros de configuración correspondientes que entonces se intercambian y se usan en el protocolo de intercambio de clave.
Figure imgf000017_0001
Figure imgf000018_0001
Figure imgf000018_0002
Figure imgf000019_0001
El último algoritmo produce valores apropiados para n y p para diferentes valores de q. A continuación, se puede hacer una optimización sobre q, por ejemplo, para escoger parámetros con un requisito de ancho de banda bajo. Preferiblemente, p debería ser una potencia de 2 para las mejores implementaciones posibles. En lugar de elegir p como una potencia de 2, satisfaciendo P ^ ¿'i i a (por ejemplo, tan grande como sea posible), también se puede hacer un bucle a lo largo de los valores de p. Especialmente si tanto p como q son potencias de 2.
Preferiblemente, p debería ser un factor de q para que el análisis de condición de éxito de conciliación que se hizo sea correcto (una de las etapas en el cálculo de la condición necesita este requisito). Esta condición se satisface automáticamente si se satisface (1). Seguridad: la relación q/p debería ser lo suficientemente grande como para que la varianza del error de redondeo sea casi la misma que la varianza de un error gaussiano equivalente.
Ventajas de la KEX basándose en secretos pequeños con LWR: Debido a que las claves secretas en el intercambio de clave consisten en componentes pequeñas (ternarias o binarias), multiplicaciones de polinomios módulo (X 1) se pueden portar de manera eficiente incluso sin requerir operaciones de los polinomios en el dominio de la transformada teórica de números (NTT), tal como se hace en [1].
Debido a esta razón, no se imponen restricciones adicionales sobre el valor de n y q excepto por lo dictado por el análisis de seguridad. Además, es factible usar LWR (no es factible con NTT). Por lo tanto, una ventaja importante es que se puede elegir un valor menor de n que reduce los requisitos de ancho de banda.
El ancho de banda para el esquema de intercambio de clave basado en LWE en Anillo de New Hope se calcula como sigue:
AnchoBandaNewHope = (2 • 1024 • [log2 12289]) (256 • 8)
El ancho de banda para el esquema de intercambio de clave basado en sp-terLWE-ANILLO se calcula como sigue:
AnchoBandasp-terLWE-ANiLLo = (2 • n • \log2 qj) (longitudclave • bh)
El parámetro bh representa el número de bits extraídos por componente del polinomio de clave sin procesar v’ de Bob para la creación de cada componente del polinomio de datos de conciliación r, y se toma como 2 para todos los intercambios de clave y niveles de seguridad anteriores, basándose en un mecanismo de conciliación mejorado debido a [1].
Al comparar el enfoque de los inventores de la presente invención con los parámetros de New Hope, se consideran los siguientes casos.
a) Sin restricciones sobre n, pero para el mismo q que en New Hope, aumento de desempeño para los secretos ternarios dispersos en LWR en Anillo.
Tabla 1: Dimensiones de problema más grandes de LWR en Anillo susceptibles al ataque primigenio usando BKZ con un tamaño de bloque 'b' de tal manera que el coste de ejecutar BKZ-b es al menos 2128 y la probabilidad de fallo de acuerdo de clave es como máximo 2-60. El polinomio de ruido se muestrea a partir de una distribución gaussiana discreta de desviación estándar V8. El peso de Hamming de polinomios secretos en sp-terLWR-ANILLO es 0,2 n. El ancho de banda se calcula incluyendo datos de conciliación calculados basándose en [1].
Figure imgf000020_0001
Sin embargo, se observa que, para este valor de q, no es factible realizar la misma conciliación de clave que en [1]. b) Sin imponer restricciones sobre el (n, q) usado en New Hope, aumento de desempeño para los secretos ternarios dispersos en LWR en Anillo
Tabla 2: Dimensiones de problema más grandes de LWR en Anillo susceptibles al ataque primigenio usando BKZ con un tamaño de bloque 'b' de tal manera que el coste de ejecutar BKZ-b es al menos 2128 y la probabilidad de fallo de acuerdo de clave es como máximo 2-60 El peso de Hamming de polinomios secretos en sp-terLWR-ANILLO es 2 n El n h n l l in l n n ili i n l l n n^11.
Figure imgf000021_0001
Obsérvese que se usa un valor de q igual a una potencia de dos de tal manera que se pueda aplicar el método de conciliación de clave en [1]. Obsérvese que se usa un valor de p igual a una potencia de dos con el fin de mejorar el desempeño.
El ancho de banda para el esquema de intercambio de clave basado en LWR en Anillo de New Hope se calcula como sigue:
AnchoBandaNewHope = (2 • 1024 • \log212289]) (256 • 8)
El ancho de banda para el esquema de intercambio de clave basado en terLWR-ANILLO se calcula como sigue:
AnchoBandaterLWE-ANiLLo = (2 • n • \\og2 p]) (longitudclave • bh)
El ancho de banda para el esquema de intercambio de clave basado en sp-terLWR-ANILLO se calcula como sigue:
AnchoBandasp-terLWE-ANiLLo = (2 • n • \log2 p]) (longitudclave • bh)
El parámetro bh representa el número de bits extraídos por componente del polinomio de clave sin procesar v' de Bob para la creación de cada componente del polinomio de datos de conciliación r.
Obsérvese que la eliminación de las restricciones sobre los parámetros debido a NTT permite la flexibilidad para optimizar el análisis de la seguridad y la corrección operativa. Para los parámetros calculados, se requiere 0,41 veces el ancho de banda en comparación con el esquema de intercambio de clave de New Hope cuando se usa redondeo, para niveles de seguridad post-cuántica. Además, el abandono de NTT no provoca caída significativa alguna en el desempeño, suponiendo implementaciones optimizadas para aprovechar secretos dispersos y pequeños.
1. L. Tolhuizen, O. García Morchon, R. Rietman, "Reaching agreement on a secret value", Primera presentación, referencia de Phillips 2016P01227EP, 4 de noviembre de 2016. Archivado ante la Oficina Europea de Patentes con el número de solicitud 16197277.3
2. E. Alkim, L. Ducas, T. Poeppelmann, P. Schwabe. Post-quantum key-exchange - a newhope. Archivo Cryptology ePrint, Informe 2015/1092, https://eprint.iacr.org/2015/1092.pdf.
3. S. Bai, S. D. Galbraith. Lattice Decoding Attacks on Binar/ LWE. Archivo Cryptology ePrint, Informe 2013/839, https://eprint.iacr.org/2013/839.pdf.
La figura 6a muestra esquemáticamente un ejemplo de una realización de un dispositivo de selección de parámetros 600. Al igual que los dispositivos 110, 210, 510, 520, también el dispositivo 600 puede comprender un circuito procesador y una memoria electrónica, almacenando dicha memoria código informático ejecutable por el circuito procesador. Configurando dicho código informático el dispositivo, por ejemplo, implementando un método correspondiente. Realizaciones alternativas pueden implementar toda o parte de la funcionalidad en hardware, o en un híbrido de hardware y software. A continuación, se definen unidades del dispositivo 600; estas se pueden considerar como unidades que se pueden implementar en software/hardware, etc. El dispositivo 600 está configurado para seleccionar parámetros para su uso en un nodo de red. En particular, se pueden optimizar los parámetros p, q y n, pero también otros parámetros, por ejemplo, h o B, etc. El dispositivo 600 puede ser usado por un diseñador de protocolos criptográficos, pero el dispositivo 600 también se puede usar como parte de una toma de contacto antes de ejecutar uno o múltiples protocolos de acuerdo de clave, tal como se describe en el presente documento.
El dispositivo 600 realiza la optimización en dos etapas. Se generan los primeros múltiples conjuntos de parámetros. A continuación, se realiza una optimización sobre los conjuntos de parámetros que se hallan, por ejemplo, seleccionando uno que tenga características deseables, por ejemplo, ancho de banda bajo, requisitos de computación bajos, etc.
El dispositivo 600 comprende un generador de conjuntos de parámetros 610. El generador de conjuntos de parámetros 610 está configurado para generar múltiples conjuntos de parámetros posibles. Por ejemplo, los conjuntos de parámetros incluyen al menos un primer módulo (q), un segundo módulo (p) y un número de coeficientes (n) del polinomio compartido (a). El generador de conjuntos de parámetros 610 comprende una unidad de selección de p, q 620 configurada para generar múltiples pares de un primer módulo (q) y un segundo módulo (p). Por ejemplo, la unidad de selección de p, q 620 puede recorrer múltiples valores posibles de q, y seleccionar p de acuerdo con una cota fija, por ejemplo, como se ha definido anteriormente. En este último caso, se introduce una cantidad conocida de ruido en la operación de ajuste a escala. Sin embargo, esto no es necesario. Tanto p como q se podrían variar de forma independiente entre sí. Las verificaciones sobre la seguridad de las elecciones eliminarían por filtrado las combinaciones malas de p y q. Los valores para p y q se pueden elegir para que sean prácticos, por ejemplo, una potencia de dos, y dentro de cotas razonables, por ejemplo, entre 7 y 16 bits, o similares.
Por ejemplo, en una realización, q se varía entre 28 y 216 (inclusive), p se puede variar independientemente de q; por ejemplo, p se puede variar entre 24 y 212 (inclusive), p también se puede elegirían grande como sea posible de acuerdo
con la cota 2',3G a Esto asegurará que se introduzca ruido como se indica por o. Por ejemplo, crse puede elegir como V8 o V l2 , o entremedias. Un nivel de ruido mayor será bueno para la seguridad, debido a que se puede inferir menos información a partir de los datos intercambiados entre los nodos. Por otro lado, un nivel de ruido más alto aumenta la probabilidad de fallo.
El dispositivo 600 comprende además un optimizador de n, m 630. El optimizador de n, m 630 está configurado para buscar un número seguro de coeficientes (n) para un par dado de módulos. Seleccionar un n seguro no es sencillo, debido a que este depende del número de mensajes m que un atacante tendrá en cuenta. Si un atacante solo va a tener en cuenta unos pocos mensajes, por ejemplo, la información intercambiada, tal como el polinomio compartido y las claves públicas, será suficiente un valor más bajo de n. A medida que aumenta m, aumentará el valor menos seguro para n. Sin embargo, en algún momento, tener en cuenta más mensajes supondrá tanto más trabajo por el atacante que la información adicional que este podría extraer de los mensajes adicionales no compense la carga de trabajo aumentada. En otras palabras, para cualquier n, p y q dados, hay un número óptimo de mensajes que el atacante ha de tener en cuenta.
Esta interacción hace difícil seleccionar un n seguro. Especialmente, si se desea que el n sea pequeño. Podría parecer tentador buscar un n seguro para meramente establecer el m a un cierto valor máximo grande. Después de todo, se quiere estar seguro incluso si el atacante analiza una gran cantidad de tráfico. Sin embargo, esto conduciría a valores poco realistas y poco seguros de n. Tener en cuenta una gran cantidad de mensaje es tanto trabajo, que basta un n relativamente pequeño para hacerlo inviable. Si el atacante redujera el número de mensajes a analizar, el n requerido podría aumentar. Por eso, no servirá simplemente establecer m = mmáx.
El optimizador de n, m 630 aborda este problema como sigue. Este está configurado para inicializar en primer lugar un número de coeficientes (n) y un número de muestras (m) usados por un atacante (m). Por ejemplo, n se puede establecer a un nm¡n, por ejemplo, a 100, y m a un mmín, por ejemplo, a 0 o a 1.
Dado un ajuste, el optimizador de n, m 630 determina si el conjunto es, o no, seguro. Si el mismo no es seguro, este aumenta n; si el mismo es seguro, este aumenta m. El proceso termina cuando m alcance algún valor máximo mmáx. En este punto, se ha hallado un n que es seguro para todos los números razonables de mensajes m . Siempre que n sea lo suficientemente grande, con el tiempo el sistema será seguro. Para evitar una ejecución demasiado larga del algoritmo, también se puede imponer un valor máximo de n, por ejemplo, 1000 bits o así.
En este punto, se halla una terna n, p, q que es segura. Sin embargo, puede suceder que el conjunto tenga una probabilidad demasiado baja de alcanzar una clave compartida con éxito. El siguiente dispositivo 600, por ejemplo, el generador de conjuntos de parámetros 610, verifica la corrección operativa del conjunto de parámetros. Si no se verifica la corrección operativa (por ejemplo, una probabilidad de éxito demasiado baja), se descarta el conjunto de parámetros; si se verifica su corrección operativa, el conjunto de parámetros se puede añadir a una lista. A continuación, se puede continuar la búsqueda con un nuevo par de módulos.
Por último, cuando se hallan múltiples conjuntos de parámetros seguros, se puede realizar una optimización sobre los conjuntos hallados. Por ejemplo, se puede seleccionar un conjunto de parámetros con un requisito de ancho de banda más bajo. Por ejemplo, se puede elegir el requisito de ancho de banda más bajo. O más bajo que un umbral. En este último caso, también se pueden tener en cuenta otros factores, por ejemplo, la eficiencia computacional. Se prefiere, por ejemplo, si los módulos permanecen en los límites naturales de palabra de ordenador o justo por debajo de los mismos, por ejemplo, 8, 16 bits, en lugar de ir justo por encima de estos.
El dispositivo 600 comprende una interfaz de salida 120 dispuesta para emitir el conjunto de parámetros seleccionado. Por ejemplo, la interfaz de salida puede ser un visualizador, por ejemplo, un monitor. La interfaz de salida se puede configurar para enviar un mensaje digital, por ejemplo, un correo electrónico, un informe digital, etc. La interfaz de salida 120 puede comprender un puerto de ordenador.
La figura 6b muestra esquemáticamente un ejemplo de una realización de un método de selección de parámetros 650. Por ejemplo, el método 650 se puede ejecutar en un ordenador, en un dispositivo tal como el dispositivo 600, etc. El método 650 comprende generar 660 múltiples conjuntos de parámetros posibles, incluyendo los conjuntos de parámetros al menos un primer módulo q, un segundo módulo p y un número de coeficientes n del polinomio compartido a. Por ejemplo, la generación de un conjunto de parámetros se puede realizar de acuerdo con el diagrama de flujo del lado derecho de la figura 6b.
Generar 660 puede comprender generar 661 múltiples pares de un primer módulo q y un segundo módulo p. A continuación, se analiza la seguridad del par de módulos buscando un número seguro de coeficientes n para el par. Este análisis puede comprender
- inicializar 662 un número de coeficientes n y un número de muestras m usados por un atacante m.
A continuación, en un recuadro de decisión 664 se determina si es posible un ataque sobre los parámetros establecidos con el par dado, un número de coeficientes n y un número de muestras m.
Si un ataque es posible, entonces el algoritmo continúa en 666 con el aumento del número de coeficientes n y el restablecimiento del número de muestras usadas m.
Si un ataque no es posible, entonces el algoritmo continúa en 668 con el aumento del número de muestras m.
En ambos casos, el algoritmo vuelve al recuadro de disuasión 664.
Si el número de muestras m supera un número máximo de muestras, por ejemplo, como también se puede determinar en la parte 668, entonces el algoritmo continúa verificando 669 la corrección operativa del conjunto de parámetros. Por último, cuando se han hallado múltiples conjuntos de parámetros, el algoritmo selecciona, en 670, de entre los múltiples conjuntos de parámetros, un conjunto de parámetros con un requisito de ancho de banda más bajo.
La determinación de la corrección operativa, la capacidad de ataque y el requisito de ancho de banda se pueden realizar usando funciones o rutinas dedicadas que estiman estas variables. Por ejemplo, se puede estimar cómo de bien se puede atacar a un conjunto de parámetros extrapolando cotas conocidas.
La figura 5 muestra esquemáticamente un ejemplo de una realización de una red de acuerdo de clave 500. La red de acuerdo de clave 500 se basa en / comprende un nodo iniciador 510 y un nodo respondedor 520. La red de acuerdo de clave 500, el nodo iniciador 510 y el nodo respondedor 520 se basan en la red de acuerdo de clave 100, el nodo iniciador 110 y el nodo respondedor 120. Las redes 500 y 100 pueden usar los mismos o similares anillos y parámetros subyacentes, y similares. Una diferencia importante entre la red 500 y la red 100 es que, en esta última, la clave compartida se basa en la clave sin procesar que genera cada parte, pero, en la red 500, la clave compartida es independiente de la misma. En la realización a continuación, se supondrá que la clave compartida es generada por el nodo respondedor 520, pero esto no es limitativo. De hecho, cualquier clave se puede compartir usando este mecanismo. Por ejemplo, la clave compartida se puede obtener de una fuente adicional, por ejemplo, de algún otro protocolo o de un almacenamiento, etc. Por ejemplo, la clave se puede generar conjuntamente, etc.
Al igual que en la red 100, los nodos obtienen un polinomio compartido (a), generan un polinomio de clave privada y generan un polinomio de clave pública. Esto último comprende calcular el producto de polinomios entre el polinomio compartido (a) y el polinomio de clave privada módulo un primer módulo q, obtener un producto de polinomios, reducir el producto de polinomios módulo un polinomio de reducción y ajustar a escala los coeficientes descendentemente hasta mod p . Se intercambian las claves públicas y se calcula una clave sin procesar en cada lado, por ejemplo, como el producto de polinomios entre la clave pública recibida y el propio polinomio de clave privada del nodo mod p, seguido de reducción módulo un polinomio de reducción. Sin embargo, a diferencia de la red 100, la clave compartida no se infiere directamente de la clave sin procesar, más bien la clave sin procesar se usa para encapsular la clave compartida generada.
El nodo respondedor 520 comprende una unidad de compartición de clave 570 configurada para obtener una clave para compartir y para encapsular la clave compartida con la clave sin procesar. La clave compartida encapsulada se envía al nodo iniciador. El nodo iniciador 510 también comprende una unidad de clave compartida 560 configurada para recibir una clave compartida encapsulada y para desencapsular la clave compartida encapsulada con esta clave sin procesar. De esta manera, el nodo 510 obtiene asimismo la clave compartida.
La encapsulación de clave de la clave compartida con la clave sin procesar se elige de tal manera que una diferencia pequeña en las claves sin procesar da como resultado un error pequeño en la clave compartida desencapsulada y, al mismo tiempo, la clave compartida encapsulada comprende una redundancia suficiente para corregir tales errores pequeños.
Por ejemplo, una forma de encapsular una clave compartida es como sigue. En primer lugar, la unidad de clave compartida 570 genera una clave compartida 573 (u obtiene de otro modo la clave que se va a compartir). La clave compartida 573 se codifica. Una primera forma de codificar la clave compartida es multiplicar la misma por la mitad del segundo módulo p/2. Una segunda forma es usar un código de corrección de errores.
La clave compartida codificada resultante se suma a la clave sin procesar 262. Por ejemplo, la clave compartida 262 se puede considerar como un polinomio con coeficientes mod p. En este caso, se puede seleccionar el código de corrección de errores como un código de repetición sobre Zp. En el otro lado, el nodo 510 comprende una unidad de compartición de clave 560 configurada para restar la clave sin procesar 162 de la clave encapsulada 576 recibida para recuperar la clave codificada 564. Esto último diferirá de la clave codificada 574 debido a las diferencias entre las claves sin procesar 162 y 262. La clave de codificación resultante contiene información suficiente para que la clave compartida codificada original se pueda reconstruir a menudo. Considérese el ejemplo en el que el nodo 520 multiplique la clave compartida. En ese nodo 510 hallará valores cercanos a cero si la clave compartida codificada original tuviera un cero, y valores cercanos a p/2 si la clave compartida codificada original tuviera un valor p/2. Un descodificador de decisión rígida en el nodo 510 puede correlacionar la resta con los valores más cercanos.
Se puede obtener más seguridad de obtener la misma clave compartida usando un código de corrección de errores. Por ejemplo, la clave compartida 573 se puede codificar bit a bit con el código de corrección de errores. También se pueden traducir bloques mayores de la clave compartida 573 a la vez. Por ejemplo, un bit cero en la clave compartida 573 se puede correlacionar con (0, 0, 0) y un bit 1 con (p/2, p/2, p/2). En este caso, la clave compartida 573 es aproximadamente 1/3 de la longitud de la clave sin procesar 262. Diferencias pequeñas en la longitud se pueden resolver con relleno. Este código de repetición se puede descodificar con descodificación mayoritaria. Se obtiene un mejor resultado sumando los tres valores correspondientes al mismo bit en la clave compartida. Sin errores, esto último debería ser 0 o 3p/2; correlacionando con el valor más cercano, se obtiene una descodificación mejor. La clave compartida codificada corregida se puede correlacionar con una clave compartida.
Es ventajoso seleccionar la clave compartida 573 demasiado larga y más tarde reducir esta aplicando hash a la longitud de clave deseada, por ejemplo, usando una KDF. Por ejemplo, si n es 1024, se puede tomar la longitud en bits de la clave compartida 573 como 341 y más tarde obtener una clave de 128 bits a partir de la misma. Otro enfoque consiste en correlacionar en primer lugar la clave sin procesar 262 con una cadena binaria. Por ejemplo, obteniendo B bits de cada coeficiente y concatenando el resultado. Esto tiene la ventaja de que se puede usar un código mucho menor.
A continuación, se da una posible realización:
Figure imgf000024_0001
En las diversas realizaciones, la interfaz de comunicación se puede seleccionar de entre diversas alternativas. Por ejemplo, la interfaz de comunicación puede ser una interfaz de red a una red de área local o extensa, por ejemplo, Internet, una interfaz de almacenamiento a un almacenamiento de datos interno o externo, un teclado, etc.
Los nodos de red pueden comprender un almacenamiento electrónico, por ejemplo, para almacenar datos intermedios tales como el polinomio a, los polinomios de clave pública y privada y la clave compartida, etc. El almacenamiento se puede implementar como una memoria electrónica, por ejemplo, una memoria flash, o una memoria magnética, por ejemplo, un disco duro o similar. El almacenamiento puede comprender múltiples memorias discretas que conjuntamente conforman un almacenamiento. El almacenamiento también puede ser una memoria temporal, por ejemplo, una RAM. En el caso de un almacenamiento temporal, el almacenamiento puede usar algunos medios para obtener parámetros comunes antes de su uso, por ejemplo, obteniendo estos a través de una conexión de red opcional (no mostrada por separado).
Habitualmente, los dispositivos 110, 210, 510, 520, 600 comprenden cada uno un microprocesador (no mostrado por separado en la figura 1) que ejecuta un software apropiado almacenado en los dispositivos 110, 210, 510, 520, 600; por ejemplo, ese software puede haberse descargado y/o almacenado en una memoria correspondiente, por ejemplo, una memoria volátil tal como RAM o una memoria no volátil tal como flash (no mostrada por separado). Como alternativa, los dispositivos 110, 210, 510, 520, 600 pueden implementarse, en su totalidad o en parte, en lógica programable, por ejemplo, como campos de matrices de puertas programables (FPGA). Los dispositivos 110, 210, 510, 520, 600 pueden implementarse, en su totalidad o en parte, como un denominado circuito integrado específico de la aplicación (ASIC), es decir un circuito integrado (CI) personalizado para su uso particular. Por ejemplo, los circuitos se pueden implementar en CMOS, por ejemplo, usando un lenguaje de descripción de hardware tal como Verilog, VHDL, etc.
En una realización, un nodo de red comprende un circuito de interfaz de comunicación, un circuito de polinomio compartido, un circuito de polinomio de clave privada, un circuito de polinomio de clave pública y un circuito de clave compartida. Los circuitos implementan las unidades correspondientes descritas en el presente documento. Los circuitos pueden ser un circuito procesador y un circuito de almacenamiento, ejecutando el circuito procesador instrucciones representadas electrónicamente en los circuitos de almacenamiento.
Un circuito procesador se puede implementar de forma distribuida, por ejemplo, como múltiples circuitos subprocesadores. Un almacenamiento se puede distribuir en múltiples subalmacenamientos distribuidos. Parte o toda la memoria puede ser una memoria electrónica, una memoria magnética, etc. Por ejemplo, el almacenamiento puede tener una parte volátil y una no volátil. Parte del almacenamiento puede ser de solo lectura. Los circuitos también pueden ser FPGA, ASIC o similares.
La figura 3 muestra esquemáticamente un ejemplo de una realización de un método de intercambio de clave electrónica. El método puede ser ejecutado por un primer nodo de red electrónico, tal como el nodo iniciador 110 o el nodo respondedor 210.
El método 400 comprende
- organizar (410) una comunicación digital entre el primer nodo de red y un segundo nodo de red,
- obtener (420) un polinomio compartido (a), compartiéndose el polinomio compartido con el segundo nodo de red a través de la comunicación digital, seleccionándose coeficientes del polinomio compartido a módulo un primer módulo q,
- generar (430) un polinomio de clave privada (ski), acotándose coeficientes del polinomio de clave privada en valor absoluto por una cota (s),
- generar (440) un polinomio de clave pública (pki) al
- calcular (442) un producto de polinomios entre el polinomio compartido (a) y el polinomio de clave privada (ski) módulo el primer módulo (q) obteniendo un producto de polinomios, seguido de reducción módulo un polinomio de reducción
- ajustar a escala (444) los coeficientes del producto de polinomios descendentemente hasta un segundo módulo (p), siendo un coeficiente ajustado a escala igual al coeficiente sin ajustar a escala multiplicado por el segundo módulo (p), dividido por el primer módulo (q) y redondeado al número entero más cercano, siendo el segundo módulo (p) menor que el primer módulo (q), siendo la cota (s) como máximo el segundo módulo (p), - enviar (452) el polinomio de clave pública del primer nodo de red al segundo nodo de red,
- recibir (454) un polinomio de clave pública (pkR) del segundo nodo de red,
- calcular (460) una clave sin procesar como un producto de polinomios entre la clave pública recibida del segundo nodo y el polinomio de clave privada del primer nodo de red módulo el segundo módulo (p), seguido de reducción módulo un polinomio de reducción
Si el primer nodo de red está funcionando de acuerdo con un modo de iniciador, entonces el primer nodo de red puede realizar los siguientes elementos adicionales de acuerdo con una realización.
- recibir (472) datos de conciliación (h) del segundo nodo de red,
- calcular (482) una clave compartida aplicando una función de conciliación (rec) a los datos de conciliación recibidos y la clave sin procesar.
Si el primer nodo de red está funcionando de acuerdo con un modo de respondedor, entonces el primer nodo de red puede realizar los siguientes elementos adicionales de acuerdo con una realización.
- obtener (474) la clave compartida y los datos de conciliación a partir de la clave sin procesar,
- enviar (484) los datos de conciliación al primer nodo de red.
Como se señala en el presente documento, también se pueden emplear otros tipos de datos auxiliares en el método 400.
Son posibles muchas formas diferentes de ejecutar los métodos, como será evidente para un experto en la materia. Por ejemplo, el orden de las etapas se puede variar o algunas etapas se pueden ejecutar en paralelo. Además, entremedias de las etapas se pueden insertar otras etapas de método. Las etapas insertadas pueden representar perfeccionamientos del método tal como se describe en el presente documento, o pueden no estar relacionadas con el método. Por ejemplo, una etapa dada puede no haber finalizado completamente antes de que se inicie una etapa siguiente.
Un método de acuerdo con la invención se puede ejecutar usando software, que comprende instrucciones para hacer que un sistema procesador ejecute el método 400 o 650. El software solo puede incluir las etapas acometidas por una subentidad particular del sistema. El software se puede almacenar en un medio de almacenamiento adecuado, tal como un disco duro, un disco flexible, una memoria, un disco óptico, etc. El software se puede enviar como una señal a lo largo de un hilo, o de forma inalámbrica o usando una red de datos, por ejemplo, Internet. El software se puede facilitar para su descarga y/o para un uso remoto en un servidor. Un método de acuerdo con la invención se puede ejecutar usando un flujo de bits dispuesto para configurar la lógica programable, por ejemplo, una matriz de puertas programables en campo (FPGA), para realizar el método.
Se apreciará que la invención también se extiende a programas informáticos, en particular programas informáticos sobre o en un soporte, adaptados para poner en práctica la invención. El programa puede estar en forma de código fuente, código objeto, un código intermedio entre código fuente y código objeto tal como una forma parcialmente compilada, o en cualquier otra forma adecuada para su uso en la implementación del método de acuerdo con la invención. Una realización en relación con un producto de programa informático comprende instrucciones ejecutables por ordenador correspondientes a cada una de las etapas de procesamiento de al menos uno de los métodos expuestos. Estas instrucciones se pueden subdividir en subrutinas y/o almacenarse en uno o más archivos que pueden estar vinculados estática o dinámicamente. Otra realización en relación con un producto de programa informático comprende instrucciones ejecutables por ordenador correspondientes a cada uno de los medios de al menos uno de los sistemas y/o productos expuestos.
La figura 4a muestra un medio legible por ordenador 1000 que tiene una parte escribible 1010 que comprende un programa informático 1020, comprendiendo el programa informático 1020 instrucciones para hacer que un sistema procesador realice un método de acuerdo de clave, de acuerdo con una realización. El programa informático 1020 se puede materializar en el medio legible por ordenador 1000 como marcas físicas o por medio de magnetización del medio legible por ordenador 1000. Sin embargo, se puede concebir asimismo cualquier otra realización adecuada. Además, se apreciará que, aunque el medio legible por ordenador 1000 se muestra en el presente caso como un disco óptico, el medio legible por ordenador 1000 puede ser cualquier medio legible por ordenador adecuado, tal como un disco duro, una memoria de estado sólido, una memoria flash, etc., y puede ser no grabable o grabable. El programa informático 1020 comprende instrucciones para hacer que un sistema procesador realice dicho método de acuerdo de clave 400.
La figura 4b muestra una representación esquemática de un sistema procesador 1140 de acuerdo con una realización, por ejemplo, como un primer o un segundo nodo de red. El sistema procesador comprende uno o más circuitos integrados 1110. La arquitectura de los uno o más circuitos integrados 1110 se muestra esquemáticamente en la figura 4b. El circuito 1110 comprende una unidad de procesamiento 1120, por ejemplo, una CPU, para ejecutar componentes de programa informático para ejecutar un método de acuerdo con una realización y/o implementar sus módulos o unidades. El circuito 1110 comprende una memoria 1122 para almacenar código de programación, datos, etc. Parte de la memoria 1122 puede ser de solo lectura. El circuito 1110 puede comprender un elemento de comunicación 1126, por ejemplo, una antena, conectores o ambos, y similares. El circuito 1110 puede comprender un circuito integrado dedicado 1124 para realizar parte o todo el procesamiento definido en el método. El procesador 1120, la memoria 1122, el CI dedicado 1124 y el elemento de comunicación 1126 pueden estar conectados entre sí a través de una interconexión 1130, por ejemplo, un bus. El sistema procesador 1110 puede estar dispuesto para una comunicación con contacto y/o sin contacto, usando una antena y/o conectores, respectivamente.
También se puede configurar un medio legible por ordenador 1000 o un sistema procesador 1140 para un método de selección de parámetros
Por ejemplo, en una realización, un nodo de red puede comprender un circuito procesador y un circuito de memoria, estando dispuesto el procesador para ejecutar software almacenado en el circuito de memoria. Por ejemplo, el circuito procesador puede ser un procesador Intel Core i7, ARM Cortex-R8, etc. En una realización, el circuito procesador puede ser ARM Cortex M0. El circuito de memoria puede ser un circuito de ROM o una memoria no volátil, por ejemplo, una memoria flash. El circuito de memoria puede ser una memoria volátil, por ejemplo, una memoria SRAM. En este último caso, el dispositivo de verificación puede comprender una interfaz de software no volátil, por ejemplo, un disco duro, una interfaz de red, etc., dispuesta para proporcionar el software.
Se debería hacer notar que las realizaciones anteriormente mencionadas ilustran la invención en lugar de limitarla, y que los expertos en la materia podrán designar muchas realizaciones alternativas.
En las reivindicaciones, no deberá interpretarse que signo de referencia alguno colocado entre paréntesis limite la reivindicación. El uso del verbo "comprender" y sus conjugaciones no excluye la presencia de elementos o etapas distintos de los expuestos en una reivindicación. El artículo "un" o "una" precediendo a un elemento no excluye la presencia de una pluralidad de tales elementos. La invención se puede implementar por medio de hardware que comprende varios distintos elementos y por medio de un ordenador programado de forma adecuada. En la reivindicación de dispositivo que enumera varios medios, varios de estos medios pueden realizarse por un mismo elemento de hardware. El mero hecho de que se indiquen ciertas medidas en reivindicaciones mutuamente dependientes diferentes no indica que no pueda aprovecharse una combinación de estas medidas.
En las reivindicaciones, las referencias entre paréntesis se refieren a signos de referencia, en los dibujos, de realizaciones ilustrativas, o a fórmulas de realizaciones, aumentando de este modo la inteligibilidad de la reivindicación. Estas referencias no se deberán interpretar como limitativas de la reivindicación.

Claims (13)

REIVINDICACIONES
1. Un primer nodo de red electrónico (110) configurado para un protocolo de acuerdo de clave, comprendiendo el primer nodo de red
- una interfaz de comunicación (120) dispuesta para una comunicación digital con un segundo nodo de red, y - un circuito procesador configurado para
- obtener un polinomio compartido (a), compartiéndose el polinomio compartido con el segundo nodo de red a través de la interfaz de comunicación, seleccionándose coeficientes del polinomio compartido (a) módulo un primer módulo q,
- generar un polinomio de clave privada (ski; skR), acotándose coeficientes del polinomio de clave privada en valor absoluto por una cota (s), siendo la cota (s) menor que un segundo módulo (p), siendo el segundo módulo (p) menor que el primer módulo (q),
- generar un polinomio de clave pública (pki; pkR) al
- calcular un producto de polinomios entre el polinomio compartido (a) y el polinomio de clave privada (ski) módulo el primer módulo (q) obteniendo un producto de polinomios,
- ajustar a escala coeficientes del producto de polinomios descendentemente hasta el segundo módulo (p), siendo un coeficiente ajustado a escala igual al coeficiente sin ajustar a escala multiplicado por el segundo módulo (p), dividido por el primer módulo (q) y redondeado al número entero más cercano,
- enviar el polinomio de clave pública del primer nodo de red al segundo nodo de red,
- recibir un polinomio de clave pública (pkR; pki) del segundo nodo de red,
- calcular un polinomio de clave sin procesar como un producto de polinomios entre la clave pública recibida del segundo nodo y el polinomio de clave privada del primer nodo de red módulo el segundo módulo (p), y calcular la clave compartida a partir de la clave sin procesar, en donde el primer nodo de red está configurado además para
- recibir datos de conciliación (h) del segundo nodo de red,
- calcular una clave compartida aplicando una función de conciliación (rec) a los datos de conciliación recibidos y múltiples coeficientes del polinomio de clave sin procesar, o
en donde el primer nodo de red está configurado además para
- obtener la clave compartida y los datos de conciliación a partir de múltiples coeficientes del polinomio de clave sin procesar,
- enviar los datos de conciliación al segundo nodo de red.
2. Un primer nodo de red según la reivindicación 1, en donde el primer nodo de red está configurado además para - recibir datos auxiliares del segundo nodo de red, comprendiendo los datos auxiliares información que permite inferir la misma clave compartida en el primer y el segundo nodo cancelando diferencias entre las claves sin procesar obtenidas en el primer y el segundo nodos, y
- calcular una clave compartida a partir de los datos auxiliares y múltiples coeficientes del polinomio de clave sin procesar, o
en donde el primer nodo de red está configurado además para
- obtener la clave compartida, y obtener los datos auxiliares a partir de al menos múltiples coeficientes del polinomio de clave sin procesar, y
- enviar los datos auxiliares al segundo nodo de red.
3. Un primer nodo de red según una cualquiera de las reivindicaciones anteriores, en donde la cota (s) en valor absoluto sobre los coeficientes del polinomio de clave privada (ski, skR) es 2 (s = 2), o en donde la cota es 1 (s = 1), correspondiendo esto último a binario con signo.
4. Un primer nodo de red según una cualquiera de las reivindicaciones anteriores, configurado con un número predeterminado (hs) de coeficientes no nulos, y en donde
- el polinomio de clave privada (ski) se genera con como máximo el número (hs) de coeficientes no nulos, o - el polinomio de clave privada (ski; skR) se elige a partir de una distribución de probabilidad, teniendo la distribución de probabilidad un número esperado fijo (hs) de coeficientes no nulos para el polinomio de clave privada (ski; skR).
5. Un primer nodo de red según una cualquiera de las reivindicaciones anteriores, en donde el segundo módulo (p) divide al primer módulo (q).
6. Un primer nodo de red según una cualquiera de las reivindicaciones anteriores, en donde el segundo módulo (p) y/o el primer módulo (q) es una potencia de 2.
7. Un primer nodo de red según una cualquiera de las reivindicaciones anteriores, dispuesto para obtener un nuevo polinomio compartido (a) y/o una nueva clave privada para cada nuevo intercambio de clave.
8. Un primer nodo de red según una cualquiera de las reivindicaciones anteriores, en donde se obtienen, se envían, se reciben y/o se aplican datos de conciliación para menos que todos los coeficientes del polinomio de clave sin procesar.
9. Un primer nodo de red según una cualquiera de las reivindicaciones anteriores, en donde el tamaño de los datos de conciliación es de 2 bits o más por coeficiente correspondiente del polinomio de clave sin procesar.
10. Un primer nodo de red según una cualquiera de las reivindicaciones anteriores, en donde
- el primer módulo (q) tiene un tamaño de bits de 12 o más, y/o
- el segundo módulo (p) tiene un tamaño de bits de 7 o más.
11. Un primer nodo de red electrónico según una cualquiera de las reivindicaciones anteriores, en donde el producto de polinomios entre el polinomio compartido (a) y el polinomio de clave privada (ski) y el producto de polinomios entre la clave pública recibida del segundo nodo y el polinomio de clave privada del primer nodo de red son ambos módulo un polinomio de reducción.
12. Un método de acuerdo de clave electrónica (400) para un primer nodo de red electrónico (110), comprendiendo el método
- organizar (410) una comunicación digital entre el primer nodo de red y un segundo nodo de red,
- obtener (420) un polinomio compartido (a), compartiéndose el polinomio compartido con el segundo nodo de red a través de la comunicación digital, seleccionándose coeficientes del polinomio compartido a módulo un primer módulo q,
- generar (430) un polinomio de clave privada (ski), acotándose coeficientes del polinomio de clave privada en valor absoluto por una cota (s), siendo la cota (s) menor que un segundo módulo (p), siendo el segundo módulo (p) menor que el primer módulo (q),
- generar (440) un polinomio de clave pública (pki) al
- calcular (442) un producto de polinomios entre el polinomio compartido (a) y el polinomio de clave privada (ski) módulo el primer módulo (q) obteniendo un producto de polinomios
- ajustar a escala (444) los coeficientes del producto de polinomios descendentemente hasta un segundo módulo (p), siendo un coeficiente ajustado a escala igual al coeficiente sin ajustar a escala multiplicado por el segundo módulo (p), dividido por el primer módulo (q) y redondeado al número entero más cercano, - enviar (452) el polinomio de clave pública del primer nodo de red al segundo nodo de red,
- recibir (454) un polinomio de clave pública (pkR) del segundo nodo de red,
- calcular (460) un polinomio de clave sin procesar como un producto de polinomios entre la clave pública recibida del segundo nodo y el polinomio de clave privada del primer nodo de red módulo el segundo módulo (p), y calcular la clave compartida a partir de la clave sin procesar, en donde el método comprende, además
- recibir datos auxiliares del segundo nodo de red, comprendiendo los datos auxiliares información que permite inferir la misma clave compartida en el primer y el segundo nodo cancelando diferencias entre las claves sin procesar obtenidas en el primer y el segundo nodos
- calcular una clave compartida a partir de los datos auxiliares y múltiples coeficientes del polinomio de clave sin procesar, o
en donde el método comprende, además
- obtener la clave compartida y los datos auxiliares a partir de múltiples coeficientes del polinomio de clave sin procesar,
- enviar los datos auxiliares al segundo nodo de red.
13. Un medio legible por ordenador (1000) que comprende datos transitorios o no transitorios (1020) que representan instrucciones que, cuando se ejecutan en un sistema procesador, hacen que el sistema procesador realice el método de acuerdo con la reivindicación 12.
ES18725118T 2017-05-10 2018-05-02 Dispositivos y método de acuerdo de clave Active ES2842954T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP17170508.0A EP3402118A1 (en) 2017-05-10 2017-05-10 Key agreement devices and method
PCT/EP2018/061089 WO2018206344A1 (en) 2017-05-10 2018-05-02 Key agreement devices and method

Publications (1)

Publication Number Publication Date
ES2842954T3 true ES2842954T3 (es) 2021-07-15

Family

ID=58701497

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18725118T Active ES2842954T3 (es) 2017-05-10 2018-05-02 Dispositivos y método de acuerdo de clave

Country Status (9)

Country Link
US (1) US11050557B2 (es)
EP (2) EP3402118A1 (es)
JP (1) JP6720424B1 (es)
CN (1) CN110870250B (es)
BR (1) BR112019023412A2 (es)
ES (1) ES2842954T3 (es)
PL (1) PL3622663T3 (es)
RU (1) RU2736109C1 (es)
WO (1) WO2018206344A1 (es)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018108313A1 (de) * 2018-04-09 2019-10-10 Infineon Technologies Ag Verfahren und Verarbeitungsvorrichtung zum Ausführen einer kryptografischen Operation auf Gitterbasis
US11483153B2 (en) 2018-07-17 2022-10-25 Koninklijke Philips N.V. Key encapsulation protocols
DE102018122278A1 (de) * 2018-09-12 2020-03-12 Infineon Technologies Ag Ausführen einer kryptographischen Operation
CN109861821B (zh) * 2019-02-26 2020-10-30 清华大学 一种用于lwe公钥密码的错误协调方法
DE102019108095A1 (de) * 2019-03-28 2020-10-01 Infineon Technologies Ag Ausführen einer kryptografischen Operation
CN114521319B (zh) * 2019-09-26 2023-12-05 维萨国际服务协会 具有均匀秘密的基于格的签名
EP3843320A1 (en) * 2019-12-24 2021-06-30 Koninklijke Philips N.V. Public/private key system with increased security
CN111464289B (zh) * 2020-01-13 2021-07-27 华中科技大学 一种后量子密钥交换协议的实现方法、设备及系统
WO2021149105A1 (ja) * 2020-01-20 2021-07-29 日本電信電話株式会社 秘密計算装置、秘密計算方法、およびプログラム
JP7460515B2 (ja) 2020-03-13 2024-04-02 Kddi株式会社 電子署名生成装置、電子署名生成方法及び電子署名生成プログラム
US11374740B2 (en) * 2020-03-13 2022-06-28 Infineon Technologies Ag Controller area network key exchange
CN111885058B (zh) * 2020-07-23 2022-05-13 伊拉克巴士拉大学 物联网云中端到端智能设备通信的轻量级消息传递方法
CN116318677A (zh) * 2020-08-31 2023-06-23 Oppo广东移动通信有限公司 一种数据传输方法、客户端、服务端及存储介质
CN112738038B (zh) * 2020-12-17 2024-05-28 北京握奇智能科技有限公司 一种基于非对称口令认证的密钥协商的方法和装置
CN112713992B (zh) * 2020-12-22 2022-07-01 湖北工业大学 一种基于无证书的抗泄露认证与密钥协商方法及系统
CN113242122B (zh) * 2021-04-15 2022-11-25 哈尔滨工业大学 一种基于dh和rsa加密算法的加密方法
CN113473460B (zh) * 2021-06-07 2022-07-01 西安电子科技大学 基于纠错码判决的无线物理层密钥协商方法
US11569994B2 (en) * 2021-06-24 2023-01-31 Intel Corporation Accelerating multiple post-quantum cryptograhy key encapsulation mechanisms
US11792004B2 (en) * 2021-09-17 2023-10-17 Intel Corporation Polynomial multiplication for side-channel protection in cryptography
CN114095423B (zh) * 2021-10-11 2023-04-14 北京东方京海电子科技有限公司 基于mpls的电力通信骨干网数据安全防护方法及系统
CN113965325B (zh) * 2021-10-20 2023-07-25 成都卫士通信息产业股份有限公司 数据传输认证方法、装置、电子设备及计算机存储介质
CN115361682B (zh) * 2022-08-10 2024-05-07 东莞理工学院 一种水下无线传感器网络密钥预分配方法
CN115348017B (zh) * 2022-10-18 2023-02-07 阿里巴巴(中国)有限公司 密文处理方法以及装置
CN115361096B (zh) * 2022-10-19 2022-12-20 无锡沐创集成电路设计有限公司 一种rfid标签电路及基于rfid标签电路的数据传输方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2277633C (en) * 1999-07-19 2009-10-20 Certicom Corp. Split-key key-agreement protocol
US7181014B1 (en) * 1999-09-10 2007-02-20 Cisco Technology, Inc. Processing method for key exchange among broadcast or multicast groups that provides a more efficient substitute for Diffie-Hellman key exchange
DE602005015831D1 (de) * 2004-04-02 2009-09-17 Research In Motion Ltd Einsatz und provisionierung drahtloser in der hand gehaltener einrichtungen
CN101374043B (zh) * 2007-08-24 2010-09-22 管海明 密钥协商的方法、加/解密的方法及签名/验证的方法
US8422681B2 (en) * 2008-03-06 2013-04-16 International Business Machines Corporation Non-interactive hierarchical identity-based key-agreement
RU2452111C1 (ru) * 2010-11-17 2012-05-27 ЗАО Институт инфокоммуникационных технологий Способ пороговой генерации ключей для системы защиты информации на основе идентификационных данных
EP2493112B1 (en) * 2011-02-28 2018-02-28 Certicom Corp. Accelerated key agreement with assisted computations
ITGE20110091A1 (it) * 2011-08-10 2013-02-11 Carlo Pes Metodo di cifratura e decifratura
JP6190470B2 (ja) * 2012-12-21 2017-08-30 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 鍵共有ネットワークデバイス及びその構成
WO2017025597A1 (en) * 2015-08-11 2017-02-16 Koninklijke Philips N.V. Key sharing device and method
US9673977B1 (en) * 2016-09-15 2017-06-06 ISARA Corporation Refreshing public parameters in lattice-based cryptographic protocols
US9942039B1 (en) * 2016-09-16 2018-04-10 ISARA Corporation Applying modular reductions in cryptographic protocols
US9698986B1 (en) * 2016-09-23 2017-07-04 ISARA Corporation Generating shared secrets for lattice-based cryptographic protocols
JP7191015B2 (ja) * 2016-11-04 2022-12-16 コーニンクレッカ フィリップス エヌ ヴェ 秘密値の共有に達すること
EP3364596A1 (en) 2017-02-15 2018-08-22 Koninklijke Philips N.V. Key exchange devices and method
US10742413B2 (en) * 2017-04-25 2020-08-11 International Business Machines Corporation Flexible verifiable encryption from lattices

Also Published As

Publication number Publication date
JP2020522912A (ja) 2020-07-30
CN110870250A (zh) 2020-03-06
JP6720424B1 (ja) 2020-07-08
EP3402118A1 (en) 2018-11-14
WO2018206344A1 (en) 2018-11-15
US20200153618A1 (en) 2020-05-14
EP3622663A1 (en) 2020-03-18
BR112019023412A2 (pt) 2020-06-16
CN110870250B (zh) 2022-12-13
PL3622663T3 (pl) 2021-10-25
US11050557B2 (en) 2021-06-29
EP3622663B1 (en) 2020-11-25
RU2736109C1 (ru) 2020-11-11

Similar Documents

Publication Publication Date Title
ES2842954T3 (es) Dispositivos y método de acuerdo de clave
ES2858435T3 (es) Dispositivos y método de intercambio de claves
US11991285B2 (en) Configurable cryptographic device
JP7208987B2 (ja) 更新可能な共有マトリクスを備える暗号装置
Almajed et al. SE-ENC: A secure and efficient encoding scheme using elliptic curve cryptography
EP3547603A1 (en) Configurable device for lattice-based cryptography
Park Authentication protocol providing user anonymity and untraceability in wireless mobile communication systems
CA2730626C (en) Improved digital signature and key agreement schemes
Ghehioueche et al. Performance Evaluation and Analysis of Encryption Schemes for Wireless Sensor Networks
Saldarriaga Pérez Introduction to code-based post-quantum cryptography
Orobets Highly Efficient Commodity-based Two-Party Computation for Smartphones
Kanickam et al. AN IMPROVED DATA PROTECTION TECHNIQUE TO SECURE A PUBLIC CLOUD ENVIRONMENT