# Ataque de canal lateral

Em segurança da computação, um ataque de canal lateral é qualquer ataque baseado em informações adicionais que podem ser reunidas devido à forma fundamental como um protocolo de computador ou algoritmo é implementado, ao invés de falhas no design do protocolo ou algoritmo em si (por exemplo, falhas encontradas em uma criptoanálise de um algoritmo criptográfico) ou erros menores, mas potencialmente devastadores, na implementação. (A criptanálise também inclui a busca por ataques de canal lateral.) Informações de temporização, consumo de energia, vazamentos eletromagnéticos e som são exemplos de informações adicionais que podem ser exploradas para facilitar ataques de canal lateral.
Alguns ataques de canal lateral exigem conhecimento técnico da operação interna do sistema, embora outros, como a análise diferencial de potência, sejam eficazes como ataques de caixa preta. O surgimento de aplicativos Web 2.0 e software como serviço também aumentou significativamente a possibilidade de ataques de canal lateral na web, mesmo quando as transmissões entre um navegador da web e o servidor são criptografadas (por exemplo, por meio de HTTPS ou criptografia Wi-Fi), segundo pesquisadores da Microsoft Research e da Indiana University.
Tentativas de quebrar um criptossistema enganando ou coagindo pessoas com acesso legítimo geralmente não são consideradas ataques de canal lateral: veja engenharia social e criptoanálise de mangueira de borracha.
As classes gerais de ataques de canal lateral incluem:
* Ataque de cache — ataques baseados na capacidade do atacante de monitorar os acessos ao cache feitos pela vítima em um sistema físico compartilhado, como em um ambiente virtualizado ou um tipo de serviço em nuvem.
* Ataque de temporização — ataques baseados na medição do tempo que várias computações (como, por exemplo, comparar a senha fornecida por um atacante com a senha desconhecida da vítima) levam para serem realizadas.
* Ataque de monitoramento de energia — ataques que fazem uso da variação do consumo de energia pelo hardware durante a computação.
* Ataque eletromagnético — ataques baseados em vazamentos de radiação eletromagnética, que podem fornecer diretamente textos simples e outras informações. Tais medições podem ser usadas para inferir chaves criptográficas usando técnicas equivalentes às da análise de potência ou podem ser usadas em ataques não criptográficos, por exemplo, ataques TEMPEST (também conhecidos como van Eck phreaking ou monitoramento de radiação).
* Criptoanálise acústica — ataques que exploram o som produzido durante uma computação (semelhante à análise de potência).
* Análise diferencial de falha — na qual segredos são descobertos introduzindo falhas em uma computação.
* Persistência de dados — na qual dados sensíveis são lidos após supostamente terem sido excluídos (por exemplo, ataque de inicialização a frio [Cold boot attack]).
* Ataques iniciados por software — Atualmente, uma classe rara de canais laterais, Row hammer é um exemplo no qual a memória fora dos limites pode ser alterada acessando a memória adjacente com muita frequência (causando perda de retenção de estado).
* Lista de permissões — ataques baseados no fato de que os dispositivos de lista branca se comportarão de maneira diferente ao se comunicar com dispositivos permitidos (enviando de volta as respostas) e dispositivos não permitidos (não respondendo aos dispositivos). Um canal lateral baseado em lista branca pode ser usado para rastrear endereços MAC do Bluetooth.
* Óptico - no qual segredos e dados sensíveis podem ser lidos por gravação visual usando uma câmera de alta resolução ou outros dispositivos que possuam tais capacidades (veja exemplos abaixo).
Em todos os casos, o princípio subjacente é que os efeitos físicos causados pela operação de um sistema criptográfico (ao lado) podem fornecer informações adicionais úteis sobre segredos no sistema, como a chave criptográfica, informações parciais de estado, textos simples completos ou parciais e assim por diante. O termo criptofthora (degradação secreta) é às vezes usado para expressar a degradação de material de chave secreta resultante do vazamento de canal lateral.

## Exemplos

Um ataque de cache de canal lateral funciona monitorando operações críticas de segurança, como a entrada da tabela AES ou exponenciação modular ou multiplicação ou acessos à memória. O atacante então é capaz de recuperar a chave secreta dependendo dos acessos feitos (ou não feitos) pela vítima, deduzindo a chave de criptografia. Além disso, ao contrário de alguns outros ataques de canal lateral, esse método não cria uma falha na operação criptográfica em andamento e é invisível para a vítima.
Em 2017, foram descobertas duas vulnerabilidades da CPU (denominadas Meltdown e Spectre), que podem usar um canal lateral baseado em cache para permitir que um atacante vaze o conteúdo da memória de outros processos e do próprio sistema operacional.Um ataque de temporização observa o movimento de dados para dentro e para fora da CPU ou memória no hardware que executa o criptossistema ou algoritmo. Apenas observando variações no tempo que leva para realizar operações criptográficas, pode ser possível determinar toda a chave secreta. Tais ataques envolvem análise estatística de medidas de temporização e foram demonstrados em redes.
Um ataque de análise de potência pode fornecer informações ainda mais detalhadas observando o consumo de energia de um dispositivo de hardware, como CPU ou circuito criptográfico. Esses ataques são categorizados de forma aproximada em análise de potência simples (SPA) e análise de potência diferencial (DPA). Um exemplo é o Collide+Power, que afeta quase todas as CPUs. Outros exemplos usam abordagens de aprendizado de máquina.
Flutuações na corrente também geram ondas de rádio, permitindo ataques que analisam medidas de emissões eletromagnéticas (EM). Esses ataques geralmente envolvem técnicas estatísticas semelhantes às dos ataques de análise de potência.
Um ataque de canal lateral baseado em aprendizado profundo, utilizando informações de potência e EM em vários dispositivos foi demonstrado com o potencial de quebrar a chave secreta de um dispositivo diferente, mas idêntico, em tão pouco quanto um único traço.
Análogos históricos aos ataques modernos de canal lateral são conhecidos. Um documento recentemente desclassificado da NSA revela que, já em 1943, um engenheiro da Bell Telephone observou picos decifráveis em um osciloscópio associados à saída descriptografada de um determinado teletipo criptografante. Segundo o ex-oficial do MI5, Peter Wright, o Serviço de Segurança Britânico analisou as emissões do equipamento cifrado francês na década de 1960. Na década de 1980, suspeitava-se que espiões soviéticos (KGB) haviam plantado dispositivos de escuta dentro de máquinas de escrever IBM Selectric para monitorar o ruído elétrico gerado quando a esfera da máquina girava e se inclinava para atingir o papel; as características desses sinais poderiam determinar qual tecla foi pressionada.
O consumo de energia dos dispositivos causa aquecimento, que é compensado por efeitos de resfriamento. Mudanças de temperatura criam estresse mecânico termicamente induzido. Esse estresse pode gerar emissões acústicas de baixo nível de CPUs em operação (cerca de 10 kHz em alguns casos). Pesquisas recentes de Shamir et al. sugerem que informações sobre a operação de criptossistemas e algoritmos podem ser obtidas dessa maneira também. Isso é um ataque de criptoanálise acústica.
Se a superfície do chip da CPU, ou em alguns casos a embalagem da CPU, puder ser observada, imagens infravermelho também podem fornecer informações sobre o código sendo executado na CPU, conhecido como ataque de imagem térmica.
Exemplos de ataques de canal lateral óptico incluem obter informações do indicador de atividade do disco rígido até a leitura de um pequeno número de fótons emitidos por transistores à medida que mudam de estado.
Também existem canais laterais baseados em alocação e se referem às informações que vazam da alocação (em oposição ao uso) de um recurso, como largura de banda de rede, para clientes que estão solicitando simultaneamente o recurso disputado.

## Contramedidas

Como os ataques de canal lateral dependem da relação entre as informações emitidas (vazadas) por meio de um canal lateral e os dados secretos, as contramedidas se enquadram em duas categorias principais: (1) eliminar ou reduzir a liberação de tais informações e (2) eliminar a relação entre as informações vazadas e os dados secretos, ou seja, tornar as informações vazadas não relacionadas, ou melhor, "não correlacionadas", aos dados secretos, geralmente por meio de alguma forma de randomização do texto cifrado que transforma os dados de maneira reversível após a operação criptográfica (por exemplo, descriptografia) ser concluída.
Na primeira categoria, displays com blindagem especial para reduzir as emissões eletromagnéticas, diminuindo a suscetibilidade a ataques TEMPEST, estão agora disponíveis comercialmente. A condicionamento e filtragem da linha de energia podem ajudar a dissuadir ataques de monitoramento de energia, embora tais medidas devam ser usadas com cautela, uma vez que até mesmo correlações muito pequenas podem permanecer e comprometer a segurança. Invólucros físicos podem reduzir o risco de instalação sorrateira de microfones (para combater ataques acústicos) e outros dispositivos de micro-monitoramento (contra ataques de consumo de energia da CPU ou imagem térmica).
Outra contramedida (ainda na primeira categoria) é saturar o canal emitido com ruído. Por exemplo, um atraso aleatório pode ser adicionado para desencorajar ataques temporizados, embora os adversários possam compensar esses atrasos fazendo a média de várias medições (ou, mais geralmente, usando mais medições na análise). Quando a quantidade de ruído no canal lateral aumenta, o adversário precisa coletar mais medições.
Outra contramedida na primeira categoria é usar software de análise de segurança para identificar certas classes de ataques de canal lateral que podem ser encontrados durante as etapas de design do próprio hardware subjacente. Ataques temporizados e ataques de cache podem ser identificados por meio de certas plataformas de software de análise de segurança disponíveis comercialmente, que permitem testar a vulnerabilidade ao ataque em si, bem como a eficácia da mudança arquitetônica para contornar a vulnerabilidade. O método mais abrangente para empregar essa contramedida é criar um Ciclo de Vida de Desenvolvimento Seguro para hardware, que inclui a utilização de todas as plataformas de análise de segurança disponíveis em suas respectivas fases do ciclo de vida de desenvolvimento do hardware.
No caso de ataques temporizados contra alvos cujos tempos de computação são quantizados em contagens de ciclos de relógio discretos, uma contramedida eficaz é projetar o software para ser isócrono, ou seja, executar em uma quantidade exatamente constante de tempo, independentemente de valores secretos. Isso torna os ataques temporizados impossíveis. Tais contramedidas podem ser difíceis de implementar na prática, uma vez que até mesmo instruções individuais podem ter temporizações variáveis em algumas CPUs.
Uma contramedida parcial contra ataques simples de energia, mas não contra ataques diferenciais de análise de energia, é projetar o software de modo que seja "seguro para o contador de programa" no "modelo de segurança do contador de programa". Em um programa seguro para o contador de programa, o caminho de execução não depende de valores secretos. Em outras palavras, todos os ramos condicionais dependem apenas de informações públicas. (Esta é uma condição mais restritiva do que o código isócrono, mas menos restritiva do que o código sem branches). Mesmo que as operações de multiplicação consumam mais energia do que NOP (código) em praticamente todas as CPUs, usar um caminho de execução constante impede que diferenças de energia dependentes de operações (diferenças de energia ao escolher um ramo em vez de outro) vazem informações secretas. Em arquiteturas onde o tempo de execução da instrução não é dependente de dados, um programa seguro para o contador de programa também é imune a ataques de temporização.
Outra maneira pela qual o código pode ser não isócrono é que as CPUs modernas têm um cache de memória: acessar informações raramente utilizadas incorre em uma grande penalidade de temporização, revelando algumas informações sobre a frequência de uso dos blocos de memória. O código criptográfico projetado para resistir a ataques de cache tenta usar a memória de maneira previsível (como acessar apenas os dados de entrada, saída e do programa, e fazer isso de acordo com um padrão fixo). Por exemplo, buscas de tabela dependentes de dados devem ser evitadas porque o cache poderia revelar qual parte da tabela de busca foi acessada.
Outras contramedidas parciais tentam reduzir a quantidade de informações vazadas devido a diferenças de energia dependentes de dados. Algumas operações usam energia correlacionada ao número de bits 1 em um valor secreto. O uso de um código de peso constante (como o uso de portas Fredkin ou codificação de trilho duplo) pode reduzir o vazamento de informações sobre o peso de Hamming do valor secreto, embora correlações exploráveis provavelmente permaneçam a menos que o balanceamento seja perfeito. Esse "design equilibrado" pode ser aproximado no software manipulando tanto os dados quanto seu complemento juntos.
Vários "CPUs seguros" foram construídos como CPUs assíncronas; eles não têm uma referência de temporização global. Embora essas CPUs tenham sido destinadas a tornar os ataques de temporização e energia mais difíceis, pesquisas subsequentes descobriram que variações de temporização em circuitos assíncronos são mais difíceis de eliminar.
Um exemplo típico da segunda categoria (decorrelação) é uma técnica conhecida como [embaralhamento (criptografia)|embaralhamento]. No caso de descriptografia RSA com exponente secreto $d$ e correspondente exponente de criptografia $e$ e módulo $m$, a técnica é aplicada da seguinte forma (por simplicidade, a redução modular por m é omitida nas fórmulas): antes de descriptografar, ou seja, antes de calcular o resultado de $y^{d}$ para um dado texto cifrado $y$, o sistema escolhe um número aleatório $r$ e o criptografa com o exponente público $e$ para obter $r^{e}$. Em seguida, a descriptografia é feita em $y\cdot r^{e}$ para obter ${(y\cdot r^{e})}^{d}=y^{d}\cdot r^{e\cdot d}=y^{d}\cdot r$. Como o sistema de descriptografia escolheu $r$, ele pode calcular sua inversa módulo $m$ para cancelar o fator $r$ no resultado e obter $y^{d}$, o resultado real da descriptografia. Para ataques que requerem coleta de informações de canal lateral de operações com dados controlados pelo atacante, o embaralhamento é uma contramedida eficaz, pois a operação real é executada em uma versão randomizada dos dados, sobre a qual o atacante não tem controle ou conhecimento.
Uma contramedida mais geral (pois é eficaz contra todos os ataques de canal lateral) é a contramedida de mascaramento. O princípio do mascaramento é evitar a manipulação direta de qualquer valor sensível $y$, mas manipular um compartilhamento dele: um conjunto de variáveis (chamadas "compartilhamentos") $y_{1},...,y_{d}$ tal que $y=y_{1}\oplus ...\oplus y_{d}$ (onde $\oplus$ é a operação XOR). Um atacante deve recuperar todos os valores dos compartilhamentos para obter qualquer informação significativa.
Recentemente, a modelagem de caixa branca foi utilizada para desenvolver uma contramedida genérica de baixo custo em nível de circuito contra ataques de canal lateral tanto de EM quanto de energia. Para minimizar os efeitos das camadas de metal de nível superior em um CI atuando como antenas mais eficientes, a ideia é incorporar o núcleo criptográfico com um circuito de supressão de assinatura, roteado localmente dentro das camadas de metal de nível inferior, levando à imunidade contra ataques de canal lateral tanto de energia quanto de EM.