Projeto 06: Funções de Hash Criptográfico, HMAC e Integridade #️⃣
Escopo do Projeto
Objetivo: Dominar a integridade criptográfica com funções de hash (SHA-256, SHA-3), demonstrando o Efeito Avalanche, prevenção de ataques de extensão de comprimento e autenticação de mensagens com HMAC.
🎯 1. Contexto & Desafio Prático
Arquivos de atualização de firmware e transações bancárias dependem de hashes para garantir que nem um único bit foi corrompido em trânsito. Você construirá uma ferramenta de validação de integridade de software que calcula hashes, gera assinaturas HMAC com chave secreta e audita manifestos de verificação.
📋 2. Requisitos Técnicos Obrigatórios
- R1 (Demonstração do Efeito Avalanche): Comprovar matematicamente que a alteração de um único bit no arquivo de entrada altera mais de 50% dos bits do hash SHA-256 final.
- R2 (Implementação de HMAC-SHA256): Construir função de assinatura e validação de autenticidade de mensagens via HMAC, explicando por que
hash(key + msg)é vulnerável a ataques de extensão de comprimento. - R3 (Comparação em Tempo Constante): Utilizar
hmac.compare_digestpara evitar ataques de temporização (Timing Attacks) na checagem de hashes. - R4 (Verificador de Checksum de Arquivos): Construir script que gera e audita arquivos
SHA256SUMSpadrão Linux.
📐 3. Diagrama Conceitual & Arquitetura
graph LR
Message["Payload da Transação Financeira"] --> HMACEngine["HMAC-SHA256 Engine"]
SecretKey["Chave Secreta Compartilhada"] --> HMACEngine
HMACEngine --> Digest["Código de Autenticação (MAC 256 bits)"]
Digest --> ConstantTime["hmac.compare_digest() (Tempo Constante)"]
ConstantTime --> Valid["Autenticidade e Integridade Confirmadas!"]
style Message fill:#e1f5fe,stroke:#01579b
style SecretKey fill:#fff3e0,stroke:#e65100
style HMACEngine fill:#f3e5f5,stroke:#7b1fa2
style Valid fill:#e8f5e9,stroke:#2e7d32 💻 4. Especificação Técnica & Código de Referência
// hmac_integrity.py
import hmac
import hashlib
def generate_message_auth_code(secret_key: bytes, message: bytes) -> str:
"""Gera HMAC-SHA256 com garantia contra Length Extension Attacks."""
return hmac.new(secret_key, message, hashlib.sha256).hexdigest()
def verify_message_integrity(secret_key: bytes, message: bytes, received_hmac: str) -> bool:
expected_hmac = generate_message_auth_code(secret_key, message)
# Comparação estritamente em tempo constante para anular Timing Attacks!
return hmac.compare_digest(expected_hmac, received_hmac)
if __name__ == '__main__':
key = b"chave-secreta-corporativa-super-segura"
msg = b"TRANSFERIR 5000.00 BRL PARA CONTA 9841"
tag = generate_message_auth_code(key, msg)
print(f"HMAC Gerado: {tag}")
print(f"Verificação de Integridade: {verify_message_integrity(key, msg, tag)}")
📦 5. Critérios de Avaliação e Entrega
- Demonstração numérica do Efeito Avalanche no relatório.
- Uso estrito de
hmac.compare_digestna verificação. - Script gerador e auditor de manifestos
SHA256SUMSfuncional.