BR112021004855A2 - dispositivo de criptografia de chave pública, sistema, método de criptografia de chave pública, método criptográfico compreendendo o método de criptografia de chave pública, e mídia transitória ou não transitória legível por computador - Google Patents
dispositivo de criptografia de chave pública, sistema, método de criptografia de chave pública, método criptográfico compreendendo o método de criptografia de chave pública, e mídia transitória ou não transitória legível por computador Download PDFInfo
- Publication number
- BR112021004855A2 BR112021004855A2 BR112021004855-3A BR112021004855A BR112021004855A2 BR 112021004855 A2 BR112021004855 A2 BR 112021004855A2 BR 112021004855 A BR112021004855 A BR 112021004855A BR 112021004855 A2 BR112021004855 A2 BR 112021004855A2
- Authority
- BR
- Brazil
- Prior art keywords
- key
- public
- public key
- array
- matrix
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key 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/0841—Key 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key 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)
- H04L9/0822—Key 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) using key encryption key
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3093—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Storage Device Security (AREA)
Abstract
dispositivo de criptografia de chave pública, sistema, método de criptografia de chave pública, método criptográfico compreendendo o método de criptografia de chave pública, e mídia transitória ou não transitória legível por computador. algumas modalidades são direcionadas a um dispositivo de criptografia de chave pública (20) e a um dispositivo de descriptografia de chave privada (10). o dispositivo de criptografia de chave pública é configurado para calcular uma segunda matriz de chave pública (u), sendo que a segunda matriz de chave pública (u) tem menos elementos de matriz do que a primeira matriz de chave pública (b) do dispositivo de descriptografia de chave privada. isso reduz os requisitos de computação e de largura de banda no lado do dispositivo de criptografia de chave pública.
Description
COMPUTADOR Campo da invenção
[001] A invenção se refere a um dispositivo de criptografia de chave pública, a um dispositivo de descriptografia de chave privada, a um método de criptografia de chave pública, a um método de descriptografia de chave privada e a uma mídia legível por computador. Antecedentes da invenção
[002] Uma maneira de resolver problemas com a distribuição de chave é usar a assim chamada criptografia assimétrica. Na criptografia assimétrica, é usado um par de chaves que compreende uma chave pública e uma chave privada. Por essa razão, a criptografia assimétrica é também chamada de criptografia de chave pública.
[003] As chaves públicas podem ser amplamente disseminadas, mas as chaves privadas são tipicamente conhecidas apenas por poucos participantes, por exemplo, apenas por seu proprietário. A chave pública pode ser usada para criptografar mensagens que podem ser descriptografadas apenas com a chave privada. Em um sistema de criptografia de chave pública, qualquer pessoa pode criptografar uma mensagem usando a chave pública do receptor. A mensagem criptografada só pode ser descriptografada com a chave privada do receptor. É computacionalmente impraticável encontrar a chave privada a partir de sua chave pública correspondente. A chave pública e a chave privada são chamadas de par de chaves.
[004] Os sistemas de criptografia de chave pública conhecidos dependem de algoritmos criptográficos baseados em problemas matemáticos que, atualmente, não admitem nenhuma solução eficiente. Por exemplo, o sistema de criptografia de chave pública RSA depende da dificuldade de fatoração de número inteiro. A criptografia de chave pública baseada em curvas elípticas depende da dificuldade de logaritmos distintos.
[005] Computadores quânticos representam uma ameaça significativa à criptografia moderna. Os dois sistemas criptográficos de chave pública mais amplamente adotados, a saber, RSA e Criptografia de Curva Elíptica (ECC - Elliptic Curve Cryptography), serão quebrados por computadores quânticos de uso geral. A criptografia baseada em retículo pode ser usada como uma alternativa resistente ao computador quântico. Infelizmente, a computação em retículos exige grandes chaves públicas para sua segurança.
[006] O documento “Frodo: Take off the ring! Practical, Quantum-Secure Key Exchange from LWE” de Joppe Bos et al., International Association for Cryptologic Research, vol. 20170227:170204, 27 de fevereiro de 2017, páginas 1 a 26, revela o desenvolvimento de um protocolo de troca de chaves prático e seguro que pode ser usado para dar segurança ao tráfego de Internet em antecipação a um adversário quântico. O protocolo de troca de chaves desenvolvido neste documento é chamado de “Frodo” e incorpora a distribuição de ruído eficientemente amostrável e a geração dinâmica e eficiente de parâmetros públicos, onde a matriz pública de LWE A é gerada para cada troca de chaves a partir de uma semente aleatória pequena.
[007] O pedido de patente europeu EP 3 364 596 A1 (Koninklijke Philips NV) revela um primeiro nó de rede eletrônica configurado para um protocolo de troca de chaves (KEX - “key exchange”). O primeiro nó de rede é configurado para obter uma matriz (A) compartilhada com um segundo nó de rede, sendo que os itens da matriz A são selecionados módulu um primeiro módulo q, gerar uma matriz de chave privada (S I), sendo que os itens da matriz de chave privada são limitados em valor absoluto por um limite (s), gerar uma matriz de chave pública (P I) por meio do produto matricial entre a matriz compartilhada (A) e a matriz de chave privada (S I) módulo o primeiro módulo q e diminuir os itens do produto de matrizes até um segundo módulo (p). Sumário da invenção
[008] Esses e outros problemas são abordados pelas modalidades aqui descritas. É fornecido um dispositivo de criptografia de chave pública e um dispositivo de descriptografia de chave privada. Com o uso do dispositivo de criptografia de chave pública, uma chave de transmissão pode ser transferida para o dispositivo de descriptografia de chave privada. A chave de transmissão pode ser usada para criptografar uma mensagem. Ter acesso à chave pública permite, assim, a criptografia de uma mensagem, mas o acesso à chave privada é necessário para descriptografar a dita mensagem criptografada.
[009] O dispositivo de criptografia de chave pública pode ser configurado para obter uma primeira matriz de chave pública associada ao dispositivo de descriptografia de chave privada e para gerar uma segunda matriz de chave pública, sendo que a segunda matriz de chave pública tem menos elementos de matriz do que a primeira matriz de chave pública.
[010] Como a segunda matriz de chave pública tem menos elementos de matriz do que a primeira matriz de chave pública, a sobrecarga durante uma fase de criptografia, por exemplo, ao criptografar uma mensagem, por exemplo, a sobrecarga necessária para enviar a chave de transmissão é reduzida, em particular em relação a uma fase de inscrição, por exemplo, na qual a primeira chave pública é obtida pelo dispositivo de criptografia de chave pública. Em particular, a primeira chave pública pode ser obtida de uma maneira diferente daquela na qual a segunda chave pública é transferida; em particular, a primeira chave pública pode ser pré-distribuída, por exemplo, juntamente com software, por exemplo, juntamente com software navegador. Isso é particularmente vantajoso uma vez que a largura de banda pode ser mais fácil de obter durante a pré-distribuição do que no momento em que uma criptografia de chave pública é necessária.
[011] Várias modalidades podem ser usadas para vários objetivos. Como um primeiro exemplo, uma troca de chaves efêmeras pode ser usada, por exemplo, através da internet. As modalidades podem ser usadas para minimizar a sobrecarga de largura de banda total, por exemplo, (chave pública + texto cifrado). Observe que essa equação pode ser significativamente afetada pelo fato de que a chave pública pode ou não já estar disponível. Como outro exemplo, pode-se minimizar o texto cifrado, por exemplo, para uso em um aplicativo de mensagens, como e-mail. Mesmo que a minimização do tamanho do texto cifrado implique em a chave pública ser mais longa, então isso não é relevante uma vez que isso é transmitido uma vez.
[012] Antes de transferir uma chave de transmissão, os dois dispositivos podem se envolver em uma negociação sobre qual chave pública usar. Por exemplo, se uma chave for pré-distribuída, então o dispositivo de criptografia de chave pública pode preferir usar a chave pré-distribuída. Por exemplo, se nenhuma chave pública for pré-distribuída, então o dispositivo de criptografia de chave pública pode preferir obter uma chave pública menor. Se duas chaves públicas estiverem disponíveis, então o dispositivo de criptografia de chave pública pode preferir a maior, uma vez que isso reduz a largura de banda necessária para transferir a mensagem criptografada.
[013] Curiosamente, o tamanho da segunda chave pública pode ser decidido no momento da criptografia, por exemplo, durante a fase de criptografia, e não, por exemplo, durante a fase de inscrição. Isso tem a vantagem de que o tamanho da segunda chave pública pode ser escolhido dependendo do tamanho da chave de transmissão a ser transferida com a mesma. Por exemplo, para uma aplicação de alta segurança, a chave de transmissão pode ter mais bits do que em uma aplicação de menor segurança. Na última situação, a sobrecarga para transferir a chave de transmissão pode ser menor.
[014] Em uma modalidade, a segunda matriz de chave pública tem uma primeira dimensão de sistema e uma segunda dimensão, a primeira matriz de chave pública tem a primeira dimensão de sistema e uma segunda dimensão, sendo que a segunda dimensão da segunda matriz de chave pública é menor que a segunda dimensão da primeira matriz de chave pública. Em particular, a segunda dimensão da segunda matriz de chave pública pode ser 1; a segunda dimensão da primeira chave pública pode ser maior que
1.
[015] Em uma modalidade, problemas de retícula de alto ruído são combinados com bits de paridade para obter segundas chaves públicas que são menores que 1,5 kB, evitando assim a fragmentação de pacotes quando tais modalidades são usadas em redes de computador.
[016] A criptografia de chave pública (PKE - public-key encryption) pode ser baseada em problemas de retícula não estruturada, por exemplo, como nos problemas de aprendizagem com erros ou aprendizagem com arredondamento, ou combinações dos mesmos. As modalidades podem ser otimizadas para assegurar o mínimo de largura de banda e sobrecarga computacional para o criptografador, ao custo de uma chave pública maior do descriptografador. No entanto, a chave pública precisa ser comunicada apenas uma vez e armazenada. Não apenas a largura de banda necessária pode ser reduzida para criptografia, mas a criptografia pode ser mais eficiente, uma vez que a criptografia é mais rápida e resulta em textos de cifra menores. Para ser específico, o texto cifrado para uma configuração de não anel pode ser menor que 2000 B.
[017] O dispositivo de criptografia de chave pública e o dispositivo de descriptografia de chave privada podem ser dispositivos eletrônicos. Por exemplo, eles podem ser um computador ou um servidor, etc. Eles podem ser dispositivos eletrônicos móveis, por exemplo, um telefone móvel, um cartão inteligente. O dispositivo de criptografia de chave pública e o dispositivo de descriptografia de chave privada podem ser eletrônicos de consumo, por exemplo, um decodificador, uma televisão. O dispositivo de criptografia de chave pública pode ser sensores.
[018] Dispositivos e métodos de acordo com uma modalidade podem ser empregados em uma ampla gama de aplicações práticas. Tais aplicações práticas incluem diversos protocolos criptográficos. Essas aplicações práticas incluem aplicativos de mensagens, redes de sensor, comunicação de dados, aplicações financeiras, etc.
[019] Uma modalidade do método pode ser implementada em um computador como um método implementado por computador, ou em um hardware dedicado, ou em uma combinação de ambos. O código executável para uma modalidade do método pode ser armazenado em um produto de programa de computador. Exemplos de produtos de programa de computador incluem dispositivos de memória, dispositivos de armazenamento óptico, circuitos integrados, servidores, softwares online etc. De preferência, o produto de programa de computador compreende código de programa não transitório armazenado em uma mídia legível por computador para executar uma modalidade do método, quando o dito produto de programa for executado em um computador.
[020] Em uma modalidade, o programa de computador compreende código de programa de computador adaptado para executar todas ou uma parte das etapas de uma modalidade do método, quando o programa de computador for executado em um computador. De preferência, o programa de computador é incorporado em uma mídia legível por computador.
[021] Um outro aspecto da invenção apresenta um método para produção do programa de computador disponível para transferência via download. Este aspecto é usado quando o programa de computador é transferido via upload para, por exemplo, a App Store da Apple, a Play Store da Google ou a Windows Store da Microsoft, e quando o programa de computador está disponível para download a partir de tal loja. Breve descrição dos desenhos
[022] Detalhes adicionais, aspectos e modalidades da invenção serão descritos, apenas a título de exemplo, com referência aos desenhos.
Os elementos nas figuras são ilustrados por uma questão de simplicidade e clareza, e não estão necessariamente em escala.
Nas figuras, os elementos que correspondem a elementos já descritos podem ter as mesmas referências numéricas.
Nos desenhos, − A Figura 1a mostra esquematicamente um exemplo de uma modalidade de um dispositivo de descriptografia de chave privada 100, − A Figura 1b mostra esquematicamente um exemplo de uma modalidade de um dispositivo de criptografia de chave pública 200, − A Figura 1c mostra esquematicamente um exemplo de uma modalidade de um sistema criptográfico 101, − A Figura 2a mostra esquematicamente um exemplo de criptografia de chave pública e de descriptografia de chave privada, − A Figura 2b mostra esquematicamente um exemplo de criptografia de chave pública e de descriptografia de chave privada, − A Figura 2c mostra esquematicamente um exemplo de um handshake, − A Figura 3 mostra esquematicamente um exemplo de criptografia de chave pública e de descriptografia de chave privada, − A Figura 4 mostra esquematicamente um exemplo de criptografia de chave pública e de descriptografia de chave privada,
− A Figura 5 mostra esquematicamente um exemplo de um sistema criptográfico de acordo com uma modalidade, − A Figura 6a mostra esquematicamente um exemplo de um método de criptografia de chave pública de acordo com uma modalidade, − A Figura 6b mostra esquematicamente um exemplo de um método de descriptografia de chave privada de acordo com uma modalidade, − A Figura 7a mostra esquematicamente uma mídia legível por computador que tem uma parte gravável que compreende um programa de computador de acordo com uma modalidade, − A Figura 7b mostra esquematicamente uma representação de um sistema processador de acordo com uma modalidade.
Lista de números de referência nas figuras 1a a 5, 7a a 7b: 10 um dispositivo de descriptografia de chave privada 20 um dispositivo de criptografia de chave pública 31 uma fase de inscrição 32 uma fase de criptografia 33 uma fase de descriptografia 11 a 16 uma mensagem 100 um dispositivo de descriptografia de chave privada 130 uma interface de comunicação 191 uma rede de computadores 192 uma interface de armazenamento 194 um processador 196 uma memória 200 um dispositivo de criptografia de chave pública
230 uma interface de comunicação 292 uma interface de armazenamento 294 um processador 296 uma memória 300 um dispositivo de descriptografia de chave privada 301 um sistema criptográfico 302 um depósito de chave pública 305 uma interface de comunicação 315 um gerador de chave pública/privada 320 um corretor de erros 325 uma unidade de Diffie-Hellman 335 uma unidade de reconciliação 340 uma unidade de desencapsulamento 350 um dispositivo de criptografia de chave pública 355 uma interface de comunicação 360 um meio de obtenção de chave pública 365 um gerador de chave pública/privada 370 um gerador de palavra de código 375 uma unidade de Diffie-Hellman 380 um gerador de bits confiáveis 385 um gerador de dados de reconciliação 390 uma unidade de encapsulamento 1000 mídia legível por computador 1010 uma parte gravável 1020 um programa de computador 1110 um circuito integrado (ou circuitos integrados) 1120 uma unidade de processamento 1122 uma memória 1124 um circuito integrado dedicado 1126 um elemento de comunicação 1130 uma interconexão
1140 um sistema processador Descrição detalhada das modalidades
[023] Embora a invenção seja suscetível de realização de várias formas diferentes, são mostradas nos desenhos, e serão aqui descritas em detalhe, uma ou mais modalidades específicas, com o entendimento de que a presente revelação deve ser considerada como exemplificadora dos princípios da invenção e não se destinam a limitar a invenção às modalidades específicas ilustradas e descritas.
[024] Na descrição a seguir, para melhor entendimento, os elementos das modalidades são descritos em funcionamento. Entretanto, ficará evidente que os respectivos elementos são dispostos de modo a executar as funções sendo descritas, conforme executadas pelos mesmos.
[025] Adicionalmente, a invenção não se limita às modalidades, e a invenção se encontra em todo e qualquer recurso inovador ou em toda e qualquer combinação de recursos descritos acima ou mencionados em reivindicações dependentes mutuamente diferentes.
[026] A Figura 1a mostra esquematicamente um exemplo de uma modalidade de um dispositivo de descriptografia de chave privada 100. A Figura 1b mostra esquematicamente um exemplo de uma modalidade de um dispositivo de criptografia de chave pública 200. O dispositivo de descriptografia de chave privada pode também ser chamado de primeiro dispositivo, ou primeiro dispositivo criptográfico. O dispositivo de criptografia de chave pública pode também ser chamado de segundo dispositivo, ou segundo dispositivo criptográfico. A Figura 1c mostra esquematicamente um exemplo de uma modalidade de um sistema criptográfico 101 que compreende um dispositivo de descriptografia de chave privada 100 e um dispositivo de criptografia de chave pública 200. O dispositivo de descriptografia de chave privada 100 e o dispositivo de criptografia de chave pública 200 podem compreender um ou mais dentre uma interface de armazenamento 192, 292, um processador 194, 294 e uma memória 196, 296, respectivamente.
O dispositivo de descriptografia de chave privada 100 é configurado para gerar um par de chaves pública/privada.
A chave pública e a chave privada compreendem uma matriz de chave pública e uma matriz de chave privada, respectivamente.
O dispositivo de criptografia de chave pública 200 é configurado para usar uma matriz de chave pública e usá-la para permitir que uma chave de transmissão seja transferida para o dispositivo de descriptografia de chave privada.
Por exemplo, a chave de transmissão pode ser usada como uma chave, tipicamente como uma chave simétrica, para criptografar e posteriormente descriptografar uma mensagem que deve ser transferida do dispositivo de criptografia de chave pública para o dispositivo de descriptografia de chave privada.
O dispositivo de descriptografia de chave privada é configurado para usar a matriz de chave privada para obter a mesma chave de transmissão.
Alternativamente, a chave de transmissão poderia ser usada como uma entrada para uma negociação de chave adicional, por exemplo, a chave de transmissão pode ser combinada com uma ou mais entradas de chave adicionais, por exemplo, para derivar uma chave final, por exemplo, com o uso de uma função de derivação de chave que toma a chave de transmissão e as entradas de chave adicionais.
As entradas de chave adicionais podem compreender uma chave de transmissão adicional derivada obtida a partir de um protocolo no qual o dispositivo de criptografia de chave pública e o dispositivo de descriptografia de chave privada trocam de lugar, assumindo as funções opostas nos vários protocolos aqui descritos.
[027] O dispositivo de descriptografia de chave privada 100 e o dispositivo de criptografia de chave pública 200, por exemplo, os vários dispositivos do sistema 101 podem se comunicar uns com os outros por uma rede de computadores
191. A rede de computadores pode ser uma internet, uma intranet, uma LAN, uma WLAN etc. A rede de computadores 191 pode ser a Internet. A rede de computadores pode ser total ou parcialmente com fio e/ou total ou parcialmente sem fio. Por exemplo, a rede de computadores pode compreender conexões Ethernet. Por exemplo, a rede de computadores pode compreender conexões sem fio, como Wi-Fi, ZigBee e similares. Os dispositivos compreendem uma interface de conexão que está disposta para se comunicar com outros dispositivos do sistema 101 conforme necessário. Por exemplo, a interface de ligação pode compreender um conector, por exemplo um conector com fio, por exemplo um conector Ethernet ou um conector sem fio, por exemplo uma antena, por exemplo uma antena Wi-Fi, 4G ou 5G. Por exemplo, o dispositivo de descriptografia de chave privada 100 e o dispositivo de criptografia de chave pública 200 podem compreender uma interface de comunicação 130, 230, respectivamente. A rede de computador 191 pode compreender elementos adicionais, por exemplo um roteador, um hub, etc.
[028] A execução do dispositivo de descriptografia de chave privada 100 e do dispositivo de criptografia de chave pública 200 pode ser implementada em um processador, por exemplo um circuito processador, cujos exemplos são mostrados aqui. O dispositivo de descriptografia de chave privada 100, em particular o processador do dispositivo de descriptografia de chave privada 100, pode implementar as funções do dispositivo de descriptografia de chave privada 10 conforme mostrado nas Figuras 2a a 2c, 3 e 4. O dispositivo de criptografia de chave pública 200, em particular o processador do dispositivo de criptografia de chave pública 200, pode implementar as funções do dispositivo de criptografia de chave pública 20 nessas figuras. Por exemplo, estas funções podem ser total ou parcialmente implementadas em instruções de computador que são armazenadas no dispositivo 100, ou 200, por exemplo em uma memória eletrônica do dispositivo, e são executáveis por um microprocessador do dispositivo. Em modalidades híbridas, unidades funcionais são implementadas parcialmente em hardwares, por exemplo, como coprocessadores, por exemplo, coprocessadores de criptografia, e parcialmente em softwares armazenados e executados no dispositivo 100, ou no 200.
[029] Os dispositivos 100 e 200 podem compreender uma interface de armazenamento para armazenar e/ou recuperar mensagens, possivelmente mensagens criptografadas. Por exemplo, a interface de armazenamento pode ser localmente implementada, por exemplo, como uma interface para uma memória compreendida no dispositivo, por exemplo a memória 196 ou 296, respectivamente. A interface de armazenamento pode fazer interface também com armazenamento offline, por exemplo não local, por exemplo armazenamento em nuvem, por exemplo um armazenamento como uma memória ou uma unidade situada em um outro dispositivo. Se o armazenamento em nuvem for usado, os dispositivos podem compreender um armazenamento local, bem como, por exemplo, uma memória. Por exemplo, a memória pode ser usada para armazenar as instruções de programação de computador, o armazenamento temporário de arquivos e similares.
[030] Nas várias modalidades dos dispositivos 100 e 200, a interface de comunicação pode ser selecionada dentre várias alternativas. Por exemplo, a interface pode ser uma interface de rede para uma rede local ou remota, por exemplo, a Internet, uma interface de armazenamento para um armazenamento de dados interno ou externo, uma interface de aplicativo (API - application interface), etc. Em uma modalidade, o dispositivo de criptografia de chave pública e o dispositivo de descriptografia de chave privada são implementados no mesmo dispositivo. Isso pode ser útil tanto para criptografar quanto para descriptografar mensagens. Por exemplo, a interface de comunicação pode ser uma interface de armazenamento, caso em que o dispositivo pode ser usado para armazenar mensagens sob a forma criptografada e, posteriormente, recuperar e descriptografar as mesmas.
[031] Os dispositivos 100 e 200 podem ter uma interface de usuário, que pode incluir elementos bem conhecidos como um ou mais botões, um teclado, um visor, uma tela sensível ao toque, etc. A interface de usuário pode ser disposta para acomodar a interação de usuário para iniciar um protocolo de concordância de chaves, responder a um protocolo de concordância de chaves, enviar uma mensagem criptografada com uma chave pública, descriptografar uma mensagem com uma chave pública, etc.
[032] O armazenamento pode ser implementado como uma memória eletrônica, por exemplo uma memória flash ou memória magnética, por exemplo disco rígido ou similares. O armazenamento pode compreender múltiplas memórias distintas que juntas compõem o armazenamento. O armazenamento pode ser também uma memória temporária, por exemplo uma memória RAM.
[033] Tipicamente, os dispositivos 100 e 200 compreendem, cada um, um microprocessador que executa o software adequado armazenado nos dispositivos 100 e 200; por exemplo, esse software pode ter sido baixado e/ou armazenado em uma memória correspondente, por exemplo uma memória volátil, como RAM, ou uma memória não volátil, como Flash. Alternativamente, os dispositivos 100 e 200 podem ser implementados, total ou parcialmente, em lógica programável, por exemplo, como arranjo de portas programáveis em campo (FPGA - “field-programmable gate array”). Os dispositivos 100 e 200 podem ser implementados, total ou parcialmente, como um “circuito integrado para aplicação específica” (ASIC - “application-specific integrated circuit”), isto é, um circuito integrado (CI) personalizado para seu uso específico. Por exemplo, os circuitos podem ser implementados em CMOS, por exemplo, com o uso de uma linguagem de descrição de hardware como Verilog, VHDL etc.
[034] Em uma modalidade, os dispositivos 100 e 200 podem compreender um ou mais circuitos para implementar uma ou mais ou todas as funções do respectivo dispositivo. Os circuitos podem implementar as funções correspondentes descritas no presente documento. Os circuitos podem ser um circuito processador e circuito de armazenamento, sendo que o circuito processador executa instruções representadas eletronicamente nos circuitos de armazenamento.
[035] Um circuito processador pode ser implementado de maneira distribuída, por exemplo, como múltiplos circuitos subprocessadores. Um armazenamento pode ser distribuído em múltiplos subarmazenamentos distribuídos.
Toda a memória ou parte da memória pode ser uma memória eletrônica, memória magnética, etc. Por exemplo, o armazenamento pode ter uma parte volátil e uma parte não volátil. Parte do armazenamento pode ser apenas de leitura. Os circuitos podem também ser FPGA, ASIC ou similares.
[036] A Figura 2a mostra esquematicamente um exemplo de criptografia de chave pública e de descriptografia de chave privada. O lado de criptografia de chave pública é executado pelo dispositivo de criptografia de chave pública 20. O lado de descriptografia de chave privada é executado pelo dispositivo de descriptografia de chave privada 10. Os protocolos das Figuras 1a a 4 podem ser executados por um dispositivo de criptografia de chave pública 200 e do dispositivo de descriptografia de chave privada 100, por exemplo, conforme descrito acima.
[037] A notação nas Figuras 2a a 4 é a seguinte: ● a representa uma matriz pública, por exemplo, uma matriz com elementos nos números inteiros ou um anel, campo, etc. Os elementos podem ser módulo de números inteiros módulo a, por exemplo, uma potência de 2. Os elementos podem ser módulo de polinômios módulo a, por exemplo, uma potência de 2, e um polinômio. A matriz a é tipicamente uma matriz 𝑑 × 𝑑 quadrada. O módulo de matrizes módulo a é chamado de uma configuração de não anel. As matrizes com módulo de entradas polinomiais polinômio a e módulo a são chamadas de configuração de módulo. ● r e s representam as matrizes de chave privada do dispositivo de descriptografia de chave privada e do dispositivo de criptografia de chave pública, respectivamente. ● b e u representam as matrizes de chave pública do dispositivo de descriptografia de chave privada e do dispositivo de criptografia de chave pública ilustrados como o produto de a*r ou a*s.
[038] A operação * representa a função unidirecional do problema subjacente. A operação estrela (*) deriva um novo objeto matemático, por exemplo, uma nova matriz, a partir de duas matrizes subjacentes, ao mesmo tempo em que introduz algum ruído. Por exemplo, o ruído pode ser explicitamente introduzido pela adição de elementos de ruído, ou implicitamente, por exemplo, pelo arredondamento. Exemplos de operações estrela podem ser encontrados em (R)LWE ou (R)LWR ou uma versão de módulo deles. Por exemplo, a*r pode significar Round((A*r (mod q)), p, q), por exemplo, como em LWR. Isso significa o produto de r vezes a matriz quadrada A módulo q. Então, o resultado é arredondado com números inteiros p e q onde p<q mediante a realização de p/q (A*r (mod q). ● c representa a chave de transmissão encapsulada
K ● encapsulate(k, K) significa que a chave de transmissão K é encapsulada com k. Por exemplo, se k vive em Z_q, então K pode ser representada em Z_q também. Se k vive em Z_2, então isso pode ser uma XOR (ou exclusivo, eXclusive OR, em inglês). O encapsulamento pode ser feito por elemento, por exemplo, interpretando k e K como uma matriz como: c = k + K*(q/2) (mod q).
[039] Por exemplo, uma função de encapsulamento pode mascarar uma chave de transmissão K usando uma chave k de modo que um erro em k tenha um efeito limitado sobre m, por exemplo um efeito linear. Por exemplo, os bits em uma chave de transmissão K podem ser mapeados para Z_q, por exemplo, multiplicando-se os elementos em K por um elemento em Z_q; se q for par, então q/2 é boa escolha. A seguir, os elementos da chave k, que podem também ser elementos de Z_q, são adicionados os elementos mapeados de K. ● decapsulate(k, c) significa que o texto cifrado c é desencapsulado usando a chave k retornando uma cadeia de bits.
[040] É feita referência a: RLWE (Aprendizado de anel com erros ou Ring Learning With Errors, em inglês): “On Ideal Lattices and Learning with Errors Over Rings”, de Vadim Lyubashevsky, Chris Peikert e Oded Regev, RLWR (Aprendizado de anel com arredondamento ou Ring Learning With Rounding, em inglês): “Pseudorandom Functions and Lattices”, de Abhishek Banerjee, Chris Peikert e Alon Rosen, LWE (Aprender com erros ou Learning With Errors, em inglês): “On Lattices, Learning with Errors, Random Linear Codes, and Cryptography”, de Oded Regev. LWR (Aprender com arredondamento ou Learning With Rounding, em inglês): “Pseudorandom Functions and Lattices”, de Abhishek Banerjee, Chris Peikert e Alon Rosen, Hila5: “HILA5: On Reliability, Reconciliation, and Error Correction for Ring-LWE Encryption”, de Markku-Juhani O. Saarinen
[041] A operação estrela pode ser uma multiplicação de matrizes ruidosa, por exemplo, uma multiplicação de matrizes regular seguida pela adição de ruído. A adição de ruído pode também ser integrada à multiplicação de matrizes. A adição de ruído na operação estrela pode ser feita de várias maneiras. Um exemplo de adição de ruído é pela adição de ruído explícito, por exemplo, gerando e adicionando uma matriz de ruído. Uma vantagem da adição de ruído explícito é que o ruído está sob controle completo do criptografista e pode ser ajustado adequadamente, por exemplo, para obter controle preciso sobre a taxa de falha do sistema versus sua segurança. Além disso, a adição de ruído explícito tem a vantagem de que todas as matrizes estão sobre o mesmo anel, ou campo, etc., simplificando, assim, a análise. Um outro exemplo de adição de ruído é diminuir a escala. Por exemplo, as matrizes a, r e s podem ter módulo de elementos a módulo q, por exemplo, números inteiros ou polinômios módulo q; a operação estrela pode arredondar o resultado de uma operação de matriz do módulo q para o módulo p, por exemplo, multiplicando por p/q e arredondando, por exemplo, arredondando para cima, ou arredondando para baixo, ou arredondando para o número inteiro mais próximo, etc.
[042] Nesse pedido, letras pequenas serão usadas para matrizes, com o entendimento de que as matrizes podem precisar ser transpostas sempre que necessário, por exemplo, conforme exigido pelas dimensões das matrizes, e pela exigência de que a chave bruta em ambos os lados deve ser aproximadamente igual. Tipicamente, há mais de uma maneira de fazer isso; Por exemplo, transpondo-se todas as matrizes em uma modalidade, é possível obter uma modalidade de trabalho alternativa.
[043] Abaixo, é dado um exemplo no qual os objetos de matriz são dados em letras maiúsculas, e no qual a transposição é incluída. As chaves secretas são definidas como matrizes 𝑆 ∈ 𝑍 𝑑×𝑛̅ e 𝑅 ∈ 𝑍 𝑑×𝑚̅ ; observe que tais matrizes de chave secreta realmente contêm respectivamente 𝑛̅ e 𝑚 ̅ vetores de chave secreta independentes. A matriz de chave bruta é igual a 𝑆 𝑇 𝐴𝑇 𝑅 e está em 𝑍 𝑛̅𝑥𝑚̅ . A partir de cada uma das entradas da chave bruta, os B bits mais significativos são extraídos de modo que uma chave bruta total de comprimento 𝑛̅ ∗ 𝑚 ̅ ∗ 𝐵 possa ser gerada. A chave bruta é chamada dessa forma, uma vez que há uma probabilidade de que as chaves brutas derivadas no dispositivo de criptografia de chave pública e no dispositivo de descriptografia de chave privada não sejam exatamente iguais.
[044] Em uma fase de registro 31: − O dispositivo de descriptografia de chave privada seleciona uma matriz pública A e uma primeira matriz de chave privada R − O dispositivo de descriptografia de chave privada calcula a primeira matriz de chave pública B = AR +E, para alguma matriz de erro E. O dispositivo de descriptografia de chave privada envia: A, B
[045] Em uma fase de criptografia 32: − O dispositivo de criptografia de chave pública seleciona a segunda matriz de chave privada: S − O dispositivo de criptografia de chave pública calcula a segunda matriz de chave pública: 𝑈 = 𝐴𝑇 𝑆 + 𝐸 ′ ; para alguma matriz de erro E' − O dispositivo de criptografia de chave pública calcula a segunda chave bruta 𝐵 𝑇𝑆 , observe que 𝐵 𝑇𝑆 = 𝑆 𝑇 𝐴𝑇 𝑅 + 𝐸 𝑇 𝑅; − O dispositivo de criptografia de chave pública gera uma chave de transmissão K e calcula a chave de transmissão encapsulada juntamente com dados de reconciliação como 𝐶 = 𝑝 (2𝐵 ) 𝐾 + 𝐵 𝑇 𝑅.
− O dispositivo de criptografia de chave pública envia: U, C
[046] Em uma fase de descriptografia 33: − O dispositivo de descriptografia de chave privada calcula a primeira chave bruta 𝑆 𝑇𝑈 , observe que 𝑆 𝑇𝑈 = 𝑆 𝑇 𝐴𝑇 𝑅 + 𝑆 𝑇 𝐸 ′ . − O dispositivo de descriptografia de chave privada desencapsula mediante a computação de 𝐶 − 𝑆 𝑇 𝑈, e arredondando o 𝑝 resultado para múltiplos de (2𝐵 ). Em seguida, a chave de transmissão K pode ser obtida a partir do arredondamento, por 𝑝 exemplo, dividindo-se por (2𝐵 ).
[047] No exemplo acima, as matrizes: A, B, S, U e R, estão sobre Z_p. O valor B no expoente 2𝐵 indica o número de bits mais significativos tomados das chaves brutas para encapsular K. neste exemplo, os bits menos significativos restantes são usados como dados de reconciliação. Por exemplo, B=4 bits pode ser tomado para encapsulamento. Por exemplo, o módulo pode ser escolhido como 𝑝 = 212 . A chave de transmissão pode ser codificada como uma matriz, com entradas em Z_2^B, por exemplo, com entradas escolhidas dentre {0,1,…,2^B -1}. As matrizes E e E’ podem ser matrizes para as quais as entradas são módulos p pequenos. Por exemplo, elas podem ser escolhidas a partir do conjunto {0,1, . . , 𝑤 − 1} ∪ {𝑝 − (𝑤 − 1), 𝑝 − (𝑤 − 1) + 1, … , 𝑝 − 1} com w pequeno. O tamanho de w é escolhido para equilibrar a segurança com a taxa de falhas do sistema. Valores baixos de w diminuem a taxa de falhas do sistema.
[048] A matriz C pode ser calculada módulo p. Por razões de eficiência de largura de banda, o dispositivo de 𝑡 criptografia de chave pública pode calcular e enviar 𝐶 = (2𝐵 ) 𝑀 + 𝐵 𝑇 𝑅 𝑚𝑜𝑑 𝑡 onde t divide p. Na recuperação de M, o dispositivo de 𝑝 descriptografia de chave privada calcula ( 𝑡 ) 𝐶 − 𝑆 𝑇 𝑈 mod p. Nesse caso, são utilizados menos bits da chave bruta como dados de reconciliação do que estão disponíveis. Em geral, os bits menos significativos têm menos impacto sobre a probabilidade de falha.
[049] Em vez de usar matrizes de erro, o exemplo pode ser modificado para diminuir a escala nas operações estrela para adicionar ruído em vez de adicionar ruído explícito. A redução de escala tem a vantagem de a largura de banda ser reduzida.
[050] Novamente com referência à Figura 2a. É mostrada uma fase de inscrição 31 na qual o dispositivo de descriptografia de chave privada 10 gera suas matrizes de chave privada e pública, e disponibiliza a chave pública para o dispositivo de criptografia de chave pública 20. Por exemplo, a chave pública pode ser enviada ao dispositivo 20. Por exemplo, a chave pública pode ser depositada em uma base de dados de chave pública, a partir da qual o dispositivo 20 pode recuperá-la. Por exemplo, os dispositivos 10 e 20 podem ser dispositivos diferentes, ou podem ser o mesmo dispositivo.
[051] Durante a fase de inscrição 31, o dispositivo 10 gera uma primeira matriz de chave privada (r) e calcula uma primeira matriz de chave pública (b) a partir da primeira matriz de chave privada (r). Por exemplo, o dispositivo 10 pode gerar uma matriz pública (a) e calcular a primeira matriz de chave pública (b) como uma multiplicação de matrizes ruidosa entre a primeira matriz de chave privada (r) e a matriz pública (a). A transferência da primeira matriz de chave pública (b) do dispositivo de descriptografia de chave privada para o dispositivo de criptografia de chave pública 20 é disposta. Por exemplo, a primeira matriz de chave pública (b) pode ser enviada do dispositivo de descriptografia de chave privada para o dispositivo 20 em uma mensagem 11.
[052] A matriz pública (a) é compartilhada entre o dispositivo de criptografia de chave pública e o dispositivo de descriptografia de chave privada, sendo que a primeira matriz de chave pública (b) é associada à matriz pública (a). Por exemplo, a matriz pública é transferida para o dispositivo 20 da mesma maneira que a matriz de chave pública (b). Tipicamente, a matriz a será gerada pseudoaleatoriamente a partir de uma semente. A matriz pode ser compartilhada mediante o envio da semente.
[053] A fase de criptografia 32 pode ser posterior, ainda muito posterior, à fase de inscrição 31. Na fase de criptografia 32, o dispositivo 20 gera uma chave de transmissão (K), gera uma segunda matriz de chave privada (s) e calcula uma segunda matriz de chave pública (u) a partir da segunda matriz de chave privada (s). Por exemplo, o dispositivo 20 pode obter a matriz pública (a) associada à primeira matriz de chave pública (b), e calcular a segunda matriz de chave pública (u) como uma multiplicação de matrizes ruidosa entre a segunda matriz de chave privada e a matriz pública (a). A matriz pública pode ser obtida sob a forma de uma semente a partir da qual a matriz pública é gerada. Em uma modalidade, a matriz pública é obtida a partir de uma fonte diferente. Por exemplo, tanto o dispositivo 10 quanto o dispositivo 20 podem obter a matriz pública de uma terceira parte.
[054] A geração da chave de transmissão pode ser feita aleatoriamente.
[055] O dispositivo 20 é configurado para calcular uma segunda chave compartilhada bruta (k*) a partir da segunda matriz de chave privada (s) e primeira matriz de chave pública (b), calculando a segunda chave compartilhada bruta que compreende uma multiplicação de matrizes entre a segunda matriz de chave privada (s) e a primeira matriz de chave pública (b), encapsular a chave de transmissão (K) com pelo menos parte da segunda chave compartilhada bruta mediante a aplicação de uma função de encapsulamento, obtendo dados encapsulados (c), e transferir a segunda matriz de chave pública (u) e os dados encapsulados (c) para o dispositivo de descriptografia de chave privada. Por exemplo, a segunda matriz de chave pública (u) e os dados encapsulados (c) para o dispositivo de descriptografia de chave privada podem ser enviados em uma mensagem 12.
[056] Observe que isso permite que a chave de transmissão seja independente da chave bruta. Isso aumenta a resiliência contra ataques ativos.
[057] Após o dispositivo de descriptografia de chave privada receber do dispositivo de criptografia de chave pública a segunda matriz de chave pública (u) e os dados encapsulados (c), o dispositivo de descriptografia de chave privada pode prosseguir em uma fase de descriptografia 33 para calcular uma primeira chave compartilhada bruta (k ') a partir da segunda matriz de chave pública (u) e da primeira matriz de chave privada (r), calcular a primeira chave compartilhada bruta que compreende uma multiplicação de matrizes entre a segunda matriz de chave pública (u) e a primeira matriz de chave privada (r), e desencapsular os dados encapsulados (c) com o uso de ao menos parte da primeira chave compartilhada bruta (k ') para obter uma chave de transmissão.
[058] O que é interessante é que, em uma modalidade, a segunda matriz de chave pública (u) tem menos elementos de matriz do que a primeira matriz de chave pública (b). Se todas as matrizes fossem quadradas e tivessem a mesma dimensão, então a segunda matriz de chave pública (u) e a primeira matriz de chave pública (b) teriam o mesmo número de elementos. Foi uma percepção dos inventores que isso não tenha sido necessário. Isso, por sua vez, significaria que a contribuição das chaves públicas para as mensagens 11 e 12 seria igual. Entretanto, as circunstâncias nas quais essas mensagens são enviadas e os dispositivos pelos quais elas são enviadas podem ser bastante diferentes. Selecionando-se o tamanho da segunda matriz de chave pública (u) para ser menor que a primeira matriz de chave pública (b), o requisito de largura de banda para a mensagem 12 é reduzido enquanto o requisito de largura de banda para a mensagem 11 é aumentado.
[059] Uma maneira pela qual o tamanho da segunda matriz de chave pública (u) pode ser tornado menor do que o número de elementos de matriz da primeira matriz de chave pública (b) é selecionar uma segunda matriz de chave privada adequadamente menor. Em particular, a segunda matriz de chave privada (s) pode ser escolhida de modo a ter menos elementos de matriz do que a primeira matriz de chave pública (b). Isso pode implicar em que a segunda matriz de chave pública (u) tenha menos elementos de matriz do que a primeira matriz de chave privada (r) também.
[060] Por exemplo, em uma modalidade, uma dimensão do sistema (d) é escolhida. A dimensão do sistema determina, em parte, a segurança do sistema. Sendo que valores mais altos de n correspondem a maior segurança. Cada uma das matrizes a, r, b, s, u, tem uma de suas dimensões igual à dimensão do sistema d. Se matrizes de erro forem usadas, então, as matrizes de erro e, e’ podem também ter uma dimensão igual à dimensão do sistema. Se as chaves brutas k, k 'e/ou chave de transmissão K forem expressas como matrizes, então, essas também podem ter uma dimensão igual à dimensão do sistema. As outras dimensões dessas matrizes podem ser escolhidas de modo que adições e multiplicações (possivelmente incluindo uma transposição) sejam compatíveis.
[061] Em uma modalidade, a matriz pública a é uma matriz quadrada de dimensões 𝑑 × 𝑑. A primeira matriz de chave privada r e a primeira matriz de chave pública b têm dimensões 𝑑 × 𝑛̅. A segunda matriz de chave privada s e a segunda matriz de chave pública u têm dimensões 𝑑 × 𝑚 ̅ . Selecionando-se a segunda dimensão 𝑚 ̅ da segunda matriz de chave privada s e da segunda matriz de chave pública u sejam menores que a segunda dimensão 𝑛̅ da primeira matriz de chave privada r e da primeira matriz de chave pública b, assegura-se que a chave pública u na mensagem 12 tenha menos entradas do que a chave pública b na mensagem 11.
[062] Por exemplo, selecionando-se a segunda dimensão (𝑚 ̅ ) da segunda matriz de chave pública (u) para que seja, digamos, no máximo, metade da segunda dimensão (𝑛̅) da primeira matriz de chave pública (b), assegura-se que a segunda matriz de chave pública (u) tenha no máximo metade do número de entradas que a primeira matriz de chave pública (b).
[063] Uma escolha particularmente vantajosa para a segunda dimensão (𝑚 ̅ ) da segunda matriz de chave privada e da segunda matriz de chave pública é um. Isso minimiza o tamanho da segunda mensagem 12.
[064] Por exemplo, a mensagem 11 pode ser enviada durante uma fase de registro na qual está disponível mais largura de banda. Por exemplo, a mensagem 12 pode ser enviada durante o engate ativo do sistema no qual menos largura de banda está disponível. Por exemplo, o dispositivo 12 pode ser um sensor que é dotado da primeira chave pública quando há largura de banda suficiente, por exemplo, durante a produção ou configuração, enquanto a mensagem 12 pode ser enviada durante o uso do sensor, durante o qual pode haver menos largura de banda. Observe, em vez de enviar a mensagem 11, por exemplo, em uma rede de computadores, a primeira chave pública pode ser obtida no dispositivo 20 mediante, por exemplo, a instalação da mesma em um dispositivo de memória do dispositivo
20.
[065] Curiosamente, acredita-se que a segurança do sistema depende mais da dimensão do sistema 𝑑 e do produto ̅ do que dos tamanhos individuais de 𝑛̅ e 𝑚 𝐵𝑛̅𝑚 ̅ . Este último indica o comprimento em bits que pode ser usado para derivar a chave bruta. A primeira influencia o tamanho da retícula subjacente e, dessa forma, a rigidez do problema criptográfico subjacente. A probabilidade de falha de descriptografia do esquema depende, em parte, do valor de b. Valores mais altos de 𝐵 pioram a taxa de falhas e afetam adversamente a segurança do esquema de PKE contra ataques ativos adaptativos. Tipicamente, B é fixo, por exemplo, sob a forma de conjuntos de parâmetros padronizados.
[066] Dessa forma, aumentando-se o tamanho da primeira chave pública, por exemplo, o tamanho de 𝑛̅, ao mesmo tempo em que se diminui o tamanho de 𝑚 ̅ , a mesma segurança pode ser mantida, reduzindo-se, ao mesmo tempo, a largura de banda necessária para a mensagem 12. Em particular, um sistema no qual 𝑛̅ = 𝑑 e 𝑚 ̅ = 𝑑, tem uma segurança comparável a um sistema no qual 𝑛̅ = 𝑑2 e 𝑚 ̅ = 1.
[067] Curiosamente, a segunda dimensão (𝑚 ̅ ) da segunda matriz de chave pública (u) não precisa ser predeterminada. Ela pode ser escolhida independentemente das escolhas feitas para a primeira chave privada e pública. Em particular, ela pode ser escolhida independentemente da dimensão (𝑛̅). Em uma modalidade, a segunda dimensão (𝑚 ̅) é configurável no segundo dispositivo 20.
[068] Em uma modalidade exemplificadora, pode- se usar 𝐵 = 4, 𝑛̅ = 64, 𝑚 ̅ = 1. B indica o número de bits mais significativos que são usados de uma entrada de matriz de chave bruta. Configuração de chave pública de longo prazo d, n 1198, 1 q, p, t 214 , 212 , 210 B, 𝑛̅, 𝑚 ̅ 4, 64, 1 µ 64 Na tabela acima: n: indica o grau de polinômios nas matrizes privadas e/ou públicas. Um valor de 𝑛 = 1 indica que o módulo de números inteiros módulo a é usado. O valor n pode ser chamado de
“dimensão de anel”, por exemplo, o grau do anel polinomial escolhido. d indica a dimensão do sistema, por exemplo, o número de colunas e linhas da matriz pública a, µ indica o número de elementos da matriz de chave bruta que são usados para encapsular a chave de transmissão. Esses elementos podem ser predeterminados, por exemplo, padronizados, ou podem ser selecionados aleatoriamente, ou podem ser propositadamente, por exemplo, como elementos confiáveis, etc. O comprimento de chave secreta compartilhada é, dessa forma, 𝜇𝐵; no exemplo acima, isso é 64 × 4 = 256.
[069] Em uma modalidade, a primeira chave pública pode compreender:
1. Semente para regenerar a matriz pública a. por exemplo, o comprimento de bits da semente pode ser escolhido igual ao segredo compartilhado; neste exemplo, 256 bits.
2. A matriz de chave pública b. Essa matriz pode ter dimensão de d e 𝑛̅ e ter elementos escolhidos módulo p. Por exemplo, a primeira matriz secreta pode ter elementos escolhidos módulo q. A matriz de chave pública nesse exemplo pode ser codificada em q para p. A matriz de chave pública nesse exemplo pode ser codificada em 𝑙𝑜𝑔2 𝑝𝑑𝑛̅ bits; nesse exemplo, 12 × 1.198 × 64 = 920.064 bits.
3. Opcionalmente, informações adicionais de manutenção. Por exemplo, um identificador pode ser incluído para indicar o tipo de chave; por exemplo, 1 byte. Por exemplo, o identificador pode indicar o método de regeneração da matriz pública a. Por exemplo, o valor 𝑛̅ pode ser incluído, por exemplo, 2 bytes. Dois bytes para o valor 𝑛̅ permitem que um valor maior de 𝑛̅ seja escolhido, por exemplo, um valor de 512 para 𝑛̅ também é possível para alguns casos de uso. Esses valores e identificadores podem ser predeterminados, por exemplo, por um designer de sistemas, caso em que eles não precisam ser incluídos. Entretanto, a inclusão do valor de 𝑛̅ permite mudar dinamicamente a largura de banda da fase de criptografia para a fase de inscrição, por exemplo, para o grau necessário para a aplicação.
[070] O tamanho total da matriz de chave pública nesse exemplo é de 115.008 bytes. Se a semente e/ou identificadores forem incluídos, uma quantidade adicional de 32, ou 35, etc., bytes pode ser adicionada. Observe que a geração de uma chave secreta pode ser feita de várias maneiras. Por exemplo, uma matriz de chave privada pode ser totalmente aleatória, mas pode estar sujeita a restrições, por exemplo, restrições de peso de Hamming. Por exemplo, os vetores de comprimento d em uma matriz de chave privada podem ter um peso de Hamming predeterminado; Por exemplo, neste exemplo, pode- se escolher o peso de Hamming 574.
[071] Em uma modalidade, o texto cifrado pode compreender:
1. A segunda matriz de chave pública u. A segunda matriz de chave pública pode ter dimensões d e ̅, 𝑚 com elementos escolhidos módulo p. A matriz de chave pública nesse exemplo pode ser codificada em 𝑙𝑜𝑔2 𝑝𝑑𝑚 ̅ bits; nesse exemplo 12 × 1.198 × 1 = 14.376 bits.
2. Os dados encapsulados c podem ser codificados como um vetor com µ elementos, sendo que os elementos são escolhidos módulo t. O tamanho dos dados encapsulados nesse exemplo é 𝜇 𝑙𝑜𝑔2 𝑡 bits; nesse exemplo 64 × 10 × 1 = 640 bits. Pode- se considerar esse esquema para usar 𝑙𝑜𝑔2 𝑡 − 𝐵 bits de reconciliação; nesse caso, 6.
3. Opcionalmente, uma etiqueta de autenticação no caso de criptografia autenticada ser usada para a mensagem. Por exemplo, a etiqueta de autenticação pode ser uma etiqueta de autenticação AESGCM, se o modo Galois/contador for usado. A inclusão da etiqueta de autenticação na chave pública de um esquema de PKE, não é necessária.
4. Opcionalmente, o valor de 𝑚 ̅ . Por exemplo, isso pode ser 1 byte.
[072] Consequentemente, nesse exemplo, o tamanho do texto cifrado pode ser 12 × 1.198 × 1 + 64 × 10 = 15.016 bits, ou seja, 1.877 bytes. Os tamanhos do texto cifrado excluem o tamanho da mensagem criptografada. Opcionalmente, alguns bits, por exemplo, 8 bits, podem ser usados para transmitir o valor de 𝑚 ̅ . A segurança de PQ desse exemplo é estimada como sendo 2233 , e a taxa de falhas como sendo 2−129.
[073] Em uma modalidade, a segurança ativa pode ser adicionalmente melhorada com o uso de uma função encapsulada mais elaborada, por exemplo, como no algoritmo 9, em “Round2: KEM and PKE based on GLWR”, de Hayo Baan, et al. Em caso afirmativo, o texto cifrado pode compreender um hash g, que pode ser calculado pelo dispositivo de criptografia de chave pública por meio de aplicação de função “hash” à chave pública do dispositivo de descriptografia de chave privada. O hash pode ser usado para assegurar que o segredo compartilhado final contenha contribuições tanto do dispositivo de descriptografia de chave privada quanto do dispositivo de criptografia de chave pública. Por exemplo, pode ser usada a transformada de Fujisaki-Okamoto. O hash pode, por exemplo, ser o tamanho do segredo compartilhado, nesse exemplo, 256 bits.
[074] Conforme apontado acima, a chave de transmissão pode ser usada para criptografar uma mensagem m. Por exemplo, o dispositivo de criptografia de chave pública pode ser configurado para criptografar a mensagem (m) com a chave de transmissão, e transferir a dita mensagem criptografada para o dispositivo de descriptografia de chave privada. O dispositivo de descriptografia de chave privada pode receber a mensagem criptografada do dispositivo de criptografia de chave pública, por exemplo, juntamente com a segunda matriz de chave pública e a data encapsulada, e descriptografar a mensagem criptografada com a chave de transmissão.
[075] Em uma modalidade, a chave de transmissão é independente da primeira matriz de chave pública (b). Por exemplo, a chave de transmissão K pode ser gerada sem o uso da primeira matriz de chave pública (b), por exemplo, a chave de transmissão pode ser gerada aleatoriamente e/ou gerada antes que a primeira matriz de chave pública (b) seja recebida no dispositivo 20.
[076] De modo semelhante, a chave de transmissão pode ser independente da primeira matriz de chave privada (r). A chave de transmissão pode ser computacionalmente independente da segunda matriz de chave privada (s) e da segunda matriz de chave pública (u), dados encapsulados (c). Computacionalmente independente significa que dentro dos limites computacionais do invasor, o conhecimento da segunda matriz de chave privada não fornece informações sobre a chave de transmissão.
[077] A chave de transmissão K é tipicamente usada de modo temporário, por exemplo, ela pode ser efêmera, por exemplo, usada apenas para criptografar uma única mensagem m, ou uma única sessão, protocolo, handshake ou similares. A chave de transmissão K pode ser uma chave simétrica, por exemplo, usada como uma chave em uma cifra de bloco.
[078] Por exemplo, o dispositivo 20 pode ser configurado para apagar a chave de transmissão que criptografa a mensagem e/ou a segunda matriz de chave privada após encapsular a chave de transmissão. Por exemplo, a chave de transmissão e/ou a segunda matriz de chave privada podem ser apagadas antes de enviar os dados encapsulados para o dispositivo 10. De modo semelhante, o dispositivo 10 pode apagar a chave de transmissão após a descriptografia da mensagem.
[079] Em uma modalidade, a segunda matriz de chave privada é derivada da chave de transmissão. Por exemplo, a chave de transmissão pode ser gerada aleatoriamente, seja verdadeira ou pseudo, e então ser usada como uma entrada para uma função de derivação de chave, por exemplo, uma função hash para derivar uma semente; pode haver entradas adicionais, por exemplo, a mensagem, a primeira matriz de chave pública etc. A semente é, então, usada para gerar a segunda matriz de chave privada, por exemplo, como uma função determinística pseudoaleatória dependendo da semente. A função de derivação de chave é escolhida, de preferência, de modo que a chave de transmissão não possa ser calculada a partir da segunda matriz de chave privada.
[080] Isso tem o efeito de que, após o dispositivo 10 derivar a chave de transmissão, o dispositivo 10 pode reconstruir a segunda matriz de chave privada a partir da chave de transmissão, por exemplo, aplicando a mesma função de derivação de chave e calculando a segunda matriz de chave privada a partir da mesma. Em seguida, o dispositivo 10 pode verificar se a segunda chave pública e/ou os dados encapsulados foram calculados corretamente. Isso tem a vantagem de que ataques ativos são muito mais difíceis de serem bem sucedidos. Se o dispositivo 10 encontrar uma anomalia, por exemplo, uma diferença entre os dados recebidos e a segunda chave pública recalculada e/ou os dados encapsulados recalculados, o dispositivo 10 pode tomar uma ação adequada, por exemplo, gerar um sinal de alerta, interromper a descriptografia da segunda mensagem, etc.
[081] A derivação da segunda matriz de chave privada a partir da chave de transmissão tem a vantagem de aumentar a segurança no que diz respeito a um sistema seguro para CCA. Isso é vantajoso, especialmente se uma primeira matriz de chave pública for gerada uma vez e for usada para muitas mensagens.
[082] Em uma modalidade, o processador do dispositivo de criptografia de chave pública é configurado para calcular dados auxiliares para reduzir a taxa de erro na obtenção da chave de transmissão no dispositivo de descriptografia de chave privada. É a natureza da criptografia de chave pública com base na multiplicação de matrizes ruidosas de haver uma chance de que a reconstrução da chave de transmissão no lado da chave de descriptografia de chave privada possa falhar. A probabilidade de falha pode ser reduzida de várias maneiras, uma das quais é calcular e enviar dados auxiliares que ajudam o dispositivo de descriptografia de chave privada a alcançar a chave de transmissão correta.
[083] Por exemplo, o dispositivo de descriptografia de chave privada pode ser configurado para receber dados auxiliares do dispositivo de criptografia de chave pública e para aplicar os dados auxiliares para reduzir a taxa de erro na obtenção da chave de transmissão no dispositivo de descriptografia de chave privada.
[084] Existem vários tipos de dados auxiliares que podem ser usados. No exemplo dado acima, foi usada uma abordagem chamada de dados de reconciliação. Parte da segunda chave bruta pode ser usada para encapsular a chave de transmissão, e parte da mesma pode ser usada como dados de reconciliação.
[085] Por exemplo, em uma modalidade, a segunda chave bruta é uma matriz, encapsulando a chave de transmissão (K), compreendendo a adição de bits da chave de transmissão a uma parte mais significativa de pelo menos parte dos elementos da segunda matriz de chave bruta, e descartando zero ou mais bits menos significativos da pelo menos parte dos elementos da segunda matriz de chave bruta. Em uma modalidade, todos os bits que não são adicionados à chave de transmissão para encapsular a mesma podem ser usados como dados de reconciliação. Entretanto, para reduzir a largura de banda, um ou mais dos bits menos significativos podem ser descartados. Observe que nem todos os elementos de matriz de uma matriz de chave bruta precisam ser usados. Os elementos que não são usados, podem ser descartados em sua totalidade. Isso economiza largura de banda. No dispositivo 10, descapsular os dados encapsulados pode compreender descartar zero ou mais bits menos significativos de pelo menos parte dos elementos da primeira matriz de chave bruta, subtrair pelo menos parte dos elementos da primeira matriz de chave bruta dos dados encapsulados, e arredondar o resultado da subtração. Curiosamente, os dados auxiliares são facilmente integrados à chave de transmissão encapsulada.
[086] Em uma modalidade, o dispositivo de criptografia de chave pública é configurado para um ou mais dos seguintes: a) aplicar uma função de bit confiável à segunda chave compartilhada bruta (k*) selecionando a parte da segunda chave compartilhada bruta, obtendo índices confiáveis de indicação de elementos da segunda chave compartilhada bruta, sendo que bits para encapsulação são derivados dos elementos indicados e transferem os índices confiáveis para o dispositivo de descriptografia de chave privada, e/ou b) gerar dados de reconciliação (h) para a pelo menos parte da segunda chave bruta compartilhada, sendo que os dados de reconciliação compreendem informações que permitem reduzir as diferenças entre a primeira e a segunda chave bruta derivada no dispositivo de criptografia de chave pública e no dispositivo de descriptografia de chave privada, e transferir os dados de reconciliação (h) para o dispositivo de descriptografia de chave privada, e/ou c) gerar bits de paridade para a chave de transmissão, sendo que a chave de transmissão e os bits de paridade formam uma palavra de código de acordo com um código de correção de erro, mascarando a chave de transmissão compreendendo o encapsulamento da palavra de código.
[087] De modo semelhante, o dispositivo de descriptografia de chave privada pode ser configurado para um ou mais dos seguintes: a) receber índices confiáveis do dispositivo de criptografia de chave pública, selecionando a parte da primeira chave compartilhada bruta indicada pelos índices confiáveis, b) receber dados de reconciliação (h) para a pelo menos parte da primeira chave bruta compartilhada (k'), os dados de reconciliação compreendendo informações que permitem reduzir as diferenças entre a primeira e a segunda chaves brutas derivadas no dispositivo de criptografia de chave pública e no dispositivo de descriptografia de chave privada aplicar uma função de reconciliação à pelo menos parte da primeira chave bruta compartilhada e os dados de reconciliação, e c) desencapsular os dados encapsulados (c) para obter uma palavra de quase código, aplicar uma correção de erro de acordo com o código de correção de erro.
[088] Bits confiáveis são bits com maior probabilidade de serem calculados igualmente em ambos os lados. Por exemplo, alguns elementos da matriz de chave bruta podem ser determinados como confiáveis, enquanto outros, que são não confiáveis, podem ser descartados. Para os elementos de matriz selecionados, podem ser obtidos os dados de reconciliação. Finalmente, os bits de paridade podem ser calculados para calcular ainda mais erros. Esses três tipos de dados auxiliares são independentes, uma vez que cada um, ou cada dois, ou todos os três, podem ser usados para reduzir a taxa de falhas da descriptografia de chave privada.
[089] Em uma modalidade, os dados de reconciliação e os bits de paridade são combinados, mas não são confiáveis. Uma vantagem dessa abordagem reside em que nenhuma informação referente aos tamanhos dos elementos precisa ser compartilhada. Os dados auxiliares podem ser incluídos nos dados encapsulados, mas podem também ser transferidos do dispositivo 20 para o dispositivo 10 independentemente. Os dados de reconciliação podem ser convenientemente integrados à chave de transmissão encapsulada, por exemplo, conforme ilustrado na presente invenção. Um exemplo de uma modalidade na qual os bits de paridade e os dados de reconciliação são combinados, mas os bits não confiáveis, é ilustrado na Figura
3.
[090] Em uma modalidade do dispositivo de criptografia de chave pública ou o dispositivo de descriptografia de chave privada, os bits confiáveis são um ou mais bits mais significativos dos elementos indicados, os dados de reconciliação para elementos indicados são um ou mais bits dos elementos indicados após os bits confiáveis em significância, um ou mais bits menos significativos dos elementos indicados podem ser descartados. Os elementos indicados, que são os elementos confiáveis, podem ser comunicados a partir do dispositivo de criptografia de chave pública para o dispositivo de descriptografia de chave privada, por exemplo, sua posição na matriz.
[091] Em uma modalidade do dispositivo de descriptografia de chave privada, os elementos na chave bruta indicados pelos índices confiáveis são selecionados e substituídos por elementos modificados, de acordo com os dados de reconciliação correspondentes. Por exemplo, os elementos modificados podem minimizar a distância de lee entre o elemento selecionado e o elemento modificado. Os bits confiáveis podem ser obtidos como um ou mais bits mais significativos dos elementos modificados.
[092] Em uma modalidade, os elementos modificados são determinados de modo que concordem com os dados de reconciliação correspondentes que não teriam sido descartados pelo dispositivo de criptografia de chave pública. Os elementos modificados minimizam a distância de lee entre o elemento selecionado e o elemento modificado.
[093] A Figura 2b mostra esquematicamente um exemplo de criptografia de chave pública e de descriptografia de chave privada. Na Figura 2b, “ind” representa uma indicação do tamanho de chave ou tamanho de matriz.
[094] As modalidades ilustradas com a Figura 2b são embutidas naquelas da Figuras 2a. Um dispositivo 10, de acordo com a Figura 2b, pode ser igual a um dispositivo 10 para a Figura 2a, durante a fase de inscrição 31. Entretanto, na fase de criptografia 32, o dispositivo 20 é configurado para obter um tamanho de chave para a chave de transmissão (K) e para gerar a chave de transmissão (K) de acordo com o dito tamanho de chave. Por exemplo, se as informações para criptografar forem de alta segurança, então o dispositivo 20 pode selecionar uma chave de transmissão K de 256 bits, mas se as informações forem de menor segurança, então o dispositivo 20 pode selecionar uma chave de transmissão K de 128 bits. O dispositivo 20 pode determinar um tamanho de matriz para a segunda matriz de chave privada (s) para acomodar o encapsulamento da chave de transmissão do dito tamanho de chave. Por exemplo, para acomodar uma chave de transmissão maior, o dispositivo 20 pode selecionar uma segunda dimensão m maior, por exemplo, proporcionalmente maior.
[095] A segunda dimensão 𝑚 ̅ pode ser selecionada de modo que 𝑚 ̅ 𝑛̅𝐵 seja igual a, ou seja pelo menos tão grande quanto o tamanho de bit desejado da chave de transmissão. Por exemplo, para suportar 256 bits em vez de 128, a segunda dimensão 𝑚 ̅ pode ser selecionada como duas vezes maior. Por exemplo, o 𝑚 ̅ pode ser 2 ou 1, de modo que 𝑚 ̅ 𝑛̅𝐵 seja igual a 256 ou 128.
[096] Dependendo da dimensão selecionada 𝑚 ̅, o dispositivo 20 gera a segunda matriz de chave privada (s) de acordo com o tamanho da matriz, por exemplo, de acordo com a dimensão do sistema d e a segunda dimensão 𝑚 ̅ . Com base na matriz maior, o dispositivo 20 então prossegue de modo a calcular uma chave bruta e encapsular a chave de transmissão, por exemplo, conforme indicado na presente invenção, por exemplo, como no contexto da Figura 2a. Entretanto, o dispositivo 20 transfere uma indicação 𝑖𝑛𝑑 do tamanho de chave e/ou tamanho de matriz para o dispositivo de descriptografia de chave privada. Por exemplo, a indicação 𝑖𝑛𝑑 pode ser o tamanho da chave de transmissão, por exemplo, 256, ou 128, ou ‘grande’ ou ‘pequeno’, ou o tamanho da segunda matriz de chave pública-privada, por exemplo, a segunda dimensão, por exemplo, 2 ou 1, etc. A indicação pode ser implícita, por exemplo, mediante o envio de uma segunda matriz de chave pública maior ou menor. Por exemplo, a segunda matriz de chave pública pode ser enviada em um pacote ou pacotes de rede de computador, que indicam o tamanho ou extremidade etc., do pacote, indicando assim implicitamente o tamanho da segunda matriz de chave pública e, dessa forma, por exemplo, da segunda dimensão.
[097] Se o valor de 𝑚 ̅ 𝑛̅𝐵 for maior que o necessário para o encapsulamento, pode-se selecionar uma chave de transmissão intencionalmente maior, por exemplo, com um tamanho de chave igual a 𝑚 ̅ 𝑛̅𝐵. A chave de transmissão final pode, então, ser calculada a partir da chave de transmissão selecionada, por exemplo, por uma função de derivação de chave, um “hash”, etc.
[098] O dispositivo 10 pode prosseguir, por exemplo, conforme indicado na presente invenção, por exemplo, como no contexto da Figura 2 a. Por exemplo, o dispositivo 10 pode usar a matriz de chave pública recebida para calcular uma primeira chave bruta e desencapsular a chave de transmissão encapsulada. O tamanho da chave bruta pode variar dependendo do tamanho da chave pública.
[099] Em uma modalidade, uma primeira chave pública é transferida juntamente com um parâmetro 𝑛̅ como um parâmetro da chave pública de modo que um dispositivo de criptografia de chave pública possa determinar o valor necessário m. Por exemplo, 𝑚 ̅ pode ser calculado pelo dispositivo de criptografia de chave pública de modo que 𝐵𝑛̅𝑚 ̅≥ 𝐾𝑒𝑦𝑙𝑒𝑛𝑔ℎ𝑡. Por exemplo, em uma modalidade, a chave pública compreende a matriz de chave pública b, a matriz de chave pública a e a dimensão 𝑛̅. Esse último pode estar implícito. Em outras palavras, o dispositivo 10 envia ao dispositivo 20 o conjunto de parâmetros que permite alcançar um dado nível de segurança.
[0100] A criptografia de chave pública, de acordo com uma modalidade, pode ser usada em vários protocolos existentes. Por exemplo, as modalidades podem ser integradas com protocolos como TLS, IPSec, VPN. Por exemplo:
[0101] TLS1.3: client envia client_hello. O client_hello pode compreender uma matriz de chave pública. Em vez de ter a chave pública, o client_hello pode incluir um URL indicando onde a matriz de chave pública pode ser baixada. Se o servidor ainda não tiver a chave pública, por exemplo, em cache, então, o servidor pode prosseguir para baixar a matriz de chave pública e armazená-la localmente. Com a matriz de chave pública, o servidor pode criptografar uma chave simétrica que envia ao cliente e pode ser usada como a chave mestre a partir da qual as chaves simétricas para a camada de registro são derivadas. Nesse exemplo, o cliente funciona como um dispositivo de descriptografia de chave privada.
[0102] TLS1.2: neste exemplo, é o contrário. O cliente pode enviar uma solicitação, e o servidor envia um URL onde a matriz de chave pública do servidor pode ser obtida. O cliente poderá fazer download se a chave pública ainda não estiver disponível. E uma vez que o cliente tenha a matriz de chave pública, ele pode prosseguir para criptografar uma chave de transmissão, por exemplo, a ser usada na camada de registro. Nesse exemplo, o cliente atua como um dispositivo de criptografia de chave pública.
[0103] Observe que as chaves públicas podem ser pré-distribuídas. Por exemplo, em um navegador, uma ou mais, por exemplo, uma pluralidade de matrizes de chave pública podem ser pré-distribuídas. Por exemplo, uma chave pública pode ser indicada com um ID de chave pública, por exemplo, um hash da chave, de modo que o software, por exemplo, o navegador, possa verificar se a chave pública é obtida através de pré- distribuição. No cenário de pré-distribuição, a assimetria na largura de banda é uma vantagem. Por exemplo, durante a pré-
distribuição não é um problema se as matrizes de chave pública forem maiores, mas durante o uso, o tamanho das mensagens é reduzido. Além disso, por exemplo, em uma VPN, por exemplo, baseada em TLS, as chaves públicas podem ser pré-configuradas em uma ou ambas as partes de comunicação.
[0104] Em uma modalidade, o dispositivo 10 pode ser configurado para enviar uma primeira mensagem de cumprimento que lista informações criptográficas, por exemplo, como a versão SSL ou TLS, ou, na ordem de preferência do cliente, o CipherSuites suportado, etc. Em resposta à primeira mensagem de cumprimento, o dispositivo 20 pode enviar uma segunda mensagem de cumprimento. A segunda mensagem de cumprimento pode conter detalhes similares. O dispositivo 20 pode também enviar seu certificado digital na segunda mensagem de cumprimento. O dispositivo 10 pode verificar o certificado. A primeira e/ou a segunda mensagem de cumprimento pode compreender uma chave pública ou uma indicação de uma chave pública. Na segunda mensagem de cumprimento e/ou em uma mensagem subsequente, uma ou mais chaves de transmissão são acordadas. Uma chave de transmissão pode ser usada para criptografar ou autenticar a comunicação subsequente entre os dispositivos 10 e 20. Se múltiplas chaves de transmissão forem acordadas, elas podem ser combinadas em uma única chave, por exemplo, pode-se fazer hash das mesmas juntas, ou XOR etc.
[0105] A Figura 2c mostra esquematicamente um exemplo de um handshake. O handshake pode ser usado em combinação com protocolos existentes ou fora dele. A Figura 2c mostra mensagens 12 a 16, algumas das quais podem ser combinadas em um handshake. Em particular, uma ou ambas as mensagens 13 e 16 podem ser omitidas. Por exemplo, a mensagem 15 pode ser omitida. O tempo prossegue em direção à parte inferior da Figura.
[0106] A mensagem 13 é uma pré-distribuição, durante a qual o dispositivo 20 obtém ao menos uma primeira matriz de chave pública (b) associada ao dispositivo de descriptografia de chave privada 10. Posteriormente, quando o dispositivo 20 e/ou o dispositivo 10 desejar engatar em um protocolo de handshake, então o dispositivo 20 recebe do dispositivo 10 pelo menos dois identificadores que indicam pelo menos duas primeiras matrizes de chave pública do dispositivo de descriptografia de chave privada, sendo que as duas primeiras matrizes de chave pública têm tamanhos diferentes. Por exemplo, a mensagem 14 pode ser uma mensagem de cumprimento. A elipse entre as mensagens 13 e 14 indica que a mensagem 13 é enviada antes do início do handshake. Por exemplo, as matrizes de chave pública podem ser obtidas pelo dispositivo 20 como parte de um navegador, a partir de uma base de dados de chave pública, etc.
[0107] O dispositivo 20 seleciona uma dentre pelo menos duas primeiras matrizes de chave pública por meio da determinação de que um cache de chave do dispositivo de criptografia de chave pública compreenda a maior das duas primeiras matrizes de chave pública e, se compreender, selecionar a maior primeira matriz de chave pública. Por exemplo, o dispositivo 20 pode compreender um cache de chave no qual matrizes de chave pública anteriormente obtidas são armazenadas. O cache de chave pode fazer parte de um navegador.
[0108] Pode haver várias políticas para o dispositivo 20 selecionar uma chave pública. Uma primeira consideração pode ser o tamanho da dimensão do sistema. A dimensão do sistema pode ser selecionada com base nas considerações de segurança. Uma próxima consideração pode ser o tamanho da chave de transmissão desejada. Ainda outra consideração pode ser o tamanho da mensagem resultante 12 que deve ser enviada do dispositivo 20 para o dispositivo 10. Por exemplo, em uma modalidade, o dispositivo 20 pode ser configurado para selecionar a maior chave que está disponível no cache de chave.
[0109] Se a chave desejada não estiver disponível no cache de chave e, em particular, se nenhuma chave pública do dispositivo 10 estiver disponível no cache de chave, então, o dispositivo 20 pode enviar uma mensagem de solicitação 15; mensagem de solicitação 15 solicitando a primeira matriz de chave pública selecionada.
[0110] Em resposta, a chave pública solicitada pode ser enviada ao dispositivo 20 em uma mensagem 16. Observe que as mensagens 103 e 16 não precisam necessariamente vir do dispositivo 10, mas, em vez disso, podem ser obtidas a partir de, digamos, uma base de dados de chave pública, ou uma base de dados de software, etc.
[0111] Uma vez que a chave pública selecionada esteja disponível, o dispositivo 20 pode prosseguir com uma mensagem 12, conforme descrito aqui, por exemplo, mediante o encapsulamento de uma chave de transmissão, etc. O dispositivo 20 envia ao dispositivo de descriptografia de chave privada uma indicação da primeira matriz de chave pública selecionada. A chave de transmissão (K) é encapsulada com a primeira chave pública selecionada. O dispositivo 20 pode usar uma modalidade conforme descrito em relação à Figura 2b e usar uma chave pública maior para encapsular seletivamente uma chave de transmissão maior ou menor.
[0112] O dispositivo 10 pode ser configurado de modo correspondente para enviar uma mensagem 14 que compreende ao menos duas indicações de ao menos duas primeiras matrizes de chave pública do dispositivo de descriptografia de chave privada, sendo que as duas primeiras matrizes de chave pública têm tamanhos diferentes, e para receber uma mensagem 12 que compreende uma indicação de uma primeira matriz de chave pública selecionada a partir do dispositivo de criptografia de chave pública.
[0113] Uma modalidade de acordo com a Figura 2c tem a vantagem de uma chave maior poder ser usada se a mesma não incorrer em largura de banda adicional, por exemplo, se a mesma for pré-distribuída. A chave maior pode ser usada, por exemplo, para criptografar ambas as chaves de transmissão maiores e menores. Se a chave não for pré-distribuída, o sistema pode optar por uma chave pública menor para reduzir o consumo de largura de banda.
[0114] Por exemplo, em uma modalidade, a chave pública grande é selecionada de modo que 𝐵 ∗ 𝑛̅ ∗ 1 ≥ 𝐾𝑒𝑦𝑙𝑒𝑛𝑔𝑡ℎ, sendo que B é o número de bits tomados dos elementos da matriz de chave bruta, por exemplo, B=1,2, 4, etc. 𝐾𝑒𝑦𝑙𝑒𝑛𝑔𝑡ℎ é o tamanho da chave de transmissão, por exemplo, seu valor pode ser 256. Por exemplo, com os valores exemplificadores de 𝐵 = 4 e um comprimento de chave de 256, pode-se selecionar 𝑛̅ = 64. A chave pública pequena pode ser selecionada de modo que 𝐵𝑛̅𝑛̅ ≥ 𝐾𝑒𝑦𝑙𝑒𝑛𝑔𝑡ℎ. Com os mesmos valores exemplificadores, pode-se usar ̅ = 𝑛̅ = 8. Essa escolha equilibra a largura de banda que é 𝑚 necessária entre ambas as chaves públicas. Se um dispositivo de criptografia de chave pública já tiver acesso à chave grande, ele poderá usar a chave grande de modo a minimizar a largura de banda. Se não tiver acesso a nenhuma chave, ele pode solicitar que a chave menor equilibre a largura de banda. Em uma modalidade, a primeira chave pública grande é ao menos 2 vezes maior, ao menos 4 vezes maior, ou ao menos 8 vezes maior que a primeira chave pública pequena, etc.
[0115] Por exemplo, um dispositivo de criptografia de chave pública pode receber do dispositivo de criptografia de chave privada uma mensagem de cumprimento que compreende, por exemplo, {(𝑘𝑒𝑦𝑖𝑑101, 8), (𝑘𝑒𝑦𝑖𝑑102, 64)} o que indica uma primeira chave com identificador de chave 𝑘𝑒𝑦𝑖𝑑101 e 𝑛̅ = 8, e uma segunda chave com identificador de chave 𝑘𝑒𝑦𝑖𝑑102 e 𝑛̅ =
64. Se ambas as chaves ou apenas a chave com ID 𝑘𝑒𝑦𝑖𝑑102 estiver disponível em um cache de chave do dispositivo de criptografia de chave pública, então, pode-se escolher usar essa chave maior, por exemplo, usando uma dimensão 𝑚 ̅ = 1. Se nenhuma das chaves estiver disponível, então o dispositivo de criptografia de chave pública pode solicitar 𝑘𝑒𝑦𝑖𝑑101, por exemplo, do dispositivo de descriptografia de chave privada ou em outra parte. A criptografia pode, então, usar 𝑚 ̅ = 8. Em ambos os casos, a chave de transmissão pode ser do mesmo comprimento.
[0116] A Figura 3 mostra esquematicamente um exemplo de criptografia de chave pública e de descriptografia de chave privada. Na Figura 3, é usada a seguinte notação. ● parity_bits se refere às informações utilizadas para a correção de erro
● obtain_parity_bits(k) significa que alguns bits de paridade de k são obtidos. Por exemplo, os bits de paridade podem ser gerados de acordo com um código de correção de erro. ● error_correct(k, parity_bits) significa que os parity_bits são usados para corrigir potenciais erros em k ou em parity_bits obtendo uma versão de k que tenha mais probabilidade de ser isenta de erro
[0117] A modalidade de acordo com a Figura 3 usa um tipo diferente de dados auxiliares. Por exemplo, de acordo com uma modalidade, o dispositivo 20 calcula bits de paridade para a chave de transmissão. Por exemplo, os bits de paridade juntamente com a chave de transmissão podem ser uma palavra- código de acordo com um código de correção de erro, por exemplo, um código BCH. A palavra de código é encapsulada com a chave bruta, por exemplo, conforme descrito aqui. O encapsulamento pode incluir dados de reconciliação, se necessário. Para desencapsular, o dispositivo 10 primeiro aplica dados de reconciliação, obtendo uma palavra de código próxima, por exemplo, uma palavra de código com possíveis erros de bits na mesma. A palavra de código próxima pode ser corrigida com o uso de um algoritmo de correção de erro associado ao código de correção de erro. O uso de correção de erro e dados de reconciliação melhora a probabilidade de falha de descriptografia, possibilitando, assim, parâmetros menores, e melhorando o desempenho através de menores tamanhos de chave. A combinação de bits de paridade e dados de reconciliação é uma combinação preferencial, possibilitando um tamanho pequeno da matriz de chave pública.
[0118] Em uma modalidade do protocolo, a primeira chave pública contém n vetores. O texto cifrado compreende a segunda chave pública u e os dados encapsulados c. A segunda matriz de chave pública u pode ser um vetor de dimensão d com elementos em Z_p. Para minimizar o tamanho do texto cifrado, pode-se usar 𝑚 ̅ = 1. Isso significa que a chave bruta terá no máximo 𝐵𝑛̅ elementos. Para otimizar o tamanho do segredo compartilhado bruto, tomaremos B bits a partir de tantos elementos quanto possível, usando, dessa forma, 𝜇 = 𝑛̅. Os dados encapsulados c criptografam a chave de transmissão e podem ter 𝜇 = 𝑛 elementos 𝜇 = 𝑛 de modo que uma chave de transmissão de comprimento 𝜅 = 𝜇𝐵 possa ser encapsulada. B é o número de bits extraídos de cada entrada de vetor.
[0119] Em uma modalidade, queremos minimizar o texto cifrado. Uma nova percepção para minimizar ainda mais o tamanho do texto cifrado pode ser obtida, mesmo que isso se dê ao preço de uma chave pública mais longa, conforme segue:
[0120] A primeira matriz de chave pública compreende 𝑛 vetores com comprimento d. Com isso, é possível encapsular 𝑛𝐵 = 𝑘 + 𝑝𝑎𝑟𝑖𝑡𝑦_𝑏𝑖𝑡𝑠_𝑙𝑒𝑛𝑔ℎ𝑡, sendo que κ é o comprimento da chave de transmissão e existem parity_bits_length bits que servem como bits de paridade.
[0121] O vetor c se tornará 𝑝𝑎𝑟𝑖𝑡𝑦_𝑏𝑖𝑡𝑠_𝑙𝑒𝑛𝑔ℎ𝑡 × 𝑙𝑜𝑔2 𝑡 mais longo, uma vez que bits de paridade adicionais precisam ser transmitidos. Entretanto, devido a esses bits de paridade, esse esquema pode lidar melhor com erros de descriptografia, de modo que valores menores de q e p possam ser escolhidos. Uma vez que p é menor, também d pode diminuir uma vez que podemos manter o mesmo nível de segurança. Em resumo, ao adicionar o código de correção de erro dessa maneira, pode-se diminuir ainda mais o tamanho do texto cifrado mesmo que ele chegue ao preço de uma chave pública mais longa. A escolha 𝐵 = 1 é eficiente e quando usada, precisamos, então, 𝑛̅ = 𝜅 + 𝑝𝑎𝑟𝑖𝑡𝑦_𝑏𝑖𝑡𝑠_𝑙𝑒𝑛𝑔ℎ𝑡,
[0122] Em uma modalidade, são tomados os seguintes parâmetros: Configuração de chave pública de longo prazo d, n 786, 1 q, p, t 216 , 28 , 26 B, 𝑛̅, 𝑚 ̅ 1, 192+103, 1 µ, κ, #parity_bits 192+103, 192, 103
[0123] Os 103 bits de paridade permitem a correção de erros de bits. Por exemplo, pode-se usar o código de correção de erro XEf, o que permite a correção de erros de 3 bits. Xef é descrito em “Round5: Compact and Fast Post-Quantum Public-Key Encryption”, de Sauvik Bhattacharya, et al. Uma vantagem do uso de XEf é que a decodificação pode ser feita eficientemente em tempo constante, evitando assim ataques de temporização.
[0124] Nessa modalidade, o tamanho do texto cifrado seria um pouco maior que 1 KB. Isso implica que tal construção pode possibilitar configurações de não anel que não exigem fragmentação do texto cifrado. É importante reduzir o tamanho do texto cifrado para menos de cerca de 1,5 kb, uma vez que isso evita a fragmentação na comunicação baseada em pacotes, em que pacotes são de cerca de 2 kb conforme usado, por exemplo, na internet.
[0125] Observe que a quantidade de ruído introduzida por alteração de escala é relativamente alta. No exemplo acima, 16 bits para os elementos de matriz secreta são reduzidos para 8 bits para os elementos de matriz pública; isto é, uma redução de 50%. Em comparação com o exemplo sem bits de paridade dados anteriormente, 14 bits são reduzidos para 12 bits, uma redução de cerca de 15%. De modo semelhante, a diferença entre comprimentos de bit do segredo em relação aos bits públicos aumentou de 2 bits para 8 bits. O ruído mais alto permite uma eficiência maior na parte reticulada do protocolo, mas ao preço de uma taxa de falhas mais alta. Essa última é reduzida, então, com o uso dos bits de paridade.
[0126] Em uma modalidade, 𝑚 ̅ =1 e 𝑛̅ = 𝜇 = 𝜅 + 𝑝𝑎𝑟𝑖𝑡𝑦_𝑏𝑖𝑡𝑠_𝑙𝑒𝑛𝑔ℎ𝑡. Por exemplo, com 𝜅 ≥ 128. Por exemplo, o número de bits de paridade pode ser escolhido de modo que os mesmos 𝑙𝑜𝑔2 𝑝 possam corrigir ao menos 3 erros. Em uma modalidade, ≤ 0,85, 𝑙𝑜𝑔2 𝑞 ou ≤ 0,72, ou ≤ 0,7, ou ≤ 0,6, ou mesmo como na modalidade acima 0,5, ou mesmo menor. Observe que nenhum uso é feito dos assim chamados bits confiáveis, uma vez que todos os elementos na chave compartilhada bruta são usados, por exemplo, 𝜇 = 𝑛̅𝑚. Tal ruído alto pode ser combinado com baixom, em particular, com 𝑚 = 1, ou 𝑚 = 2, etc.
[0127] A Figura 4 mostra esquematicamente um exemplo de criptografia de chave pública e de descriptografia de chave privada. A modalidade da Figura 4 inclui três fontes diferentes de correção de erro: bits seguros, dados de reconciliação e bits de paridade.
[0128] Na Figura 4: ● h representa os dados auxiliares que incluem bits de reconciliação ● get_reconciliation(k) é uma função que retorna os bits de reconciliação para fora da raw_key k. ● reconciliate(k,h) é uma função que reconcilia raw_key k dados os bits de reconciliação h.
● safe_bits() retorna dois valores: (i) os valores confiáveis reais e (ii) as posições dos bits de chave que podem levar a probabilidade de falha mais baixa, visto que os valores obtidos estão mais afastados dos limites de quantificação. Os valores reais retornados por Safe_bits() são posteriormente usados, por exemplo, para encapsulamento. As posições são trocadas para a outra parte para que ela saiba quais posições são necessárias.
[0129] Curiosamente, as três fontes de informações podem ser usadas para reduzir a probabilidade de falha quando trocar a palavra de código, e uma chave aleatoriamente gerada a partir dela. Além disso, em virtude de uma palavra de código poder ser aleatoriamente gerada, a segurança ativa é melhorada; observe que a segunda matriz de chave privada pode ser derivada da palavra de código para melhorar ainda mais a segurança ativa. A palavra de código pode compreender a chave de transmissão e os bits de paridade. Essas fontes incluem o uso de bits confiáveis, dos dados de reconciliação extraídos para coeficientes de uma chave bruta e de informações de redundância de correção de erro que fazem parte da palavra de código, por exemplo bits de paridade.
[0130] Por exemplo, em uma modalidade, os dispositivos 10 e 20 podem concordar sobre uma chave bruta, digamos uma chave de matriz k* com n coeficientes em Z_q. Por exemplo, um elemento em uma matriz de chave bruta pode ser mapeado para parte de uma chave de transmissão, por exemplo, para um ou mais bits. Por exemplo, metade dos valores em Z_q podem ser mapeados para 0 e metades deles para 1, por exemplo, 𝐵 = 1. A seleção de bits confiáveis pode ser feita selecionando-se, por exemplo, algum número, por exemplo mu,
de coeficientes que estejam mais distantes do limite de decodificação de modo que a probabilidade de cometer um erro seja menor.
[0131] Dados de reconciliação de chave podem ser informações que são extraídas pelo dispositivo de criptografia de chave pública, por exemplo para os coeficientes confiáveis escolhidos, por exemplo os coeficientes de mu escolhidos, da chave bruta, por exemplo a matriz de chave. As informações de reconciliação ajudam o dispositivo de descriptografia de chave privada a chegar à mesma decisão, independente de para qual parte da palavra código um coeficiente específico da chave bruta é mapeado. Não que isso só precise ser feito para os coeficientes confiáveis selecionados, o que significa que é necessário menos trabalho.
[0132] Informações de correção de erro podem ser bits de paridade. Bits de paridade podem ser extraídos da chave binária aleatoriamente gerada K, mensagem m ou pré- chave para que as informações que o segundo dispositivo encapsula tenham alguma redundância. Desta forma, mesmo que sejam cometidos erros antes, o dispositivo 10 pode corrigi- los. Então, se você quiser transmitir uma chave K que tenha kappa bits de comprimento e houver bits de paridade (mu – kappa), esses bits de paridade ajudam o dispositivo 10 a garantir que os kappa bits da chave K estejam corretos.
[0133] Um problema de muita criptografia de chave pública resistente a quantum é que têm alguma probabilidade de falha. Por exemplo, um dispositivo de descriptografia de chave privada e um dispositivo de criptografia de chave pública inicialmente concordam sobre uma chave bruta ruidosa, que então é reconciliada, por exemplo, através de dados de reconciliação.
Uma função de bits confiáveis possibilita que o dispositivo de criptografia de chave pública, por exemplo, a parte que deriva primeiro a chave bruta, identifique quais os bits na chave bruta que têm mais probabilidade de serem derivados da mesma maneira pelo dispositivo de descriptografia de chave privada, e quais bits na chave bruta têm menos probabilidade de serem iguais.
[0134] Uma implementação simples de uma função de bits confiáveis define dois ou mais pontos centrais para os coeficientes que são amostrados para obter bits de chave. Os coeficientes que estão muito longe dos pontos centrais, por exemplo de acordo com um limite, podem ser descartados, enquanto o restante pode ser amostrado para um valor associado ao ponto central. Por exemplo, o número de pontos centrais pode ser uma potência de 2. Por exemplo, os elementos de matriz podem ser tomados de uma variedade de anéis diferentes e similares.
[0135] A amostragem de bits confiáveis usa o pressuposto de que nem todos os bits dados por uma dimensão de anel são necessários para as chaves. Tipicamente, a dimensão das matrizes subjacentes y é muito maior que o comprimento de chave necessário. Por exemplo, o dispositivo de criptografia de chave pública pode selecionar m índices em y que têm mais probabilidade de estar em acordo. Estes coeficientes seguros podem ser aqueles que estão mais próximos aos pontos centrais das faixas de coeficientes que são mapeadas para um bit zero ou até um bit um (1); k = 0 e k = 1. Por exemplo, em um módulo de anel q, um coeficiente pode ser mapeado para 0 se ele estiver no intervalo 𝑞 𝑞 3𝑞 3𝑞 [⌊4⌋ − 𝑏, ⌈4⌉ + 𝑏] e para 1 se ele estiver no intervalo [⌊ 4 ⌋ − 𝑏, ⌈ 4 ⌉ + 𝑏], ou vice versa. Se o coeficiente não estiver em nenhuma dos intervalos, ele não é um bit confiável. O valor b determina, em parte, a confiabilidade dos bits. Por exemplo, neste caso, ele 𝑞 pode ser escolhido como ; valores menores para b fornecem mais 8 confiabilidade, mas menos bits de chave. Neste caso, os pontos 𝑞 3𝑞 centrais podem ser e , ou um arredondamento dos mesmos. 4 4
[0136] O dispositivo de criptografia de chave pública que aplica o procedimento acima, obtém índices de bits confiáveis e bits chave que correspondem a eles. Os índices confiáveis podem ser comunicados ao dispositivo de descriptografia de chave privada, os bits de chave confiável não são. O dispositivo de descriptografia de chave privada pode obter bits de chave a partir do bit nos índices indicados pelo dispositivo de criptografia de chave pública. Como esses bits são mais confiáveis, a taxa de erro será mais baixa.
[0137] Implementações adicionais de funções de um bit confiável podem ser encontradas no artigo Hila 5, incluído na presente invenção a título de referência. Por exemplo, os algoritmos na seção 3 podem ser aplicados. Os inventores descobriram que funções de bits confiáveis podem ser aplicadas em uma variedade de situações, por exemplo com diferentes anéis subjacentes ou objetos, por exemplo, em particular em matrizes.
[0138] Em modalidades, as duas partes geram duas chaves brutas, por exemplo matrizes, que são aproximadamente, mas não exatamente, iguais. Para chegar ao acordo exato, alguns dados de reconciliação são enviados. Um esquema para fazer isso é explicado em um pedido de patente do mesmo requerente, com o título “REACHING AGREEMENT ON A SECRET VALUE”, depositado no EPO (“EPO” - European Patent Office) em 4 de novembro de 2016, com o número de pedido 16197277.3; por exemplo, o método nas páginas 7 a 10 pode ser usado para reconciliação em modalidades. Variantes reveladas em outro lugar no pedido de patente citado também podem ser adotadas.
[0139] Neste pedido, será usada a seguinte notação para as seguintes três funções:
1. Função de Arredondamento ⌊. ⌉𝑩,𝒃𝒉 : Para 𝑞, 𝑏ℎ , 𝐵 ∈ 𝑍, 𝑏ℎ ≥ 1, 𝐵 < 𝑙𝑜𝑔2 𝑞 − 𝑏ℎ , considerando-se 𝐵̅ = 𝑙𝑜𝑔2 𝑞 − 𝐵. Então, ⌊. ⌉𝐵,𝑏ℎ : 𝑣 → ⌊2−𝐵̅ . 𝑣⌉ (𝑚𝑜𝑑 2𝐵 )
[0140] Intuitivamente, ⌊𝑣⌉𝐵,𝑏ℎ extrai os bits B mais significativos de {𝑣 + 2𝑙𝑜𝑔 𝑞−(𝐵+𝑏ℎ ) }, onde o segundo componente é um fator de arredondamento para assegurar erros de arredondamento não forçados. B indica o número de bits que são extraídos de um símbolo v e 𝑏ℎ indica o número de bits de dados auxiliares. Em uma modalidade, q pode ser uma potência de 2.
2. Função de Arredondamento Cruzado ⟨. ⟩𝑩,𝒃𝒉 : Para 𝑞, 𝑏ℎ , 𝐵 ∈ 𝑍, 𝑏ℎ > 1, 𝐵 < 𝑙𝑜𝑔2 𝑞 − 𝑏ℎ , considerando-se 𝐵̅ = 𝑙𝑜𝑔2 𝑞 − 𝐵. Então, ⟨. ⟩𝐵,𝑏ℎ : 𝑣 → ⌊2−𝐵̅+𝑏ℎ . 𝑣⌉ (𝑚𝑜𝑑 2𝑏ℎ )
[0141] Intuitivamente, ⟨𝑣⟩𝐵,𝑏ℎ extrai os bits 𝑏ℎ menos significativos dos bits (𝐵 + 𝑏ℎ ) mais significativos de v.
3. Função de reconciliação 𝒓𝒆𝒄(𝒘, 𝒃):
[0142] Para 𝑞, 𝑏ℎ , 𝐵 ∈ 𝑍, 𝑏ℎ ≥ 1, 𝐵 < 𝑙𝑜𝑔2 𝑞 − 𝑏ℎ , 𝑤 ∈ 𝑍𝑞 , 𝑏 ∈ [0,2𝑏ℎ ), 𝑟𝑒𝑐(𝑤, 𝑏) = ⌊𝑣⌉𝐵,𝑏ℎ sendo que v é o elemento mais próximo de w de modo que ⟨𝑣⟩𝐵,𝑏ℎ = 𝑏. O elemento mais próximo w pode ser tomado de acordo com a distância Lee, por exemplo, 𝑚𝑖𝑛(|𝑣 − 𝑤|, 𝑞 − |𝑣 − 𝑤|).
[0143] Estas três funções podem ser aplicadas como elementos a matrizes. A função de reconciliação citada acima é usada como um exemplo na presente invenção. Conforme notado, os métodos de reconciliação no pedido citado acima também podem ser usados. A função de arredondamento cruzado pode ser aplicada para obter os dados de reconciliação e a função de arredondamento para obter os dados que são reconciliados, por exemplo os bits confiáveis. Quando os dados de reconciliação são posteriormente usados na função de reconciliação, os dados reconciliados são recuperados. Em outras palavras: 𝑟𝑒𝑐(𝑤, ⟨𝒗⟩) = ⌊𝑣⌉, presumindo que v e w estejam dentro de uma distância limite um em relação ao outro.
[0144] A Figura 5 mostra esquematicamente um exemplo de um sistema criptográfico 301 de acordo com uma modalidade. O sistema 301 compreende um dispositivo de descriptografia de chave privada 300, um dispositivo de criptografia de chave pública 350 e, opcionalmente, um depósito de chave pública 302. Por exemplo, o primeiro dispositivo 300 e segundo dispositivo 350 podem ser implementados em um dispositivo como o primeiro dispositivo 10, 100 e/ou o segundo dispositivo 20, 200. O sistema criptográfico 301 pode implementar um sistema de criptografia de chave pública, conforme ilustrado na Figura 4. O sistema criptográfico 301 pode ser adaptado a outras modalidades, conforme desejado, por exemplo, omitindo-se elementos que não são usados nas ditas modalidades.
[0145] O primeiro e o segundo dispositivos 300 e 350 são configurados para executar um protocolo criptográfico. Eles têm a capacidade de passar dados com segurança de um dispositivo para outro. Vários protocolos criptográficos podem usar essa mesma capacidade. Como exemplo, são descritos dois protocolos que usam essa capacidade.
[0146] Por exemplo, o primeiro e o segundo dispositivos podem ser configurados para criptografia de chave pública, por exemplo, projetados para permitir que outros dispositivos, digamos, o segundo dispositivo 350, criptografe uma mensagem (m) de modo que um dispositivo específico, digamos o primeiro dispositivo 300, possa fazer a descriptografia dos mesmos. Entretanto, o conteúdo da mensagem criptografada de chave pública não pode ser obtido por outros dispositivos além do dispositivo que criptografa e descriptografa, por exemplo o segundo dispositivo 350 e o primeiro dispositivo 300. Em caso de criptografia de chave pública, a mesma chave pública do primeiro dispositivo, por exemplo a mesma primeira chave pública e mesmo objeto público, pode ser usada por múltiplos segundos dispositivos para enviar mensagens criptografadas ao primeiro dispositivo público. Mesmo que dois segundos dispositivos usem a mesma chave pública para criptografar uma mensagem, eles não podem descriptografar a comunicação do outro.
[0147] O primeiro dispositivo 300 e o segundo dispositivo 350 compreendem uma interface de comunicação 305 e 355, respectivamente. As interfaces de comunicação são configuradas para se comunicarem uma com a outra. Exemplos, de interfaces de comunicação, por exemplo sobre redes com fio ou sem fio, são descritos na presente invenção.
[0148] O primeiro dispositivo 300 compreende um gerador de chave pública/privada 315 configurado para gerar uma primeira chave privada (r) e uma primeira chave pública (b) derivada da primeira chave privada. A derivação da chave pública a partir da chave privada pode usar um objeto público (a), por exemplo, uma matriz pública. Por exemplo, a geração da chave pública pode envolver a multiplicação com o objeto público e/ou a introdução de algum tipo de ruído, por exemplo, diminuição da escala do resultado da multiplicação, adição de um termo de ruído, etc. A chave privada e o objeto público podem ser uma matriz, por exemplo, em um campo finito ou anel.
[0149] A primeira chave privada e pública pode ser efemeramente gerada. Por exemplo, esta última ação pode ser executada por um protocolo de concordância de chaves, especialmente se o primeiro e o segundo dispositivos usarem algum outro mecanismo de autenticação, por exemplo um mecanismo fora da banda, por exemplo autenticação baseada em certificado ou similares, para autenticar um ao outro. A primeira chave privada e pública pode ser gerada também para uso mais longo. Por exemplo, a primeira chave pública pode ser armazenada em um depósito de chave pública 302 externo. O depósito de chave pública 302 pode armazenar também o objeto público (a) ou semente para o mesmo.
[0150] A primeira chave pública é transferida do primeiro dispositivo 300 para o segundo dispositivo 350, por exemplo através das interfaces de comunicação 305 e 355. Isso pode ser feito por comunicação direta, ou indireta, por exemplo através do depósito de chave pública 302. Em conjunto com a primeira chave pública, o objeto público (a) pode ser transferido também, se necessário. Por exemplo, o objeto público pode ser transferido mediante o envio de uma semente a partir da qual o objeto público (a) pode ser gerado.
[0151] O segundo dispositivo 350 pode compreender um meio de obtenção de chave pública 360, por exemplo,
configurado para recuperar a primeira chave pública do depósito de chave pública 302. Por exemplo, esse tipo de obtenção é adequado para criptografia de chave pública. Entretanto, a chave pública pode ser diretamente obtida também a partir do primeiro dispositivo, possivelmente fora do limite, por exemplo em um e-mail. A chave pública pode ser armazenada até ser necessária para uma troca de criptografia de chave pública. Entretanto, a primeira chave pública pode ser recebida também para uso imediato, por exemplo para uma operação de compartilhamento de chave, por exemplo, neste caso, a primeira chave pública e/ou o objeto público pode(m) ser efemeramente gerada(o)(s).
[0152] O segundo dispositivo 350 pode compreender um gerador de chave pública/privada 365 configurado para gerar uma segunda chave privada (s) e para gerar uma segunda chave pública (u) a partir da segunda chave privada (s). A segunda chave privada (s) e a segunda chave pública (u) podem ser menores, por exemplo, ter menos entradas, do que a primeira chave privada (r) e a primeira chave pública (b).
[0153] A segunda chave pública usa o mesmo objeto público que a geração da primeira chave pública. A primeira e a segunda chaves privadas são privadas para seus respectivos dispositivos. Pode haver compartilhamento com partes certificadas, se necessário, por exemplo, para backup, escuta de chaves etc. As chaves públicas e o objeto público não são necessariamente secretos para segurança; não obstante, um ou mais deles pode ainda ser privado para o primeiro e o segundo dispositivo, se for desejado. Por exemplo, a primeira chave pública só pode ser compartilhada com o segundo dispositivo, e vice-versa.
[0154] O segundo dispositivo 350 pode compreender um gerador de palavra de código 370. O gerador de palavra de código 370 é configurado para gerar uma palavra de código de acordo com um código de correção de erro. O código de correção de erro pode ser um código linear ou um código não linear. Por exemplo, o código de correção de erro pode ser um código BCH (Bose-Chaudhuri-Hocquenghem), um código Reed-Solomon, código Hadamard e similares. Os códigos múltiplos podem ser concatenados. Códigos concatenados são códigos de correção de erro que são construídos a partir de dois ou mais códigos mais simples a fim de obter bom desempenho com complexidade razoável. Por exemplo, um código Hadamard pode ser concatenado com um código BCH.
[0155] Os dados para encapsulamento são codificados na palavra de código. Por exemplo, a palavra de código pode ser particionada em uma parte de dados, por exemplo bits de dados, e uma parte de paridade, por exemplo bits de paridade. Por exemplo, os dados para encapsulamento podem estar compreendidos nos bits de dados. Uma maneira de gerar uma palavra de código é gerar uma parte de dados e calcular bits de paridade a partir da parte de dados. Por exemplo, um vetor de dados com bits de dados pode ser multiplicado por uma matriz de paridade para obter os bits de paridade, ou mesmo toda a palavra de código. A palavra de código pode ser obtida mediante a combinação dos dados para encapsulamento com os bits de paridade. Por exemplo, a parte de dados e a parte de paridade podem ser concatenadas, embora qualquer permutação de bits de dados e bits de paridade possa ser usada para produzir uma palavra de código válida de acordo com um código de correção de erro correspondente. Por exemplo,
bits de dados e bits de paridade podem ser alternados. Note que dados de reconciliação são tipicamente calculados sobre símbolos q-ary únicos, mas dados de paridade são tipicamente calculados a partir de múltiplos bits; note que q é muito maior do que 2.
[0156] A palavra de código pode ser usada de várias maneiras. A criptografia de chave pública pode ser obtida também com a criptografia da mensagem (m) no segundo dispositivo 350, por exemplo por uma chave simétrica, por exemplo aleatoriamente gerada para este propósito, e codificação da chave simétrica que realiza criptografia na palavra de código. Uma etapa de derivação de chave adicional pode ser usada. Por exemplo, uma pré-chave aleatória pode ser codificada na palavra de código e a chave que realiza criptografia pode ser derivada da pré-chave. Por exemplo, a derivação pode usar uma função de derivação de chave (KDF, key derivation function), por exemplo uma função hash. Por exemplo, no último caso, a mensagem criptografada pode ser enviada a partir do segundo dispositivo para o primeiro dispositivo juntamente com os dados necessários para descriptografar os dados, por exemplo a segunda chave pública, e outros dados, conforme descrito abaixo. Uma chave de transmissão pode ser codificada diretamente na palavra de código, ou pode ser derivada da mesma.
[0157] Curiosamente, a palavra de código é gerada independente da primeira chave privada, primeira chave pública, segunda chave privada e segunda chave pública. Devido a isso, o protocolo tem resistência aumentada contra ataques ativos. Um invasor tem menos possibilidades de influenciar a chave compartilhada visto que ele não pode influenciar a chave através da escolha da primeira e da segunda chaves privadas.
Em uma modalidade, a segunda matriz de chave privada é derivada da palavra de código ou da chave de transmissão.
[0158] A geração independente pode ser obtida, por exemplo no caso de uma mensagem, se a mensagem for gerada a partir de um aplicativo que é independente da criptografia de chave pública, por exemplo um aplicativo financeiro ou de comunicação, etc. É possível obter geração independente, por exemplo, por geração aleatória. Por exemplo, a chave ou pré- chave na palavra de código pode ser gerada independentemente, por exemplo usando um gerador de números verdadeiramente aleatórios, ou usando um gerador pseudoaleatório que usa uma semente que é independente da primeira e da segunda chave privada, por exemplo, que é ela mesma aleatoriamente gerada, ou predeterminada ou similares. Por exemplo, a palavra de código pode ser gerada no segundo dispositivo mesmo antes de a primeira chave pública ser recebida e/ou antes de a segunda chave privada ser gerada; isso assegura também a independência.
[0159] O segundo dispositivo 350 compreende uma unidade de Diffie-Hellman 375. A unidade de Diffie-Hellman 375 é configurada para gerar uma segunda chave compartilhada bruta (k*) a partir da primeira chave pública (b) e da segunda chave privada (s). Por exemplo, a unidade de Diffie-Hellman 375 pode ser configurada para aplicar uma função de Diffie-Hellman à primeira chave pública e à segunda chave privada. Por exemplo, a função de Diffie-Hellman pode ser multiplicação. O segundo dispositivo 350 é configurado para transferir sua segunda chave pública para o primeiro dispositivo 300. O primeiro dispositivo 300 compreende uma unidade de Diffie-Hellman 325. A unidade de Diffie-Hellman 325 é configurada para gerar uma primeira chave compartilhada bruta (k’) a partir da segunda chave pública (u)
e da primeira chave privada (r), por exemplo, aplicando a mesma função de Diffie-Hellman. Infelizmente, para alguns tipos de funções de Diffie-Hellman, pode acontecer que a primeira e a segunda chaves brutas sejam próximas uma da outra, embora não necessariamente idênticas. A probabilidade específica de isso acontecer depende da função de Diffie-Hellman subjacente. Alguma probabilidade de diferentes chaves brutas pode ser aceita na maioria dos aplicativos, entretanto, o quão alta esta probabilidade pode ser, dependerá do aplicativo. No entanto, tipicamente, uma probabilidade mais baixa será preferencial. A chave bruta pode ser do mesmo tipo matemático, por exemplo matriz, que as chaves privadas e públicas.
[0160] O segundo dispositivo 350 compreende um gerador de bits confiáveis 380 e um gerador de dados de reconciliação 385. O gerador de bits confiáveis 380 é configurado para aplicar uma função de bits confiáveis à segunda chave compartilhada bruta (k*) para obter índices confiáveis e bits confiáveis derivados dos coeficientes indicados. Os índices confiáveis indicam os coeficientes da chave compartilhada bruta. Por exemplo, o gerador de bits confiáveis 380 pode determinar quais coeficientes na chave bruta estão perto de uma margem de amostragem e quais não estão. Por exemplo, os coeficientes na chave bruta que estão dentro de um limite de uma margem de amostragem podem ser descartados como não confiáveis. O coeficiente confiável restante pode ser indicado pelos índices confiáveis. Os bits confiáveis podem ser obtidos por amostragem dos coeficientes confiáveis.
[0161] No caso de não restarem coeficientes suficientes, existem várias possibilidades, por exemplo encerrar o protocolo, reiniciar o protocolo com uma nova primeira e/ou segunda chave privada, e/ou um novo objeto público, derivar uma chave mais curta ou descartar menos coeficientes. Em vez de selecionar todos os coeficientes dentro de um limite, é possível selecionar também um número de coeficientes predeterminado, por exemplo mu coeficientes, e selecionar os coeficientes mais confiáveis, por exemplo os primeiros mu coeficientes mais confiáveis.
[0162] Uma maneira de implementar bits confiáveis é tomar um ou mais, por exemplo B, bits mais significativos de um coeficiente. Por exemplo, o número de bits confiáveis por coeficientes selecionados pode ser, por exemplo, 1 ou 2. Em algumas modalidades, por exemplo, quando matrizes grandes são usadas, o número de coeficientes é grande, o que possibilita uma alta confiabilidade, por exemplo um valor baixo para B. Para outras modalidades, por exemplo para dispositivos de IoT (Internet das coisas, ou Internet of Things), valores maiores para B podem ser usados. Os cálculos em um anel finito podem ser feitos no anel finito do módulo de números inteiros uma potência de 2. A última escolha tem a vantagem de uma distribuição mais uniforme nos bits confiáveis.
[0163] O gerador de dados de reconciliação 385 é configurado para gerar dados de reconciliação (h) para os coeficientes indicados da chave compartilhada bruta. Os dados de reconciliação compreendem informações que possibilitam a redução das diferenças entre a primeira e a segunda chave bruta derivadas no primeiro e no segundo dispositivo. Por exemplo, a aplicação de dados de reconciliação pode fazer com que a diferença, por exemplo a distância de Lee, entre um coeficiente das chaves brutas no primeiro e no segundo dispositivo seja reduzida, aumentando assim a probabilidade de que ambos irão produzir o mesmo bit confiável. Tanto os bits de paridade na palavra de código quanto o servidor de dados de reconciliação reduzem o ruído, entretanto, os bits de paridade são calculados em relação a múltiplos bits de dados, enquanto que os dados de reconciliação são calculados em relação a coeficientes em uma chave compartilhada bruta. Os dados de reconciliação aumentam ainda mais a confiabilidade dos bits confiáveis.
[0164] Uma maneira de implementar dados de reconciliação é tomar um ou mais, por exemplo 𝑏ℎ , bits de um coeficiente que seguem os bits tomados como bits confiáveis. Por exemplo, estes podem ser os bits 𝑏ℎ que seguem os bits B em significância. Por exemplo, o número de bits de reconciliação por coeficientes selecionados pode ser, por exemplo, 1 ou 2. Um número menor de bits de reconciliação tem a vantagem de reduzir a sobrecarga de comunicação. Embora uma quantidade maior de bits de reconciliação seja possível.
[0165] O segundo dispositivo 350 pode compreender uma unidade de encapsulamento 390. A unidade de encapsulamento 390 é configurada para encapsular a palavra de código com os bits confiáveis mediante a aplicação de uma função de encapsulamento, por exemplo, uma XOR. O encapsulamento pode ser um encapsulamento de bloco único. Em uma modalidade, a função de encapsulamento obtém segurança perfeita, no sentido de que as informações sobre a palavra de código que podem ser obtidas a partir da palavra de código encapsulada são zero sem conhecer os bits confiáveis. Por exemplo, uma função XOR pode ser usada, em uma das outras funções de encapsulamento aqui descritas.
[0166] Note que o encapsulamento se aplica a toda a palavra de código, incluindo bits de dados e bits de paridade, e não apenas a bits de paridade. Além disso, o encapsulamento é aplicado a dados gerados, por exemplo uma mensagem, uma chave, uma pré-chave, etc. não para dados derivados de uma ou mais dentre a primeira ou a segunda chaves públicas ou privadas.
[0167] O segundo dispositivo é configurado para transferir a segunda chave pública (u), os dados de reconciliação (h), os dados encapsulados (c) e os índices confiáveis para o primeiro dispositivo. A transferência pode ser em resposta à recepção da primeira chave pública, por exemplo no caso de acordo de chaves, ou não, por exemplo no caso de criptografia de chave pública.
[0168] O primeiro dispositivo 300 é configurado para receber do segundo dispositivo uma segunda chave pública (u), dados de reconciliação (h) e dados encapsulados (c) e índices confiáveis. O primeiro dispositivo 300 compreende uma unidade de reconciliação 335 configurada para aplicar os dados de reconciliação (h) em uma função de reconciliação para os coeficientes na primeira chave compartilhada bruta (k’) indicada pelos índices confiáveis (safe_bits), obtendo bits confiáveis (k). Por exemplo, um coeficiente indicado como confiável pode ser reconciliado com o uso dos bits de reconciliação e então amostrado para obter um bit confiável.
[0169] O primeiro dispositivo 300 compreende uma unidade de desencapsulamento 340 configurada para desencapsular os dados encapsulados (c) obtendo uma palavra próxima ao código com o uso dos bits confiáveis. A razão pela qual a palavra de código do segundo dispositivo pode não ser diretamente obtida é que, mesmo com bits confiáveis e reconciliação, ainda podem existir diferenças entre as chaves brutas que não estão resolvidas. O primeiro dispositivo 300 compreende um corretor de erros 320 que é configurado para aplicar uma função de correção de erro à palavra próxima ao código obtendo uma palavra de código.
[0170] Por último, a palavra de código pode ser decodificada, por exemplo, para obter a parte de dados e assim obter a mensagem (m), a chave (K) ou pré-chave. No primeiro caso, alguma ação pode ser tomada com base na mensagem, por exemplo a mensagem pode ser exibida, por exemplo, em um aplicativo de comunicador. No segundo caso, a chave pode ser usada para comunicações adicionalmente protegidas etc. No terceiro caso, uma função de derivação de chave pode ser aplicada à pré-chave para obter uma chave compartilhada.
[0171] Abaixo, um pequeno, porém ilustrativo, exemplo é dado para confiabilidade e reconciliação. Tomaremos = 25 = 32, e 𝐵 = 𝑏ℎ = 1. Serão escritos coeficientes como uma sequência de cinco bits, com o bit mais significativo à esquerda. Por exemplo, em uma modalidade, o segundo dispositivo pode descartar os coeficientes 00000, 00001, 01110, 01111, 10000, 10001, 11110 e 11111, uma vez que apenas uma pequena adição ou subtração a tais coeficientes fará com que eles invertam o bit mais significativo.
[0172] Os coeficientes que não seriam descartados são 00010, 00011, …, 01101 e 10010, 10011, …, 11101. Os coeficientes na primeira lista dariam um bit confiável de 0 e os coeficientes na última lista dariam um bit confiável de
1. O segundo bit dessas sequências pode ser tomado como os dados de reconciliação. Os dados de reconciliação de coeficientes selecionados são transferidos para o outro dispositivo, mas os bits confiáveis não são.
[0173] Após o primeiro dispositivo calcular sua chave bruta, ele seleciona coeficientes de acordo com os coeficientes indicados pelo primeiro dispositivo. Suponha, por exemplo, que um coeficiente na chave bruta do primeiro dispositivo seja 01101 e que os dados de reconciliação para esse coeficiente seja 0. Como o segundo bit do coeficiente no primeiro dispositivo não é 0, isso indica ao primeiro dispositivo que foi cometido um erro. O valor mais próximo ao coeficiente selecionado 01101 com um segundo bit de 0, e que não teria sido descartado, é 10010. Note que 00111 também tem um segundo bit de 0, mas é mais distante do coeficiente selecionado 01101. O primeiro dispositivo irá, dessa forma, selecionar um 1 como bit confiável para este coeficiente selecionado.
[0174] Note que se o ruído foi grande, esta correção pode estar errada; é concebível que o segundo dispositivo tivesse o coeficiente 00111. Nesse caso, um bit confiável errado é selecionado. Curiosamente, mesmo com quantidades moderadas de dados de reconciliação, estes tipos de erros são raros. Isto significa que em vez de aumentar a quantidade de dados de reconciliação, é mais eficiente confiar em códigos de correção de erro para corrigir o número restante de erros. Minimizar a distância de Lee pode ser simplesmente feito experimentando coeficientes modificados candidatos em distância de Lee crescente até que uma correspondência seja encontrada. Algoritmos mais avançados são possíveis também, por exemplo um descrito na técnica.
[0175] Existe uma interessante sinergia entre confiabilidade e reconciliação. Pode acontecer de o coeficiente modificado mais próximo com os dados de reconciliação corretos ter sido descartado pelo dispositivo de criptografia de chave pública. O coeficiente modificado mais próximo com os dados de reconciliação corretos e a restrição adicional de que eles não teriam sido descartados pelo dispositivo de criptografia de chave pública, pode ter um bit confiável diferente. Levar isso em consideração aumenta ainda mais a eficácia dos bits de reconciliação. Por exemplo, continuando o exemplo acima, considere que o segundo dispositivo obtém o coeficiente 01100, com dados de reconciliação 0. O coeficiente modificado mais próximo seria 10000, mas o coeficiente mais próximo que não teria sido descartado é 00111. Consequentemente, o primeiro dispositivo recupera o bit confiável 0 ao invés de 1.
[0176] Em algumas modalidades, o processador do dispositivo de criptografia de chave pública é configurado para derivar uma chave final com base pelo menos na chave de transmissão, criptografar uma mensagem com a chave final, e transferir a dita mensagem criptografada para o dispositivo de descriptografia de chave privada. Em algumas modalidades, o processador do dispositivo de descriptografia de chave privada é configurado para receber uma mensagem criptografada do dispositivo de descriptografia de chave privada, derivar a chave final com base pelo menos na chave de transmissão e descriptografar a mensagem criptografada com a chave final.
[0177] Por exemplo, em uma modalidade, o dispositivo de criptografia de chave pública e/ou o dispositivo de descriptografia de chave privada podem derivar a chave final com base ao menos em parte na aplicação de uma função hash criptográfica à chave de transmissão. Como exemplo ilustrativo, a chave final pode ser derivada da chave de transmissão K mediante a aplicação de uma função hash criptográfica à chave de transmissão e, opcionalmente, parte de ou toda a chave pública, por exemplo, 𝐺 = 𝐻(𝑚||𝑝𝑘). Tal hash criptográfico G pode ser usado diretamente como chave final, ou, opcionalmente, ao menos parte de tal hash criptográfico, por exemplo, 𝐿||𝑟𝑒𝑠𝑡 = 𝐺, pode adicionalmente passar pela função hash, por exemplo, com a chave de transmissão mascarada c, para obter a chave final, por exemplo, 𝑘 = 𝐻(𝐿||𝑐).
[0178] As seguintes modalidades numeradas são adicionalmente previstas:
1. Um dispositivo de criptografia de chave pública (20) que compreende: - uma interface de comunicação configurada para se comunicar com um dispositivo de descriptografia de chave privada (10), - um processador configurado para: - obter uma primeira matriz de chave pública (b) associada ao dispositivo de descriptografia de chave privada, - gerar uma chave de transmissão (K), - gerar uma segunda matriz de chave privada (s), e calcular uma segunda matriz de chave pública (u) a partir da segunda matriz de chave privada (s), sendo que a segunda matriz de chave pública (u) tem menos elementos de matriz que a primeira matriz de chave pública (b), - calcular uma segunda chave bruta compartilhada (k*) a partir da segunda matriz de chave privada (s) e da primeira matriz de chave pública (b), calcular a segunda chave bruta compartilhada que compreende uma multiplicação de matrizes entre a segunda matriz de chave privada (s) e a primeira matriz de chave pública (b), - encapsular a chave de transmissão (K) com pelo menos parte da segunda chave bruta compartilhada mediante a aplicação de uma função de encapsulamento, obtendo dados encapsulados (c), - transferir a segunda matriz de chave pública (u) e os dados encapsulados (c) para o dispositivo de descriptografia de chave privada.
2. Um dispositivo de descriptografia de chave privada (10) que compreende: - uma interface de comunicação configurada para se comunicar com um dispositivo de criptografia de chave pública (20), - um processador configurado para: - gerar uma primeira matriz de chave privada (r) e calcular uma primeira matriz de chave pública (b) a partir da primeira matriz de chave privada (r), e permitir a transferência da primeira matriz de chave pública (b) para o dispositivo de criptografia de chave pública, - receber do dispositivo de criptografia de chave pública uma segunda matriz de chave pública (u) e dados encapsulados (c), sendo que a segunda matriz de chave pública (u) tem menos elementos de matriz do que a primeira matriz de chave pública (b), - calcular uma primeira chave bruta compartilhada (k') a partir da segunda matriz de chave pública (u) e da primeira matriz de chave privada (r), calculando a primeira chave bruta compartilhada que compreende uma multiplicação de matrizes entre a segunda matriz de chave pública (u) e a primeira matriz de chave privada (r), - desencapsular os dados encapsulados (c) com o uso de ao menos parte da primeira chave compartilhada bruta (k ') para obter uma chave de transmissão.
3. Um dispositivo de criptografia de chave pública ou dispositivo de descriptografia de chave privada, de acordo com qualquer uma das modalidades numeradas anteriores, sendo que: - o processador do dispositivo de criptografia de chave pública ser configurado para: - obter um tamanho de chave para a chave de transmissão (K) e gerar a chave de transmissão (K) de acordo com o dito tamanho de chave, - determinar um tamanho de matriz para a segunda matriz de chave privada (s) para acomodar o encapsulamento da chave de transmissão do dito tamanho de chave e gerar a segunda matriz de chave privada (s) de acordo com o tamanho de matriz, e - transferir uma indicação do tamanho da chave e/ou do tamanho da matriz para o dispositivo de descriptografia de chave privada, e/ou - o processador do dispositivo de descriptografia de chave privada é configurado para: - receber uma indicação de um tamanho de chave e/ou tamanho de matriz do dispositivo de criptografia de chave pública, e - dependendo do tamanho recebido, desencapsular os dados encapsulados (c) para obter a chave de transmissão.
4. Um dispositivo de criptografia de chave pública ou dispositivo de descriptografia de chave privada, de acordo com qualquer uma das modalidades numeradas anteriores, sendo que: - o processador do dispositivo de criptografia de chave pública é configurado para criptografar uma mensagem (m) com a chave de transmissão, e transferir a dita mensagem criptografada para o dispositivo de descriptografia de chave privada, e/ou - o processador do dispositivo de descriptografia de chave privada é configurado para receber uma mensagem criptografada do dispositivo de descriptografia de chave privada, e para descriptografar a mensagem criptografada com a chave de transmissão.
5. Um dispositivo de criptografia de chave pública ou dispositivo de descriptografia de chave privada, de acordo com qualquer uma das modalidades numeradas anteriores, sendo que: - a segunda chave bruta é uma matriz, encapsulando a chave de transmissão (K), compreendendo a adição de bits da chave de transmissão a uma parte mais significativa de pelo menos parte dos elementos da segunda matriz de chave bruta, e descartando zero ou mais bits menos significativos da pelo menos parte dos elementos da segunda matriz de chave bruta, - a primeira chave bruta é uma matriz, desencapsulando os dados encapsulados compreendendo o descarte de zero ou mais bits menos significativos de pelo menos parte dos elementos da primeira matriz de chave bruta, subtraindo a pelo menos parte dos elementos da primeira matriz de chave bruta dos dados encapsulados e arredondando o resultado da subtração.
[0179] A Figura 6a mostra esquematicamente um exemplo de um método de criptografia de chave pública (400) de acordo com uma modalidade. O método 400 compreende - estabelecer (410) comunicação com um dispositivo de descriptografia de chave privada, - obter (420) uma primeira matriz de chave pública (b) associada ao dispositivo de descriptografia de chave privada, - gerar (430) uma chave de transmissão (K), - gerar (440) uma segunda matriz de chave privada (s), e calcular uma segunda matriz de chave pública (u) a partir da segunda matriz de chave privada (s), sendo que a segunda matriz de chave pública (u) tem menos elementos de matriz que a primeira matriz de chave pública (b), - calcular (450) uma segunda chave bruta compartilhada (k*) a partir da segunda matriz de chave privada (s) e da primeira matriz de chave pública (b), calculando a segunda chave bruta compartilhada que compreende uma multiplicação de matrizes entre a segunda matriz de chave privada (s) e a primeira matriz de chave pública (b), - encapsular (460) a chave de transmissão (K) com pelo menos parte da segunda chave bruta compartilhada mediante a aplicação de uma função de encapsulamento, obtendo dados encapsulados (c), - transferir (470) a segunda matriz de chave pública (u) e os dados encapsulados (c) para o dispositivo de descriptografia de chave privada.
[0180] A Figura 6b mostra esquematicamente um exemplo de um método de descriptografia de chave privada 500 de acordo com uma modalidade. O método 500 compreende:
- estabelecer (510) comunicação com um dispositivo de criptografia de chave pública, - gerar (520) uma primeira matriz de chave privada (r) e calcular uma primeira matriz de chave pública (b) a partir do primeira matriz de chave privada (r), e permitir a transferência da primeira matriz de chave pública (b) para o dispositivo de criptografia de chave pública, - receber (530) do dispositivo de criptografia de chave pública uma segunda matriz de chave pública (u) e dados encapsulados (c), sendo que a segunda matriz de chave pública (u) tem menos elementos de matriz do que a primeira matriz de chave pública (b), - calcular (540) uma primeira chave bruta compartilhada (k') a partir da segunda matriz de chave pública (u) e da primeira matriz de chave privada (r), calculando a primeira chave bruta compartilhada que compreende uma multiplicação de matrizes entre a segunda matriz de chave pública (u) e a primeira matriz de chave privada (r), - desencapsular (550) os dados encapsulados (c) com o uso de ao menos parte da primeira chave compartilhada bruta (k ') para obter uma chave de transmissão.
[0181] Muitas formas diferentes de execução do método são possíveis, conforme ficará evidente para o versado na técnica. Por exemplo, as etapas podem ser executadas na ordem apresentada, mas a ordem das etapas também pode ser variada ou algumas etapas podem ser executadas em paralelo. Além disso, outras etapas de método podem ser inseridas entre as etapas. As etapas inseridas podem representar modificações no método, conforme aqui descrito, ou podem não estar relacionadas ao método. Além disso, uma dada etapa pode não ter sido concluída completamente antes de uma próxima etapa ser iniciada.
[0182] As modalidades do método podem ser executadas com o uso de um software que compreende instruções para fazer com que um sistema processador execute o método 400 e/ou 500. O software pode incluir apenas aquelas etapas empregadas por uma subentidade específica do sistema. O software pode ser armazenado em uma mídia de armazenamento adequada, como um disco rígido, um disquete, uma memória, um disco óptico etc. O software pode ser enviado como um sinal por uma rede com fio, ou sem fio, ou com o uso de uma rede de dados, por exemplo a internet. O software pode ser disponibilizado para download e/ou para uso remoto em um servidor. As modalidades do método podem ser executadas com o uso de um fluxo de bits disposto de modo a configurar lógica programável, por exemplo, uma matriz de portas programável em campo (FPGA), para executar o método.
[0183] Deve-se entender que a invenção também se estende a programas de computador, especialmente programas de computador armazenados em uma portadora, adaptados para colocar a invenção em prática. O programa pode estar sob a forma de código-fonte, código-objeto, código-fonte intermediário e código-objeto parcialmente compilado, ou em qualquer outra forma adequada para uso na implementação de uma modalidade do método. Uma modalidade relacionada a um produto de programa de computador compreende instruções executáveis por computador que correspondem a cada uma das etapas de processamento de pelo menos um dos métodos apresentados. Essas instruções podem ser subdivididas em sub-rotinas e/ou ser armazenadas em um ou mais arquivos que podem estar estática ou dinamicamente ligados. Outra modalidade relacionada a um produto de programa de computador compreende instruções executáveis por computador que correspondem a cada um dos meios de pelo menos um dos sistemas e/ou produtos apresentados.
[0184] Deve-se notar que as modalidades mencionadas acima ilustram ao invés de limitarem a invenção, e que os versados na técnica têm a capacidade de projetar muitas modalidades alternativas.
[0185] Nas reivindicações, quaisquer sinais de referência colocados entre parênteses não devem ser interpretados como limitadores da reivindicação. O uso do verbo “compreender” e suas conjugações não exclui a presença de elementos ou etapas além daquelas mencionadas em uma reivindicação. O artigo indefinido “um” ou “uma” que precede um elemento não exclui a presença de uma pluralidade desses elementos. Expressões como “ao menos um dentre”, quando precede uma lista de elementos, representam uma seleção de todos ou de qualquer subconjunto de elementos da lista. Por exemplo, a expressão, “ao menos um dentre A, B e C” deve ser entendida como incluindo apenas A, apenas B, apenas C, tanto A quanto B, tanto A quanto C, tanto B quanto C, ou A, B e C. A invenção pode ser implementada por meio de hardware que compreende vários elementos distintos, e por meio de um computador programado adequadamente. Na reivindicação de dispositivo que enumera vários meios, vários desses meios podem ser incorporados por um único item de hardware. O simples fato de certas medidas serem mencionadas em reivindicações dependentes mutuamente diferentes não indica que uma combinação dessas medidas não possa ser usada com vantagem.
[0186] Nas reivindicações, as referências entre parênteses se referem a sinais de referência nos desenhos de modalidades exemplificadoras ou a fórmulas de modalidades, aumentando, assim, a inteligibilidade da reivindicação.
Essas referências não devem ser interpretadas como limitadoras da reivindicação.
Claims (18)
1. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA (20), em que uma segunda dimensão ( ) de uma segunda matriz de chave pública (u) é configurável durante uma fase de criptografia, o dispositivo de criptografia de chave pública caracterizado por compreender: - uma interface de comunicação configurada para se comunicar com um dispositivo de descriptografia de chave privada (10), - um processador configurado para: - obter uma primeira matriz de chave pública (b) associada ao dispositivo de descriptografia de chave privada, - obter um tamanho de chave para a chave de transmissão (K), - gerar uma chave de transmissão (K) de acordo com o dito tamanho de chave, - determinar um tamanho de matriz para a segunda matriz de chave privada (s) para acomodar o mascaramento da chave de transmissão do dito tamanho de chave pela seleção de um valor de uma segunda dimensão ( ) da segunda matriz de chave privada (s) em conformidade, a segunda dimensão ( ) da segunda matriz de chave privada (s) sendo igual à segunda dimensão ( ) da segunda matriz de chave pública (u), - gerar a segunda matriz (s) de chave privada de acordo com o tamanho da matriz, e calcular a segunda matriz de chave pública (u) a partir da segunda matriz de chave privada (s), - calcular uma segunda chave bruta compartilhada (k*) a partir da segunda matriz de chave privada (s) e da primeira matriz de chave pública (b), calcular a segunda chave bruta compartilhada que compreende uma multiplicação de matrizes entre a segunda matriz de chave privada (s) e a primeira matriz de chave pública (b), - mascarar a chave de transmissão (K) com pelo menos parte da segunda chave bruta compartilhada, - transferir uma indicação do tamanho da chave e/ou do tamanho da matriz, a segunda matriz de chave pública (u) e a chave de transmissão mascarada (c) para o dispositivo de descriptografia de chave privada.
2. SISTEMA, caracterizado por compreender: - o dispositivo de criptografia de chave pública (20) conforme definido na reivindicação 1; e um dispositivo de descriptografia de chave privada (10), compreendendo: - uma interface de comunicação configurada para se comunicar com um dispositivo de criptografia de chave pública (20), - um processador configurado para: - gerar uma primeira matriz de chave privada (r) e calcular uma primeira matriz de chave pública (b) a partir da primeira matriz de chave privada (r), e permitir a transferência da primeira matriz de chave pública (b) para o dispositivo de criptografia de chave pública, - receber do dispositivo de criptografia de chave pública uma indicação de um tamanho da chave e/ou tamanho da matriz, uma segunda matriz de chave pública (u) e uma chave de transmissão mascarada (c), em que uma segunda dimensão ( ) da segunda matriz de chave pública (u) é configurável, no dispositivo de criptografia de chave pública, durante uma fase de criptografia,
- calcular uma primeira chave bruta compartilhada (k') a partir da segunda matriz de chave pública (u) e da primeira matriz de chave privada (r), calculando a primeira chave bruta compartilhada que compreende uma multiplicação de matrizes entre a segunda matriz de chave pública (u) e a primeira matriz de chave privada (r), e - desmascarar a chave de transmissão mascarada (c) na dependência do tamanho recebido usando pelo menos parte da primeira chave bruta compartilhada ( ’) para obter uma chave de transmissão.
3. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA, de acordo com a reivindicação 1, caracterizado por: - o processador do dispositivo de criptografia de chave pública ser configurado para fazer um handshake com o dispositivo de descriptografia de chave privada, compreendendo: - receber do dispositivo de descriptografia de chave privada pelo menos duas indicações de pelo menos duas primeiras matrizes de chave pública do dispositivo de descriptografia de chave privada, sendo que as duas primeiras matrizes de chave pública têm tamanhos diferentes, - selecionar uma primeira matriz de chave pública por meio da determinação de que um cache de chave do dispositivo de criptografia de chave pública compreende a maior das duas primeiras matrizes de chave pública e, se compreender, selecionar a maior primeira matriz de chave pública, - enviar para o dispositivo de descriptografia de chave privada uma indicação da primeira matriz de chave pública selecionada, solicitando a primeira matriz de chave pública se ela não estiver disponível no cache de chave, sendo que a chave de transmissão (K) é encapsulada com a primeira chave pública selecionada, ou um sistema de acordo com a reivindicação 2, em que - o processador do dispositivo de descriptografia de chave privada é configurado para fazer um handshake com o dispositivo de criptografia de chave pública, compreendendo: - enviar para o dispositivo de criptografia de chave pública pelo menos duas indicações de pelo menos duas primeiras matrizes de chave pública do dispositivo de descriptografia de chave privada, sendo que as duas primeiras matrizes de chave pública têm tamanhos diferentes, - receber uma indicação de uma primeira matriz de chave pública selecionada a partir do dispositivo de criptografia de chave pública, se uma solicitação para a primeira matriz de chave pública selecionada for recebida, e então enviar a primeira matriz de chave pública selecionada, sendo que a chave de transmissão (K) é desencapsulada com a primeira chave pública selecionada
4. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA, de acordo com qualquer uma das reivindicações anteriores, caracterizado por: - a segunda matriz de chave privada (s) ter menos elementos de matriz do que a primeira matriz de chave pública (b), e/ou - a segunda matriz de chave pública (u) ter menos elementos de matriz do que a primeira matriz de chave privada (b). - a segunda matriz de chave pública (u) ter menos elementos de matriz do que a primeira matriz de chave privada (r), ou um sistema de acordo com qualquer uma das reivindicações 2 e 3, em que - a segunda matriz de chave privada (s) tem menos elementos de matriz do que a primeira matriz de chave pública (b), e/ou - a segunda matriz de chave pública (u) tem menos elementos de matriz do que a primeira matriz de chave púlbica (b), e/ou - a segunda matriz de chave pública (u) tem menos elementos de matriz do que a primeira matriz de chave privada (r).
5. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA OU SISTEMA, de acordo com qualquer uma das reivindicações anteriores, caracterizado por: - a segunda matriz de chave pública (u) ter uma primeira dimensão de sistema ( ) e uma segunda dimensão ( ), a primeira matriz de chave pública (b) ter a primeira dimensão de sistema ( ) e uma segunda dimensão ( ), sendo que a segunda dimensão ( ) da segunda matriz de chave pública (u) é menor que a segunda dimensão ( ) da primeira matriz de chave pública (b).
6. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA OU SISTEMA, de acordo com a reivindicação 5, caracterizado por: - a segunda dimensão ( ) da segunda matriz de chave pública (u) ser no máximo metade da segunda dimensão ( ) da primeira matriz de chave pública (b), e/ou - a segunda dimensão ( ) da segunda matriz de chave pública (u) ser 1.
7. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA , de acordo com qualquer uma das reivindicações 1 e 3 a 6, caracterizado por: - o processador do dispositivo de criptografia de chave pública ser configurado para: - obter uma matriz pública (a) associada com a primeira matriz de chave pública (b), e sendo que: - o cálculo da segunda matriz de chave pública (u) compreende uma multiplicação de matrizes ruidosa entre a segunda matriz de chave privada e a matriz pública (a), sendo que a dita matriz pública sendo é compartilhada entre o dispositivo de criptografia de chave pública e o dispositivo de descriptografia de chave privada, ou o sistema de acordo com qualquer uma das reivindicações 2 a 6, em que - o processador do dispositivo de descriptografia de chave privada é configurado para: - gerar uma matriz pública (a), e sendo que - o cálculo da primeira matriz de chave pública (b) compreende uma multiplicação ruidosa de matrizes entre a primeira matriz de chave privada (r) e a matriz pública (a), sendo que a dita matriz pública (a) é compartilhada entre o dispositivo de criptografia de chave pública e o dispositivo de descriptografia de chave privada, sendo que a primeira matriz de chave pública (b) é associada à matriz pública (a).
8. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA, de acordo com a reivindicação 7, caracterizado por a multiplicação ruidosa de matrizes compreender o escalonamento de elementos para elementos, sendo que log / log ≤ 0,85 , sendo que o dispositivo de criptografia de chave pública é configurado para:
- gerar dados de reconciliação (h) para a pelo menos parte da segunda chave bruta compartilhada, sendo que os dados de reconciliação compreendem informações que permitem reduzir as diferenças entre a primeira e a segunda chave bruta derivada no dispositivo de criptografia de chave pública e no dispositivo de descriptografia de chave privada, e transferir os dados de reconciliação (h) para o dispositivo de descriptografia de chave privada, - gerar bits de paridade para a chave de transmissão, sendo que a chave de transmissão e os bits de paridade formam uma palavra de código de acordo com um código de correção de erro, mascarar a chave de transmissão compreendendo o encapsulamento da palavra de código, ou um sistema de acordo com a reivindicação 7, sendo que o dispositivo de descriptografia de chave privada é configurado para: - receber dados de reconciliação (h) para a pelo menos parte da primeira chave bruta compartilhada (k'), os dados de reconciliação compreendendo informações que permitem reduzir as diferenças entre a primeira e a segunda chaves brutas derivada no dispositivo de criptografia de chave pública e no dispositivo de descriptografia de chave privada aplicar uma função de reconciliação à pelo menos parte da primeira chave bruta compartilhada e os dados de reconciliação, e - desmascarar a chave de transmissão mascarada (c) para obter uma palavra de quase código, aplicar uma correção de erro de acordo com o código de correção de erro.
9. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA (20), de acordo com qualquer uma das reivindicações 1 e 3 a 8, caracterizado por:
- o processador do dispositivo de criptografia de chave pública ser configurado para derivar uma chave final com base em pelo menos a chave de transmissão, criptografar uma mensagem (m) com a chave final, e transferir a dita mensagem criptografada para o dispositivo de descriptografia de chave privada, ou um sistema de acordo com qualquer uma das reivindicações 2 a 8, em que - o processador do dispositivo de descriptografia de chave privada ser configurado para receber uma mensagem criptografada do dispositivo de descriptografia de chave privada, derivar a chave final com base em pelo menos a chave de transmissão e descriptografar a mensagem criptografada com a chave final.
10. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA OU SISTEMA, de acordo com qualquer uma das reivindicações anteriores, caracterizado por a chave de transmissão ser aleatória e/ou efêmera e/ou simétrica e/ou independente da primeira matriz de chave pública (b).
11. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA OU SISTEMA, de acordo com qualquer uma das reivindicações 1 e 3 a 10, caracterizado por: - o processador do dispositivo de criptografia de chave pública ser configurado para calcular dados auxiliares para reduzir a taxa de erro na obtenção da chave de transmissão no dispositivo de descriptografia de chave privada, ou um sistema de acordo com a qualquer uma das reivindicações 2 a 10, em que - o processador do dispositivo de descriptografia de chave privada ser configurado para receber dados auxiliares do dispositivo de criptografia de chave pública e para aplicar os dados auxiliares para reduzir a taxa de erro na obtenção da chave de transmissão no dispositivo de descriptografia de chave privada.
12. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA , de acordo com qualquer uma das reivindicações 1, e 3 a 11, caracterizado por: - a segunda chave bruta é uma matriz, mascarando a chave de transmissão (K), compreendendo a adição de bits da chave de transmissão a uma parte mais significativa de pelo menos parte dos elementos da segunda matriz de chave bruta, e descartando zero ou mais bits menos significativos da pelo menos parte dos elementos da segunda matriz de chave bruta, ou um sistema de acordo com qualquer uma das reivindicações 2 a 11, em que - a primeira chave bruta é uma matriz, desmascarando a chave de transmissão mascarada compreendendo o descarte de zero ou mais bits menos significativos de pelo menos parte dos elementos da primeira matriz de chave bruta, subtraindo a pelo menos parte dos elementos da primeira matriz de chave bruta dos dados encapsulados e arredondando o resultado da subtração.
13. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA, de acordo com qualquer uma das reivindicações 1 e 3 a 12, caracterizado por: - o processador do dispositivo de criptografia de chave pública ser configurado para derivar a segunda matriz de chave privada da chave de transmissão, ou um sistema de acordo com qualquer uma das reivindicações 2 a 12, em que - o processador do dispositivo de descriptografia de chave privada ser configurado para reconstruir a segunda matriz de chave privada a partir da chave de transmissão e para verificar o cálculo da segunda chave pública e/ou o cálculo da chave de transmissão encapsulada.
14. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA (20), de acordo com com qualquer uma das reivindicações 1 e 3 a 13, caracterizado por: - o processador do dispositivo de criptografia de chave pública ser configurado para obter a primeira matriz de chave pública a partir de um banco de dados de chave pública, e/ou um sistema de acordo com qualquer uma das reivindicações 2 a 13, em que - o processador do dispositivo de descriptografia de chave privada ser configurado para depositar a primeira matriz de chave pública em um banco de dados de chave pública.
15. DISPOSITIVO DE CRIPTOGRAFIA DE CHAVE PÚBLICA OU SISTEMA, de acordo com qualquer uma das reivindicações anteriores, caracterizado por: - a primeira e a segunda chaves públicas, a primeira e a segunda chaves privadas e a primeira e a segunda chaves brutas são uma matriz sobre um anel ou um campo finito.
16. MÉTODO DE CRIPTOGRAFIA DE CHAVE PÚBLICA (400) caracterizado por compreender a configuração de uma segunda dimensão ( ) de uma segunda matriz de chave pública (u) durante uma fase de criptografia, o método de criptografia de chave pública compreendendo: - estabelecer (410) comunicação com um dispositivo de descriptografia de chave privada, - obter (420) uma primeira matriz de chave pública
(b) associada ao dispositivo de descriptografia de chave privada, - obter um tamanho de chave para a chave de transmissão (K), - gerar (430) uma chave de transmissão (K) de acordo com o dito tamanho de chave, - determinar um tamanho de matriz para a segunda matriz de chave privada (s) para acomodar o mascaramento da chave de transmissão do dito tamanho de chave pela seleção de um valor de uma segunda dimensão ( ) da segunda matriz de chave privada (s) em conformidade, a segunda dimensão ( ) da segunda matriz de chave privada (s) sendo igual à segunda dimensão ( ) da segunda matriz de chave pública (u), - gerar (440) a segunda matriz de chave privada (s) de acordo com o tamanho de matriz, e calcular uma segunda matriz de chave pública (u) a partir da segunda matriz de chave privada (s), - calcular (450) uma segunda chave bruta compartilhada (k*) a partir da segunda matriz de chave privada (s) e da primeira matriz de chave pública (b), calculando a segunda chave bruta compartilhada que compreende uma multiplicação de matrizes entre a segunda matriz de chave privada (s) e a primeira matriz de chave pública (b), - mascarar (460) a chave de transmissão (K) com pelo menos parte da segunda chave bruta compartilhada, - transferir (470) uma indicação do tamanho de chave e/ou do tamanho de matriz, a segunda matriz de chave pública (u), e a chave de transmissão mascarada para o dispositivo de descriptografia de chave privada.
17. MÉTODO CRIPTOGRÁFICO COMPREENDENDO O MÉTODO DE
CRIPTOGRAFIA DE CHAVE PÚBLICA (400) conforme definido na reividicação 16 e UM MÉTODO DE DESCRIPTOGRAFIA DE CHAVE PRIVADA (500), o metodo de descriptografia de chave privada (500), caracterizado por compreender: - estabelecer (510) comunicação com um dispositivo de criptografia de chave pública, - gerar (520) uma primeira matriz de chave privada (r) e calcular uma primeira matriz de chave pública (b) a partir do primeira matriz de chave privada (r), e permitir a transferência da primeira matriz de chave pública (b) para o dispositivo de criptografia de chave pública, - receber (530) do dispositivo de criptografia de chave pública uma indicação de um tamanho de chave e/ou de um tamanho de matriz, uma segunda matriz de chave pública (u) e uma chave de transmissão mascarada (c), em que uma segunda dimensão ( ) da segunda matriz de chave pública (u) é configurável, no dispositivo de criptografia de chave pública, durante uma fase de criptografia, - calcular (540) uma primeira chave bruta compartilhada (k') a partir da segunda matriz de chave pública (u) e da primeira matriz de chave privada (r), calcular a primeira chave bruta compartilhada compreendendo uma multiplicação de matrizes entre a segunda matriz de chave pública (u) e a primeira matriz de chave privada (r), - desmascarar (550) a chave de transmissão mascarada (c) na dependência do tamanho recebido usando pelo menos parte da primeira chave bruta compartilhada ( ’) para obter uma chave de transmissão.
18. MÍDIA TRANSITÓRIA OU NÃO TRANSITÓRIA LEGÍVEL POR COMPUTADOR (1000), caracterizada por compreender dados (1020)
que representam instruções para fazer com que um sistema processador execute o método conforme definido na reivindicação 16 ou 17.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP18194118.8A EP3624391A1 (en) | 2018-09-12 | 2018-09-12 | Public/private key system with decreased encrypted message size |
EP18194118.8 | 2018-09-12 | ||
PCT/EP2019/073327 WO2020053013A1 (en) | 2018-09-12 | 2019-09-02 | Public/private key system with decreased public key size |
Publications (1)
Publication Number | Publication Date |
---|---|
BR112021004855A2 true BR112021004855A2 (pt) | 2021-06-08 |
Family
ID=63579107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112021004855-3A BR112021004855A2 (pt) | 2018-09-12 | 2019-09-02 | dispositivo de criptografia de chave pública, sistema, método de criptografia de chave pública, método criptográfico compreendendo o método de criptografia de chave pública, e mídia transitória ou não transitória legível por computador |
Country Status (6)
Country | Link |
---|---|
US (1) | US11909877B2 (pt) |
EP (2) | EP3624391A1 (pt) |
JP (1) | JP7413365B2 (pt) |
CN (1) | CN112997448A (pt) |
BR (1) | BR112021004855A2 (pt) |
WO (1) | WO2020053013A1 (pt) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11469902B2 (en) * | 2019-03-29 | 2022-10-11 | Intel Corporation | Systems and methods of using cryptographic primitives for error location, correction, and device recovery |
EP3889764A1 (en) * | 2020-03-31 | 2021-10-06 | Koninklijke Philips N.V. | Parallel generation of a random matrix |
DE102020112102B3 (de) * | 2020-05-05 | 2021-05-20 | Infineon Technologies Ag | Verfahren und Vorrichtungen zur Erzeugung eines symmetrischen Sitzungsschlüssels für die verschlüsselte Kommunikation |
US20220255735A1 (en) * | 2021-02-08 | 2022-08-11 | Visa International Service Association | Blinding techniques for post-quantum public keys |
CN112948851A (zh) * | 2021-02-25 | 2021-06-11 | 深圳壹账通智能科技有限公司 | 用户认证方法、装置、服务器及存储介质 |
KR102474897B1 (ko) * | 2022-09-01 | 2022-12-06 | (주)노르마 | 양자 내성 암호화 알고리즘에 기초한 봉인 키 교환을 통해 가상 사설 네트워크를 제공하는 가상 사설 네트워크 형성 방법 및 이를 수행하는 가상 사설 네트워크 운용 시스템 |
CN116132046A (zh) * | 2022-12-07 | 2023-05-16 | 中国电子科技集团公司第三十研究所 | 格基加密算法解密错误率的估算方法、介质、设备及系统 |
CN116800423B (zh) * | 2023-08-28 | 2023-11-03 | 长沙盈芯半导体科技有限公司 | 基于rfid的数据采集及双重加密解密数据保护方法和装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102664732B (zh) * | 2012-03-07 | 2016-06-22 | 南相浩 | Cpk公钥体制抗量子计算攻击的实现方法及系统 |
TWI502947B (zh) * | 2012-04-12 | 2015-10-01 | Jintai Ding | New cryptographic system and method based on mismatching |
CN103812650B (zh) * | 2012-11-12 | 2017-05-31 | 华为技术有限公司 | 信息处理方法、用户设备和加密设备 |
CN104063838B (zh) * | 2014-06-26 | 2017-09-12 | 上海理工大学 | 基于Logistic混沌映射和Walsh序列的非对称水印方法 |
NL2013520B1 (en) * | 2014-09-24 | 2016-09-29 | Koninklijke Philips Nv | Public-key encryption system. |
US10097351B1 (en) * | 2016-09-15 | 2018-10-09 | ISARA Corporation | Generating a lattice basis for lattice-based cryptography |
KR101913100B1 (ko) * | 2016-11-24 | 2018-10-31 | 서울대학교산학협력단 | 생성 행렬의 천공에 기초한 암호화키를 사용하는 데이터 암호화 장치 및 방법 |
EP3364596A1 (en) * | 2017-02-15 | 2018-08-22 | Koninklijke Philips N.V. | Key exchange devices and method |
US10630655B2 (en) * | 2017-05-18 | 2020-04-21 | Robert Bosch Gmbh | Post-quantum secure private stream aggregation |
US10581604B2 (en) * | 2017-10-17 | 2020-03-03 | Comsats Institute Of Information Technology | Post-quantum cryptographic communication protocol |
JP6963277B2 (ja) * | 2017-10-24 | 2021-11-05 | 日本電信電話株式会社 | 変換装置、判定装置、および計算装置 |
US10476664B2 (en) * | 2017-10-27 | 2019-11-12 | Quantropi Inc. | Methods and systems for data protection |
DE102018108313A1 (de) * | 2018-04-09 | 2019-10-10 | Infineon Technologies Ag | Verfahren und Verarbeitungsvorrichtung zum Ausführen einer kryptografischen Operation auf Gitterbasis |
-
2018
- 2018-09-12 EP EP18194118.8A patent/EP3624391A1/en not_active Withdrawn
-
2019
- 2019-09-02 BR BR112021004855-3A patent/BR112021004855A2/pt unknown
- 2019-09-02 JP JP2021513439A patent/JP7413365B2/ja active Active
- 2019-09-02 US US17/275,251 patent/US11909877B2/en active Active
- 2019-09-02 WO PCT/EP2019/073327 patent/WO2020053013A1/en unknown
- 2019-09-02 CN CN201980074156.5A patent/CN112997448A/zh active Pending
- 2019-09-02 EP EP19759417.9A patent/EP3850784B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP7413365B2 (ja) | 2024-01-15 |
EP3850784A1 (en) | 2021-07-21 |
EP3850784B1 (en) | 2022-07-27 |
US20220078011A1 (en) | 2022-03-10 |
US11909877B2 (en) | 2024-02-20 |
WO2020053013A1 (en) | 2020-03-19 |
JP2022500911A (ja) | 2022-01-04 |
EP3624391A1 (en) | 2020-03-18 |
CN112997448A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112021004855A2 (pt) | dispositivo de criptografia de chave pública, sistema, método de criptografia de chave pública, método criptográfico compreendendo o método de criptografia de chave pública, e mídia transitória ou não transitória legível por computador | |
US11991285B2 (en) | Configurable cryptographic device | |
CN114008967B (zh) | 用于经认证的基于晶格的密钥协商或密钥封装的方法和设备 | |
BR112020007373A2 (pt) | primeiro nó de rede eletrônica configurado para uma operação criptográfica, método de operação criptográfica eletrônica para um primeiro nó de rede eletrônica e mídia legível por computador | |
EP4082153B1 (en) | Public/private key system with increased security | |
EP3824591B1 (en) | Key encapsulation protocols | |
US20220150224A1 (en) | Encryption using recursive key | |
RU2787692C2 (ru) | Протоколы инкапсуляции ключей | |
RU2787692C9 (ru) | Протоколы инкапсуляции ключей | |
EP3609117A1 (en) | Key encapsulation protocols |