Publicado: outubro 31, 2022
Histórias do enCRYPT: Protegendo aplicações contra ataques DFA
2023 promete ser um ano movimentado para a criptografia. Provavelmente começaremos a ver as primeiras certificações para FIPS 140-3 e explorações mais sérias da... impacto da computação quântica na criptografiaAlém disso, veremos mais proteções contra os poderosos ataques DFA que, de outra forma, atormentam os criptógrafos. 2023 pode até ser o ano mais empolgante na criptografia desde 2001, quando a especificação do (então) novo Padrão de Criptografia Avançada (AES) foi finalizada, disponibilizando ao público um algoritmo de criptografia matematicamente seguro e eficiente.
Projetado para substituir algoritmos criptográficos mais antigos que começavam a apresentar fragilidades em seus cálculos e vulnerabilidades ao crescente poder computacional disponível para os atacantes, o AES devolveu o poder às mãos daqueles que buscavam proteger seus dados. Os atacantes rapidamente perceberam que ataques de força bruta e ataques à lógica matemática do AES seriam ineficazes e que, em vez disso, precisavam de uma nova abordagem.
Com o primeiro artigo de pesquisa sobre o tema publicado em 2002, a Análise Diferencial de Falhas (DFA, na sigla em inglês) é uma técnica de ataque projetada para recuperar chaves criptográficas de aplicativos, injetando "falhas" no código criptográfico do aplicativo em tempo de execução e observando as mudanças em seu comportamento. Uma falha consiste essencialmente em inverter um bit dentro de um cálculo interno e observar as alterações. As falhas podem ser injetadas de diversas maneiras, como variando os níveis de energia em dispositivos de hardware ou alterando bits de memória em software.
Os atacantes injetam falhas em várias partes diferentes do aplicativo até encontrarem um ponto onde uma falha altera a saída de uma operação criptográfica de uma maneira específica. Com base em como a saída da operação criptográfica muda, um autômato finito determinístico (AFD) e alguns cálculos matemáticos podem permitir a recuperação das chaves criptográficas. Uma vez recuperadas essas chaves, quaisquer dados criptografados com elas ficam vulneráveis e em risco.
Originalmente, o DFA era um ataque direcionado principalmente a dispositivos de hardware, onde o código de máquina não estava facilmente acessível para os atacantes. O caso do software era muito mais simples, já que as chaves criptográficas geralmente eram claramente visíveis dentro do código do aplicativo, onde ferramentas como desassembladores podiam exibi-las facilmente. Por muito tempo, se um trecho de código realizava criptografia, ele era mantido em um ambiente seguro, onde os atacantes não conseguiam examinar facilmente o código do aplicativo para encontrar essas chaves. Inicialmente, esses ambientes eram propriedade física de empresas de tecnologia. Hoje, toda empresa é uma empresa de tecnologia, e a segurança física e "virtual" da tecnologia/software/segredos/chaves está, na maioria dos casos, nas mãos formidáveis de gigantes como AWS, Google Cloud e Microsoft Azure.
Outra diferença que enfrentamos em 2023 é que grande parte da tecnologia que criamos não reside na nuvem (que presumimos ser bem protegida) nem em centros de dados corporativos. Em vez disso, softwares/tecnologias e até mesmo chaves residem em aplicativos que os consumidores têm em seus celulares, computadores, smart TVs e automóveis. Porque atores de ameaças Agora que podemos simplesmente analisar as instruções que compõem o aplicativo, os softwares precisam de proteção para suas rotinas e chaves criptográficas. A criptografia de caixa branca foi introduzida em 2002 para abordar exatamente essa preocupação, no mesmo ano em que o primeiro artigo sobre autômatos finitos determinísticos (DFA) foi publicado.
A criptografia de caixa branca foi introduzida para possibilitar implementações criptográficas seguras em aplicativos onde os atacantes podem manipular o código e os dados livremente. A criptografia de caixa branca permite obter a mesma saída para uma determinada entrada que uma implementação criptográfica normal, mas o funcionamento interno é completamente diferente de uma implementação criptográfica padrão. Isso torna muito difícil para um atacante entender o que está acontecendo. Devido à dificuldade em compreender as implementações criptográficas de caixa branca, e aproveitando o sucesso obtido em hardware, os atacantes começaram a usar autômatos finitos determinísticos (DFA) como uma técnica contra a criptografia de caixa branca em implementações de software.
A DFA (Ataque de Força Discreta) está se tornando cada vez mais comum. Diversos pesquisadores de segurança discutem ataques de DFA em conferências, implementam ataques de DFA tanto em hardware quanto em software e publicam tutoriais sobre como fazê-lo. A DFA não é mais um ataque restrito ao meio acadêmico ou a laboratórios de segurança de ponta. Ataques reais já são uma realidade e, com a proliferação e o uso do código de ataque como arma, a frequência de relatos de ataques está aumentando.
À medida que a autenticação de dois fatores (DFA) avança em eficácia e se torna mais comum, é imprescindível garantir que suas defesas contra ela acompanhem esse ritmo e ainda sejam capazes de proteger as rotinas criptográficas dentro do seu aplicativo. Existem diversas medidas que você pode tomar para garantir que está fazendo o máximo possível para se defender contra ataques de DFA.
A primeira medida é garantir que você esteja usando uma implementação moderna de criptografia white-box, projetada para se defender contra ataques DFA e testada por uma terceira parte confiável. Como os ataques se tornam cada vez mais sofisticados com o tempo, é importante usar uma implementação white-box que esteja em constante desenvolvimento para acompanhar os novos ataques.
Em segundo lugar, você deve garantir que seu aplicativo esteja usando o recurso de proteção de aplicativo (também conhecido como proteção no aplicativo). ofuscação de códigoAplicações com ofuscação (como técnicas anti-adulteração e anti-extração de código) dificultam a execução de um ataque DFA por parte dos atacantes. Aplicações com ofuscação dificultam a compreensão, por parte dos atacantes, de onde injetar falhas, e aplicações capazes de reconhecer quando estão sob ataque (ou seja, aplicações com proteção contra adulteração) podem agir imediatamente para interromper o ataque antes que ele progrida.
Para saber mais sobre como proteger seus aplicativos móveis, de desktop e de servidor, confira nosso guia. Digital.ai Resumo da solução de criptografia de caixa branca.
Também recomendamos
Decifrando as falhas de aplicativos móveis — do caos à clareza
Os aplicativos móveis estão sob ataque constante. De acordo com Digital.ai's 2026…
Como atender (e superar!) os requisitos da norma IEEE 1735
No mês passado, recebi um e-mail de recrutamento de alguém que afirmava…
Os três argumentos mais contundentes contra a criptografia de caixa branca — e por que eles não fazem sentido.
Na parte 1 desta série, analisamos onde…