Pular para conteúdo

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_digest para evitar ataques de temporização (Timing Attacks) na checagem de hashes.
  • R4 (Verificador de Checksum de Arquivos): Construir script que gera e audita arquivos SHA256SUMS padrã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

  1. Demonstração numérica do Efeito Avalanche no relatório.
  2. Uso estrito de hmac.compare_digest na verificação.
  3. Script gerador e auditor de manifestos SHA256SUMS funcional.