Ataque de canal lateral
porque os ataques de canal lateral dependem da relação entre a informação emitida (vazada) através de um canal lateral e os dados secretos, contramedidas caem em duas categorias principais: (1) eliminar ou reduzir a liberação de tais informações e (2) eliminar a relação entre a fuga de informações e de dados secretos, isto é, fazer a fuga de informação não relacionada, ou melhor, não correlacionada, o segredo de dados, normalmente através de alguma forma de randomização da mensagem cifrada que transforma os dados em uma forma que pode ser desfeita após a operação de criptografia (por exemplo, a descodificação) é concluída.
na primeira categoria, displays com blindagem especial para diminuir as emissões eletromagnéticas, reduzindo a susceptibilidade a ataques de tempestade, estão agora disponíveis comercialmente. O condicionamento e a filtragem da linha de energia podem ajudar a dissuadir ataques de monitorização de energia, embora tais medidas devam ser utilizadas com cautela, uma vez que até mesmo correlações muito pequenas podem permanecer e comprometer a segurança. Os compartimentos físicos podem reduzir o risco de instalação sub-reptícia de microfones (para combater os ataques acústicos) e de outros dispositivos de micro-monitorização (contra os ataques de tracção eléctrica ou de imagem térmica da CPU).outra contra-medida (ainda na primeira categoria) é bloquear o canal emitido com ruído. Por exemplo, um atraso aleatório pode ser adicionado para deter ataques de tempo, embora os adversários podem compensar esses atrasos através da média de medições múltiplas (ou, mais geralmente, usando mais medições na análise). À medida que a quantidade de ruído no canal lateral aumenta, o adversário precisa coletar mais medições.
outra contramedida sob a primeira categoria é usar software de análise de segurança para identificar certas classes de ataques de canais laterais que podem ser encontrados durante as fases de projeto do próprio hardware subjacente. Ataques de cronometragem e ataques de cache são identificáveis através de certas plataformas de software de análise de segurança comercialmente disponíveis, que permitem testes para identificar a vulnerabilidade de ataque em si, bem como a eficácia da mudança arquitetônica para contornar a vulnerabilidade. O método mais abrangente para empregar esta contramedida é criar um ciclo de vida de desenvolvimento seguro para o 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 temporização ataques contra alvos cujos tempos de computação são quantizados em discretos contagem de ciclo de relógio, uma eficaz medida preventiva contra é projetar o software para ser isócrona, que é executado em um exatamente quantidade constante de tempo, independentemente do segredo de valores. Isso torna os ataques de tempo impossíveis. Tais contramedidas podem ser difíceis de implementar na prática, uma vez que mesmo as instruções individuais podem ter timing variável em alguns CPUs.
uma contramedida parcial contra ataques de poder simples, mas não ataques de análise de potência diferencial, é projetar o software de modo que ele é “PC-seguro” no “modelo de contra-segurança do programa”. Em um programa de PC-secure, o caminho de execução não depende de valores secretos. Por outras palavras, todos os ramos condicionais dependem apenas da Informação Pública.(This is a more restrictive condition than isochronous code, but a less restrictive condition than branch-free code.)Mesmo que as operações multiplicadas obtenham mais energia do que NOP em praticamente todos os CPUs, usando um caminho de execução constante impede que tais diferenças de energia dependentes de operação (diferenças de poder de escolher um ramo em vez de outro) vazem qualquer informação secreta.Nas arquiteturas onde o tempo de execução da instrução não é dependente de dados, UM programa seguro para PC também é imune a ataques de tempo.
outra forma em que o código pode não ser isocronoso é que os CPUs modernos têm um cache de memória: acessar informações pouco usadas incorre em uma grande penalidade de tempo, revelando algumas informações sobre a frequência de uso de blocos de memória. O código criptográfico projetado para resistir a ataques de cache tenta usar a memória apenas de uma forma previsível (como acessar apenas a entrada, saídas e dados do programa, e fazê-lo de acordo com um padrão fixo). Por exemplo, as pesquisas de tabelas dependentes de dados devem ser evitadas porque o cache pode revelar qual parte da tabela de pesquisa foi acessada.outras contramedidas parciais tentam reduzir a quantidade de informação vazada a partir de diferenças de energia dependentes de dados.Algumas operações usam energia que está correlacionada com o número de 1 bits em um valor secreto.O uso de um código de peso constante (como o uso de portas de Fredkin ou codificação dual-rail) pode reduzir o vazamento de informações sobre o peso de Hamming do valor secreto, embora correlações exploráveis possam permanecer a menos que o equilíbrio seja perfeito. Este “design equilibrado” pode ser aproximado em software manipulando ambos os dados e seu complemento juntos.
vários “CPUs seguros” foram construídos como CPUs assíncronas; eles não têm referência de tempo global. Embora estes CPUs fossem destinados a tornar os ataques de tempo e potência mais difíceis, pesquisas posteriores descobriram que variações de tempo em circuitos assíncronos são mais difíceis de remover.
um exemplo típico da segunda categoria (decorrelação) é uma técnica conhecida como blinding. No caso do RSA descriptografia com segredo expoente d {\displaystyle d}
e criptografia correspondente expoente e {\displaystyle e}
e mī odulo m {\displaystyle m}
a técnica aplica-se da seguinte forma (para simplificar, a modular a redução de pelo m é omitido nas fórmulas): antes de descriptografia, que é, antes de calcular o resultado de y d {\displaystyle y^{d}}
para um dado texto cifrado y {\displaystyle y}
, o sistema escolhe um número aleatório r {\displaystyle r}
e encripta-a com expoente público e {\displaystyle e}
para obter r e {\displaystyle r^{e}}
. Em seguida, a decodificação é feita no ⋅ r e {\displaystyle y\cdot r^{e}}
para obter ( y ⋅ r e ) d = y d ⋅ r ⋅ d = y d ⋅ r {\displaystyle {(y\cdot r^{e})}^{d}=y^{d}\cdot r^{e\cdot d}=y^{d}\cdot r}
. Desde a desencriptação do sistema optou por r {\displaystyle r}
, ele pode calcular o seu inverso do módulo m {\displaystyle m}
para cancelar o fator r {\displaystyle r}
no resultado e obter y d {\displaystyle y^{d}}
, o resultado real da descriptografia. Para ataques que requerem a coleta de informações do canal lateral de operações com dados controlados pelo atacante, blinding é uma contramedida eficaz, uma vez que a operação real é executada em uma versão aleatória dos dados, sobre a qual o atacante não tem controle ou até mesmo conhecimento.
uma contramedida mais geral (na medida em que é eficaz contra todos os ataques de canal lateral) é a contramedida de mascaramento. O princípio de mascarar é evitar manipular qualquer valor sensível y {\displaystyle y}
directamente, mas manipular uma partilha do mesmo: a set of variables (called “shares”) y 1 , . . . , y d {\displaystyle y_{1},…,y_{d}}
tal que y = y 1 ⊕ . . . ⊕ y d {\displaystyle y = y_{1}\oplus …\oplus y_{d}}
(onde ⊕ {\displaystyle \oplus }
é a operação XOR). Um atacante deve recuperar todos os valores das ações para obter qualquer informação significativa.
recentemente, a modelagem de caixa branca foi utilizada para desenvolver uma contramedida de baixo overhead em nível de circuito Genérico contra ambos EM, bem como ataques de canal lateral de potência. Para minimizar os efeitos das camadas de metal de nível superior em um IC atuando como antenas mais eficientes, a idéia é incorporar o núcleo de criptografia com um circuito de supressão de assinatura, roteado localmente dentro das camadas de metal de nível inferior, levando tanto à imunidade de ataque do canal lateral de energia e EM.