Contramedidas: mascaramento, cegamento e código de tempo constante
Implemente mascaramento, cegamento de pontos e comparações de tempo constante.
Contramedidas: mascaramento, cegamento e código de tempo constante é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.
As três famílias de contramedidas
As contramedidas contra canais laterais pertencem a três famílias: mascaramento (aleatorizar valores intermediários), cegamento (aleatorizar entradas e saídas) e código em tempo constante (eliminar temporização dependente dos dados).
Mascaramento booleano
Aplique XOR a cada valor intermediário com uma máscara aleatória nova r. Processe o valor mascarado x⊕r e remova a máscara ao final. O traço de consumo agora depende de x⊕r, não de x.
Mascaramento aritmético para multiplicações
Para operações multiplicativas, use máscaras multiplicativas: substitua x por x·r mod p. O esquema de mascaramento deve ser compatível com cada operação algébrica da cifra.
Cegamento de RSA
Antes de decifrar o texto cifrado c, escolha um valor aleatório r e calcule c' = c·r^e mod n. Decifre c' para obter m·r mod n e depois divida por r. A exponenciação efetiva nunca recebe o c real.
Cegamento de pontos ECC
Aleatorize as coordenadas projetivas: em vez do ponto afim (x,y), use (λx : λy : λ) para um λ aleatório. A multiplicação escalar opera sobre coordenadas aleatorizadas, alterando os traços de consumo a cada execução.
Regras de programação em tempo constante
1. Não use ramificações dependentes de segredos. 2. Não use índices de memória dependentes de segredos. 3. Não faça saídas antecipadas. 4. Use operações intrínsecas da plataforma em tempo constante quando disponíveis (por exemplo, crypto_verify_32).
Comparação em tempo constante em Python
Nunca use == ou hmac.compare_digest em bytes brutos em caminhos sensíveis à temporização. Use:
import hmac
def constant_time_compare(a: bytes, b: bytes) -> bool:
"""Uses HMAC double-HMAC trick for constant-time equality."""
# hmac.compare_digest is constant-time in CPython
return hmac.compare_digest(a, b)
# Example
secret = b"expected_mac_value"
received = b"attacker_provided__"
print(constant_time_compare(secret, received)) # False, but no timing leakArmadilhas de compiladores e arquiteturas
Os compiladores podem otimizar e remover código em tempo constante. Use escritas voláteis, barreiras de memória ou intrínsecos de assembly. Os compiladores de C têm -fno-delete-null-pointer-checks, mas não oferecem uma garantia universal de tempo constante.
Embaralhamento e operações fictícias
Permute aleatoriamente a ordem das consultas às caixas S ou insira operações fictícias que consumam energia sem afetar o resultado. Isso aumenta a dificuldade dos ataques DPA, mas não elimina o vazamento.
Contramedidas de hardware
Aceleradores criptográficos dedicados (ARM TrustZone, AES de hardware do STM32) aplicam mascaramento no silício. Implementações em ASIC acrescentam blindagem metálica e uma malha ativa para detectar sondagens físicas.
Verificação de conhecimento
Qual contramedida impede ataques de temporização contra RSA ao aleatorizar o texto cifrado antes da exponenciação?
Recapitulação da lição
O mascaramento aleatoriza valores intermediários; o cegamento aleatoriza entradas de RSA/ECC; o código em tempo constante elimina ramificações de temporização. A defesa em profundidade combina as três técnicas. Os aceleradores de hardware aplicam essas técnicas no silício para oferecer as garantias mais fortes.
Aprenda Cryptology Academy com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 67
- Aulas
- 261
Perguntas Frequentes
A aula “Contramedidas: mascaramento, cegamento e código de tempo constante” é grátis?
Sim — o texto completo de “Contramedidas: mascaramento, cegamento e código de tempo constante” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.
O que vou aprender em “Contramedidas: mascaramento, cegamento e código de tempo constante”?
Implemente mascaramento, cegamento de pontos e comparações de tempo constante. Você pratica Cryptology Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cryptology Academy?
Nenhuma experiência prévia é necessária. Cryptology Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Contramedidas: mascaramento, cegamento e código de tempo constante”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cryptology Academy?
Sim. Cada aula de Cryptology Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Ataques de temporização: extração de chaves pelo tempo de execução
- Análise de potência: SPA e DPA
- Canais laterais eletromagnéticos e acústicos
- Contramedidas: mascaramento, cegamento e código de tempo constante