Mais um blog inútil.

Agosto 7, 2009

Side-channel

Filed under: Drama,Fail,Serious Business — dongs @ 4:40

Além dos ataques comuns existentes para atacar algoritmos criptográficos, alguns destes já mencionados anteriormente (e.g. AES-256), existe uma classe de ataques que não explora deficiências algorítmicas, mas sim deficiências de implementação --- Side-channel attacks.

A vasta maioria destes ataques tem como base o tempo que uma operação demora a executar; este tipo de ataques foi originalmente proposto para algoritmos baseados na exponenciação de inteiros, como RSA ou DSA. É fácil de perceber que quando se utiliza o método binário de exponenciação e o expoente é uma chave privada, o tempo de execução da exponenciação está directamente relacionado com o número de bits no expoente. Este tipo de ataques pode ser evitado através de blinding ou outros algoritmos de exponenciação, como as cadeias de Montgomery.

Estes ataques, naturalmente, estendem-se também aos grupos criados por curvas elípticas, onde a multiplicação de um ponto também está dependente de um valor privado. As soluções são semelhantes --- de facto, existe uma representação especial de pontos desenhada para este efeito, a representação de Montgomery.

Estes ataques não se limitam a algoritmos assimétricos --- o AES já foi várias vezes atacado devido a más implementações susceptíveis a ataques derivados às tabelas necessárias não caberem inteiramente em cache. Não apenas o AES é vítima deste tipo de ataques --- alguns dos finalistas da eSTREAM também são vulneráveis, assim como outra cifra bastante utilizada, Camellia.

Como evitar estes ataques?

Para quem desenha cifras, é importante não permitir que o tempo de execução esteja de alguma forma dependente de chaves secretas; de preferência, o tempo de execução deveria ser sempre constante para qualquer entrada. Cifras mais recentes, como a Salsa20 ou Threefish utilizam apenas operações que são efectuadas em tempo constante, i.e. XOR, ADD, ROL.

No caso de cifras já existentes, pode ser possível criar implementações em tempo constante das mesmas. No caso do AES, é possível implementar, utilizando as extensões SSSE3, uma versão em tempo constante que cifra 16 blocos simultaneamente (bitslice). Os acessos à memória são trocados por operações booleanas que, devido a serem amortizadas por 16 blocos, acabam por se tornar mais rápidas.

Existem imensas outras instâncias de ataques causados por implementações com tempos de execução variáveis; existem ataques a implementações com gastos de energia variáveis!

A conclusão será que num sistema seguro, não apenas a qualidade dos algoritmos mas também da implementação dos mesmo são importantes para a segurança dos nossos dados.

6 comentários a “Side-channel”

  1. falso diz:

    Fds, amava. É por estes posts que me levanto todos os dias para vir trabalhar!
    AES ;-)
    Camellia ;-)
    Salsa20 ;-)
    Threefish ;-)

  2. nif diz:

    Agora em português!

  3. bongs diz:

    da tuzza.

  4. madinfo diz:

    Cenas bué inuteis, em que um gajo sente-se o rei a ler, e não precebe patavina :) AMO

  5. mirage diz:

    Boa introdução a um ataque que desconhecia.

  6. [...] imensas classes de ataques que podem afectar implementações perfeitamente correctas do RSA (e não só).  Em particular, este novo ataque usa falhas geradas por flutuações de voltagem exteriores à [...]

Leave a Reply for mirage

widgeon
widgeon
widgeon
widgeon