BR112013012216B1 - proteção contra as escutas passivas - Google Patents

proteção contra as escutas passivas Download PDF

Info

Publication number
BR112013012216B1
BR112013012216B1 BR112013012216-1A BR112013012216A BR112013012216B1 BR 112013012216 B1 BR112013012216 B1 BR 112013012216B1 BR 112013012216 A BR112013012216 A BR 112013012216A BR 112013012216 B1 BR112013012216 B1 BR 112013012216B1
Authority
BR
Brazil
Prior art keywords
cryptographic algorithm
linear
fact
alg
algorithm
Prior art date
Application number
BR112013012216-1A
Other languages
English (en)
Other versions
BR112013012216A2 (pt
Inventor
Hervé Chabanne
Julien Bringer
Thanh Ha Le
Original Assignee
Morpho
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Morpho filed Critical Morpho
Publication of BR112013012216A2 publication Critical patent/BR112013012216A2/pt
Publication of BR112013012216B1 publication Critical patent/BR112013012216B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

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

Abstract

PROTEÇÃO CONTRA AS ESCUTAS PASSIVAS. A presente invenção se refere particularmente a um processo para segurança da execução de um algoritmo criptográfico (ALG) contra escutas passivas, com o processo utilizando um mascaramento (MSK) dos dados tratados pelo algoritmo criptográfico. O mascaramento (MSK) dos dados mencionados compreende uma etapa de codificação linear do tipo x' - x.L + c, com x sendo um dado a ser mascarado, x' sendo um dado mascarado correspondente, c sendo uma palavra código compreendida em um código linear C, e L sendo uma matriz composta por vetores linearmente independentes não compreendidos no código linear C. A invenção se refere igualmente a um dispositivo (SC) utilizando tal processo.

Description

PROTEÇÃO CONTRA AS ESCUTAS PASSIVAS
[0001] A presente invenção se refere à proteção dos algoritmos criptográficos contra as escutas passivas.
[0002] Um algoritmo criptográfico é um algoritmo que visa proteger uma informação, assegurando, por exemplo, sua confidencialidade, sua autenticidade, ou sua integridade, graças à matemática. Um algoritmo criptográfico se apoia frequentemente sobre uma ou diversas chaves, que podem ser particularmente secretas, privadas ou públicas. Certos algoritmos criptográficos não utilizam chaves, como é o caso, particularmente, de certas funções de hash (tais como as funções SHA-1, MD5, SHA-256, RIPEMD-160, etc). Entre os algoritmos criptográficos, encontram-se particularmente os algoritmos de codificação (que permitem tornar uma informação ininteligível) e algoritmos de decodificação (que permitem recuperar a informação de origem a partir de uma informação criptografada), algoritmos de assinatura eletrônica, de verificação de assinatura, de autenticação, de verificação de autenticação, etc. Entre os algoritmos criptográficos se baseando em chaves, alguns são ditos simétricos (por exemplo, os algoritmos DES, 3DES, AES, RC4, HMAC, etc). Alguns algoritmos simétricos são especializados (por exemplo, o algoritmo HMAC serve para a assinatura/ verificação de assinatura, mas não para a codificação/ decodificação). Os algoritmos simétricos são assim nomeados pelo fato de que utilizam a mesma chave (fala-se geralmente de chave secreta) para codificar e para decodificar, ou ainda para assinar e verificar uma assinatura, etc. Assim, os algoritmos criptográficos simétricos os impõem a duas partes, os utilizando para tornar seguras suas comunicações de compartilhar as chaves. O algoritmo AES (Advanced Encryption Standard) é notável porque é o algoritmo que foi escolhido em 2000 pelo NIST para se tornar o algoritmo de codificação simétrica padrão para o governo dos Estados Unidos da América. Outros algoritmos criptográficos são qualificados como assimétricos (por exemplo, os algoritmos DSA, RSA, as curvas elípticas, etc) porque uma chave diferente é utilizada pelas partes de uma comunicação. Cada parte dispõe de uma chave privada e de uma chave pública associada. Por exemplo, uma parte pode utilizar uma de suas chaves privadas para assinar uma informação, e é uma chave pública correspondente que é utilizada pela outra parte para verificar a assinatura, ou ainda uma parte pode utilizar uma chave pública pertencendo a uma outra parte para codificar uma informação, e a outra parte pode então utilizar sua chave privada correspondente para decodificar a informação.
[0003] Os algoritmos criptográficos são frequentemente descritos de forma muito precisa dentro das especificações acessíveis a todos, com a segurança de um algoritmo criptográfico geralmente não estando ligada ao caráter secreto ou não de seu funcionamento (os algoritmos que são presumidos como seguros apenas por razão de seu caráter secreto terminam geralmente por serem quebrados por engenharia inversa). As especificações permitem determinar o que um algoritmo deve produzir como saída quando é dada certa informação de entrada. Isto permite assegurar a interoperabilidade do algoritmo criptográfico, ou seja, que implementações distintas devem poder funcionar entre elas. Por exemplo, pode-se legitimamente esperar que uma informação codificada por toda a implementação de um algoritmo de codificação possa ser decodificada por toda a implementação do algoritmo de decodificação correspondente. No entanto, isso não significa que existe apenas uma implementação possível de cada algoritmo criptográfico. Ao contrário, existem diversas implementações possíveis para cada algoritmo criptográfico, da mesma forma que existem diversas maneiras diferentes de efetuar um mesmo cálculo. Por exemplo, para calcular x2+2x+1, pode-se particularmente calcular x*x, depois 2*x, depois adicionar os dois termos e em seguida adicionar 1, ou então calcular x+1, multiplicar o resultado por x, e em seguida adicionar 1, ou ainda calcular x+1 e elevar o resultado ao quadrado.
[0004] Poderia-se pensar que a segurança de um algoritmo criptográfico depende apenas de sua definição matemática (e das eventuais chaves que são utilizadas, enquanto estas últimas são secretas ou privadas), tal que ela derive de uma especificação, e não da forma exata como ele calcula o resultado definido na especificação. Na realidade, isto não é nada, em geral. Mostra-se que a segurança de uma utilização particular de um algoritmo criptográfico não depende somente do algoritmo criptográfico em si, mas igualmente da forma que ele é implementado, e de outros fatores tais como as características do dispositivo eletrônico encarregado de executá-lo.
[0005] É particularmente sabido que, quando um dispositivo eletrônico não protegido executa um software utilizando um algoritmo criptográfico de forma “inocente”, ou seja, de uma forma que se contenta a produzir o resultado numérico esperado segundo a especificação (tal como um resultado de codificação) a partir de uma entrada dada, é geralmente possível efetuar uma escuta passiva do dispositivo eletrônico e obter informações críticas sobre o desenvolvimento do algoritmo criptográfico. A escuta passiva apresenta a vantagem de ser não invasiva. O dispositivo eletrônico não é danificado, e seu proprietário não percebe necessariamente que ele foi atacado. Desta forma, o dispositivo pode ter sido roubado e rendido sem que seu proprietário suspeite disso, ou simplesmente utilizado na ausência do proprietário, ou até mesmo espionado na presença do proprietário, sem que este último perceba (por exemplo, por um módulo dissimulado entre o dispositivo eletrônico e sua alimentação elétrica). Assim, o proprietário de um dispositivo eletrônico do qual uma chave RSA privada foi extraída por um ataque não é levado a revogar seu par de chaves RSA (não há nenhuma razão para que pense que ele foi atacado). O responsável pelo ataque pode, em seguida, utilizar livremente a chave RSA privada até que o proprietário termine por se dar conta de que operações que ele não executou (por exemplo, transferências de fundos eletrônicos, ou de assinaturas eletrônicas de contratos), lhe foram alegadamente atribuídas, ou que um terceiro obteve acesso a informações confidenciais (por exemplo, um concorrente respondendo diversas vezes aos mesmos pedidos com uma diferença muito pequena do menor lance).
[0006] Uma escuta passiva pode consistir, por exemplo, em uma análise da radiação eletromagnética emitida pelo dispositivo durante a execução do software (por exemplo, na situação de um ataque do tipo TEMPEST, que se concentra, em geral, principalmente sobre a captura de telas catódicas, mas pode ser generalizado). De fato, a radiação eletromagnética de um dispositivo eletrônico, por exemplo, de um processador, depende do que este dispositivo está efetuando, por exemplo, de uma instrução que o processador está manipulando. É igualmente possível analisar outras informações, tais como o consumo elétrico instantâneo de um dispositivo eletrônico, e de distinguir desta forma as tarefas realizadas em função do consumo elétrico que elas requerem. Pode-se também medir as vibrações emitidas (certos componentes são suscetíveis a vibrar, e de uma maneira diferente de acordo com o que fazem), ou ainda as variações de temperatura, etc.
[0007] Uma escuta passiva pode igualmente compreender a medida de uma duração de execução de certas operações para tirar conclusões quando estas operações não são protegidas contra os ataques chamados de “timing attacks”. Por exemplo, uma operação de verificação de senha não protegida contra os “timing attacks” poderia comparar os bytes de uma senha esperada com uma senha submetida, byte por byte, e retornar um erro desde que um byte seja diferente. Um indivíduo executando um ataque poderia assim, por conta do tempo que a função de verificação de senha leva para responder que a senha está incorreta, deduzir que os N primeiros bytes estão corretos, e refazer uma tentativa de apresentação de senha modificando apenas o N+1-ésimo byte, isto até que o tempo de resposta se torne um pouco mais lento, o que seria o sinal de que o N+1-ésimo byte estaria agora correto, para assim passar ao N+2-ésimo byte, e assim sucessivamente até a obtenção da senha completa. Desta forma, para encontrar uma senha de comprimento K (em bytes), e isto mesmo se a senha for robusta (sem ataques por dicionário possíveis), passa-se de uma complexidade média de (1/2)*(28)k a uma complexidade média de K*27, o que é muito mais simples. Para evitar os “timing attacks”, é possível fazer com que todas as operações sensíveis tenham uma duração de execução constante, ou ainda que a duração, mesmo que variável, não mostre o que está acontecendo durante a operação. Contramedidas complementares são igualmente possíveis, particularmente no exemplo precedente, poderia-se bloquear a senha após certo número de tentativas incorretas (o que é feito habitualmente para os códigos PIN). Mas estas medidas complementares não são geralmente um substituto à proteção contra os “timing attacks”, mas simplesmente um complemento. Por exemplo, se supomos que um cartão bancário bloqueia um código PIN após cinco tentativas incorretas mas implementa uma verificação não protegida como descrito acima, uma pessoa (por exemplo, um adolescente, um empregado, etc) poderia roubar um cartão bancário (de sua mãe, de seu patrão, etc) toda a vez que seu proprietário legítimo efetuar uma transação, por exemplo, o pagamento de uma refeição de negócios no restaurante (o que reinicia o contador de tentativas incorretas), e fazer a cada vez quatro tentativas. Para um código PIN de quatro números decimais, seria preciso então em média vinte tentativas (ou seja, roubar o cartão cinco vezes), e no máximo quarenta tentativas para encontrar o código PIN, o que seria suficientemente fácil de ser executado.
[0008] Uma escuta passiva elementar pode consistir simplesmente em identificar uma característica dada em função de uma medida dada sobre o dispositivo eletrônico alvo. É o caso, por exemplo, dos ataques chamados de SPA (sigla para Simple Power Analysis). Por exemplo, durante uma exponenciação modular efetuada em uma implementação “inocente” do algoritmo RSA, o consumo elétrico é muito diferente quando um bit do expoente é igual a 1 (grande consumo) e quando este bit é igual a 0 (consumo mais baixo). De fato, nas implementações comuns, um bit igual a 1 implica ao mesmo tempo uma operação de elevar ao quadrado e uma operação de multiplicação (chamada de “square and multiply”) enquanto um bit igual a 0 implica apenas em uma operação de elevar ao quadrado. Pode-se assim, observando-se o traço do consumo elétrico durante a exponenciação modular, identificar as séries de 1 e de 0 do expoente, que correspondem às flutuações de consumo elétrico. No entanto, o expoente RSA, no caso em que se trata de um expoente privado, é um dado extremamente confidencial que constitui a chave privada RSA, que em geral não se espera que seja conhecido fora do dispositivo eletrônico. Obter a chave privada de assinatura de uma pessoa permite assim assinar em seu nome, obter sua chave privada de decodificação permite decodificar suas mensagens.
[0009] No entanto, as escutas (simples de serem utilizadas) não são sempre eficazes. Conhecem-se escutas mais elaboradas, tais como os ataques chamados de DPA (sigla para Differential Power Analysis), nos quais um indivíduo que executa o ataque executa um algoritmo criptográfico diversas vezes, e registra a cada vez os traços produzidos (por exemplo, os traços de consumo de energia). Em seguida, o indivíduo que executa o ataque efetua cálculos estatísticos com base nos múltiplos registros, e obtém informações de uma forma mais confiável e mais difícil de impedir.
[0010] Com o fim de se proteger destes ataques, é possível tornar seguro o próprio dispositivo eletrônico. Por exemplo, pode-se sobrepor um ruído sobre a alimentação elétrica de forma a tornar sua exploração mais difícil, suavizar o consumo elétrico (por exemplo, com capacitores), limitar as emissões eletromagnéticas por blindagens adequadas, etc. Pode-se também utilizar um relógio interno particular, possuindo como característica possuir uma frequência de funcionamento variável de maneira aleatória, o que torna as medidas difíceis de serem exploradas (as operações do algoritmo criptográfico sendo então efetuadas em uma cadência que não para de variar, e que é a priori desconhecida pelo indivíduo que executa o ataque). Existem igualmente outras técnicas, consistindo, por exemplo, em controlar o acesso físico e/ou o acesso lógico ao dispositivo eletrônico. Por exemplo, os cartões inteligentes utilizando os algoritmos criptográficos à chave privada protegem geralmente as operações afetadas por um código PIN. Assim, uma pessoa que roubasse temporariamente o cartão inteligente esperando extrair a chave privada e em seguida devolver o cartão ao seu proprietário sem que ele perceba, não poderia executar o algoritmo em questão sem apresentar o código PIN correto (que um usuário advertido o decora e não o comunica a ninguém), e não estaria então apto a efetuar o ataque.
[0011] Estas técnicas de contramedida são úteis, mas geralmente insuficientes sozinhas, pois não protegem contra todos os cenários de ataque. Outro método de proteção consiste em utilizar um processo para tornar seguro o algoritmo criptográfico, consistindo em implementar o algoritmo de uma maneira que gere o mínimo de flutuações (elétricas ou outras).
[0012] Por exemplo, é possível modificar a implementação de um algoritmo RSA utilizando uma chave privada de forma que ele efetue as operações possuindo a mesma assinatura (elétrica, eletromagnética, etc) quando houver um bit 1 ou um bit 0 no expoente privado da chave privada. Por exemplo, pode-se efetuar um “square and multiply” qualquer que seja, com o resultado da operação de multiplicação sendo utilizado apenas no caso em que o bit é igual a 1. Deve-se evidentemente ser muito atento, e se organizar para que a implementação seja tão simétrica quanto possível. Por exemplo, se houver um teste verificando que o resultado da multiplicação deve ou não ser utilizado, é preciso que este teste se comporte da mesma forma qualquer que seja seu resultado (ou pelo menos de uma maneira mais próxima quanto possível), senão uma escuta passiva poderia ter este teste como alvo de forma a determinar se tratava-se de um bit igual a 0 ou igual a 1.
[0013] Outro processo para aumentar a segurança (que pode ser complementar ao precedente) consiste em mascarar os dados sensíveis. Os dados sensíveis podem ser, por exemplo, chaves criptográficas, e/ou uma mensagem de entrada que deve, por exemplo, ser codificada pelo algoritmo criptográfico, e/ou certos dados intermediários manipulados durante a execução do algoritmo criptográfico. De fato, em certos casos, o indivíduo que executa o ataque pode conhecer ou até mesmo escolher uma mensagem de entrada a ser tratada pelo algoritmo criptográfico, e fazer predições muito mais precisas sobre o cálculo em curso. O fato de que a mensagem de entrada e/ou os dados intermediários são mascarados de uma maneira a priori imprevisível pelo indivíduo que executa o ataque lhe retira, desta forma, uma parte da informação e pode, assim, complicar singularmente o ataque. Além disso, por pouco que o mascaramento seja diferente em cada utilização do algoritmo criptográfico, a análise estatística pode ser complicada. Por exemplo, diversos processos de proteção por mascaramento do algoritmo AES foram propostos para se proteger dos ataques por canais escondidos. Uma solução tradicional é um mascaramento do tipo aditivo, onde os dados manipulados x são substituídos por dados mascarados x+m (+ designando aqui o ou exclusivo). Isso permite passar facilmente através das operações lineares do algoritmo. As tabelas (não lineares) de substituição S[] são então substituídas por tabelas mascaradas geradas em tempo real após o sorteio de uma nova máscara (ou todas préestocadas na memória, se a quantidade de memória permitir). Assim, uma operação não linear mascarada correspondente a uma tabela de substituição mascarada S’[], aplicada a um dado x mascarado por uma máscara aleatória m1 pode ser escrita sob a forma:
Y’ = S’[x + m1] = y + m2 = S[x] + m2
[0014] Com m2 sendo uma máscara aleatória correspondente, mascarando o valor de saída da tabela de substituição. Ao fim do algoritmo, desmascara-se o resultado para obter o resultado final (dado original codificado e não mascarado).
[0015] Os ataques conseguem às vezes, no entanto, superar as dificuldades induzidas pelos mascaramentos do estado da arte. Particularmente, certos ataques tais como os ataques HO-DPA (High Order Differential Power Analysis) podem se mostrar particularmente difíceis de serem evitados em certas circunstâncias. Isto é explicado particularmente no artigo “On Second-Order Differential Power Analysis” de Marc Joye, Pascal Paillier e Berry Schoenmakers, publicado em Cryptographic Hardware and Embedded Systems, CHES 2005, Lecture Notes in Computer Science 3659 (2005) 293-308, Springer-Verlag. Assim, quando o indivíduo que executa o ataque consegue correlacionar um consumo de potência (ou outra informação deste tipo) mais de uma vez por cálculo, ele pode às vezes superar o mascaramento.
[0016] A invenção tem por objetivo melhorar esta situação.
[0017] A invenção consiste em um processo para tornar segura a execução de um algoritmo criptográfico contra as escutas passivas, com o processo utilizando um mascaramento de dados tratados pelo algoritmo criptográfico. O mascaramento dos dados mencionados compreende uma etapa de transformação do tipo x’ = x*L + c, com x sendo um dado a ser mascarado (tal como um dado de entrada do algoritmo criptográfico, um dado sensível intermediário, ou ainda uma chave), x’ sendo um dado mascarado correspondente, c sendo uma palavra código compreendida em um código linear C, e L sendo uma matriz composta por vetores linearmente independentes não compreendidos no código linear C. O processo pode consistir em uma implementação modificada do algoritmo do algoritmo, por exemplo, em um algoritmo funcionalmente equivalente (ou seja, que produz a mesma saída para entradas idênticas), mas compreendendo em seu interior pelo menos uma etapa de mascaramento por transformação (tal como uma codificação linear) e pelo menos uma etapa correspondente de desmascaramento por decodificação. A implementação pode ser uma implementação em software. Pode igualmente se tratar de uma implementação sob forma eletrônica, por exemplo, uma implementação micro-codificada, uma implementação FPGA, uma implementação ASIC, ou ainda uma implementação por desenvolvimento de um circuito ad hoc. A implementação por software é geralmente a mais simples a colocar em prática, mas possui frequentemente menor desempenho em termos de velocidade de execução.
[0018] O processo é vantajoso, porque permite se proteger de forma mais eficaz contra os ataques por escuta passiva. Além disso, ao contrário do mascaramento tradicional (de tipo one-time pad), ele permite utilizar diversas vezes a mesma máscara. Utilizar diversas vezes a mesma máscara (em one-time pad) permite frequentemente a um indivíduo que executa o ataque de superar a máscara. Ao contrário, com o mascaramento proposto na invenção, pode-se utilizar diversas vezes a mesma máscara, enquanto o número de posições interceptadas estiver sob um contato de segurança dado.
[0019] O processo é igualmente vantajoso visto que a transformação do tipo x*L + c permite detectar certas falhas, essencialmente ao fim do algoritmo (mas é também possível efetuar uma detecção de falha durante a execução do algoritmo). De fato, se c for conhecido, à recepção de um resultado y, pode-se verificar que y + c é da forma x*L para certo x.
[0020] De acordo com uma modalidade, escolhe-se a palavra código c aleatoriamente em cada execução do algoritmo criptográfico. Modificar a palavra código c permite tornar mais complexo um ataque eventual, e é vantajoso não a reutilizar muito frequentemente.
[0021] De acordo com uma modalidade, escolhe-se a matriz L aleatoriamente uma única vez para todas as execuções do algoritmo criptográfico. Isto é vantajoso porque a geração desta matriz é tipicamente muito lenta e pode representar uma penalização do ponto de vista da velocidade de cálculo se for repetida muito frequentemente. Além disso, a palavra código c já adiciona certa variabilidade que torna o ataque muito complexo. Mudar de matriz L de tempos em tempos pode, no entanto, ser oportuno (maior segurança). Por exemplo, poderia-se desejar gerar uma nova matriz L a cada vez que se submete à tensão um dispositivo executando o processo de segurança, para os dispositivos que permanecem sob tensão geralmente durante muito tempo. No caso de um cartão inteligente típico, isso não seria muito pertinente, visto que os cartões inteligentes são raramente equipados de uma bateria ou outra fonte de energia elétrica, e são então tipicamente colocadas fora de tensão ao fim de cada transação (uma transação se concluindo geralmente por uma retirada do cartão inteligente de um terminal). Para um cartão inteligente, poderia-se prever um contador incrementado a cada vez que este fosse colocado sob tensão e gerar uma nova matriz a cada vez que o contador atingir certo limite (por exemplo, o valor 20). Poderia-se igualmente prever uma nova geração de matriz quando o cartão for utilizado em certos contextos. Por exemplo, quando um cartão bancário é completamente engolido por um caixa eletrônico, e quando a transação leva um tempo relevante, apenas por razões mecânicas de contagem das notas do banco, o tempo pode ser aproveitado para uma geração de matriz. Ou ainda, quando um cartão inteligente utilizando uma tecnologia sem contato para servir de título de transporte em transportes em comum (metrô/ônibus etc.) é recarregado, por exemplo, uma vez por mês. Ao contrário, durante uma transação rápida (por exemplo, a compra de uma baguete de pão com um cartão bancário sem contato em uma padaria, o pagamento de um pedágio em uma auto-estrada, ou a utilização de um cartão inteligente sem contato para passar em uma roleta de metrô), a geração de uma nova matriz não seria sem dúvida apropriada, a menos de colocar protocolos de comunicação muito mais rápidos do que os que conhecemos hoje. A discriminação das transações financeiras poderia ser feita, por exemplo, em função de seu montante (poderia-se, por exemplo, decidir que para uma transação inferior a 15 euros, é proibido gerar uma nova matriz). Poderia-se igualmente utilizar campos especiais para reconhecer os tipos de transações, no entanto, de acordo com o contexto, isso poderia implicar em mudanças de arquitetura proibitivas (por exemplo, ao nível de recursos informáticos bancários, fortemente normalizados em geral).
[0022] De acordo com uma modalidade, efetua-se o mascaramento (logo, a transformação) antes da execução do algoritmo criptográfico (a saber, o algoritmo criptográfico antes de se tornar seguro pelo processo de acordo com a invenção), e efetua-se uma operação de desmascaramento após a execução do algoritmo criptográfico. Isso é vantajoso, porque o algoritmo criptográfico opera então de modo mascarado do princípio ao fim. No entanto, é igualmente possível se concentrar apenas em certas partes do algoritmo criptográfico (mascarando somente, por exemplo, certas rotinas muito sensíveis). É possível mascarar apenas as operações lineares, reescritas em consequência (tipicamente, f’(x.L) = f(x).L), o que permite minimizar as modificações levadas ao algoritmo criptográfico, no entanto, a segurança é, algumas vezes, um pouco degradada. O desmascaramento pode ser feito por decodificação, por exemplo, pela aplicação de uma matriz de paridade do código linear.
[0023] De acordo com uma modalidade, o algoritmo criptográfico é um algoritmo executando uma operação não linear S (tal como uma S-Box do algoritmo DES ou de Blowfish, ou ainda uma operação não linear do algoritmo AES). Substitui-se a operação não linear S por uma operação não linear S’ tal como S’(x.L+c) = S(x).L + c’, com c’ sendo uma palavra código do código linear C. Na realidade, quase todos os algoritmos criptográficos executam operações não lineares, visto que um algoritmo linear possui propriedades de forma que é geralmente muito previsível, o que é tipicamente o contrário do que se espera de um algoritmo criptográfico. Por exemplo, se um algoritmo de codificação fosse linear, conheceria-se a codificação da soma de duas mensagens se fosse conhecida a codificação de cada uma das mensagens, o que é em princípio inaceitável. Esta modalidade é então útil se deseja-se tornar seguro um algoritmo criptográfico não linear do princípio ao fim, visto que ela permite resolver o problema do desmascaramento na presença de operações não lineares, caso que é muito frequente.
[0024] De acordo com uma modalidade, o algoritmo criptográfico compreende diversos laços, com cada laço compreendendo uma mesma operação não linear S, e a operação não linear S é substituída pela mesma operação não linear S’ de cada laço. Isso é vantajoso porque a substituição de uma operação não linear por uma outra, diferente em cada laço, é custosa em termos de desempenho, e conservar a mesma permite manter uma velocidade aceitável particularmente para dispositivos a recursos restritos, como cartões inteligentes de entrada possuindo apenas um processador muito lento e pouca memória.
[0025] Nas duas modalidades precedentes, poderia-se se organizar para determinar uma operação não linear S’ tal como c’ = c, o que simplifica a operação de desmascaramento. É necessário, em todos os casos, desmascarar o que foi mascarado para que o algoritmo criptográfico seguro produza o mesmo resultado que o algoritmo criptográfico antes de se tornar seguro.
[0026] A invenção se refere igualmente a um dispositivo eletrônico compreendendo uma unidade de execução do algoritmo criptográfico, assim como um módulo de mascaramento associado. O módulo de mascaramento é organizado para executar uma transformação do tipo x’ = x.L + c, com x sendo um dado a ser mascarado, x’ sendo um dado mascarado correspondente, c sendo uma palavra código compreendida em um código linear C, e L sendo uma matriz composta de vetores linearmente independentes não compreendidos no código linear C.
[0027] As modalidades descritas anteriormente para o processo podem ser transpostas ao dispositivo, em particular de acordo com uma modalidade, o módulo de mascaramento é organizado para escolher a palavra código c aleatoriamente em cada execução do algoritmo criptográfico. De acordo com uma modalidade, o módulo de mascaramento é organizado para escolher a matriz L aleatoriamente uma única vez para todas as execuções do algoritmo criptográfico. De acordo com uma modalidade, o módulo de mascaramento é organizado para efetuar o mascaramento antes da execução do algoritmo criptográfico, e para efetuar uma operação de desmascaramento após a execução do algoritmo criptográfico. De acordo com uma modalidade, o algoritmo criptográfico da unidade de execução é um algoritmo executando uma operação não linear S, e o módulo de mascaramento é arranjado para substituir a operação não linear S por uma operação não linear S’ tal como S’(x.L+c) = S(x).L+c’, com c’ sendo uma palavra código do código linear C. De acordo com uma modalidade, o algoritmo criptográfico da unidade de execução compreende diversos laços, com cada laço compreendendo uma mesma operação não linear S, e o módulo de mascaramento é arranjado para substituir a operação não linear S pela mesma operação não linear S’ durante cada laço. De acordo com uma modalidade possível das duas modalidades anteriores, c’=c.
[0028] Outros aspectos, objetivos e vantagens da invenção aparecerão na leitura da descrição de uma de suas modalidades.
[0029] A invenção será igualmente melhor compreendida com o auxílio dos desenhos, nos quais:
a figura 1 ilustra um processo de acordo com a invenção
a figura 2 ilustra um dispositivo de acordo com a invenção assim como um equipamento para tentar submeter este dispositivo a um ataque.
[0030] A figura 1 mostra de forma muito esquemática um processo de acordo com a invenção. De acordo com este processo, começa-se a mascarar um dado CL_TXT (do inglês “clear test”, ou texto claro), por exemplo, um dado a codificar, durante uma etapa MSK, e em seguida executa-se o algoritmo criptográfico ALG a ser protegido (por exemplo, um algoritmo de codificação tal como o AES), em seguida, enfim, desmascara-se o resultado (etapa U_MSK, do inglês “desmascarar”) afim de reencontrar o valor CR_TXT (do inglês “cipher text”, ou seja, um texto codificado) que teria sido normalmente produzido pelo algoritmo criptográfico ALG na ausência de mascaramento. Dito de outra forma, se as duas etapas de mascaramento MSK por código linear e de desmascaramento U_MSK (por decodificação correspondente) forem suprimidas, para conservar apenas o algoritmo criptográfico ALG, obtém-se a mesma saída CR_TXT a partir da entrada CL_TXT, o que significa que o algoritmo torna-se seguro por mascaramento sem afetar sua interoperabilidade. Podem-se integrar as operações de mascaramento MSK e de desmascaramento U_MSK no algoritmo criptográfico e obter, desta forma, uma implementação particular do algoritmo criptográfico ALG funcionalmente idêntica às do estado da arte, mas muito mais segura contra os ataques por escutas passivas, e em particular as mais elaboradas entre elas, como os ataques HODPA. A representação da figura 1 é simplificada na medida em que nos casos mais frequentes, não é exatamente o algoritmo criptográfico ALG conhecido que é executado na etapa ALG, mas uma versão modificada deste algoritmo, afim de permitir o mascaramento/desmascaramento na presença de operações não lineares.
[0031] A figura 2 mostra um cartão inteligente SC (do inglês “smart card”) de acordo com a invenção. Um cartão inteligente é um exemplo possível de dispositivo para o qual a invenção é particularmente vantajosa, levando em consideração suas numerosas aplicações no campo da criptografia (cartas SIM autenticando um usuário de celular para um operador, cartão bancário autenticando o portador durante uma transação financeira, cartões de saúde, etc.). No entanto, a invenção se aplica a qualquer outro dispositivo portátil, tal como um passaporte eletrônico, um visto eletrônico, uma carta de habilitação eletrônica, um pen drive seguro, um cartão MMC seguro, uma ficha segura (token), etc. A invenção pode igualmente ser utilizada em um computador pessoal, um servidor, um acelerador SSL, etc. A maioria dos computadores pessoais não é segura, em comparação com um dispositivo seguro como um cartão inteligente. Isso torna estes computadores vulneráveis a ataques muito mais simples de serem executados do que os ataques contra os quais a invenção permite proteger, tais como os ataques puramente de softwares. Os ataques de softwares (por vírus, cavalos de Troia, etc) podem frequentemente ser feitos à distância, sem necessidade de nenhum acesso físico. Poderia parecer absurdo procurar se proteger contra ataques complexos do tipo escutas passivas enquanto um ataque de outro continente poderia tomar o controle do computador à distância e extrair informações críticas de maneira bem mais simples e bem menos perigosa para ele (sem intrusão, sem roubo de dispositivo, etc.). No entanto, computadores pessoais (por exemplo, nos ambientes militares) são fortemente seguros contra os ataques puramente de software, e nesse contexto, protegê-los igualmente contra ataques por escutas passivas é vantajoso.
[0032] A figura 2 mostra igualmente um falso cartão inteligente FSC (“fake smart card” em inglês), que é de fato apenas um conector possuindo a forma de um cartão inteligente e possuindo contatos elétricos em posições normalizadas, com estes contatos estando conectados aos contatos correspondentes do verdadeiro cartão inteligente SC através de um equipamento HODPA permitindo um ataque de tipo HODPA. O equipamento HODPA se liga assim em série entre o verdadeiro cartão inteligente SC tomado como alvo por um ataque, e um cartão FSC falso realizando a interface física entre o terminal que supostamente acolheria o verdadeiro cartão inteligente SC e este verdadeiro cartão inteligente SC. O objetivo do falso cartão inteligente FSC é, neste exemplo, poder espionar um consumo de corrente do cartão inteligente SC sem precisar modificar o terminal que utiliza o cartão (e em particular o leitor do cartão inteligente). De acordo com a invenção, o cartão inteligente SC é mais resistente aos ataques deste tipo e é muito difícil para o equipamento HODPA extrair as informações alvo do cartão inteligente SC.
[0033] Com a invenção baseando-se na utilização de um código linear, é útil lembrar que um código linear é um tipo particular de códigos corretores de erros. Um código linear C é um subespaço vetorial de um espaço vetorial Fq n de dimensão n, com Fq sendo o corpo finito de q elementos. Pode se tratar do corpo F2 (q=2), neste caso, dizemos que o código linear é um código binário. Nota-se como n-k a dimensão do subespaço vetorial correspondendo ao código linear C. O código linear C é definido por uma matriz geradora podendo ser chamada de G. O elemento c (e mais geralmente todo o elemento do código C) pode se decompor sob a forma da combinação linear c = m1v1 + m2v2 + ... + mn-kvn-k de uma base de vetores (v1, v2, ..., vn-k), ou seja, c = mG, com m = (m1, m2, ..., mn-k), G sendo a matriz geradora (de tamanho (n-k)*n). Define-se igualmente uma matriz de paridade H de tamanho n*k, tal que para todo elemento c do código linear C, c.H = 0, e reciprocamente, se c.H = 0 então c é um elemento do código linear C.
[0034] Em geral, m representa uma mensagem codificada pelo código linear C. No entanto, no contexto da invenção, a palavra código c não precisa representar uma mensagem particular. Assim, pode ser sorteada aleatoriamente, de uma maneira similar ao que se pratica na codificação empregada por um canal de escuta (em inglês, “wiretap channel”). No contexto de um canal de escuta, procura-se transmitir uma mensagem de um emissor a um receptor, na presença de um espião potencial capaz de interceptar as comunicações. Assume-se por hipótese que o canal de transmissão não é perfeito. Organiza-se de forma que a codificação do canal seja tal que, levando em consideração a taxa de erro binário ao nível da mensagem interceptada, este último não possa ser decodificado pelo indivíduo realizando o ataque, enquanto que, levando em consideração a taxa de erro binário ao nível do receptor, a mensagem recebida ao nível do receptor possa ser decodificada.
[0035] De acordo com uma modalidade da invenção, os dados protegidos pelo código linear são utilizados apenas de forma interna ao algoritmo criptográfico. Não há então a noção de emissor legítimo nem de receptor legítimo do dado protegido por uma codificação para um canal de escuta, nem a noção de taxa de erro. O código linear é utilizado no interior do cálculo de um algoritmo criptográfico, que não possui em geral necessidade de se comunicar com outras entidades durante a execução do próprio algoritmo. Isso não exclui, se o dispositivo for multitarefa, que o dispositivo se comunique com o exterior ao mesmo tempo em que ele executa o algoritmo criptográfico. Isso não exclui tampouco que um dispositivo utilize um protocolo seguro (tal como um protocolo de troca de chave, por exemplo, do tipo Diffie-Hellman, ou baseado na criptografia simétrica), no qual sucessões de operações criptográficas são efetuadas por duas partes, que trocam resultados durante o protocolo seguro com o propósito de chegar, por exemplo, a uma chave comum ao fim do protocolo seguro. Neste contexto, a invenção pode ser utilizada para proteger cada operação criptográfica efetuada no protocolo. Por abuso de linguagem, é possível falar em algoritmo criptográfico falando-se de um protocolo seguro tal como definido acima, no entanto, no sentido da invenção, não se trata de um algoritmo criptográfico, mas de um protocolo executando uma sucessão de algoritmos criptográficos. No interior de um algoritmo criptográfico modificado, não há em geral emissão voluntária dos dados protegidos pela codificação do canal através de um canal de comunicação qualquer. Em princípio, não há então qualquer perda de dados, a menos, por exemplo, de estar na presença de um ataque por falhas (tal como um ataque DFA), ou de executar o algoritmo criptográfico em um dispositivo eletrônico defeituoso. Desconsiderando-se estas situações particulares, pode-se então considerar que há um canal virtual (visto que, na realidade, não há realmente transmissão de dados mascarados) perfeito. No entanto, para o indivíduo que realiza o ataque tentando executar um ataque por escuta passiva, existe um canal de transmissão, que é o canal escondido utilizado (por exemplo, emissões eletromagnéticas ou consumo de corrente, espionado(s) por um ataque HODPA). Este canal não é perfeito, pode-se mesmo considerar que, em geral, possui geralmente ruídos e perturbações por conta das diversas contramedidas que estão tipicamente presentes nos dispositivos eletrônicos.
[0036] De acordo com uma modalidade, com o fim de manipular um dado sensível x de k bits no interior de um algoritmo criptográfico tolerando-se uma fuga em pelo menos mu bits, procede-se da seguinte forma:
[0037] Fixa-se um código linear C de matriz geradora G de tamanho (n-k)*n e de matriz de paridade H de tamanho n*k tal que todas estas submatrizes de tamanho (n-mu)*k (a saber, as submatrizes possuindo (n-mu) linhas e k colunas) sejam de rank k,
[0038] Fixa-se L1, L2, ..., Lk k vetores linearmente independentes de n bits e não compreendidos no código linear C,
[0039] Escolhe-se c=mG, uma palavra código escolhida aleatoriamente,
[0040] Codifica-se então o dado sensível x, representado sob a forma de um vetor (x1, x2, ..., xk), como x' = x.L + c, com x.L = x1.L1 + ... + xk.Lk. No caso de um código linear C que é um código binário (corpo F2), a operação “+” pode tipicamente ser uma operação de ou exclusivo.
[0041] Esta modalidade é vantajosa, porque permite tolerar um número de bits de fuga até mu = n-k com n arbitrariamente grande.
[0042] O dado sensível x pode ser, por exemplo, um dado em claro CL_TXT que procura-se codificar com o auxílio do algoritmo criptográfico ALG a ser protegido. No entanto, pode-se igualmente tratar-se de outras informações, por exemplo, pode-se tratar de uma chave criptográfica manipulada durante o algoritmo criptográfico ALG, ou de uma subchave tal como uma chave de laço. Pode-se igualmente tratar-se de um dado codificado a ser decodificado pelo algoritmo criptográfico ALG (por exemplo, um algoritmo AES), de um dado (em claro ou codificado) que deseja-se assinar, ou de um dado assinado que deseja-se verificar a assinatura, etc.
[0043] Estando dada uma matriz geradora G do código linear C, escolher aleatoriamente uma palavra c do código linear C pode simplesmente consistir em escolher aleatoriamente um vetor m no espaço vetorial Fqn-k, e em seguida calcular c=mG. Isso pode ser feito em cada utilização do algoritmo criptográfico.
[0044] Com o fim de determinar os k vetores linearmente independentes L1, L2, ..., Lk não compreendidos no código linear C que compõem a matriz L, pode-se escolher aleatoriamente um primeiro vetor Ltest, em seguida verificar se este vetor está no código aplicando a ele a matriz de paridade H (ou seja, calculando LtestH). Se o resultado for nulo, então o vetor Ltest está no código linear C e recomeça-se escolhendo novamente um vetor aleatório. Caso contrário, define-se L1 = Ltest e recomeça-se uma geração de vetor Ltest até que se encontre novamente um vetor que não está no código linear C, em seguida pode-se executar um algoritmo tal como um algoritmo de pivoteamento de Gauss para determinar se os vetores gerados até o momento (para o instante L1 e o último Ltest) são ligados. Se eles forem, abandona-se o último vetor gerado Ltest e escolhe-se o mesmo de novo aleatoriamente (até que encontre-se um vetor Ltest que não esteja no código linear C). Senão, define-se L2=Ltest e escolhe-se um novo vetor aleatório Ltest, até que ele não esteja no código linear, em seguida calcula-se um pivô de Gauss sobre a base de todos os vetores gerados até o momento (L1 e L2, que sabemos por construção que não são ligados, mais o último Ltest), e assim por diante até que haja k vetores independentes. Os k vetores linearmente independentes L1, L2, ..., Lk podem ser escolhidos uma vez para todos para cada dispositivo alvo. Por exemplo, para um cartão inteligente, os vetores poderiam ser calculados (de forma distinta) para cada cartão inteligente durante a etapa chamada de personalização deste cartão inteligente. Eles podem igualmente ser gerados novamente de tempos em tempos, como já foi explicado anteriormente.
[0045] A invenção é particularmente vantajosa no contexto dos algoritmos de codificação/ decodificação simétrica tais como o algoritmo AES.
[0046] As grandes etapas de um algoritmo AES convencional (muito conhecido no estado da técnica) são:
1. AddRK(K0) = AddRoundKey(K0)
2. Para i de 1 a 9:
  • (a) S = SubBytes;
  • (b) SR = ShiftRows;
  • (c) MC = MixColumns;
  • (d) AddRK(Ki).
3. S;
4. SR;
5. AddRK(K10)
[0047] Assim, após ter realizado, em uma etapa preliminar não representada acima, uma operação de “key expansion” durante a qual derivam-se as chaves de laço K0 ... K10 a partir de uma chave de codificação dada, reconhece-se a operação AddRoundKey que consiste em combinar cada byte do estado com uma chave de laço (com o auxílio de um ou exclusivo). Reconhece-se em seguida uma sucessão de novos laços, com cada laço compreendendo a operação SubBytes (que é uma operação não linear durante a qual cada byte é substituído por outro em função de uma tabela), a operação ShiftRows, que realiza uma transposição durante a qual cada linha da matriz de estado é deslocada ciclicamente, a operação MixColumns (que realiza em cada coluna da matriz de estado uma combinação dos quatro bytes da coluna), e enfim a operação AddRoundKey já descrita. Na saída dos novos laços, o algoritmo AES executa ainda a operação SubBytes, seguida da operação ShiftRows, e depois disso da operação AddRoundKey.
[0048] De acordo com uma modalidade, protege-se o algoritmo AES do início ao fim da seguinte forma.
[0049] Efetua-se primeiramente uma pré-configuração. De fato, ao contrário do caso do mascaramento aditivo clássico do estado da arte, somos levados a trabalhar sobre variáveis intermediárias em uma dimensão diferente daquela utilizada para as variáveis intermediárias do algoritmo AES clássico. Esta pré-configuração pode ser efetuada apenas uma vez para todos (ou seja, uma única vez independente do número de vezes que o algoritmo AES será posteriormente utilizado). A préconfiguração consiste, por exemplo, em gerar novas operações AddRK’, SR’ e MC’ tais que
AddRK’(K) = AddRK(K).L
SR’(x.L) = SR(x).L
MC’(x.L) = MC(x).L
[0050] Estes cálculos são fáceis de serem efetuados (e, desta forma, pouco custosos em desempenho) visto que as operações são lineares. Esta etapa de préconfiguração pode ser efetuada, por exemplo, de fábrica, durante uma etapa de mascaramento de um componente elétrico levado a utilizar essa modalidade, com as operações modificadas AddRK’, SR’ e MC’ se encontrando então, por exemplo, em memória ROM, no interior de um sistema operacional de cartão inteligente. É igualmente possível realizar estas operações AddRK’, SR’ e MC’ sob forma eletrônica (por exemplo, em lógica com fios), o que apresenta geralmente a vantagem de um funcionamento mais rápido do que quando passa-se pelo intermediário de um software executado por um processador.
[0051] Em seguida, efetua-se uma etapa preliminar a cada mudança de máscaras (isso pode ser feito, por exemplo, a cada utilização do algoritmo AES, ou menos frequentemente, em particular se foi escolhido um parâmetro n suficientemente grande). A etapa preliminar pode consistir, por exemplo, em escolher aleatoriamente duas palavras código c e c’ e em gerar S’ tal que S’(x.L + c) = S(x).L + c’ para todo x (aqui a mesma S’ é utilizada a cada laço/rodada do algoritmo por razões de desempenho, no entanto, poderia-se utilizar um S’ diferente para cada laço, o que permitiria em geral aumentar ligeiramente a segurança).
[0052] Enfim, efetua-se a etapa de codificação de um dado x pelo algoritmo AES modificado de acordo com a invenção da seguinte maneira.
1. Cálculo de x.L + c a partir de x
2. AddRK’(K0)
3. Para i indo de 1 a 9:
  • (a) S’;
  • (b) SR’;
  • (c) MC’;
  • (d) AddRK’(Ki)
  • (e) x = x + c + MC’(SR’(c’))
4. S’;
5. SR’;
6. AddRK’(K10).
7. Aplicar a matriz de paridade H para obter o resultado final
[0053] Assim, na etapa 0, efetua-se um mascaramento com o auxílio de um código linear. Na etapa 2(e) corrige-se o mascaramento para considerar o fato de que a operação não linear utiliza uma constante c’ diferente daquela (constante c) utilizada durante o mascaramento inicial na etapa 0. Na etapa 6, efetua-se uma projeção do dado resultante graças à matriz de paridade. Isto elimina todas as componentes que se encontram no código linear, e recupera-se assim os dados que teriam sido produzidos pelo algoritmo AES na ausência do mascaramento. Na etapa 6, após a aplicação da matriz de paridade H, pode-se proceder à inversão da matriz resultante (x.L).H.
[0054] Pode-se igualmente adicionar uma máscara (outra palavra código) sobre as operações que utilizam a chave (em particular, a operação AddRK’), o que reforça ainda o mascaramento tornando-o mais difícil de ser atacado. Neste caso, pode-se efetuar a etapa de codificação de um dado x pelo algoritmo AES modificado de acordo com a invenção da maneira a seguir.
0. Cálculo de x.L + c1 a partir de x, com c1 sendo uma palavra código aleatória
1. AddRK’(K0) + c2, com c1 + c2 = c
2. Para i indo de 1 a 9:
  • (a) S’;
  • (b) SR’;
  • (c) MC’;
  • (d) AddRK’(Ki) + c2
  • (e) x = x + c1 + MC’(SR’(c’))
3. S’;
4. SR’;
5. AddRK’(K10) + c3, com c3 aleatório.
6. Aplicar a matriz de paridade H para obter o resultado final
[0055] O código pode ser escolhido de forma a minimizar a operação (e).
[0056] Em certas configurações, no lugar de efetuar a etapa (e): x = x + c + MC’(SR’(c’)), é possível aplicar à etapa (e) uma função D(x,c) possuindo como entrada x e a palavra código c mas que não possui como entrada a palavra c’. Isso pode ser feito, por exemplo, utilizando-se uma matriz de paridade associada ao código compreendendo todos os MC’(SR’(cc)), onde cc percorre o conjunto de palavras do código de partida. A vantagem desta modalidade é que permite evitar a necessidade de conservar o valor c’.
[0057] Um exemplo simples de utilização (onde em particular SR’ e MC’ são deduzidos diretamente de SR e MC) corresponde ao caso em que x.L vale [x,0 ... 0] (x seguido de n-k zeros).
[0058] Deve-se ter claro que a presente invenção não é limitada à modalidade descrita anteriormente a título de exemplo; ela se estende a outras variantes.
[0059] Assim, foi descrito anteriormente um processo para tornar segura uma etapa de codificação AES, mas é possível tornar segura, da mesma forma, uma etapa de decodificação AES. Além disso, a modalidade descrita se relaciona ao algoritmo AES, mas a invenção se aplica a todo o tipo de algoritmos criptográficos, e em particular ao algoritmo DES (e sua variante 3DES) e ao algoritmo RC4, mas igualmente a algoritmos assimétricos ou a funções de hash (tais como SHA-1, MD5, SHA-256 ou RIPEMD-160) em que pode-se desejar proteger particularmente certas subfunções lineares.
[0060] Além disso, o processo de acordo com a invenção não exclui a utilização de outros processos. Por exemplo, é possível combinar o processo de acordo com a invenção com outras contramedidas tais como o mascaramento aditivo de acordo com o estado da arte. Pode-se, por exemplo, classificar os dados manipulados por nível de sensibilidade, e proteger os menos sensíveis dos dados sensíveis por um simples mascaramento aditivo, os dados suficientemente sensíveis por um mascaramento de acordo com a invenção, e os dados mais sensíveis por um duplo mascaramento dos dados (ao mesmo tempo por um mascaramento aditivo clássico e por um mascaramento de acordo com a invenção). Todas as combinações são possíveis.

Claims (14)

  1. Processo para segurança de execução de um algoritmo criptográfico (ALG) contra escutas passivas, com o processo utilizando um mascaramento (MSK) de dados tratados pelo algoritmo criptográfico (ALG), caracterizado pelo fato de que o mascaramento (MSK) dos dados mencionados compreende uma etapa de transformação do tipo x’ = x.L + c, com x sendo um dado a ser mascarado (CL_TXT), x’ sendo um dado mascarado correspondente, c sendo uma palavra código compreendida em um código linear C, e L sendo uma matriz composta de vetores linearmente independentes não compreendidos no código linear C.
  2. Processo para segurança de acordo com a reivindicação 1, caracterizado pelo fato de que a palavra código c é escolhida aleatoriamente a cada execução do algoritmo criptográfico (ALG).
  3. Processo para segurança de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que a matriz L é escolhida aleatoriamente uma única vez para todas as execuções do algoritmo criptográfico (ALG).
  4. Processo para segurança de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o mascaramento é efetuado antes da utilização do algoritmo criptográfico (ALG), e uma operação de desmascaramento (U_MSK) é efetuada após a utilização do algoritmo criptográfico.
  5. Processo para segurança de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o algoritmo criptográfico (ALG) é um algoritmo que utiliza uma operação não linear S, com a operação não linear S sendo substituída por uma operação não linear S’ tal que S’(x.L+c) = S(x)+c’, com c’ sendo uma palavra código do código linear C.
  6. Processo para segurança de acordo com a reivindicação 5, caracterizado pelo fato de que o algoritmo criptográfico (ALG) compreende diversos laços, cada laço compreendendo uma mesma operação não linear S, com a operação não linear S sendo substituída pela mesma operação não linear S’ em cada laço.
  7. Processo para segurança de acordo com as reivindicações 5 ou 6, caracterizado pelo fato de que c’ = c.
  8. Dispositivo eletrônico (SC) compreendendo uma unidade de execução de algoritmo criptográfico assim como um módulo de mascaramento associado, caracterizado pelo fato de que o módulo de mascaramento é organizado para executar uma transformação do tipo x’ = x.L+c, com x sendo um dado a ser mascarado, x’ sendo um dado mascarado correspondente, c sendo uma palavra código compreendida em um código linear C, e L sendo uma matriz composta por vetores linearmente independentes não compreendidos no código linear C.
  9. Dispositivo eletrônico (SC) de acordo com a reivindicação 8, caracterizado pelo fato de que o módulo de mascaramento é organizado para escolher a palavra código c aleatoriamente a cada execução do algoritmo criptográfico (ALG).
  10. Dispositivo eletrônico (SC) de acordo com as reivindicações 8 ou 9, caracterizado pelo fato de que o módulo de mascaramento é organizado para escolher a matriz L aleatoriamente uma única vez para todas as execuções do algoritmo criptográfico (ALG).
  11. Dispositivo eletrônico (SC) de acordo com qualquer uma das reivindicações de 8 a 10, caracterizado pelo fato de que o módulo de mascaramento é organizado para efetuar o mascaramento (MSK) antes da execução do algoritmo criptográfico (ALG), e para efetuar uma operação de desmascaramento (U_MSK) após a execução do algoritmo criptográfico (ALG).
  12. Dispositivo eletrônico (SC) de acordo com qualquer uma das reivindicações de 8 a 11, caracterizado pelo fato de que o algoritmo criptográfico (ALG) da unidade de execução é um algoritmo que utiliza uma operação não linear S, e no qual o módulo de mascaramento é organizado para substituir a operação não linear S por uma operação não linear S’ tal que S’(x.L+c) = S(x).L+c’, com c’ sendo uma palavra código do código linear C.
  13. Dispositivo eletrônico (SC) de acordo de acordo com a reivindicação 12, caracterizado pelo fato de que o algoritmo criptográfico (ALG) da unidade de execução compreende diversos laços, com cada laço compreendendo uma mesma operação não linear S, e pelo fato de que o módulo de mascaramento é organizado para substituir a operação não linear S pela mesma operação não linear S’ em cada laço.
  14. Dispositivo eletrônico (SC) de acordo com as reivindicações 12 ou 13, caracterizado pelo fato de que c’=c.
BR112013012216-1A 2010-11-08 2011-11-08 proteção contra as escutas passivas BR112013012216B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1059208 2010-11-08
FR1059208A FR2967322B1 (fr) 2010-11-08 2010-11-08 Protection contre les ecoutes passives
PCT/FR2011/052602 WO2012062994A1 (fr) 2010-11-08 2011-11-08 Protection contre les ecoutes passives

Publications (2)

Publication Number Publication Date
BR112013012216A2 BR112013012216A2 (pt) 2016-08-09
BR112013012216B1 true BR112013012216B1 (pt) 2021-01-26

Family

ID=44168939

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112013012216-1A BR112013012216B1 (pt) 2010-11-08 2011-11-08 proteção contra as escutas passivas

Country Status (12)

Country Link
US (1) US9847879B2 (pt)
EP (1) EP2638660B1 (pt)
CN (1) CN103404073B (pt)
AU (1) AU2011327986B2 (pt)
BR (1) BR112013012216B1 (pt)
CA (1) CA2816933C (pt)
FR (1) FR2967322B1 (pt)
IL (1) IL226229A (pt)
MY (1) MY160671A (pt)
RU (1) RU2579990C2 (pt)
SG (1) SG190188A1 (pt)
WO (1) WO2012062994A1 (pt)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2995111B1 (fr) * 2012-09-04 2015-07-24 Morpho Protection contre canaux auxiliaires
EP3246899A1 (en) * 2015-01-15 2017-11-22 Mitsubishi Electric Corporation Random number expanding device, random number expanding method, and random number expanding program
CN106254382B (zh) * 2016-09-13 2020-02-18 浙江宇视科技有限公司 媒体数据的处理方法及装置
CN107466453B (zh) * 2017-03-16 2020-11-24 深圳大趋智能科技有限公司 Des软件防dpa攻击的方法及装置
EP3557471B1 (en) 2018-04-20 2022-08-03 ARM Limited Power rail noise monitoring to detect attempted security tampering or side channel attacks
CN109617667B (zh) * 2018-09-17 2020-09-29 中国科学院信息工程研究所 一种针对aes算法线性部分的高效掩码防护方法
FR3095709B1 (fr) * 2019-05-03 2021-09-17 Commissariat Energie Atomique Procédé et système de masquage pour la cryptographie
US11640276B2 (en) 2020-11-17 2023-05-02 Kyndryl, Inc. Mask device for a listening device

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7292693B1 (en) * 1998-08-13 2007-11-06 Teledyne Technologies Incorporated Deterministically generating block substitution tables which meet a given standard of nonlinearity
DE19940341A1 (de) * 1999-08-25 2001-03-01 Kolja Vogel Verfahren zum Schutz von Daten
FR2820577B1 (fr) * 2001-02-08 2003-06-13 St Microelectronics Sa Procede securise de calcul cryptographique a cle secrete et composant mettant en oeuvre un tel procede
US7899190B2 (en) * 2004-04-16 2011-03-01 Research In Motion Limited Security countermeasures for power analysis attacks
US20060002548A1 (en) * 2004-06-04 2006-01-05 Chu Hon F Method and system for implementing substitution boxes (S-boxes) for advanced encryption standard (AES)
FR2875318A1 (fr) * 2004-09-15 2006-03-17 St Microelectronics Sa Protection d'un algorithme des
WO2008064704A1 (en) * 2006-11-30 2008-06-05 Telecom Italia S.P.A Method and device for preventing information leakage attacks on a device implementing a cryptographic function
US7970129B2 (en) * 2007-04-19 2011-06-28 Spansion Llc Selection of a lookup table with data masked with a combination of an additive and multiplicative mask
US8582765B2 (en) * 2007-08-01 2013-11-12 Stmicroelectronics S.A. Masking of data in a calculation
FR2941342B1 (fr) * 2009-01-20 2011-05-20 Groupe Des Ecoles De Telecommunications Get Ecole Nat Superieure Des Telecommunications Enst Circuit de cryptographie protege contre les attaques en observation, notamment d'ordre eleve.

Also Published As

Publication number Publication date
IL226229A (en) 2017-03-30
CA2816933C (fr) 2018-06-12
FR2967322B1 (fr) 2012-12-28
MY160671A (en) 2017-03-15
EP2638660A1 (fr) 2013-09-18
FR2967322A1 (fr) 2012-05-11
CN103404073A (zh) 2013-11-20
AU2011327986B2 (en) 2016-08-18
CA2816933A1 (fr) 2012-05-18
EP2638660B1 (fr) 2015-01-07
CN103404073B (zh) 2016-09-07
SG190188A1 (en) 2013-06-28
WO2012062994A1 (fr) 2012-05-18
RU2579990C2 (ru) 2016-04-10
AU2011327986A1 (en) 2013-05-30
US20130230170A1 (en) 2013-09-05
US9847879B2 (en) 2017-12-19
IL226229A0 (en) 2013-07-31
BR112013012216A2 (pt) 2016-08-09
RU2013126539A (ru) 2014-12-20

Similar Documents

Publication Publication Date Title
Al-Zubaidie et al. Efficient and secure ECDSA algorithm and its applications: A survey
Barenghi et al. Fault injection attacks on cryptographic devices: Theory, practice, and countermeasures
BR112013012216B1 (pt) proteção contra as escutas passivas
US9571289B2 (en) Methods and systems for glitch-resistant cryptographic signing
US11151290B2 (en) Tamper-resistant component networks
JPH10154976A (ja) タンパーフリー装置
CN105406957B (zh) 保护密码设备对抗实现攻击
Konigsmark et al. System-of-PUFs: Multilevel security for embedded systems
Lounis et al. Lessons learned: Analysis of PUF-based authentication protocols for IoT
CN106100823B (zh) 保护密码装置
Quadir et al. Embedded systems authentication and encryption using strong puf modeling
JP4386766B2 (ja) データ処理装置における誤り検出
Fahr The Effects of Side-Channel Attacks on Post-Quantum Cryptography: Influencing FrodoKEM Key Generation Using the Rowhammer Exploit
Elganzoury et al. A new secure one-time password algorithm for mobile applications
Akram et al. Remote attestation mechanism for user centric smart cards using pseudorandom number generators
US11206126B2 (en) Cryptographic scheme with fault injection attack countermeasure
Liu et al. Improving tag generation for memory data authentication in embedded processor systems
Iavich et al. Investigating CRYSTALS-Kyber Vulnerabilities: Attack Analysis and Mitigation
US10305678B2 (en) Imbalanced montgomery ladder
Drăguşin et al. A Brief Overview Of Current Encryption Techniques Used In Embedded Systems: Present And Future Technologies
Wan et al. Improved differential fault attack against SIMECK based on two-bit fault model
Breier et al. Introduction to fault analysis in cryptography
Zhang et al. Revisiting and Evaluating Software Side-channel Vulnerabilities and Countermeasures in Cryptographic Applications
Rivain On the physical security of cryptographic implementations
US20240020383A1 (en) Method and circuit for protecting an electronic device from a side-channel attack

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]
B15K Others concerning applications: alteration of classification

Free format text: A CLASSIFICACAO ANTERIOR ERA: H04L 9/06

Ipc: H04L 9/30 (2006.01)

B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 08/11/2011, OBSERVADAS AS CONDICOES LEGAIS.

B25G Requested change of headquarter approved

Owner name: MORPHO (FR)

B25D Requested change of name of applicant approved

Owner name: SAFRAN IDENTITY AND SECURITY (FR)

B25D Requested change of name of applicant approved

Owner name: IDEMIA IDENTITY AND SECURITY FRANCE (FR)