← Últimos artigos
💻 ciência da computação

Comparative Timing Characterization of Early-Exit and Fixed-Work Secret Comparisons on ESP32 and ESP8266

Este artigo quantifica o vazamento de tempo específico de implementação de comparações de segredo de saída antecipada de 16 bytes versus alternativas de trabalho fixo em microcontroladores ESP32 e ESP8266, demonstrando que o comprimento do prefixo correspondente aumenta significamente o tempo de execução nessas plataformas enquanto rotinas de trabalho fixo mantêm o tempo constante, embora o estudo não confirme o comportamento de tempo constante ao nível binário ou a explorabilidade remota.

Autor original: Abrar Sobhan

Publicado 2026-11-09
📖 6 min de leitura🧠 Leitura aprofundada

Autor original: Abrar Sobhan

Artigo original sob licença CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). ✨ Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelo autor. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

No mundo oculto da segurança de computadores, existe um perigo silencioso que nada tem a ver com fechaduras quebradas ou chaves roubadas. Trata-se do tempo. Quando um computador verifica se um código secreto corresponde a uma senha, ele geralmente o faz comparando as duas sequências de caracteres uma por uma. Se a primeira letra estiver errada, um programa padrão interrompe imediatamente e diz "não". Se as dez primeiras letras estiverem certas e a décima primeira estiver errada, o programa continua trabalhando até encontrar esse erro. Essa diferença no tempo que o computador leva para pensar pode ser um vazamento. Um observador habilidoso, monitorando quanto tempo uma resposta leva, poderia teoricamente contar os segundos para descobrir quantos caracteres estavam corretos antes do erro acontecer. Isso é conhecido como um canal lateral de tempo (timing side channel), uma forma de roubar informações não quebrando o código, mas ouvindo o relógio. Por décadas, especialistas em segurança têm alertado que o software deve ser escrito para levar exatamente o mesmo tempo, independentemente de onde ocorra o erro, uma prática chamada programação de tempo constante. Mas nos chips minúsculos e baratos que alimentam desde dispositivos domésticos inteligentes até sensores simples, nem sempre é claro se essas regras se mantêm no mundo real, ou se o próprio hardware introduz novas surpresas.

Um estudo recente propôs-se a testar essa realidade em dois dos microchips mais comuns do mundo: o ESP32 e o ESP8266. Esses chips são os cérebros por trás de inúmeros dispositivos acessíveis conectados à internet. O pesquisador, trabalhando sozinho, construiu duas formas diferentes para esses chips compararem códigos secretos de 16 bytes. O primeiro método foi a abordagem padrão, vulnerável: ele pararia assim que encontrasse uma incompatibilidade. O segundo método foi a abordagem de "trabalho fixo", projetada para ser segura: ele forçaria o chip a verificar cada um dos dezesseis bytes da entrada, não importa quão cedo um erro aparecesse, garantindo que o tempo total permanecesse o mesmo. Para ver como esses métodos se comportavam, o pesquisador enviou milhares de códigos de teste para os chips. Cada código de teste foi elaborado para corresponder à senha secreta por um número específico de letras no início — às vezes nenhuma, às vezes todas as dezesseis — antes de divergir. Os chips mediram seus próprios ciclos de clock internos para registrar exatamente quanto tempo cada comparação levou, repetindo o processo centenas de vezes para cada possível comprimento inicial.

Os resultados pintaram um quadro claro da vulnerabilidade no método padrão. No chip ESP32, que é mais rápido, toda vez que o código de teste correspondia a uma letra a mais da senha secreta antes de falhar, o chip levava exatamente quarenta ciclos de clock a mais para terminar o trabalho. No ESP8266, que é mais lento, o atraso era de vinte e cinco ciclos por letra extra correspondente. Isso criou uma escada de tempo perfeita e previsível. Se o código correspondesse a zero letras, o chip terminava rapidamente; se correspondesse a quinze, levava significativamente mais tempo. Na verdade, o tempo era tão consistente que, em muitos dos grupos de teste, todas as trezentas tentativas produziam exatamente a mesma contagem de ciclos. Para o ESP32, uma única medição do tempo decorrido era suficiente para dizer ao pesquisador exatamente quantas letras correspondiam ao segredo naquela sessão específica. Isso confirmou que o método padrão de "parar cedo" vaza informações diretamente através do tempo que leva para ser executado.

Em contraste, o método de trabalho fixo comportou-se exatamente como os especialistas em segurança esperam. Quando o pesquisador usou a versão que forçava o chip a verificar todos os dezesseis bytes, o tempo que levava não mudava com base em quantas letras correspondiam. Quer o código de teste falhasse na primeira letra ou na última, o chip gastava o mesmo tempo processando os dados. O tempo mediano permaneceu plano em todos os cenários. No entanto, o estudo também revelou um custo para essa segurança. O método de trabalho fixo sempre demorou mais do que o método vulnerável, especialmente quando o código de teste falhava imediatamente. No ESP32, o método seguro levou quase oitocentos ciclos mesmo quando a primeira letra estava errada, enquanto o método vulnerável terminou em menos de setenta ciclos. O método seguro essencialmente desperdiçava tempo verificando o restante das letras para garantir que a duração total permanecesse constante. Essa troca entre velocidade e segurança é uma realidade fundamental nos sistemas embarcados, onde cada ciclo extra de processamento consome uma bateria ou retarda um dispositivo.

O estudo também descobriu algumas peculiaridades inesperadas no comportamento desses chips sob pressão. Embora os tempos médios fossem estáveis, um pequeno número de medições individuais foi muito superior aos demais, saltando para quase o dobro ou o triplo do tempo esperado. Esses picos ocorreram principalmente quando os chips foram permitidos lidar com interrupções normais de segundo plano, em vez de estarem isolados em um estado silencioso. Isso sugere que, embora a lógica central do código seguro funcione, o ambiente ao redor do chip ainda pode causar atrasos ocasionais e imprevisíveis. O pesquisador observou que essas medições foram feitas diretamente dentro da própria memória do chip, não através de uma rede, o que significa que, embora o vazamento de tempo seja real e mensurável no dispositivo, isso não prova automaticamente que um hacker possa roubar uma senha através da internet. O ruído de uma conexão do mundo real provavelmente esconderia essas diferenças sutis.

Em última análise, esta pesquisa fornece um mapa concreto de como os vazamentos de tempo aparecem em hardwares específicos e amplamente utilizados. Ela mostra que o simples ato de interromper uma comparação precocemente cria um sinal preciso e mensurável que revela o segredo. Também demonstra que uma mudança simples no código — forçar o computador a terminar o trabalho, independentemente do resultado — pode eliminar esse sinal, embora venha com uma penalidade de desempenho. As descobertas são um lembrete de que, no mundo da segurança embarcada, a maneira como um programa é escrito importa tanto quanto a matemática que ele utiliza. Os chips fizeram exatamente o que lhes foi ordenado e, ao fazê-lo, revelaram que, sem um design cuidadoso, até mesmo as operações mais básicas podem sussurrar segredos para quem estiver atento ao relógio.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →