• Nenhum resultado encontrado

2. Análise

2.3. Análise de múltiplas countermeasures aplicadas ao AES

As vulnerabilidades atrás descritas levaram a comunidade a pesquisar métodos para evitarem a exposição de informação através do side-channel. Esses esforços foram desenvolvidos em dois sentidos diferentes, um no de tentar tornar aleatória a informação oferecida pela fuga de

26

informação, o outro foi no de tentar equalizar a saída de forma a que esta não cedesse qualquer tipo de informação.

A opção pelo método baseado em tornar aleatória a informação cedida pelo side-channel exige a alteração do fluxo de execução do algoritmo, acrescentando e retirando valores aleatórios ao longo do processo de encriptação ou de desencriptação.

Estes processos são extensivamente discutidos e descritos em artigos como [25], [13], [14], [26], oferecendo distintas abordagens ao método conhecido como masking. Este método exige uma aplicação dedicada ao algoritmo e pode gerar algumas vulnerabilidades com a sua implementação, nomeadamente a chamada zero-value fault que é conhecida e bastante explorada em vários artigos.

De uma forma bastante simplista, os artigos referem-se à alteração do algoritmo AES de modo a permitir a inclusão de uma máscara aleatória com a qual será executada uma operação matemática com alguns dos estados, sendo posteriormente feita operação em ordem à sua remoção.

Da natureza destas contramedidas resulta o facto de estarem vulneráveis até certo ponto a ataques DPA mais desenvolvidos, oferecendo algumas vulnerabilidades acrescidas como o zero-value fault atrás referido. Em [27] é demonstrado um ataque eficiente contra alguma da concepções por detrás desta contramedida.

Por oposição e como atrás referido com a intenção de obter a equalização do traçado de consumo, independentemente da existência, ou não, de transições, procurou-se encontrar um método de implementação cujo referido traçado não revelasse qualquer relação com as mesmas e, como tal, com a chave. Com esta pretensa foi pensada a implementação do Dual Rail nos circuitos encriptadores.

Os circuitos implementados sobre este conceito usam um par de ligações por bit para representar os valores lógicos desse mesmo bit, ou seja o seu valor binário, em oposição à comum ligação singular por bit, que também pode ser vista como Single Rail.

A implementação de circuitos usando codificações baseadas na duplicação de bits é extensivamente discutida pela comunidade académica, nomeadamente em artigo como [15],

27 [28]–[32], discutindo diversas formas de implementação, sendo muitas dessas considerações pensadas para ASIC.

As principais considerações estabelecidas nestes artigos centram-se na necessidade de tornar a actividade de transição da comutação dos transístores constituintes da lógica interna regular e na tentativa de evitar as glitches originadas por diversos factores, tanto da lógica como do sinal de relógio do circuito.

Desta forma ficam em aberto múltiplas alternativas relativas ao modo como o valor do bit será codificado. A escolha dessa codificação trará consequências, não só a nível da segurança efectivamente oferecida por esta implementação mas também a nível da área ocupada pelo módulo, devido, por um lado, às células modificadas e, por outro, à electrónica adicional, o que se reflecte no troughput expectável, por consequência dos atrasos induzidos pelo factor anterior.

Para além de múltiplas hipóteses de codificação dos bits, existem ainda diversas formas de implementar o conceito escolhido.

Nas próximas páginas serão expostas algumas das codificações propostas, nomeadamente as descritas no artigo [15] no qual o conceito de Dual Railling é extensivamente explorado como contramedida para defender implementações em hardware, no caso em ASIC mas permitindo aplicação dos conceitos em FPGA, do AES contra ataques de SCA explorando a leitura e análise do consumo. A exploração dos conceitos, no entanto, não referirá as arquitecturas propostas no artigo em análise uma vez que, muitas destas, não são directamente executáveis em FPGA.

Comece-se por analisar a codificação conhecida como Dual Rail Single Spacer. Esta pretende forçar a transição de valores constantes entre ciclos, existindo, independentemente do valor válido, uma transição de um dos rails por ciclo. Deste modo pretende tentar obter um traçado de consumo constante, com picos contantes durante as transições.

Para isso o DRSS toma como valores representativos os presentes na Tabela 7. Considera-se desse modo o spacer um valor inválido e não representativo de qualquer valor lógico.

28

Tabela 7 - Codificação Dual Rail Single Spacer

Valor Palavra

0 01

1 10

Spacer 00

O spacer, incluído nesta noção, é usado para forçar a transição constante de valores entre ciclos, obrigando ao regresso constante ao spacer entre valores válidos, como representado na Imagem 13.

Valor “0”

‘01’

Spacer

‘00'

Valor “1”

‘10’

Imagem 13 - Diagrama de Estados DRSS

Face a uma implementação sem qualquer tipo de codificação, também chamada Single Rail, as implementações deste género de lógica representam grandes overheads em termos da lógica necessária para a implementar.

Da mesma forma que o DRSS, o Dual Rail Dual Spacer tenta provocar a transição de pelo menos um bit de forma constante de modo a esconder picos diferenciados de consumo.

Tabela 8 - Codificação Dual Rail Dual Spacer

Valor Palavra

0 01

1 10

Zero Spacer 00

29 Ao contrário do DRSS o DRDS usa dois spacers distintos o Zero e o One spacer. Estes valores funcionam da mesma forma que o spacer singular do DRSS mas permite alternar sobre eles, ora de forma aleatória ou arbitrária ora de forma alternada.

No entanto as implicações da escolha do funcionamento ser arbitrária ou alternada implica mais consequências na definição do protocolo sendo espectável que a funcionar de forma arbitrária se possa ver a codificação mostrada na Tabela 8 segundo o comportamento descrito na Imagem 14.

Valor “0”

‘01’

Spacer

‘00'

Valor “1”

‘10’

Spacer

‘11'

Imagem 14 - Diagrama de Estados DRDS

Na tentativa de garantir um maior balanço energético bem como de reduzir o valor da possível informação recolhida, dificultando um pouco mais os ataques DPA, foi considerado ainda que, caso os spacer sejam percorridos de uma forma alternada se pode fazer depender o valor da palavra válida do spacer que a procede. Esses valores podem ser vistos na Tabela 9.

Tabela 9 - Codificação Dual Rail Dual Spacer Alternado

Estado anterior

Estado actual Entrada Estado seguinte Significado

XX 00 10 10 “1”

XX 00 01 01 “0”

00 XX XX 11 Spacer All-Ones

30

XX 11 01 10 “0”

11 XX XX 00 Spacer All-Zeros

Para usar esta mesma tabela de codificação é necessário seguir o diagrama de estados presente na Imagem 15, que indica o funcionamento do DRDS com spacers alternados.

Com este funcionamento a tentativa é garantir que para cada valor válido qualquer um dos rails usados no circuito comuta pelo menos uma vez obtendo desse modo um melhor balanço a nível energético.

Valor “0” ‘01’

Spacer

‘00'

Valor “1” ‘10’

Spacer

‘11'

Valor “0” ‘10’ Valor “1” ‘01’

Imagem 15 - Diagrama de Estados DRDS com valores alternados

O grande problema do uso de uma técnica como esta para proteger um sistema é, de facto, o overhead de área considerável que acarreta, nomeadamente a nível da lógica de controlo, e o que torna pouco exequível a sua implementação.

Incidindo sobre a necessidade de estabelecer um método mais efectivo que o original Dual Rail Single Spacer, mas com um overhead de área menor, e aproveitando os conceitos proposto em [15], em [33] Papadopoulos et al propõem um método novo de tentar conciliar a implementação de AES em hardware, com contramedidas efectivas contra ataques DPA, e o uso de FPGA de baixo custo na sua implementação.

31 Para isso, numa técnica que designaram por Duplicated Dual Rail, propõem uma implementação que usa como bloco de construção uma implementação AES com Dual Rail Single Spacer, duplicando algumas rondas, 2, 4 ou 8, de modo a obter um traçado de potência mais regular. Nessas rondas duplicadas deve ser processada uma versão negada bit a bit do texto e da chave a serem usadas no processo de modo a criar variações no consumo de uma forma uniforme. Os valores obtidos das rondas duplicadas não são valores válidos, não sendo portanto utilizados. De uma forma simples o diagrama presente na Imagem 16 representa como o funcionamento da técnica em causa é considerado.

Encriptação AES Rondas duplicadas da encriptação AES Plaintext Chave Chiphertext

Imagem 16 - Diagrama Duplicated Dual Rail (n-round )

Com o uso deste conceito os autores de [33] defendem que é possível implementar um encriptador com um nível de segurança relativamente alto, ao mesmo tempo que reduzem os recursos necessários, nomeadamente a nível de hardware ocupado na FPGA, para o fazer.

2.3. Análise dos desafios da implementação do demonstrador em