• Nenhum resultado encontrado

1. Introdução ao protocolo AES e aos conceitos de segurança

1.3. Ataques SCA

Na criptografia clássica assumia-se a função de encriptação como uma caixa negra, sobre a qual o atacante não obteria qualquer tipo de informação interna, apenas o plaintext e o cyphertext. Ao analisar implementações de algoritmos de encriptação, observa-se que, na realidade, tal não se verifica. Na verdade, ao executar uma função de encriptação, um sistema, seja ele de software ou de hardware, cede uma miríade de informações ao exterior, assemelhando-se a uma situação como a representada na Imagem 10.

Emissor

Receptor

Atacante Consumo energético Som Radiação electromagnética Tempo Falhas Luz Consumo energético Som Radiação electromagnética Tempo Falhas Luz

Imagem 10 - Representação geral de um ataque SCA

Os ataques Side-channel (SCA) apoiam-se neste facto, explorando pelo menos um dos canais de informação cedido ao exterior pela função encriptadora em conjunto com o plaintext ou o ciphertext.

14

Desse modo, para executar um ataque deste género, um adversário A tem que assumir, como descrito em [2], dois conceitos:

“Assumption 1 (Kerckhoffs’ extended principle) A knows all technical details about the underlying cryptographic algorithm and its implementation. (…)

Assumption 2 A is able to get plaintexts (or ciphertexts) of encryptions. Furthermore, foreach encryption A is able to obtain side channel information“1

Estes ataques assumem duas fases distintas: numa examinam a implementação que desejam atacar; noutra tentam relacionar as medições obtidas com estádios intermédios da encriptação.

O objectivo central deste ataque é permitir que o atacante conclua algo sobre a natureza da chave e, desse modo, desvendar os segredos transmitidos nesse canal, usando a chave para revelar a natureza do plaintext.

O primeiro ataque deste SCA a ser realizado com sucesso foi um ataque de timing descrito em [3] por Kocher em 1996. O seu trabalho focou-se em medir cuidadosamente os tempos de processamento das múltiplas cifras que analisou usando-os para obter informação sobre a chave.

Em 1998, estendendo o conceito de SCA, foi proposto o primeiro ataque funcional baseado na análise do tratado de consumo em [4] por Kocher et al. Nesta proposta são descritos ambos, SPA e DPA, e são discutidos alguns conceitos sobre como os evitar.

Nos pontos que se seguem serão descritos de uma forma não pormenorizada múltiplos tipos de ataque SCA, para depois incidir a descrição de forma pormenorizada nos ataques de análise de traçado de potência e contramedidas desenvolvidas de forma a contraria-los.

1.3.1. Breve nota sobre diversos tipos de ataques SCA

Aqui serão brevemente expostos, a título informativo, alguns conceitos sobre múltiplos géneros de ataques SCA, nos quais esta dissertação não se focará. Faz portanto sentido analisar

1in [2] pag. 20-21

15 primeiramente os ataques de timing como precedentes, evoluindo daí para a referência de outros ataques de interesse.

O primeiro ataque com sucesso, recorrendo à análise de timing, foi, como atrás referido, descrito pela primeira vez em [3] usando-o para atacar múltiplas cifras, nomeadamente RSA, Diffie-Hellman e DSS.

Este tipo de ataques concentra-se em correlacionar a duração variável do processo de encriptação com a chave usada no mesmo. Kocher descreve-o como um ataque que pode ser alterado de modo a ser eficiente contra qualquer cifra cuja implementação tenha uma duração variável.

O conceito de ataque de timing foi posteriormente trabalhado e, como tal, aperfeiçoado, como por exemplo em [5], e adaptado a cifras simétricas acabando por ser finalmente aplicado ao AES em [6]. Aqui, considerando uma aplicação descuidada da cifra, na fase da Mistura de Colunas, da qual se poderia obter uma variação temporal mensurável, através da qual seria possível obter uma chave, com grande probabilidade de ser a certa, recorrendo a um método de baixo custo.

O relatório técnico atrás referido foi realizado ainda durante a fase de escolha da cifra que viria a ser conhecida por AES. No entanto os autores do mesmo sublinham que a descoberta desta vulnerabilidade em aplicações mais descuidadas não deveria ser tida em conta face a essa mesma escolha, uma vez que a implementação desenvolvida pelos criadores da cifra Rijndael, actualmente mais conhecida por AES, num microprocessador 8051 não mostrava nenhuma vulnerabilidade a este método. Frisam, no entanto, a necessidade de o standard que estava à escolha ser implementado de modo pensado.

Esforços baseados no conceito do ataque de timing continuaram a ser desenvolvidos, tendo sido desenvolvido o mesmo ao ponto de ser capaz de recuperar a chave de uma cifra RSA de um servidor recorrendo ao uso e interpretação de medições de tempo numa rede como exemplificado em [7] e em [8].

Um método de ataque também baseado no conceito da observação de side-channels é o ataque de falhas, em inglês fault attack. Este tipo de ataque baseia-se na indução de falhas em

16

circuitos criptográficos de modo a que estes cedam informação sobre a chave. Esta técnica foi pela primeira vez introduzido em [9].

Os ataques deste género podem recorrer a diversos métodos para criar falhas, usando picos na energia fornecida ao circuito, alterações do relógio do sistema, indução de erros com recurso a diversos tipos de radiação (raios X, feixes de fotões e luz visível), correntes parasitas ou até temperatura.

A maneira de examinar as falhas causadas pode basear-se na análise do número de bits afectados, a forma como o processador criptográfico reage ao erro e, até, a propagação do mesmo no processo, bem como na observação do output erróneo do sistema, ou até a ausência do mesmo.

Dito isto estes ataques podem revelar-se bastante eficientes sendo necessário, nomeadamente para aplicações como smartcards cuja alimentação e relógio são fornecidos externamente, algum cuidado para os evitar.

Existe ainda uma miríade de ataques aproveitando diferentes comportamentos adoptados para melhorar o throughput, nomeadamente o recurso a memórias de cache, tendo o primeiro ataque sido proposto sobre a sua forma teórica em [10].

Comprovando a necessidade de constante evolução das contramedidas são divulgados, de forma contínua pela comunidade académica, novos métodos de ataque, como é o exemplo do artigo recentemente divulgado pelo MIT, em [11], conjugando o desgaste dos escudos desenvolvidos para tornar os componentes de segurança invulneráveis a alguns dos ataques descritos neste ponto, e, desse modo, usar uma observação directa das operações com recurso a microscópio laser incorporado com uma câmara infravermelha, permitindo a leitura directa da emissão de calor do componente executando a operação criptográfica e, assim, descobrir a chave.

Embora ataques como o atrás referido sejam provas de conceito e dificilmente executáveis em situações reais, devido ao custo de implementação, eles comprovam a evolução dos método invasivos, podendo tornar-se rapidamente um risco para a segurança da encriptação.

17

1.3.2. Ataques de análise ao traçado de potência

Uma das famílias mais comuns e eficientes, de entre os ataques SCA, diz respeito a ataques baseados na análise do consumo energético de um componente a executar uma encriptação. Estes analisam a variação ou o traçado do consumo, conhecido por power trace, ou traçado de potência, recorrendo a múltiplas ferramentas, desde simples observação a olho nu a complexas análises matemáticas, de modo a tirar conclusões sobre a informação que está a ser processada pelo dispositivo em análise, seja ela referente à chave ou ao plaintext.

Uma vez que o principal foco desta dissertação é a prevenção desta família de ataques, esta será analisada de uma forma mais prolongada no capítulo 2, bem como os factores que permitem o uso deste ataque contra as implementações em hardware.