BRPI0920045B1 - cifra de bloco de baixa latência - Google Patents
cifra de bloco de baixa latência Download PDFInfo
- Publication number
- BRPI0920045B1 BRPI0920045B1 BRPI0920045-2A BRPI0920045A BRPI0920045B1 BR PI0920045 B1 BRPI0920045 B1 BR PI0920045B1 BR PI0920045 A BRPI0920045 A BR PI0920045A BR PI0920045 B1 BRPI0920045 B1 BR PI0920045B1
- Authority
- BR
- Brazil
- Prior art keywords
- data
- cycles
- memory address
- block cipher
- encrypted
- Prior art date
Links
Images
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/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
-
- 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/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
CIFRA DE BLOCO DE BAIXA LATÊNCIA. É fornecida uma cifra de bloco que protege os dados através da criptografia com base no endereço de memória onde os mesmos estão armazenados. Ao criptografar dados para armazenamento no endereço de memória, o endereço de memória é criptografado em uma primeira pluralidade de ciclos de cifra de bloco. As chaves de ciclo de dados são geradas com o uso de informação da primeira pluralidade de ciclos de cifra de bloco. Os dados a serem armazenados são combinados com o endereço de memória criptografia e criptografados em uma segunda pluralidade de ciclos de cifra de bloco com o uso das chaves de ciclo dados. Os dados criptografados são, então, armazenados no local de memória. Ao decriptografar os dados, o endereço de memória é novamente criptografado como antes enquanto os dados armazenados criptografados são decriptografados em uma segunda pluralidade de ciclos de cifra de bloco com o uso das chaves de ciclo de dados para obter dados parcialmente decriptografados. Os dados parcialmente decriptografados são combinados com o endereço de memória criptografado para obter dados completamente decriptografados
Description
[001]Um recurso refere-se à proteção de conteúdo de memória e, particularmente, a um método para usar cifras de bloco para proteger conteúdo armazenado em dispositivos de memória.
[002]Os processadores digitais existem em muitos dispositivos como telefones celulares, computadores, assistentes pessoais digitais (PDAs), pontos de acesso de rede sem fio e assim por diante. De modo crescente, há uma necessidade que programas e dados armazenados em memória estejam protegidos contra invasores com ferramentas suficientemente sofisticadas. Os aplicativos de Gerenciamento de Direitos Digitais também impõem tais restrições para controlar o acesso a ou uso de dados digitais ou hardware. Por exemplo, geralmente é o caso de uma unidade de processamento central (CPU) ter algum armazenamento de memória em chip, o que pode ser feito de maneira segura garantindo que as linhas de acesso a dados estejam escondidas na CPU ou placa, de modo que as tentativas para acessar os dados irão destruir o dispositivo e, presumivelmente, embaralhar ou destruir os dados antes que possam ser acessados.
[003]Por razões de escala e economia, é desejável ser capaz de alocar a memória em um chip separado. No entanto, alocar um dispositivo de memória em um chip separado relativamente facilita para invasores o acesso através do uso de ferramentas simples, como sondas, já que os dados estão expostos ao percorrerem entre a CPU e os chips de memória.
[004]Um método para suprir a falta de segurança ao armazenar dados em um chip de memória distinto é ter um processo de criptografia na CPU de modo que os dados gravados no chip de memória sejam inúteis para o invasor. De modo oposto, quando os dados são obtidos a partir da memória, os mesmos são decriptografados pela CPU. A informação de endereço para um bloco particular de memória e uma chave criptográfica conhecida apenas pela CPU são as outras entradas para o algoritmo de criptografia.
[005]Já que os locais de memória podem ser gravados repetidamente, frequentemente com dados padronizados, cifras de fluxo e modos correspondentes de operação para cifras de bloco como modo contador (CTR) não são apropriados. As cifras de bloco que utilizam o endereço como um vetor de inicialização para um modo como Encadeamento de Bloco de Cifra (CBC) são o mecanismo apropriado no presente documento. (Vide publicação especial FIPS 800-38A - Modes of operation for Block Ciphers). No entanto, frequentemente, os blocos de memória a serem criptografados em uma operação são pequenos (por exemplo, frequentemente, apenas um único bloco) comprados ao tamanho de bloco nativo da cifra. Portanto, pensar o modo CBC como um "encadeamento"é contra-intuitivo quando aplicado a blocos únicos.
[006]As cifras de bloco modernas apresentam uma estrutura que está frequentemente relacionada a uma Cifra de Bloco Iterativa. Cada iteração é denominada um ciclo, e uma função repetida é denominada a função de ciclo (por exemplo, qualquer lugar entre 4 a 32 ciclos são tipicos). Em cada ciclo, a função de ciclo atinge uma determinada quantidade de confusão e difusão quando aplicada a um bloco de entrada. Para criptografar um bloco de entrada, a cifra gera uma permutação do bloco de entrada. A decriptografia é alcançada ao operar o processo de modo oposto. Vista como uma caixa preta, a cifra aceita, como entrada, um único bloco de dados de um tamanho fixo, e uma chave secreta, que aplica repetidamente a função de ciclo ao bloco de entrada, e emite um único bloco de saida de cifra. Algumas cifras permitem chaves de tamanho variado, e o tamanho da chave pode ser menor, igual ou maior que o tamanho do bloco. Por exemplo, o algoritmo de Padrão de Criptografia Avançada (AES) tem um tamanho do bloco de 128 bits, e pode aceitar chaves de 128, 192 ou 256 bits.
[007]Dentro da cifra, há inúmeros ciclos (por exemplo, dez ciclos no case de AES com uma chave de 128 bits). Cada ciclo tem uma chave de ciclo como parte de sua entrada. As chaves de ciclo derivam da chave secreta em um processo denominado programação de chave. Cada ciclo destina-se a executar alguma substituição não linear em partes do bloco e da chave de ciclo, seguida por alguma (frequentemente linear) operação de difusão para separar os efeitos de cada substituição em todo o bloco. Estas ações destinam-se a anular formas conhecidas de criptoanálise como criptoanálise linear e diferencial.
[008]Para criptografar dados enviados para a memória, o endereço de memória pode ser utilizado como um vetor de inicialização. Isto garantiria que diferentes locais de memória com os mesmos dados criptografariam, no entanto, de modo diferente. A criptografia poderia ser escrita como: C = EK(P ® A) onde P é o texto plano de entrada (o bloco de dados original) , A é o endereço de memória, C é o texto cifrado de saida (o blocos de dados de saida que irá aparecer no chip de memória no endereço A) , © é a lógica binária OR Exclusivo (XOR) , e EK significa o uso do cifra de bloco para criptografar o bloco de dados com a chave secreta K. De modo correspondente, quando os dados devem ser lidos foram da memória, a operação inversa seria usada: P = DK(C) © A onde DK significa o uso da cifra de bloco em seu modo de decriptografia. No entanto, os aplicativos tipicos de cifra de bloco têm uma latência muito alta em relação à velocidade de acesso à memória. O encadeamento resolve este problema de criptografia em massa, mas não ajuda ao criptografar locais únicos de memória.
[009]Portanto, é necessário um método para implantar criptografia de cifra de bloco a um pequeno número de locais de memória ao reduzir a latência.
[0010] É fornecida uma cifra de bloco que protege os dados através da criptografia com base no endereço de memória onde os mesmos devem ser armazenados. Ao criptografar dados para armazenamento no endereço de memória, o endereço de memória é criptografado em uma primeira pluralidade de ciclos de cifra de bloco. As chaves de ciclo de dados são geradas com o uso de informação da primeira pluralidade de ciclos de cifra de bloco. Os dados a serem armazenados são combinados com o endereço de memória criptografado e criptografados em uma segunda pluralidade de ciclos de cifra de bloco com o uso das chaves de ciclo de dados. Os dados criptografados são, então, armazenados no local de memória. Ao decriptografar os dados, o endereço de memória é novamente criptografado com antes enquanto os dados armazenados criptografados são decriptografados em uma segunda pluralidade dos ciclos de cifra de bloco com o uso das chaves de ciclo de dados para obter a dados parcialmente decriptografados. Os dados parcialmente decriptografados são combinados com o endereço de memória criptografado para obter dados completamente decriptografados.
[0011] Em um exemplo de criptografia de dados em um endereço de memória, o endereço de memória é criptografado em uma primeira pluralidade de ciclos de cifra de bloco. Criptografar o endereço de memória pode incluir: (a) transformar o endereço de memória de acordo com uma primeira função de transformação, (b) misturar o endereço de memória transformado com uma chave de ciclo, (c) segmentar o endereço de memória e/ou (d) realizar substituição de bit nos segmentos de endereço de memória diferentes. O endereço de memória pode estar disponível antes dos dados serem armazenados. Consequentemente, criptografar o endereço de memória pode começar antes dos dados estarem disponíveis.
[0012] As chaves de ciclo de dados podem ser geradas com o uso de informação de uma ou mais dentre a primeira pluralidade de ciclos de cifra de bloco. Gerar as chaves de ciclo de dados pode incluir: (a) extrair uma pluralidade de bits do endereço de memória criptografado para ao menos algumas da primeira pluralidade de ciclos de cifra de bloco, (b) selecionar as chaves de ciclo de dados dos segmentos da pluralidade de bits extraida e/ou (c) concatenar a pluralidade de bits extraida em uma cadeia a partir da qual chaves de ciclo de dados são selecionadas.
[0013] Os dados podem ser combinados com o endereço de memória criptografado após a primeira pluralidade de ciclos de cifra de bloco. Por exemplo, os dados podem ser combinados com o endereço de memória criptografado através de uma operação que pode ser invertida (por exemplo, subtração/adição modular, uma lógica binária XOR, etc.). Os dados podem, então, ser criptografados em uma segunda pluralidade de ciclos de cifra de bloco com o uso das chaves de ciclo de dados. A segunda pluralidade de ciclos de cifra de bloco é maior que a primeira pluralidade de ciclos de cifra de bloco. Criptografar os dados pode incluir: (a) transformar os dados de acordo com uma segunda função de transformação, (b) misturar os dados transformados com uma ou mais dentre as chaves de ciclo de dados, (c) segmentar os dados em uma pluralidade de segmentos de dados e/ou (d) realizar substituição de bit nos diferentes segmentos de dados.
[0014] O endereço de memória pode sercriptografado iterativamente sobre a primeira pluralidade de ciclos de cifra de bloco e os dados podem sercriptografados iterativamente sobre a segunda pluralidade de ciclos de cifra de bloco. Em um exemplo, as chaves de ciclo de dados usadas para os primeiros ciclos da segunda pluralidade de ciclos de cifra de bloco podem ser gerada com o uso de bits do endereço de memória criptografado dos últimos ciclos da primeira pluralidade de ciclos de cifra de bloco. Os dados criptografados podem ser, subsequentemente, armazenados no endereço de memória.
[0015] Em outro exemplo de decriptografia de dados em um endereço de memória, o endereço de memória é criptografado em uma primeira pluralidade de ciclos de cifra de bloco para obter um endereço de memória criptografado. A criptografia do endereço de memória pode começar antes dos dados estarem disponíveis.
[0016] A criptografia do endereço de memória pode incluir: (a) transformar o endereço de memória de acordo com uma primeira função de transformação, (b) misturar o endereço de memória transformado com uma chave de ciclo, (c) segmentar o endereço de memória e/ou (d) realizar substituição de bit nos segmentos de endereço de memória diferentes.
[0017] As chaves de ciclo de dados podem ser geradas com o uso de informação de uma ou mais dentre a primeira pluralidade de ciclos de cifra de bloco. Gerar as chaves de ciclo de dados pode incluir: (a) extrair uma pluralidade de bits do endereço de memória criptografado para ao menos algumas da primeira pluralidade de ciclos de cifra de bloco, (b) selecionar as chaves de ciclo de dados dos segmentos da pluralidade de bits extraida e/ou (c) concatenar a pluralidade de bits extraida em uma cadeia a partir da qual chaves de ciclo de dados são selecionadas.
[0018] Os dados criptografados podem ser recuperados do endereço de memória. Os dados criptografados podem ser decriptografados em uma segunda pluralidade dos ciclos de cifra de bloco com o uso das chaves de ciclo de dados para obter dados parcialmente decriptografados. Decriptografar os dados criptografados pode incluir: (a) transformar os dados criptografados de acordo com uma segunda função de transformação inversa, (b) misturar os dados criptografados transformados com uma ou mais dentre as chaves de ciclo de dados, (c) segmentar os dados criptografados em uma pluralidade de segmentos de dados criptografados e/ou (d) realizar substituição de bit nos segmentos de dados criptografados diferentes.
[0019] Os dados parcialmente decriptografados podem ser combinados com o endereço de memória criptografado para obter dados completamente decriptografados. Em um exemplo, os dados parcialmente decriptografados podem ser combinados com o endereço de memória criptografado através de uma operação que pode ser invertida (por exemplo, subtração/adição modular, uma lógica binária XOR, etc.) . As chaves de ciclo de dados usadas para os primeiros ciclos da segunda pluralidade de ciclos de cifra de bloco são geradas com o uso de bits do endereço de memória criptografado dos primeiros ciclos da primeira pluralidade de ciclos de cifra de bloco. A segunda pluralidade de ciclos de cifra de bloco é maior que a primeira pluralidade de ciclos de cifra de bloco. A primeira pluralidade de ciclos de cifra de bloco pode ser executada ao mesmo tempo que a segunda pluralidade de ciclos de cifra de bloco.
[0020] Estes métodos podem ser implantados em hardware, software e/ou uma combinação dos mesmos.
[0021] As características, natureza e vantagens dos presentes aspectos podem ser tornar mais evidente a partir da descrição detalhada apresentada abaixo quando tomada em conjunto com os desenhos nos quais caracteres de referência similares são identificados de maneira correspondente.
[0022] A Figura 1 é um diagrama de bloco que ilustra uma primeira característica que aprimora processamento de criptografia de cifra de bloco através do processamento parcial da cifra de bloco antes do bloco de entrada de texto plano estar disponível, reduzindo assim a latência da cifra de bloco.
[0023] A Figura 2 é um diagrama de bloco que ilustra uma segunda característica que aprimora criptografia de cifra de bloco através do processamento de uma primeira parte da cifra de bloco em paralelo com uma segunda parte da cifra de bloco, reduzindo assim a latência da cifra de bloco.
[0024] A Figura 3 é um diagrama de bloco que ilustra um exemplo de uma cifra de bloco configurada para criptografar dados a serem armazenados na memória.
[0025] A Figura 4 é um diagrama de bloco que ilustra os componentes funcionais de um dispositivo de cifra de bloco configurado para criptografar dados de texto plano.
[0026] A Figura 5 é um diagrama de bloco que ilustra um exemplo de uma criptografia de endereço de memória ou módulo de transformação.
[0027] A Figura 6 é um diagrama de bloco que ilustra um exemplo de uma criptografia de dados de texto plano ou módulo de transformação.
[0028] A Figura 7 ilustra um método de criptografia de dados de cifra de bloco que utiliza o endereço de memória onde os dados devem ser armazenados para criptografar os dados.
[0029] A Figura 8 é um diagrama de bloco que ilustra o processamento de uma cifra de bloco para decriptografar dados lidos de um endereço de memória.
[0030] A Figura 9 é um diagrama de bloco que ilustra os componentes funcionais de um dispositivo de cifra de bloco configurado para decriptografar dados de texto cifrado.
[0031] A Figura 10 é um diagrama de bloco que ilustra um exemplo de um módulo de transformação inversa ou decriptografia de dados de texto cifrado.
[0032] A Figura 11 ilustra um método para decriptografar dados criptografados através do uso de uma cifra de bloco que criptografa ao mesmo tempo um endereço de memória enquanto decriptografa dados criptografados a fim de reduzir a latência da cifra de bloco.
[0033] A Figura 12 é um diagrama de bloco que ilustra um exemplo de como as chaves de ciclo para ciclos de criptografia e decriptografia de dados podem ser geradas com base nos resultados de ciclos de criptografia de endereço de uma cifra de bloco.
[0034] A Figura 13 é um diagrama de bloco que ilustra um dispositivo que pode ser configurado para realizar criptografia e decriptografia de cifra de bloco eficiente.
[0035] Na seguinte descrição, os detalhes específicos são dados para fornecer um compreendimento geral das modalidades. No entanto, será compreendido por um versado na técnica que as modalidades podem ser praticadas sem estes detalhes específicos. Por exemplo, os circuitos podem ser mostrados em diagrama de blocos, ou não podem ser mostrados, a fim de não obscurecer as modalidades em detalhe desnecessário. Em outros exemplos, os circuitos, estruturas e técnicas conhecidas podem não ser mostradas em detalhes a fim de não obscurecer as modalidades.
[0036] Várias novas características direcionam a latência causada pelo uso de um cifra de bloco para gravar e ler dados para/da memória. De modo geral, há muitas mais operações de leitura que operações de escrita. Na técnica anterior, as operações de criptografia e decriptografia começam após os dados estarem disponíveis no barramento interno (escrita) ou terem sido obtidos a partir da memória (leitura). Porém, em projetos tipicos de hardware, a informação de endereço é disponibilizada bem antes dos dados, particularmente no caso de memória de leitura.
[0037] A Figura 1 é um diagrama de bloco que ilustra uma primeira característica que aprimora o processamento de criptografia de cifra de bloco através do processamento parcial da cifra de bloco antes do bloco de entrada do texto plano ser disponibilizado, reduzindo assim a latência da cifra de bloco. Este processo de criptografia pode ser realizado como parte de uma operação de leitura de memória e inclui uma Fase de Endereço 102, onde o endereço de memória A 106 é criptografado, e uma Fase de Dados 104, onde os dados são criptografados. Inúmeros ciclos de cifra de uma cifra de bloco iterada são pré-processados com o uso do endereço de memória A 106 e da chave secreta 108 para a cifra de bloco 100. Os dados de texto plano 112 são inseridos 110 (por exemplo, lógica binária XOR com resultado de Fase de Endereço 102) após poucos ciclos da criptografia de cifra de bloco. Em particular, alguns ciclos (isto é, os ciclos de Fase de Endereço 102) da cifra de bloco 100 são realizados antes dos dados de texto plano 112 serem introduzidos, e alguns ciclos (isto é, os ciclos de Fase de Dados 104) são realizados após os dados de texto plano 112 serem introduzidos para gerar texto cifrado 114. A Fase de Endereço 102 pode não apenas criptografar o endereço de memória A 106, mas pode também usar os resultados daqueles ciclos para gerar chaves de criptografia para os ciclos de Fase de Dados subsequentes 104 (isto é, programação de chave) . O número de ciclos de cifra antes e depois dos dados de texto plano 112 serem introduzidos pode ser igual ou diferente. Este processo de criptografia faz uso do fato de que o endereço de memória A 106 está disponivel antes dos dados de texto plano 112 para reduzir a latência ao criptografar os dados a serem armazenados na memória.
[0038] Adicionalmente, o programação de chave mais eficaz pode ser realizado para uma cifra de bloco. As chaves de ciclo para cada ciclo de uma cifra de bloco pode ser gerada com base nos dados de endereço e na chave secreta, antes dos dados de texto plano reais serem disponibilizados. Devido ao fato de que as chaves de ciclo são geradas com base no endereço de memória, isto significa que a transformação da cifra de bloco será diferente para cada endereço de memória, restringindo assim, severamente, os recursos disponiveis para uma criptoanálise, e aumentando a segurança da cifra de bloco.
[0039] A Figura 2 é um diagrama de bloco que ilustra a segunda característica que aprimora criptografia de cifra de bloco através do processamento de uma primeira parte da cifra de bloco em paralelo com a segunda parte da cifra de bloco, reduzindo assim a latência da cifra de bloco. Este processo de decriptografia pode ser realizado como parte de uma operação de leitura de memória e inclui uma Fase de Endereço 202, onde o endereço de memória A 206 é criptografado, e uma Fase de Dados 204, onde os dados são decriptografados. Ao invés de operar toda a cifra de bloco inversamente conforme é feito em métodos de decriptografia convencionais, a Fase de Dados 204 da cifra de bloco 200 é processada inversamente iniciando com o texto cifrado 214. Ao mesmo tempo, a Fase de Endereço 202 da cifra de bloco 200 é executada para frente com o uso do endereço de memória A 206 e da chave secreta 208 como entradas. Quando estes processos se encontram no centro 210, os dados de texto plano 212 são derivados pela operação XOR no texto cifrado parcialmente decriptografado e do endereço de memória parcialmente criptografado.
[0040] A Figura 3 é um diagrama de bloco que ilustra um exemplo de uma cifra de bloco configurada para criptografar dados a serem armazenados na memória. Neste processo, o endereço de memória A 304 pode ser disponibilizado antes do bloco de dados (isto é, Texto Plano 320) a ser armazenado estar disponivel. Uma cifra de bloco iterada 302 pode ser empregada para criptografar os dados (Texto Plano 320) enquanto os mesmos são armazenados na memória. Por exemplo, uma CPU pode criptografar os dados antes de enviá-los a um dispositivo de memória para armazenamento. Neste exemplo, a cifra de bloco 302 pode incluir uma Fase de Criptografia de Endereço e Programação de chave 303 e uma Fase de Criptografia de Dados 305.
[0041] Na Fase de Criptografia de Endereço e Programação de chave 303, inúmeros ciclos da cifra de bloco iterada 302 são pré-processados com o uso do endereço de memória A 304 e da chave secreta Ksecreta 306 para a cifra de bloco. Por exemplo, uma pluralidade de chaves de ciclo Kl 307, K2 308 e Ki 309, para ciclos de criptografia de endereço correspondentes 316, 317 e 318 da cifra de bloco 302, é gerada com base na chave secreta Ksecreta 306 antes do bloco de dados de texto plano real P 320 ser disponibilizado. Cada chave de ciclo Kl 307, K2 308 e Ki 309 pode ser obtida com base em uma chave de ciclo prévia (por exemplo, Kl é baseada em Ksecreta, K2 é baseada em Kl, e assim por diante) . De acordo com um exemplo, a chave secreta 306 pode ter o tamanho de w bits e cada chave de ciclo Kl, K2, e Ki tem o tamanho de n bits, onde n < w. Cada chave de ciclo Kl, K2 e Ki é gerada ao tirar n bits contiguos da chave secreta, onde se considera que a chave secreta 306 envolve na extremidade. Cada chave de ciclo Kl, K2 e Ki pode utilizar um grupo diferente de sequências de bit contiguos da chave secreta 306.
[0042] A pluralidade de ciclos de criptografia de endereço 316, 317 e 318 da cifra de bloco 302 pode ser gerada com base no endereço de memória 304 e nas chaves de ciclo correspondentes Kl 307, K2 308 e Ki 309. Por exemplo, o Ciclo 1 316 transforma todo ou parte do endereço de memória A 304 com o uso de uma primeira função linear e/ou não linear Ea e é, ainda, transformado com base em uma operação que pode ser invertida (por exemplo, subtração/adição modular, uma lógica binária XOR, etc.) com a chave Kl (por exemplo, RI = Ea (A) © Kl) . De modo similar, o Ciclo 2 317 transforma o resultado RI do Ciclo 1 316 com o uso da primeira função linear e/ou não linear Ea e transforma, ainda, o resultado com base em uma operação que pode ser invertida (por exemplo, lógica binária XOR) com a chave K2 correspondente (por exemplo, R2 = Ea(Rl) © K2) . Este processo pode ser repetido múltiplas vezes para difundir os efeitos de cada operação de transformação para todo o bloco. Por exemplo, o Ciclo i 318 transforma o resultado Ri-1 de um ciclo prévio com o uso da primeira função linear e/ou não linear Ea e transforma, ainda, o resultado com base em uma operação que pode ser invertida (por exemplo, lógica binária XOR, etc.) com a chave Ki correspondente (por exemplo, Ri = Ea(Ri-l) © Ki) . Notar que, os primeiros ciclos de cifra de bloco 303 (fase de criptografia de endereço de memória) podem ser realizados (ao menos parcialmente) ainda antes de os dados serem disponibilizados para criptografia na fase de criptografia de dados 305. Ao processar parcialmente (ou pré-processar) a cifra de bloco antes de o bloco de dados de texto plano P 320 ser disponibilizado, a latência (isto é, atraso) na cifra de bloco pode ser reduzida.
[0043] Adicionalmente, durante a Fase deProgramação de Chave 303, as chaves 312, 314 e 315 para a Fase de Criptografia de Dados 305 podem ser geradas para economizar tempo. As chaves Ky, Ky+1 e Kx da Fase de Criptografia de Dados 305 podem ser geradas com base no resultado de cada resultado de ciclo de cifra Rl, R2, Ri da Fase de Criptografia de Endereço 303. Em um exemplo, os resultados de ciclo Rl, R2, e Ri pode ter o tamanho de n bits (onde n é um número inteiro positivo) e um número de bits g de ao menos uma pluralidade destes ciclos é usado para gerar as chaves Ky, Ky+1 e Kx da Fase de Criptografia de Dados, onde g é um número inteiro menor que n. Por exemplo, um conjunto de bits S 310 pode ser obtido ao concatenar (simbolo ||) os bits extraidos de vários resultados de ciclo Rl, R2, Ri de tal modo que Si...p = Rli...gi I I R2i...g2 ... I I Rii...gi, onde p é um valor inteiro que apresenta o número total de bits no conjunto de bits S 310. Notar que, em algumas implantações, o número de bits gl, g2, ... , gi, para cada ciclo pode ser igual, enquanto em outras implantações o número de bits gl, g2, ... , gi pode ser diferente. Durante a Fase de Programação de Chave 303, as chaves Ky, Ky+1, e Kx da Fase de Criptografia de Dados podem ser geradas através da extração de um segmento de bits do conjunto de bits S 310 para cada chave. Em um exemplo, os bits que correspondem aos últimos ciclos de cifra da Fase de Criptografia de Endereço e Programação de Chave 303 podem ser usados para as chaves mais recentes na Fase de Criptografia de Dados 305. Por exemplo, a chave Ky 312 pode ser retirada de bits S (P-j+i;.. ,P do conjunto de bits S 310 que, neste exemplo, corresponde a um subconjunto dos bits de Rii...g, onde j < g (for g = gl, g2, ... , gi) . De modo similar, a chave Ky+1 314 pode ser igual aos bits S(P- 2 j+i)... (p-j) do conjunto de bits S 310 e a chave Kx pode ser igual aos bits S i...j do conjunto de bits S 310. Em algumas implantações, onde j < g, o número de ciclos na Fase de Programação de chave 303 pode ser menor que o número de ciclos na Fase de Dados 305. Por exemplo, onde os resultados de ciclo Rl, R2 e Ri têm o tamanho de sessenta e três (63) bits (isto é, n = 63), quarenta e cinco (45) bits (isto é, g = 45) de cada ciclo pode ser extraido para ser usado para o conjunto de bits S 310 e cada chave Ky 312, Ky+1 314 e Kx 315 da Fase de Dados pode ter o tamanho de trinta e dois (32) bits (isto é, j = 32) .
[0044] De forma geral, uma ou mais funções de chave de ciclo KSx podem ser usadas para gerar cada uma dentre as chaves de ciclo Kl, K2, Ki, Ky, Ky+1 ... Kx. Em um exemplo, uma primeira função de programação de chave KS1 pode ser usada para gerar chaves Kl, K2, Ki (para a Fase de Criptografia de Endereço) e uma segunda função de programação de chave KS2 pode ser usada para gerar chaves Ky, Ky+1, Kx (para a Fase de Criptografia de Dados) . Por exemplo, a primeira função de programação de chave KS1 pode ser usada para gerar chave Ki, de tal modo que Ki = KS1 (Ksecreta, i) , onde "i" é o número de ciclo para a Fase de Criptografia de Endereço 303, enquanto a segunda função de programação de chave KS2 pode ser usada para gerar chave Ky+i, de tal modo que Ky+i = KS2 (Si...p, i) , onde "y+i" é o número de ciclo para a Fase de Criptografia de Dados 305.
[0045] Quando o bloco de dados de texto plano P 320 se torna disponivel, o mesmo pode ser inserido na cifra de bloco 302 após o um ou mais ciclos 316, 317 e 318 da cifra de bloco 302 terem sido realizados (por exemplo, após a Fase de Programação de Chave 303). O bloco de dados de texto plano P 320 pode ser inserido na cifra de bloco 302 pela operação XOR (em uma base de lógica binária) com o resultado Ri do último ciclo pré-processado (por exemplo, o Ciclo i 318) em um processo frequentemente denominado branqueamento. Após o bloco de dados de texto plano P 320 ter sido introduzido, um ou mais ciclos 322, 324 e 326 de uma Fase de Criptografia de Dados 305 são realizados com o uso das chaves de ciclo Ky 312, Ky+1 314 e Kx 315 correspondentes.
[0046] Durante a Fase de Criptografia de Dados 305 em um Ciclo y 322, o bloco de dados submetido à branqueamento DBranqueado 321 é transformado através de uma segunda função linear e/ou não linear Et e é transformado, ainda, com base em uma operação que pode ser invertida (por exemplo, uma lógica binária XOR) com a chave de ciclo Ky correspondente (por exemplo, Ry = Et (DBranqueado) © Ky) . De modo similar, no Ciclo y+1 324 transforma o resultado Ry do Ciclo y 322 com o uso da segunda função linear e/ou não linear Et e transforma, ainda, o resultado com base em uma operação que pode ser invertida (por exemplo, subtração/adição modular, uma operação de base binária XOR, etc.) com a chave Ky+1 correspondente (por exemplo, Ry+1 = Eb(Ry) © Ky+1). Este processo pode ser repetido múltiplas vezes para difundir os efeitos de cada operação de transformação para todo o bloco. Por exemplo, o Ciclo x 326 transforma o resultado Rx-1 de um ciclo prévio com o uso da segunda função linear e/ou não linear Eb e transforma, ainda, o resultado com base em uma operação que pode ser invertida (por exemplo, uma lógica binária XOR, etc.) com a chave Kx correspondente (por exemplo, Rx = Eb(Rx-l) © Kx) para obter o texto cifrado 328.
[0047] Em várias implantações, o número de ciclos da Fase de Criptografia de Endereço e Programação de Chave 303 e da Fase de Criptografia de Dados 305 pode ser igual ou diferente. O número de ciclos durante a Fase de Criptografia de Dados 305 pode ser selecionado para reduzir a latência da cifra de bloco 302 enquanto fornece difusão suficiente para o bloco de dados de texto plano P 320 é introduzido para reduzir a latência da cifra de bloco 302.
[0048] A Figura 4 é um diagrama de bloco que ilustra os componentes funcionais de um dispositivo de cifra de bloco configurado para criptografar dados de texto plano. O dispositivo de cifra de bloco 402 pode criptografar dados de texto plano 404 com base no endereço de memória 406 no qual isto deve ser armazenado e na chave secreta 408. O dispositivo de cifra de bloco 402 pode incluir um módulo de criptografia de endereço 412 que transforma e/ou criptografa o endereço de memória 406 de acordo com uma função de transformação ou criptografia e a chave fornecida pelo gerador de chave de ciclo 416. O gerador de chave de ciclo 416 pode ser configurado para gerar um ou mais chaves de ciclo com base em uma chave secreta 408. Um módulo de agendamento de chave 414 também pode gerar um ou mais chaves de dados com base nos resultados do módulo de criptografia de endereço 412. A uma ou mais chaves de dados podem ser armazenadas em um módulo de armazenamento de chaves de dados 422. As funções de programação de dados e de criptografia de endereço podem ser iterativamente executadas em múltiplos ciclos com o uso de uma chave de ciclo diferente do gerador de chave de ciclo 416 em cada ciclo. Após uma pluralidade de ciclos, um combinador 418 pode combinar os dados de texto plano 404 com os últimos resultados do módulo de criptografia de endereço 412 com o uso de uma operação que pode ser invertida (por exemplo, subtração/adição modular, lógica binária XOR, etc.). Os dados de texto plano submetidos à branqueamento resultantes podem, então, ser iterativamente transformados ou criptografados através de um módulo de criptografia de dados 420 em um ou mais ciclos com o uso das chaves de dados armazenados do armazenamento de chaves de dados 422 e da função de transformação ou criptografia para produzir texto cifrado 424. O texto cifrado 424 pode, então, ser armazenado em um dispositivo de memória 426 no endereço de memória 406.
[0049] De acordo com um exemplo, o dispositivo de cifra de bloco pode ser implantado em um sistema com memória endereçável por byte. Por exemplo, o tamanho da palavra de uma CPU que implanta a cifra de bloco pode ser de 32 bits e o endereço de memória também pode ser de 32 bits. Conforme registrado anteriormente, o dispositivo de cifra de bloco pode ser configurado para executar uma fase de criptografia de endereço e uma fase de criptografia de dados.
[0050] A Figura 5 é um diagrama de bloco que ilustra um exemplo de uma criptografia de endereço de memória ou módulo de transformação. Durante a fase de criptografia de endereço 502, um endereço de memória de entrada (preenchido em 64 bits) pode ser transformado através da execução de uma pluralidade de ciclos de cifra de Substituição-permutação. Opcionalmente, o endereço de memória de entrada 504 pode ser primeiramente submetido à branqueamento pela operação XOR com uma chave de ciclo. Um módulo de segmentação de endereço 506 pode dividir o endereço de memória de 64 bits 504 em oito segmentos de 8 bits. Cada segmento de 8 bits atravessa então uma caixa de substituição de 8x8 508 (por exemplo, uma caixa de substituição de 8x8 de Padrão de Criptografia Avançada (AES)). Os resultados de cada caixa de substituição 508 são então passados para um módulo de transformação 510 que realiza uma transformação linear em todo o conjunto de segmentos. A transformação linear pode ser implantada, por exemplo, com uma multiplicação de matriz Y=CX, onde X é um vetor de endereço de memória, C é uma matriz de transformação, e Y é o vetor de saida. Em um exemplo, a matriz de transformação C pode ser uma matriz de 8x8 sobre GF(28) como um mapeamento Separável de Distância Máxima (MDS) com a ramificação número 9. A matriz C pode ser MDS se e apenas se todas suas sub-matrizes forem não singulares. Muitas camadas de difusão em cifras de bloco (por exemplo, SHARK e Khazad) podem cumprir este requisito. Um modo de mistura de chave 512 mistura então o endereço de memória transformado com uma chave de ciclo de 64 bits (por exemplo, com o uso de lógica binária XOR). Para cada ciclo de cifra, um módulo de extração de chave de ciclo de dados 514 pode, então, extrair uma pluralidade de bits do endereço de memória criptografado intermediário para obter uma ou mais chaves de ciclo de dados 518 que podem ser usadas em um processo de criptografia de dados subsequente. A pluralidade destes ciclos de cifra (por exemplo, que compreende segmentação 506, camada de caixa S 508, transformação 510 e mistura de chave 512) pode ser realizada com extração de chave de ciclo de dados 514 sendo realizada no final de cada ciclo de cifra.
[0051] A Figura 6 é um diagrama de bloco que ilustra um exemplo de uma criptografia de dados de texto plano ou módulo de transformação. Durante a fase de criptografia de dados 602, os dados de texto plano 604 podem ser primeiramente submetidos à branqueamento através de um Módulo de Lógica Binária XOR 605 com o endereço de memória criptografado 603 de uma fase de criptografia de endereço. O endereço de memória criptografado 603 pode corresponder a um endereço de memória no qual os dados de texto plano criptografados devem ser armazenados. Por exemplo, se os dados de texto plano 604 são processados em blocos de 32 bits, pode ser submetido à operação XOR com 32 bits da saida output da fase de endereço de memória. As chaves de ciclo para a fase de criptografia de dados pode ser obtidas através da fase de criptografia de endereço de memória. Um módulo de segmentação de dados 606 divide ou separa os dados de texto plano 604 em quatro segmentos de 8 bits. Cada segmento de dados de 8 bits atravessa um a caixa de substituição 608 (por exemplo, uma caixa de substituição de 8x8 AES) . Os resultados das caixas de substituição 608 são, então, transformados através de um módulo de transformação linear 610 (por exemplo, mapeamento de MDS AES). Um modo de mistura de chave 612 pode, então, submeter à operação XOR os dados de texto plano transformados resultantes com uma chave de ciclo correspondente. Este processo pode ser repetido múltiplas vezes com o uso de uma chave de ciclo diferente para cada ciclo. O resultado do último ciclo de cifra da fase de criptografia de dados 602 é o texto cifrado de saida 614 que pode ser armazenado no endereço de memória usado durante a fase de criptografia de endereço correspondente.
[0052] A Figura 7 ilustra um método de criptografia de dados de cifra de bloco que usa o endereço de memória onde os dados devem ser armazenados para criptografar os dados. Neste método, um primeiro conjunto de ciclos de cifra é executado para criptografar o endereço de memória e gerar chaves de ciclo de dados antes dos dados estarem realmente prontos ou disponíveis para armazenamento. Então, um segundo conjunto de ciclos de cifra é executado para criptografar os dados.
[0053] Um processador pode obter um endereço de memória para os dados a serem armazenados 702 antes dos dados serem realmente recebidos. O endereço de memória pode ser criptografado em uma primeira pluralidade de ciclos de cifra de bloco 704. Tal criptografia de endereço de memória pode incluir: (a) segmentar o endereço de memória em uma pluralidade de segmentos de endereço de memória, (b) realizar substituição de bit nos segmentos de endereço de memória diferentes, (c) transformar o endereço de memória de acordo com uma primeira função de transformação e/ou (d) misturar o endereço de memória transformado com uma chave de ciclo. O endereço de memória pode ser criptografado iterativamente sobre a primeira pluralidade de ciclos de cifra de bloco.
[0054] As chaves de ciclo de dados podem ser geradas com o uso de informação de uma ou mais dentre a primeira pluralidade de ciclos de cifra de bloco 706. As chaves de ciclo de dados podem ser geradas ao: (a) extrair uma pluralidade de bits do endereço de memória criptografado para ao menos algumas da primeira pluralidade de ciclos de cifra de bloco, (b) selecionar as chaves de ciclo de dados dos segmentos da pluralidade de bits extraida e/ou (c) concatenar a pluralidade de bits extraida em uma cadeia a partir da qual chaves de ciclo de dados são selecionadas.
[0055] Os dados a serem armazenados podem, então, ser combinados com o endereço de memória criptografado após a primeira pluralidade de ciclos de cifra de bloco 708. Em um exemplo, os dados podem ser combinados com o endereço de memória criptografado através de uma operação que pode ser invertida (por exemplo, uma lógica binária OR). Os dados podem, então, ser criptografados em uma segunda pluralidade de ciclos de cifra de bloco com o uso das chaves de ciclo de dados 710. Tal criptografia de dados pode incluir: (a) segmentar os dados em uma pluralidade de segmentos de dados, (b) realizar substituição de bit nos diferentes segmentos de dados, (c) transformar os dados de acordo com uma segunda função de transformação e/ou (d) misturar os dados transformados com uma ou mais dentre as chaves de ciclo de dados. Os dados podem ser criptografados iterativamente sobre a segunda pluralidade de ciclos de cifra de bloco. Em um exemplo, as chaves de ciclo de dados usadas para os primeiros ciclos da segunda pluralidade de ciclos de cifra de bloco são geradas com o uso de bits do endereço de memória criptografado dos últimos ciclos da primeira pluralidade de ciclos de cifra de bloco. A segunda pluralidade de ciclos de cifra de bloco pode ser maior que a primeira pluralidade de ciclos de cifra de bloco. Os dados criptografados podem, então, ser criptografados no endereço de memória 712.
[0056] A Figura 8 é um diagrama de bloco que ilustra o processamento de uma cifra de bloco para decriptografar dados de um endereço de memória. Os dados podem ter sido previamente criptografados com o uso do método ilustrado nas Figuras 1, e 3-7, por exemplo. Em modo de decriptografia, ao invés de executar toda a cifra de bloco de maneira inversa conforme feito em métodos de decriptografia convencionais, uma segunda fase 805 da cifra de bloco 802 é processada de maneira inversa começando com o texto cifrado 828 enquanto uma primeira fase 803 é processada ao mesmo tempo para frente. De modo geral, um primeiro conjunto de ciclos de cifra de bloco 803 é processado em paralelo com um segundo conjunto de ciclos de cifra de bloco 805, reduzindo assim a latência da cifra de bloco 802. Isto é, os primeiros ciclos de cifra de bloco 803 (fase de criptografia de endereço de memória) podem ser realizados (ao menos parcialmente) ainda antes dos dados criptografados serem disponibilizados ou recuperados para processamento pelos segundos ciclos de cifra de bloco 805. Em uma fase de criptografia de endereço e de programação de Chave 803, um endereço de memória 804 (a partir do qual os dados de texto cifrado 828 são recuperados) é criptografado em uma pluralidade de ciclos de cifra. Por enquanto, em uma fase de decriptograf ia de dados 805, os dados de texto cifrado 828 são decriptografados em uma pluralidade de ciclos de cifra com o uso de chaves de ciclo de dados geradas na fase de Programação de Chave 803. Os resultados destes para as fases 803 e 805 são então combinados (por exemplo, submetidos à operação XOR) para produzir o texto plano original 820.
[0057] Na fase de Criptografia de Endereço e de Programação de Chave 803, o endereço de memória 804, a partir do qual os dados de texto cifrado 828 são recuperados, é criptografado. Inúmeros ciclos da cifra de bloco iterada 802 são processados com o uso do endereço de memória A 804 e da chave secreta Ksecreta 806 para a cifra de bloco 802. Por exemplo, uma pluralidade de chaves de ciclo Kl 807, K2 808 e Ki 809, para ciclos de criptografia de endereço correspondentes 816, 817 e 818 da cifra de bloco 802, é gerada com base na chave secreta Ksecreta 806. Cada chave de ciclo Kl 807, K2 808 e Ki 809 pode ser obtida com base em uma chave de ciclo prévio (por exemplo, Kl é baseada em Ksecreta, K2 é baseada em Kl, e assim por diante) . De acordo com um exemplo, a Chave Secreta 806 pode ter o tamanho de w bits e cada chave de ciclo Kl, K2, e Ki pode ter o tamanho de is n bits, onde n < w. Cada chave de ciclo Kl, K2 e Ki é gerada ao retirar n bits contiguos da Chave Secreta 806, onde se considera que a Chave Secreta 806 envolve no final. Cada chave de ciclo Kl, K2 e Ki pode usar um grupo diferente de sequências de bit contiguos da Chave Secreta 806.
[0058] A pluralidade de ciclos de criptografia de endereço 816, 817 e 818 da cifra de bloco 802 é gerada com base no endereço de memória 804 e nas chaves de ciclo Kl 807, K2 808 e Ki 809 correspondentes. Por exemplo, o Ciclo 1 816 transforma todo ou parte do endereço de memória A 804 com o uso de uma primeira função linear e/ou não linear Ea e é transformado, ainda, com base em uma operação que pode ser invertida (por exemplo, subtração/adição modular, lógica binária XOR, etc.) com a chave Kl (por exemplo, R1 = Ea (A) ® Kl) . De modo similar, o Ciclo 2 817 transforma o resultado R1 do Ciclo 1 816 com o uso da primeira função linear e/ou não linear Ea e transforma, ainda, o resultado com base em uma lógica binária XOR com a chave K2 correspondente (por exemplo, R2 = Ea(Rl) © K2) . Este processo pode ser repetido múltiplas vezes para difundir os efeitos de cada operação de transformação para todo o bloco. Por exemplo, o Ciclo i 818 transforma o resultado Ri-1 de um ciclo prévio com o uso da primeira função linear e/ou não linear Ea e transforma, ainda, o resultado com base em uma lógica binária XOR com a chave Ki correspondente (por exemplo, Ri = Ea(Ri-l) © Ki) .
[0059] Adicionalmente, durante a Fase de Programação de Chave 803, as chaves 812, 814 e 815 para a Fase de Decriptografia de Dados 805 podem ser geradas para economizar tempo. As chaves Ky, Ky+1, e Kx da Fase de Decriptografia de Dados 805 podem ser geradas com base nas chaves Kl, K2, e Ki da Fase de Programação de chave. Em um exemplo, o resultado de ciclo de cifras Rl, R2, e Ri pode ter o tamanho de n bits (onde n é um número inteiro positivo) e um número de bits g de cada uma dentre as chaves é usado para gerar as chaves Ky, Ky+1, e Kx da Fase de Dados, onde g é um número inteiro menor que n. Por exemplo, um conjunto de bits S 810 pode ser obtido através da concatenação (simbolo ||) dos bits extraidos dos vários resultados de ciclo Rl, R2, Ri de tal modo que Si...P = Rli...gi I |R2i...g2 ... I I Rii...gi, onde p é um valor inteiro que relata o número total de bits no conjunto de bits S 810. Notar que, em algumas implantações, o número de bits gl, g2, ... , gi, para cada ciclo pode ser igual, enquanto em outras implantações o número de bits gl, g2, ... , gi pode ser diferente. Durante a Fase de Programação de Chave 803, as chaves Ky, Ky+1, e Kx da Fase de Criptografia de Dados podem ser geradas através da extração de um segmento de bits do conjunto de bits S 810 para cada chave.
[0060] Em um exemplo, os bits que correspondem aos recentes ciclos da Fase de Programação de Chave 803 podem ser usados para as recentes chaves de ciclo de cifra na Fase de Decriptografia de Dados 805. Isto permite a execução da Fase de Decriptografia de Dados 805 ao mesmo tempo ou em paralelo com a Fase de Criptografia de Endereço 803. Por exemplo, a chave Kx 815 pode ser igual aos bits S i...j do conjunto de bits S 810 que corresponde a alguns destes bits extraidos do primeiro ciclo de cifra Rli...gi 816. Consequentemente, assim que o resultado Rl é gerado, a chave de decriptografia Kx 815 pode ser obtida. De modo similar, a chave Ky+1 314 pode ser igual aos bits S <p- 2 j+i)... (p-j) do conjunto de bits S 310. Da mesma forma, a chave Ky 814 pode ser retirada de bits S (p_j+i>.. ,p do conjunto de bits S 810 que, neste exemplo, corresponde a um subconjunto dos bits de Rii...gi, onde j < g. Em algumas implantações, onde j < g, o número de ciclos de cifra na Fase de Programação de Chave 803 pode ser menor que o número de ciclos na Fase de Decriptografia de Dados 805. Por exemplo, onde os resultados de ciclo Rl, R2, e Ri em o tamanho de sessenta e três (63) bits (isto é, n = 63), quarenta e cinco (45) bits (isto é, g = 45) de cada ciclo podem ser extraidos para serem usados para o conjunto de bits S 310 e cada chave Kx 815, Ky+1 814, e Ky 812 da Fase de Decriptografia de Dados, pode ter o tamanho de trinta e dois (32) bits (isto é, j = 32).
[0061] De forma geral, um ou mais funções de chave de ciclo KSx podem ser usadas para gerar cada um dentre as chaves de ciclo Kl, K2, Ki, Ky, Ky+1 ... Kx. Em um exemplo, a primeira função de programação de chave KS1 pode ser usada para gerar chaves Kl, K2, Ki (para a Fase de Criptografia de Endereço) e a segunda função de programação de chave KS2 pode ser usada para gerar chaves Ky, Ky+1, Kx (para a Fase de Decriptografia de Dados) . Por exemplo, a primeira função de programação de chave KS1 pode ser usada para gerar chave Ki, de tal modo que Ki = KS1 (Ksecreta, i) , onde "i" é o número de ciclo para a Fase de Criptografia de Endereço 803, enquanto a segunda função de programação de chave KS2 pode ser usada para gerar chave Ky+i, de tal modo que Ky+i = KS2 (Si...p, i), onde "y+i" é o número de ciclo para a Fase de Decriptografia de Dados 805.
[0062] Durante a Fase de Decriptografia de Dados, os dados de texto cifrado (ct) 828 são decriptografados com o uso das chaves Kx, Ky+1 e Ky sobre múltiplos ciclos. Por exemplo, o Ciclo x 826 transforma o texto cifrado (ct) resultante 828 com o uso de uma função de decriptografia linear e/ou não linear Dt e transforma, ainda, o resultado com base em uma operação (por exemplo, subtração/adição modular que pode ser invertida, lógica binária XOR, etc.) com a chave Kx correspondente (por exemplo, Rx = Db(ct) ® Kx) para obter o resultado Rx. Este processo de decriptografia pode ser repetido múltiplas vezes para desfazer a criptografia dos dados armazenados. Por exemplo, no Ciclo y+1 824 transforma o resultado Ry+1 de um ciclo prévio com o uso da função de decriptografia linear e/ou não linear Db e transforma, ainda, o resultado com base em uma lógica binária XOR com a chave Ky+1 correspondente (por exemplo, Ry = Db(Ry+l) ® Ky+1) para obter o Ry de saida. Em um Ciclo y 822, o resultado Ry é transformado pela função de decriptografia linear e/ou não linear Db e é transformado, ainda, com base em uma lógica binária XOR com a chave de ciclo Ky correspondente (por exemplo, DBranqueado = Db(Ry) ® Ky) para obter o bloco de dados submetido à branqueamento Dβranqueado 821. O bloco de dados submetido à branqueamento Dβranqueado é, então, combinado com o resultado Ri (por exemplo, endereço criptografado) da Fase de Criptografia de Endereço 803 com o uso de uma operação que pode ser invertida (por exemplo, subtração/adição modular, lógica binária XOR, etc.) para obter o bloco de dados de texto plano P 820.
[0063] Em várias implantações, o número de ciclos da Fase de Criptografia de Endereço e Programação de Chave 803 e da Fase de Decriptografia de Dados 805 pode ser igual ou diferente. A função de decriptografia Db usada na Fase de Decriptograf ia de Dados 805 pode ser selecionada para desfazer a criptografia através da função de criptografia Eb usada na Fase de Criptografia de Dados 305 (Figura 3). Por exemplo, a função de decriptografia Db pode ser uma transformação inversa da transformação da função de criptografia Eb.
[0064] A Figura 9 é um diagrama de bloco que ilustra os componentes funcionais de um dispositivo de cifra de bloco configurado para decriptografar dados de texto cifrado. O dispositivo de cifra de bloco 902 pode incluir um módulo de criptografia de endereço 912 que transforma e/ou criptografa o endereço de memória 906 de acordo com uma função de transformação ou criptografia e a chave fornecida pelo gerador de chave de ciclo 916. Notar que, o endereço de memória 906 pode ser o local a partir do qual os dados de texto cifrado 924 são recuperados de um dispositivo de memória 92 6. Um gerador de chave de ciclo 916 pode ser configurado para gerar uma ou mais chaves de ciclo com base em uma Chave Secreta 908. Um módulo de agendamento de chave 914 também pode gerar uma ou mais chaves de dados com base nos resultados do módulo de transformação de endereço 912. A uma ou mais chaves de dados podem ser armazenados em um módulo de armazenamento de chaves de dados 922. As funções de criptografia de endereço e programação de dados podem ser iterativamente realizadas em múltiplos ciclos com o uso de uma chave de ciclo diferente do gerador de chave de ciclo 916 em cada ciclo. Concorrentemente ou em paralelo, os dados de texto cifrado 924 podem ser iterativamente transformados ou decriptografados através de um módulo de decriptografia de dados 920 em um ou mais ciclos com o uso das chaves de dados armazenados do armazenamento de chaves de dados 922 e/ou uma função de decriptografia ou transformação para produzir dados de texto plano submetidos à branqueamento. Após uma pluralidade de ciclos de decriptografia, um combinador 918 pode combinar o último resultado do módulo de decriptografia de dados 920 (dados de texto plano submetidos à branqueamento) com os últimos resultados do módulo de criptografia de endereço 912 com o uso de uma operação que pode ser invertida (por exemplo, subtração/adição modular, lógica binária XOR, etc.) para obter os dados de texto plano 904.
[0065] Notar que, no módulo de criptografia de endereço 912, o endereço de memória pode ser criptografado conforme feito pelo dispositivo de cifra de bloco em modo de criptografia. Por exemplo, o módulo de criptografia de endereço 912 pode incluir uma pluralidade de ciclos de cifra de Substituição-permutação conforme ilustrado na Figura 5.
[0066] A Figura 10 é um diagrama de bloco que ilustra um exemplo de um módulo de transformação inversa ou decriptografia de dados de texto cifrado. Por exemplo, este módulo de transformação inversa ou decriptografia de dados de texto cifrado 1002 pode ser incluido como parte do módulo de decriptografia de dados 920 (Figura 9) . Um modo de mistura de chave 1012 pode realizar uma lógica binária OR entre o texto cifrado de saida 1014 e uma chave de ciclo de cifra correspondente. As chaves de ciclo de cifra para a fase de decriptografia de dados pode ser obtida da fase de criptografia de endereço de memória. O resultado do modo de mistura de chave 1012 é, então, transformado através de um módulo de transformação linear inversa 1010 (por exemplo, mapeamento de MDS AES) . O resultado do módulo de transformação linear inversa 1010 é, então, segmentado em uma pluralidade de segmentos de dados de 8 bits através de um módulo de segmentação de dados 1009. A pluralidade de segmentos de dados de 8 bits atravessa, então, as caixas de substituição 1008 (por exemplo, uma caixa de substituição de 8x8 AES). As caixas de substituição 1008 podem reverter as caixas de substituição das caixas de substituição de criptografia de dados 608 (Figura 6).
[0067] Um módulo de combinados de dados 1006 pode combinar a saida resultante das caixas de substituição 1008 para produzir os dados de texto plano submetidos à branqueamento de saida. Este processo pode ser repetido múltiplas vezes com o uso de uma diferente chave de ciclo para cada ciclo. O resultado do último ciclo de cifra da fase de criptografia de dados 1002 são os dados de texto plano submetidos à branqueamento. Os dados de texto plano submetidos à branqueamento são, então, combinados com um endereço de memória criptografado 1003 através de um Módulo de Lógica Binária XOR 1005 para produzir os dados de texto plano de saida 1004. Notar que o endereço de memória criptografado 1003 pode corresponder ao endereço de memória a partir do qual os dados de texto cifrado de entrada 1014 são recuperados.
[0068] A Figura 11 ilustra um método para decriptografar dados criptografados pelo uso de uma cifra de bloco que criptografa ao mesmo tempo um endereço de memória enquanto decriptografa os dados criptografados para reduzir a latência da cifra de bloco. Um endereço de memória para dados criptografados a serem recuperados é obtido 1102. O endereço de memória é criptografado em uma primeira pluralidade de ciclos de cifra de bloco para obter um endereço de memória criptografado 1104. Tal criptografia de endereço pode utilizar uma pluralidade de chaves de ciclo gerada com base em uma chave secreta. Adicionalmente, criptografar o endereço de memória pode incluir (a) misturar o endereço de memória transformado com uma chave de ciclo, (b) transformar o endereço de memória de acordo com uma primeira função de transformação, (c) segmentar o endereço de memória e/ou (d) realizar substituição de bit nos segmentos de endereço de memória diferentes.
[0069] As chaves de ciclo de dados também podem ser geradas com o uso de informação de uma ou mais dentre a primeira pluralidade de ciclos de cifra de bloco 1106. Isto é, o endereço de memória parcialmente criptografado de ao menos alguma da primeira pluralidade dos ciclos de cifra de bloco pode ser usado para gerar as chaves de ciclo de dados. Por exemplo, gerar as chaves de ciclo de dados pode incluir (a) extrair uma pluralidade de bits do endereço de memória criptografado para ao menos algumas da primeira pluralidade de ciclos de cifra de bloco, (b) selecionar as chaves de ciclo de dados dos segmentos da pluralidade de bits extraida e/ou (c) concatenar a pluralidade de bits extraida em uma cadeia a partir da qual chaves de ciclo de dados são selecionadas.
[0070] Os dados criptografados podem ser recuperados do endereço de memória 1108 e decriptografados em uma segunda pluralidade dos ciclos de cifra de bloco com o uso das chaves de ciclo de dados para obter dados parcialmente decriptografados 1110. As chaves de ciclo de dados usadas para os primeiros ciclos da segunda pluralidade de ciclos de cifra de bloco podem ser geradas com o uso de bits do endereço de memória criptografado dos primeiros ciclos da primeira pluralidade de ciclos de cifra de bloco. Em um exemplo, decriptografar os dados criptografados pode incluir (a) misturar os dados criptografados transformados com uma ou mais dentre as chaves de ciclo de dados, (b) transformar os dados criptografados de acordo com uma segunda função de transformação inversa, (c) segmentar os dados criptografados em uma pluralidade de segmentos de dados criptografados; e/ou (d) realizar substituição de bit nos segmentos de dados criptografados diferentes. Os dados parcialmente decriptografados podem ser combinados com o endereço de memória criptografado para obter dados completamente decriptografados 1112. Em um exemplo, os dados parcialmente decriptografados são combinados com o endereço de memória criptografado através de uma operação que pode ser invertida (por exemplo, a lógica binária XOR).
[0071] A primeira pluralidade de ciclos de cifra de bloco pode ser executada ao mesmo tempo com a segunda pluralidade de ciclos de cifra de bloco, promovendo assim o processo de decriptografia. Além disso, a segunda pluralidade de ciclos de cifra de bloco pode ser maior que a primeira pluralidade de ciclos de cifra de bloco.
[0072] De acordo com uma característica, o programação de chave pode ser realizado de modo q criptografar e decriptografar dados de maneira eficaz. Durante a fase de criptografia de endereço, a pluralidade de ciclos de cifra pode ser iterativamente executada para criptografar um endereço de memória, onde o endereço de memória é o local onde os dados devem ser armazenados ou a partir do qual os dados devem ser recuperados. Cada ciclo de cifra produz um endereço de memória criptografado. O endereço de memória criptografado produzido por um ou mais destes ciclos de cifra pode ser usado (completa ou parcialmente) para gerar as chaves de ciclo de fase de criptografia/decriptografia de dados.
[0073] A Figura 12 é um diagrama de bloco que ilustra um exemplo de como chaves de ciclo para ciclos de criptografia e decriptografia de dados podem ser geradas com base nos resultados de ciclos de criptografia de endereço de uma cifra de bloco. Quando a cifra de bloco está criptografando dados, as chaves de ciclo de dados são geradas com base nos resultados da fase de criptografia de endereço 1202. Os resultados dos recentes ciclos (por exemplo, Rl 1206, R2 1208 ...) da fase de criptografia de endereço 1202 são usados para gerar as últimas chaves de ciclo de criptografia de dados (Chave-E6 1212, Chave-E5 1214 ...) a serem usadas na fase de criptografia de dados 1204. De modo similar, os resultados dos últimos ciclos (por exemplo, R3 1210 ...) da fase de criptografia de endereço 1202 são usados para gerar as recentes chaves de ciclo de criptografia de dados (Chave-El 1222, Chave-E2 1220 ...) .
[0074] De modo similar, quando a cifra de bloco está decriptograf ando, as chaves de ciclo de dados são geradas com base nos resultados da fase de criptografia de endereço 1202. Os resultados dos recentes ciclos (por exemplo, RI 1206, R2 1208 ...) da fase de criptografia de endereço 1202 são usados para gerar as recentes chaves deciclo de criptografia de dados (Chave-Dl 1226, Chave-D2 1228 ...) a serem usadas na fase de decriptografia de dados 1224. De modo similar, os resultados dos últimos ciclos(por exemplo, R3 1210 ...) da fase de criptografia deendereço 1202 são usados para gerar as últimas chaves deciclo de criptografia de dados (Chave-D6 1236, Chave-D51234 ...) . Consequentemente, isto permite que a fase dedecriptografia de dados 1224 seja executadaconcorrentemente (por exemplo, sobrepondo periodos de tempo ou em paralelo) com a fase de criptografia de endereço 1202, decriptografando assim, de maneira mais eficaz, os dados.
[0075] Notar que em várias implantações, o número de ciclos de cifra da fase de criptografia de endereço, da fase de criptografia de dados 1204 e/ou da fase de decriptograf ia de dados 1224 pode ser maior ou menor que estes mostrados neste exemplo. Adicionalmente, de acordo com uma característica adicional, ao menos alguma porção do resultado do último ciclo (por exemplo, R4 1211) da fase de criptografia de endereço 1202 pode ser reservado para uma operação de branqueamento dos dados de texto plano. Consequentemente, este resultado do último ciclo (por exemplo, R4 1211) da fase de criptografia de endereço 1202 pode não ser usado para geração de chave de ciclo de dados.
[0076] Em algumas implantações, uma chave de ciclo de criptografia de dados (ou chave de ciclo de decriptografia de dados) pode ser baseada em um subconjunto de bits de um ou mais resultados (por exemplo, Rl 1206, R2 1208,...) da fase de criptografia de endereço 1202. Por exemplo, a Chave-El 1222 pode ser baseada em um subconjunto de bits de R3 1210 e a Chave-E2 pode ser baseada com um subconjunto de bits tanto de R2 1208 quanto de R3 1210.
[0077] Notar que já que o endereço de memória é usado pela cifra de bloco para gerar chaves de criptografia/decriptografia para as fases de criptografia/decriptografia de dados 1204/1224, isto significo que a transformação da cifra de bloco do texto plano / texto cifrado poderia ser diferente para cada endereço de memória, restringindo severamente os recursos disponíveis para uma criptoanálise, e aumentando a segurança da cifra de bloco. Deve-se observar que não é necessariamente o caso que os recentes ciclos precisam ter o mesmo tamanho do bloco como os últimos. Por exemplo, é possivel que a memória a ser criptografada em blocos de 32 bits, quanto o endereço pode ser maior que isto. Há eficácia a ser adquirida através da paralelização nos primeiros ciclos.
[0078] De acordo com um exemplo de uma cifra de bloco, a criptografia/decriptografia de dados pode ser memória endereçável por byte. Especificamente, o tamanho de palavra (bloco de dados) do processador que executa a cifra de bloco is 32 bits e o do endereço também tem 32 bits. Os últimos 32 bits do resultado da fase de criptografia de endereço podem ser usados como uma chave de branqueamento. Os bits remanescentes dos resultados da criptografia de endereço (por exemplo, endereço de memória criptografado) podem ser concatenados em um conjunto S usado para chaves de ciclo de criptografia de dados. Uma chave de ciclo de criptografia de dados com tamanho de 32 bits pode serselecionada para cada ciclo de criptografia de dados n (por exemplo, para n = 0 ... 5) tal que a Chave-En = bits 32*(5-n) a 32*(5-n)+31 do conjunto S. De modo oposto, uma chave de ciclo de decriptograf ia de dados de 32 bits pode ser selecionada para cada ciclo de decriptografia de dados n (por exemplo, para n = 0 ... 5) tal que a Chave-Dn = bits 32*n a 32*n+31 do conjunto S.
[0079] A Figura 13 é um diagrama de bloco que ilustra a dispositivo que pode ser configurado para realizar criptografia e decriptografia eficaz de cifra de bloco. Um circuito de processamento 1302 pode ser acoplado a um dispositivo de memória 1306. O circuito de processamento 1302 pode gravar dados no, e ler dados do dispositivo de memória 1306. O circuito de processamento 1302 pode ser configurado para executar uma de bloco 1304 que criptografa os dados a serem armazenados no, decriptografa os dados a serem recuperados do dispositivo de memória 1306. Tal criptografia e decriptografia podem ser baseadas no endereço de memória real no qual os dados estão gravados ou a partir do qual os dados os dados são lidos. Por exemplo, a cifra de bloco 1304 pode realizar uma ou mais dentre as operações descritas nas Figuras 1 a 12.
[0080] Deve-se reconhecer que, geralmente, a maior parte do processamento descrito nesta apresentação pode ser implantada de maneira similar. Qualquer um dentre o(s) circuito(s) ou seções de circuito pode ser implantado sozinho ou em combinação como parte de um circuito integrado com um ou mais processadores. O um ou mais dentre os circuitos podem ser implantados em um circuito integrado, um processador de máquina RISC avançada (ARM), um processador de sinal digital (DSP), um processador para propósito geral, etc.
[0081] Além disso, nota-se que as modalidades podem ser descritas como um processo que é apresentado como um fluxograma, um diagrama de fluxo, um diagrama de estrutura ou um diagrama de bloco. Embora um fluxograma possa descrever as operações como um processo sequencial, muitas destas operações podem ser realizadas em paralelo ou ao mesmo tempo. Em adição, a ordem das operações pode ser re-disposta. Um processo termina quando suas operações são completadas. Um processo pode corresponder a um método, uma função, um procedimento, uma sub-rotina, um subprograma, etc. Quando um processo corresponde a uma função, sua terminação corresponde a um retorno da função para a função de chamada ou para a função principal.
[0082] Para uso neste relatório, os termos "componente", "módulo", "sistema" e similares se destinam a uma entidade relacionada a computador, ou hardware, firmware, um combinação de hardware e software, software, ou software em execução. Por exemplo, um componente pode ser, mas não se limita a, um processo que opera em um processador, um processador, um objeto, um executável, um processo de execução, um programa e/ou um computador. A titulo de ilustração, tanto um aplicativo que opera em um dispositivo de computador quanto o dispositivo de computador pode ser um componente. Um ou mais componentes pode residir em um processo e/ou processo de execução e um componente pode estar situado em um computador e/ou distribuído entre dois ou mais computadores. Em adição, estes componentes podem executar vários meios legiveis por computador que apresentam várias estruturas de dados armazenadas. Os componentes podem comunicar por meio de processos locais e/ou remotos como de acordo com um sinal que tem um ou mais pacotes de dados (por exemplo, os dados de um componente que interage com outro componente em um sistema local, sistema distribuído e/ou ao longo de uma rede como a Internet com outros sistemas por meio do sinal).
[0083] Mais adicionalmente, uma meio de armazenamento pode representar um ou mais dispositivos para armazenar dados, incluindo memória apenas para leitura (ROM), memória de acesso aleatório (RAM), meios de armazenamento de disco magnético, meios de armazenamento de disco óptico, dispositivos de memória flash e/outras meios legiveis por máquina para armazenar informação. O termo "meio legivel por máquina" inclui, mas não se limita a, dispositivos de armazenamento fixos ou portáteis, dispositivos de armazenamento óptico, canais sem fio e várias outras meios capazes de armazenar, conter ou transportar instrução(s) e/ou dados.
[0084] Mais adicionalmente, as modalidades podem ser implantadas através de hardware, software, firmware, middleware, microcódigo ou qualquer combinação dos mesmos. Quando implantados em software, firmware, middleware ou microcódigo, os segmentos de código ou código de programa que realizam as tarefas necessárias podem ser armazenados em uma meio legivel por computador como uma meio de armazenamento ou outro (s) armazenamento(s) . Um processador pode realizar as tarefas necessárias. Um segmento de código pode representar um procedimento, uma função, um subprograma, um programa, uma rotina, uma sub- rotina, um módulo, um pacote de software, uma classe, ou qualquer combinação de instruções, estruturas de dados ou instruções de programa. Um segmento de código pode estar acoplado a outro segmento de código ou um circuito de hardware através da passagem e/ou da recepção de informação, dados, argumentos, parâmetros ou conteúdo de memórias. A informação, argumentos, parâmetros, dados, etc. podem ser passados, encaminhados ou transmitidos através de quaisquer mecanismos adequados, o que inclui compartilhamento de memória, passagem de mensagens, passagem de token, transmissão de rede, etc.
[0085] Um ou mais dos componentes, etapas e/ou funções ilustradas nas Figuras 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 e/ou 13 podem ser re-dispostos e/ou combinados em um único componente, etapa ou função ou incorporados em vários componentes, etapas ou funções. Os elementos, componentes, etapas e/ou funções adicionais também podem ser adicionados. Os aparelhos, dispositivos e/ou componentes ilustrados nas Figuras 3, 4, 8, 9 e/ou 13 podem ser configurados para realizar um ou mais dentre os métodos, características ou etapas descritas nas Figuras 1, 2, 5, 6, 7, 10, 11 e/ou 12. Os novos algoritmos descritos no presente documento podem ser implantados de forma eficaz em software e/ou hardware embutido.
[0086] O versado na técnica compreenderia ainda que as várias etapas de algoritmo, circuitos, módulos e blocos lógicos ilustrativos descritos em conexão com as modalidades descritas no presente documento podem ser implantados como hardware eletrônico, software para computador ou combinações de ambos. Para ilustrar claramente esta permutabilidade de hardware e software, vários componentes, blocos, módulos, circuitos e etapas ilustrativas foram descritas acima geralmente em termos de sua funcionabilidade. Se tal funcionabilidade é implantada como hardware ou software depende da aplicação particular e restrições de projeto impostas no sistema geral.
[0087] A descrição das modalidades tem o propósito ilustrativo e não limita o escopo das reivindicações. Como tal, os presentes ensinamentos podem ser prontamente aplicados aos outros tipos de aparelhos e muitas alternativas, modificações e variações se tornarão evidentes aqueles versados na técnica.
Claims (20)
1. Método para criptografar dados para armazenamento em um endereço de memória, caracterizadopelo fato de que compreende: criptografar (704) o endereço de memória em uma primeira pluralidade de ciclos de cifra de bloco; gerar (706) chaves de ciclo de dados com o uso de informação de uma ou mais dentre a primeira pluralidade de ciclos de cifra de bloco, em que gerar as chaves de ciclo de dados inclui: extrair uma pluralidade de bits do endereço de memória criptografado para pelo menos algumas da primeira pluralidade de ciclos de cifra de bloco; e selecionar as chaves de ciclo de dados dos segmentos da pluralidade de bits extraida; combinar (708) os dados com o endereço de memória criptografado após a primeira pluralidade de ciclos de cifra de bloco; e criptografar (710) os dados em uma segunda pluralidade de ciclos de cifra de bloco com o uso das chaves de ciclo de dados.
2. Método, de acordo com a reivindicação 1, caracterizadopelo fato de que os dados são combinados com o endereço de memória criptografado através de uma operação que pode ser invertida.
3. Método, de acordo com a reivindicação 1, caracterizadopelo fato de que criptografar os dados inclui: transformar os dados de acordo com uma segunda função de transformação; e misturar os dados transformados com uma ou mais dentre as chaves de ciclo de dados.
4. Método, de acordo com a reivindicação 1, caracterizadopelo fato de que criptografar os dados inclui adicionalmente: segmentar os dados em uma pluralidade de segmentos de dados; e realizar substituição de bit nos diferentes segmentos de dados.
5. Método, de acordo com a reivindicação 1, caracterizadopelo fato de que o endereço de memória é criptografado iterativamente através da primeira pluralidade de ciclos de cifra de bloco, e os dados são criptografados iterativamente através da segunda pluralidade de ciclos de cifra de bloco.
6. Dispositivo de cifra de bloco, caracterizado pelo fato de que compreende: mecanismos para criptografar (412) um endereço de memória em uma primeira pluralidade de ciclos de cifra de bloco; mecanismos para gerar (414) chaves de ciclo de dados com o uso de informação de uma ou mais dentre a primeira pluralidade de ciclos de cifra de bloco, em que os mecanismos para gerar as chaves de ciclo de dados são configurados para: extrair uma pluralidade de bits do endereço de memória criptografado para pelo menos algumas da primeira pluralidade de ciclos de cifra de bloco; e selecionar as chaves de ciclo de dados dos segmentos da pluralidade de bits extraida; mecanismos para combinar (418) dados com o endereço de memória criptografado após a primeira pluralidade de ciclos de cifra de bloco; e mecanismos para criptografar (424) os dados em uma segunda pluralidade de ciclos de cifra de bloco com o uso das chaves de ciclo de dados.
7. Método para descriptografar dados recuperados de um endereço de memória, caracterizado pelo fato de que compreende: criptografar (1104) o endereço de memória em uma primeira pluralidade de ciclos de cifra de bloco para obter um endereço de memória criptografado; gerar (1106) chaves de ciclo de dados com o uso de informação de uma ou mais dentre a primeira pluralidade de ciclos de cifra de bloco, em que gerar as chaves de ciclo de dados inclui: extrair uma pluralidade de bits do endereço de memória criptografado para pelo menos algumas da primeira pluralidade de ciclos de cifra de bloco; e selecionar as chaves de ciclo de dados dos segmentos da pluralidade de bits extraida; descriptografar (1110) os dados criptografados em uma segunda pluralidade dos ciclos de cifra de bloco com o uso das chaves de ciclo de dados para obter dados parcialmente descriptografados; e combinar (1112) os dados parcialmente descriptografados com o endereço de memória criptografado para obter dados completamente descriptografados.
8. Método, de acordo com a reivindicação 1 ou 7, caracterizadopelo fato de que a criptografia do endereço de memória começa antes dos dados estarem disponíveis.
9. Método, de acordo com a reivindicação 7, caracterizadopelo fato de que compreende adicionalmente: recuperar os dados criptografados do endereço de memória.
10. Método, de acordo com a reivindicação 1 ou 7, caracterizadopelo fato de que criptografar o endereço de memória inclui transformar o endereço de memória de acordo com uma primeira função de transformação; e misturar o endereço de memória transformado com uma chave de ciclo.
11. Método, de acordo com a reivindicação 10, caracterizadopelo fato de que criptografar o endereço de memória inclui adicionalmente: segmentar o endereço de memória; e realizar substituição de bit nos segmentos de endereço de memória diferentes.
12. Método, de acordo com a reivindicação 7, caracterizadopelo fato de que gerar as chaves de ciclo de dados inclui: concatenar uma pluralidade de bits extraida em uma cadeia a partir da qual chaves de ciclo de dados são selecionadas.
13. Método, de acordo com a reivindicação 1 ou 7, caracterizadopelo fato de que as chaves de ciclo de dados usadas para os primeiros ciclos da segunda pluralidade de ciclos de cifra de bloco são geradas com o uso de bits do endereço de memória criptografado dos primeiros ou últimos ciclos da primeira pluralidade de ciclos de cifra de bloco.
14. Método, de acordo com a reivindicação 7, caracterizadopelo fato de que os dados parcialmente descriptografados são combinados com o endereço de memória criptografado através de uma operação que pode ser invertida.
15. Método, de acordo com a reivindicação 7, caracterizadopelo fato de que descriptograf ar os dados criptografados inclui: transformar os dados criptografados de acordo com uma segunda função de transformação inversa; e misturar os dados criptografados transformados com uma ou mais dentre as chaves de ciclo de dados.
16. Método, de acordo com a reivindicação 7, caracterizadopelo fato de que descriptograf ar os dados criptografados inclui adicionalmente: segmentar os dados criptografados em uma pluralidade de segmentos de dados criptografados; e realizar substituição de bit nos segmentos de dados criptografados diferentes.
17. Método, de acordo com a reivindicação 1 ou 7, caracterizadopelo fato de que a segunda pluralidade de ciclos de cifra de bloco é maior que a primeira pluralidade de ciclos de cifra de bloco.
18. Método, de acordo com a reivindicação 7, caracterizadopelo fato de que a primeira pluralidade de ciclos de cifra de bloco é executada concorrentemente com a segunda pluralidade de ciclos de cifra de bloco.
19. Dispositivo de cifra de bloco, caracterizado pelo fato de que compreende: mecanismos para criptografar (912) um endereço de memória em uma primeira pluralidade de ciclos de cifra de bloco para obter um endereço de memória criptografado; mecanismos para gerar (916) chaves de ciclo de dados com o uso de informação de uma ou mais dentre a primeira pluralidade de ciclos de cifra de bloco, em que os mecanismos para gerar as chaves de ciclo de dados são configurados para: extrair uma pluralidade de bits do endereço de memória criptografado para pelo menos algumas da primeira pluralidade de ciclos de cifra de bloco; e selecionar as chaves de ciclo de dados dos segmentos da pluralidade de bits extraida; mecanismos para descriptografar (920) os dados criptografados em uma segunda pluralidade dos ciclos de cifra de bloco com o uso das chaves de ciclo de dados para obter dados parcialmente descriptografados; e mecanismos para combinar (918) os dados parcialmente descriptografados com o endereço de memória criptografado para obter dados completamente descriptografados.
20. Memória, caracterizadapelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executadas por um computador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 5 e 7 a 18.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/262,092 US9336160B2 (en) | 2008-10-30 | 2008-10-30 | Low latency block cipher |
US12/262,092 | 2008-10-30 | ||
PCT/US2009/062391 WO2010056531A1 (en) | 2008-10-30 | 2009-10-28 | Low latency block cipher |
Publications (2)
Publication Number | Publication Date |
---|---|
BRPI0920045A2 BRPI0920045A2 (pt) | 2015-12-15 |
BRPI0920045B1 true BRPI0920045B1 (pt) | 2020-11-10 |
Family
ID=42027710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BRPI0920045-2A BRPI0920045B1 (pt) | 2008-10-30 | 2009-10-28 | cifra de bloco de baixa latência |
Country Status (8)
Country | Link |
---|---|
US (1) | US9336160B2 (pt) |
EP (1) | EP2356771B1 (pt) |
JP (2) | JP2012507949A (pt) |
KR (1) | KR101370223B1 (pt) |
CN (1) | CN102204158B (pt) |
BR (1) | BRPI0920045B1 (pt) |
TW (1) | TWI402675B (pt) |
WO (1) | WO2010056531A1 (pt) |
Families Citing this family (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5272751B2 (ja) * | 2009-01-26 | 2013-08-28 | 富士通セミコンダクター株式会社 | プロセッサ |
US8589700B2 (en) * | 2009-03-04 | 2013-11-19 | Apple Inc. | Data whitening for writing and reading data to and from a non-volatile memory |
US9680637B2 (en) | 2009-05-01 | 2017-06-13 | Harris Corporation | Secure hashing device using multiple different SHA variants and related methods |
US9600421B2 (en) * | 2009-05-20 | 2017-03-21 | Conexant Systems, Inc. | Systems and methods for low-latency encrypted storage |
US8438401B2 (en) * | 2009-09-22 | 2013-05-07 | Raytheon BBN Technologies, Corp. | Device and method for securely storing data |
KR101646705B1 (ko) * | 2009-12-01 | 2016-08-09 | 삼성전자주식회사 | 에스-박스를 구현한 암호화 장치 |
US9544133B2 (en) * | 2009-12-26 | 2017-01-10 | Intel Corporation | On-the-fly key generation for encryption and decryption |
US9967092B2 (en) | 2010-05-25 | 2018-05-08 | Via Technologies, Inc. | Key expansion logic using decryption key primitives |
US8639945B2 (en) * | 2010-05-25 | 2014-01-28 | Via Technologies, Inc. | Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions |
US9892283B2 (en) | 2010-05-25 | 2018-02-13 | Via Technologies, Inc. | Decryption of encrypted instructions using keys selected on basis of instruction fetch address |
US9798898B2 (en) | 2010-05-25 | 2017-10-24 | Via Technologies, Inc. | Microprocessor with secure execution mode and store key instructions |
US9911008B2 (en) | 2010-05-25 | 2018-03-06 | Via Technologies, Inc. | Microprocessor with on-the-fly switching of decryption keys |
KR20120002760A (ko) * | 2010-07-01 | 2012-01-09 | 삼성전자주식회사 | 낸드 플래쉬 메모리의 동작 신뢰성을 향상시키는 데이터 기록 방법 및 데이터 기록 장치 |
US20120084559A1 (en) | 2010-09-30 | 2012-04-05 | Hunt Technologies, Llc | Communications Source Authentication |
DE112010005842T8 (de) | 2010-10-05 | 2014-07-17 | Hewlett-Packard Development Company, L.P. | Verwürfeln einer Adresse und Verschlüsseln von Schreibdaten zum Speichern in einer Speichervorrichtung |
CN103154967A (zh) * | 2010-10-05 | 2013-06-12 | 惠普发展公司,有限责任合伙企业 | 修改元素的长度以形成加密密钥 |
FR2966953B1 (fr) * | 2010-11-02 | 2015-08-28 | St Microelectronics Rousset | Procede de contremesure cryptographique par derivation d'une donnee secrete |
MY150357A (en) * | 2010-11-04 | 2013-12-31 | Mimos Berhad | A method for linear transformation in substitution-permutation networks symmetric-key block cipher |
GB2489405B (en) | 2011-03-22 | 2018-03-07 | Advanced Risc Mach Ltd | Encrypting and storing confidential data |
US9331848B1 (en) * | 2011-04-29 | 2016-05-03 | Altera Corporation | Differential power analysis resistant encryption and decryption functions |
US8958550B2 (en) | 2011-09-13 | 2015-02-17 | Combined Conditional Access Development & Support. LLC (CCAD) | Encryption operation with real data rounds, dummy data rounds, and delay periods |
US8726037B2 (en) * | 2011-09-27 | 2014-05-13 | Atmel Corporation | Encrypted memory access |
US9281940B2 (en) * | 2012-03-02 | 2016-03-08 | Sony Corporation | Information processing apparatus, information processing method, and program |
US8976960B2 (en) * | 2012-04-02 | 2015-03-10 | Apple Inc. | Methods and apparatus for correlation protected processing of cryptographic operations |
JP6028798B2 (ja) * | 2012-06-28 | 2016-11-16 | 日本電気株式会社 | 暗号化装置、暗号化方法およびプログラム |
US10102390B2 (en) * | 2012-06-28 | 2018-10-16 | Honeywell International Inc. | Memory authentication with redundant encryption |
US9379887B2 (en) | 2012-09-14 | 2016-06-28 | Qualcomm Incorporated | Efficient cryptographic key stream generation using optimized S-box configurations |
KR102060996B1 (ko) | 2013-01-07 | 2020-02-11 | 삼성전자주식회사 | 단말기의 메모리 주소 및 데이터변환 장치 및 방법 |
US9294266B2 (en) * | 2013-06-27 | 2016-03-22 | Qualcomm Incorporated | Method and apparatus to encrypt plaintext data |
EP3025271B1 (en) * | 2013-07-24 | 2020-04-01 | Marvell World Trade Ltd. | Key rotation for a memory controller |
US9405919B2 (en) * | 2014-03-11 | 2016-08-02 | Qualcomm Incorporated | Dynamic encryption keys for use with XTS encryption systems employing reduced-round ciphers |
US10169618B2 (en) * | 2014-06-20 | 2019-01-01 | Cypress Semiconductor Corporation | Encryption method for execute-in-place memories |
US10691838B2 (en) | 2014-06-20 | 2020-06-23 | Cypress Semiconductor Corporation | Encryption for XIP and MMIO external memories |
US10192062B2 (en) | 2014-06-20 | 2019-01-29 | Cypress Semiconductor Corporation | Encryption for XIP and MMIO external memories |
DE102014216392A1 (de) * | 2014-08-19 | 2016-02-25 | Robert Bosch Gmbh | Symmetrisches Iteriertes Blockchiffrierverfahren und entsprechende Vorrichtung |
US9397833B2 (en) | 2014-08-27 | 2016-07-19 | International Business Machines Corporation | Receipt, data reduction, and storage of encrypted data |
US9397832B2 (en) | 2014-08-27 | 2016-07-19 | International Business Machines Corporation | Shared data encryption and confidentiality |
US10313128B2 (en) * | 2014-08-29 | 2019-06-04 | The Boeing Company | Address-dependent key generator by XOR tree |
US10146701B2 (en) * | 2014-08-29 | 2018-12-04 | The Boeing Company | Address-dependent key generation with a substitution-permutation network |
US9946662B2 (en) * | 2014-08-29 | 2018-04-17 | The Boeing Company | Double-mix Feistel network for key generation or encryption |
US9483664B2 (en) * | 2014-09-15 | 2016-11-01 | Arm Limited | Address dependent data encryption |
CN104253684B (zh) * | 2014-09-23 | 2018-02-02 | 深圳市汇顶科技股份有限公司 | 加密方法和加密装置 |
KR102376506B1 (ko) | 2014-10-20 | 2022-03-18 | 삼성전자주식회사 | 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법 |
IL235729A (en) | 2014-11-17 | 2017-06-29 | Kaluzhny Uri | A device and method for securely storing information |
US10262161B1 (en) * | 2014-12-22 | 2019-04-16 | Amazon Technologies, Inc. | Secure execution and transformation techniques for computing executables |
US10013363B2 (en) | 2015-02-09 | 2018-07-03 | Honeywell International Inc. | Encryption using entropy-based key derivation |
EP3272060B1 (en) * | 2015-03-20 | 2019-05-01 | Hewlett-Packard Enterprise Development LP | Datastream block encryption |
WO2016173882A1 (en) * | 2015-04-30 | 2016-11-03 | Koninklijke Philips N.V. | Cryptographic device for calculating a block cipher |
EP3458988B1 (en) * | 2016-05-16 | 2023-10-18 | Amgen Inc. | Data encryption in medical devices with limited computational capability |
US10708073B2 (en) | 2016-11-08 | 2020-07-07 | Honeywell International Inc. | Configuration based cryptographic key generation |
CN107453866A (zh) * | 2017-08-03 | 2017-12-08 | 致象尔微电子科技(上海)有限公司 | 一种对数据进行加密的方法 |
JP6903529B2 (ja) * | 2017-09-11 | 2021-07-14 | 株式会社東芝 | 情報処理装置、情報処理方法およびプログラム |
CN107967414B (zh) * | 2017-11-03 | 2023-07-28 | 深圳市航顺芯片技术研发有限公司 | 微控制芯片指令加密方法、解密方法及加/解密系统 |
FR3074936B1 (fr) * | 2017-12-11 | 2020-08-14 | Stmicroelectronics (Grenoble 2) Sas | Procede d'ecriture d'un ensemble d'informations, par exemple un code programme, cryptees dans une memoire externe d'un circuit integre et circuit integre correspondant |
CN108197482A (zh) * | 2017-12-27 | 2018-06-22 | 致象尔微电子科技(上海)有限公司 | 一种内存数据加密解密方法及装置 |
US11032061B2 (en) * | 2018-04-27 | 2021-06-08 | Microsoft Technology Licensing, Llc | Enabling constant plaintext space in bootstrapping in fully homomorphic encryption |
CN108777611B (zh) * | 2018-05-11 | 2021-06-18 | 吉林大学 | 基于双密钥流密码的双向链表顺序加密解密方法 |
CN109656840A (zh) * | 2018-12-21 | 2019-04-19 | 成都海光集成电路设计有限公司 | 一种数据加解密的装置、方法、存储介质、以及数据存储系统 |
CN110213354B (zh) * | 2019-05-20 | 2021-07-13 | 电子科技大学 | 云存储数据机密性保护方法 |
US11429751B2 (en) * | 2019-07-01 | 2022-08-30 | Rajant Corporation | Method and apparatus for encrypting and decrypting data on an integrated circuit |
US10637837B1 (en) | 2019-11-27 | 2020-04-28 | Marpex, Inc. | Method and system to secure human and also internet of things communications through automation of symmetric encryption key management |
US11645428B1 (en) | 2020-02-11 | 2023-05-09 | Wells Fargo Bank, N.A. | Quantum phenomenon-based obfuscation of memory |
EP3879781B1 (en) * | 2020-03-13 | 2022-07-27 | Deutsche Telekom AG | Methods and systems for network service management in a distributed architecture |
US20240004801A1 (en) * | 2022-06-29 | 2024-01-04 | Advanced Micro Devices, Inc. | Data encryption suitable for use in systems with processing-in-memory |
CN116126753B (zh) * | 2022-12-28 | 2024-02-02 | 江苏都万电子科技有限公司 | 一种防护存储器及存储方法 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4278837A (en) * | 1977-10-31 | 1981-07-14 | Best Robert M | Crypto microprocessor for executing enciphered programs |
US4319079A (en) * | 1979-09-13 | 1982-03-09 | Best Robert M | Crypto microprocessor using block cipher |
US6014445A (en) * | 1995-10-23 | 2000-01-11 | Kabushiki Kaisha Toshiba | Enciphering/deciphering apparatus and method incorporating random variable and keystream generation |
US6061449A (en) * | 1997-10-10 | 2000-05-09 | General Instrument Corporation | Secure processor with external memory using block chaining and block re-ordering |
US6345359B1 (en) | 1997-11-14 | 2002-02-05 | Raytheon Company | In-line decryption for protecting embedded software |
TW514844B (en) | 2000-01-26 | 2002-12-21 | Sony Corp | Data processing system, storage device, data processing method and program providing media |
WO2002077878A1 (en) * | 2001-03-26 | 2002-10-03 | Galois Connections Inc | Crypto-pointers for secure data storage |
JP4226816B2 (ja) * | 2001-09-28 | 2009-02-18 | 株式会社東芝 | マイクロプロセッサ |
DE60238853D1 (de) | 2001-10-03 | 2011-02-17 | Nxp Bv | Verfahren und System zur Speicherverschlüsselung |
GB0214620D0 (en) * | 2002-06-25 | 2002-08-07 | Koninkl Philips Electronics Nv | Round key generation for AES rijndael block cipher |
DE10256587A1 (de) * | 2002-12-04 | 2004-06-17 | Philips Intellectual Property & Standards Gmbh | Datenverarbeitungseinrichtung, insbesondere elektronisches Speicherbauteil, und hierauf bezogenes Verschlüsselungsverfahren |
DE10345454A1 (de) * | 2003-09-30 | 2005-04-28 | Infineon Technologies Ag | Wortindividuelle Schlüsselerzeugung |
DE10345385B4 (de) | 2003-09-30 | 2005-10-06 | Infineon Technologies Ag | Entschlüsselung bzw. Verschlüsselung bei Schreibzugriffen auf einen Speicher |
JP2005130059A (ja) | 2003-10-22 | 2005-05-19 | Fuji Xerox Co Ltd | 画像形成装置および交換部品 |
KR100604828B1 (ko) * | 2004-01-09 | 2006-07-28 | 삼성전자주식회사 | 펌웨어 암호화 방법 및 해독 방법과 그 처리 장치 |
US7657033B2 (en) * | 2004-12-10 | 2010-02-02 | Fiske Software Llc | Cryptography related to keys |
CN101084506A (zh) | 2004-12-20 | 2007-12-05 | 皇家飞利浦电子股份有限公司 | 数据处理设备及操作这种数据处理设备的方法 |
JP4890976B2 (ja) | 2005-08-31 | 2012-03-07 | キヤノン株式会社 | 暗号処理装置 |
US8001374B2 (en) | 2005-12-16 | 2011-08-16 | Lsi Corporation | Memory encryption for digital video |
IL174784A0 (en) * | 2006-04-04 | 2006-12-31 | Nds Ltd | Robust cipher design |
KR100837270B1 (ko) * | 2006-06-07 | 2008-06-11 | 삼성전자주식회사 | 스마트 카드 및 그것의 데이터 보안 방법 |
JP4905000B2 (ja) * | 2006-09-01 | 2012-03-28 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
US8155308B1 (en) * | 2006-10-10 | 2012-04-10 | Marvell International Ltd. | Advanced encryption system hardware architecture |
JP2008151829A (ja) | 2006-12-14 | 2008-07-03 | Fujitsu Ltd | 暗号演算装置 |
EP1978467A1 (en) | 2007-04-05 | 2008-10-08 | STMicroelectronics (Research & Development) Limited | Integrated circuit and method for secure execution of software |
US8112634B2 (en) * | 2008-06-04 | 2012-02-07 | Samsung Electronics Co., Ltd. | Security-enhanced storage devices using media location factor in encryption of hidden and non-hidden partitions |
-
2008
- 2008-10-30 US US12/262,092 patent/US9336160B2/en active Active
-
2009
- 2009-10-28 WO PCT/US2009/062391 patent/WO2010056531A1/en active Application Filing
- 2009-10-28 BR BRPI0920045-2A patent/BRPI0920045B1/pt active IP Right Grant
- 2009-10-28 JP JP2011534718A patent/JP2012507949A/ja active Pending
- 2009-10-28 EP EP09749266.4A patent/EP2356771B1/en active Active
- 2009-10-28 KR KR1020117012214A patent/KR101370223B1/ko not_active IP Right Cessation
- 2009-10-28 CN CN200980143933.3A patent/CN102204158B/zh active Active
- 2009-10-30 TW TW098136953A patent/TWI402675B/zh active
-
2014
- 2014-03-19 JP JP2014056907A patent/JP2014160256A/ja not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
CN102204158B (zh) | 2016-01-20 |
US9336160B2 (en) | 2016-05-10 |
CN102204158A (zh) | 2011-09-28 |
KR101370223B1 (ko) | 2014-03-05 |
US20100115286A1 (en) | 2010-05-06 |
BRPI0920045A2 (pt) | 2015-12-15 |
WO2010056531A1 (en) | 2010-05-20 |
TWI402675B (zh) | 2013-07-21 |
KR20110089319A (ko) | 2011-08-05 |
TW201027340A (en) | 2010-07-16 |
EP2356771A1 (en) | 2011-08-17 |
EP2356771B1 (en) | 2018-05-30 |
JP2014160256A (ja) | 2014-09-04 |
JP2012507949A (ja) | 2012-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BRPI0920045B1 (pt) | cifra de bloco de baixa latência | |
JP7107670B2 (ja) | ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 | |
CN108449172B (zh) | 加密/解密方法和计算设备的集成电路 | |
US10313128B2 (en) | Address-dependent key generator by XOR tree | |
US8966279B2 (en) | Securing the implementation of a cryptographic process using key expansion | |
US10678707B2 (en) | Data processing device and method for cryptographic processing of data | |
CN209980248U (zh) | 电路和电子设备 | |
US10469265B2 (en) | Technologies for secure inter-enclave communications | |
CN210129870U (zh) | 电路和设备 | |
US10146701B2 (en) | Address-dependent key generation with a substitution-permutation network | |
US8976960B2 (en) | Methods and apparatus for correlation protected processing of cryptographic operations | |
EP4075716A1 (en) | Method and apparatus for encrypting and decrypting and reading and writing messages, computer device, and storage medium | |
US9729319B2 (en) | Key management for on-the-fly hardware decryption within integrated circuits | |
US9602281B2 (en) | Parallelizable cipher construction | |
US10505709B2 (en) | White-box cryptography interleaved lookup tables | |
US10411880B2 (en) | Apparatus and method for encryption | |
US9946662B2 (en) | Double-mix Feistel network for key generation or encryption | |
US20240078323A1 (en) | Counter tree | |
JP2018514816A (ja) | 変形鍵を用いる高速aes | |
US20230281305A1 (en) | Method for protecting against side-channel attacks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] |
Free format text: EXIGENCIA PRELIMINAR 6.21 |
|
B15K | Others concerning applications: alteration of classification |
Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04L 9/06 , H04L 9/08 Ipc: H04L 9/06 (1990.01), G06F 12/14 (1985.01) |
|
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted |
Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 10/11/2020, OBSERVADAS AS CONDICOES LEGAIS. |