• Nenhum resultado encontrado

Modelos de vazamento frequentemente se tornam populares na comunidade devido a sua conveniência matemática, mas, em última análise, a utilidade de um modelo é de- terminada por sua aplicabilidade em cenários reais. Dado que esta qualidade pode ser difícil de avaliar, os responsáveis por implementações práticas frequentemente igno- ram a análise teórica completamente e projetam suas próprias medidas para proteger contra ataques de canal lateral. Terminaremos esta seção com uma breve discussão de exemplos de ataques de canal lateral que têm sido aplicados contra implementações utilizadas na prática, assim como algumas das ténicas utilizadas para proteger contra estes ataques. Embora as considerações a seguir não se apliquem diretamente a este trabalho, usaremos a oportunidade para fazer algumas comparações entre as técnicas utilizadas e o esquema proposto neste trabalho.

3.5.1

Análise de consumo

Ataques de análise de consumo2 são baseados no fato de que dispositivos consumem energia durante a execução, e que o gráfico da corrente utilizada ao longo do tempo mostra padrões diferentes para operações diferentes. Como ataques de análise de con- sumo são relativamente baratos, gerais e impossíveis de detectar, eles são bastante relevantes à implementação de dispositivos criptográficos. De fato, desde o trabalho inicial por Kocher et al. [KJJ99], uma grande parte da literatura em ataques de canal lateral tem focado neste tipo de ataque.

Como exemplo simples de funcionamento de um ataque de análise de consumo, considere uma implementação de um algoritmo que envolve iterar sobre os n bits da chave secreta, e onde a cada passo i da iteração (para 1 ≤ i ≤ n), a sequência de ope- rações a ser executadas depende do valor do i-ésimo bit. Neste caso, é fácil adivinhar o valor da chave secreta observando o padrão do consumo de energia ao longo da iteração.

Embora este tipo de ataque possa ser bastante poderoso, ele é frequentemente di- fícil de implementar, uma vez que medições de energia tendem a ser bastante ruido- sas, o que é particularmente importante quando o dispositivo consome pouca energia. Para superar esta limitação, um método diferente é proposto em [KJJ99]: análise de consumo diferencial—ou differential power analysis (DPA), em inglês. No trabalho ci- tado, um ataque específico contra o algoritmo de chave simétrica DES é descrito, mas o mesmo método funciona contra AES, e há variações para criptossistemas diferentes.

De maneira resumida, DPA funciona da seguinte maneira. Seja m1, . . . , mkuma lista

de textos em claro e sejam P1, . . . , Pkas energias médias calculadas a partir dos gráficos

de energia correspondente. Suponha agora que um bit de um valor intermediária na execução do algoritmo depende apenas do texto claro m e uma parte da chave, uma string de s bits que denotaremos por K. Denotamos o valor intermediário por L(m, K). Após escolher um valor para K, calculamos L(m1, K), . . . , L(mk, K). Para i∈ {0, 1}, seja

Mi o conjunto de textos em claro m para os quais L(m, K) =i.

A ideia é que se K não é parte da chave verdadeira, então i corresponde apenas ao valor intermediário obtido na execução real para cerca de metade dos textos em claro (para um número suficientemente grande de textos). O resultado é que os gráficos de energia correspondentes a textos em M0 são estatisticamente indistinguíveis dos

padrões para textos em M1. Assim, se calcularmos a diferença entre a energia média

sobre textos em M0 e textos em M1, esperamos que o sinal resultante esteja próximo

de zero.

Se, por outro lado, K é parte da chave verdadeira, então i corresponde ao valor intermediário para todos os textos em claro. Neste caso, a diferença vai ser significati- vamente maior que zero. Logo podemos obtemer o valor correto de K.

3.5.2

Ataques acústicos

É longa a história de ataques de canal lateral que exploram os sons produzidos por um dispositivo. Dispostivos de ciframento eletromecânicos como máquinas que utilizam rotores, amplamente usados durante a Segunda Guerra Mundial e a Guerra Fria, são particularmente vulneráveis a ataques deste tipo. O motivo é que os discos rotatórios utilizados produzem sons característicos que dependem dos dados em que o disposi- tivo opera. Estes sons podem ser medidos por um grampo de telefone, por exemplo. Um exemplo de tal ataque é descrito na autobiografia do ex-funcionário de contrainte- ligência da MI5 Peter Wright [WG88].

Em máquinas modernas, um grampo pode ser utilizado para cronometrar a du- ração do tempo entre o pressionamento de uma tecla e outra em um teclado [AA04, ZZT09]. Esta informação pode frequentemente ser usada para determinar o texto que foi digitado, desta forma vazando informação como, por exemplo, senhas [SWT01].

Recentemente, Genkin et al. [GST13] proporam um ataque acústico que funciona em sistemas operacionais executando em computadores pessoais. O ataque foi apli- cado à popular implementação de RSA no software GnuPG. (Desde a publicação, a vulnerabilidade foi corrigida.)

3.5.3

Probing

Outra opção é utilizar pontas de prova para ler os valores em fios individuais no circuito—probing attacks. Este tipo de ataque é frequentemente negligenciado, por ser considerado custoso. Contudo, probing attacks são extremamente poderosos, uma vez que eles permitem uma observação direta da computação. Este tipo de ataque foi ini- cialmente considerado em um trabalho por Anderson e Kuhn [AK96, And08]; veja também [KK99] para uma discussão de probing attacks e possíveis estratégias de de- fesa.

3.5.4

Contramedidas

Ao longo do tempo, várias modificações de hardware com o intuito de proteger contra ataques de canal lateral tem sido propostas. Algumas delas—particularmente no caso de wire probing—envolvem blindar o hardware do ambiente, enquanto outras—como no caso de análise de consumo—possuem como ideia principal desacoplar a informação vazada de outros dados sendo processados.

Uma opção é utilizar um conjunto de portas em que cada operação consome uma quantidade fixa de energia. Isto é alcançado por dual-rail pre-charge (DRP) logic [TAV02]. Outra opção é injetar aleatoriedade no sistema. Esta técnica é conhecida como masca- ramento (masking). Em sua forma mais simples, a data é mascarar os dados mediante a substituição de cada bit num registrador de dados pelo XOR do bit com um bit ale- atório, isto é, cada bit b é substituído por s = b⊕r onde r é um bit aleatório. É claro que para “desmascarar” o valor, é necessário preservar tanto s quando r, mas a princi- pal propriedade é que os dois são independentes de b quando considerados separada- mente. Baseado nesta ideia simples, é possível projetar esquemas em que a quantidade de dados vazados é significativamente reduzida.

Também é possível combinar lógica dual-rail e mascaramento. Esta possibilidade é explorada em [PM05]. De fato, mascaramento é uma técnica bastante geral: ela é utilizada por vários esquemas teóricos para resistência a vazamento. Mascaramento também é utilizado implicitamente no esquema proposto neste trabalho, apesar de que, como veremos, chegaremos à técnica por uma rota bem diferente.

Documentos relacionados