Cryptology Academy · Aula

Contramedidas: mascaramento, cegamento e código de tempo constante

Implemente mascaramento, cegamento de pontos e comparações de tempo constante.

Aula 4 de 412 etapas

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 leak

Armadilhas 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.

Grátis para começar

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

  1. Ataques de temporização: extração de chaves pelo tempo de execução
  2. Análise de potência: SPA e DPA
  3. Canais laterais eletromagnéticos e acústicos
  4. Contramedidas: mascaramento, cegamento e código de tempo constante
← Voltar para Cryptology Academy