📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Módulo 12 — Desenvolvimento Seguro (Capítulos 03, 05 e 06). Recomendado revisar antes de começar.

🛡️ Criptografia AES-256-GCM, Hashing Argon2id & MFA TOTP

v1.0 — Engenharia de Software & Práticas Profissionais

Trilha de Especialização Pedagógica


🎯 Objetivo & Escopo do Projeto

Módulo corporativo de segurança com criptografia de envelope AES-256-GCM para dados sensíveis em repouso (LGPD/GDPR), hashing de senhas com Argon2id e autenticação multifator (MFA) baseada em TOTP (Google Authenticator).


🛠️ Código de Exemplo da Implementação

import pyotp
import os
from argon2 import PasswordHasher

ph = PasswordHasher()

# 1. Hashing seguro com Argon2id
def criar_hash_senha(senha: str) -> str:
    return ph.hash(senha)

def verificar_senha(hash_senha: str, senha_digitada: str) -> bool:
    try:
        return ph.verify(hash_senha, senha_digitada)
    except Exception:
        return False

# 2. MFA com TOTP (Google Authenticator)
def gerar_segredo_mfa() -> str:
    return pyotp.random_base32()

def validar_token_mfa(segredo: str, token: str) -> bool:
    totp = pyotp.TOTP(segredo)
    return totp.verify(token)

if __name__ == "__main__":
    print("=== Modulo de Criptografia & MFA TOTP ===")
    hash_pwd = criar_hash_senha("SuperSenha@2026")
    print(f"Senha hasheada com Argon2id: {hash_pwd[:30]}...")
    segredo = gerar_segredo_mfa()
    token_atual = pyotp.TOTP(segredo).now()
    print(f"Token MFA gerado: {token_atual} -> Valido: {validar_token_mfa(segredo, token_atual)}")


🚀 Como Executar no Laboratório

1. Abra o terminal na pasta deste projeto

No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:

cd seguranca_02_criptografia_mfa_oauth

2. Execute a aplicação ou testes

docker-compose up -d
python audit_security.py

[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd catalogo_projetos/seguranca_02_criptografia_mfa_oauth


🏛️ Arquitetura Visual & Engenharia do Sistema

A visualização arquitetural abaixo detalha a separação de responsabilidades e o fluxo de dados implementado na subpasta sec-python/:

Arquitetura da Aplicação

flowchart TD
    subgraph Entrada["Camada de Entrada & CLI"]
        IN1["Interface de Comando / API"] --> IN2["Parser & Sanitização"]
    end
    subgraph Dominio["Camada de Domínio & Regras"]
        DM1["Modelos de Domínio"] --> DM2["Processamento Algorítmico"]
    end
    subgraph Armazenamento["Persistência & Recursos"]
        ST1["Banco de Dados / Arquivo"] --> ST2["Transações ACID & Logs"]
    end
    subgraph Qualidade["Validação & Qualidade"]
        QA1["Testes Automatizados"] --> QA2["Checkpoints CP-01..05 PASS"]
    end

    Entrada --> Dominio
    Dominio --> Armazenamento
    Armazenamento --> Qualidade

    style Entrada fill:#e3f2fd,stroke:#1976d2,stroke-width:1.5px
    style Dominio fill:#fffde7,stroke:#fbc02d,stroke-width:1.5px
    style Armazenamento fill:#e8f5e9,stroke:#388e3c,stroke-width:1.5px
    style Qualidade fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px

🎯 Engenharia de Requisitos & Modelagem Formal

👤 User Stories (Histórias de Usuário)

ID Persona História de Usuário Critério de Aceite Prioridade
US-01 Arquiteto Criptográfico Desejo cifrar dados em repouso com AES-256-GCM autenticado Garantia de confidencialidade e autenticidade com tag de autenticação e IV único Alta
US-02 Engenheiro de Autenticação Desejo hash de senhas moderno com Argon2id resistente a GPUs Custo de memória, paralelismo e iterações calibrados contra força bruta Alta
US-03 Desenvolvedor de Segurança Desejo autenticação de dois fatores baseada em tempo (TOTP RFC 6238) Geração e validação de tokens de 6 dígitos compatíveis com Google Authenticator Alta
US-04 Auditor de Chaves Desejo derivação segura de chaves mestras com PBKDF2 e Salt criptográfico Derivação de chaves a partir de senhas mestras com salt aleatório de 16 bytes Média
US-05 Auditor de Conformidade Desejo suíte de testes criptográficos validando vetores de teste NIST Testes unitários garantindo que dados alterados gerem falha de autenticação Média

⚙️ Requisitos Funcionais (RF)

ID Descrição do Requisito Criticidade
RF-01 Módulo de criptografia simétrica autenticada AES-256-GCM com IV aleatório Alta
RF-02 Módulo de hashing seguro de senhas com Argon2id/PBKDF2 e salt único Alta
RF-03 Gerador e validador de códigos TOTP de 6 dígitos segundo a RFC 6238 Alta
RF-04 Geração de QR Code em terminal/ASCII para pareamento com app autenticador Média
RF-05 Testes de integridade criptográfica e rejeição de dados adulterados Média

🛡️ Requisitos Não-Funcionais (RNF)

ID Especificação Arquitetural Criticidade
RNF-01 Proteção estrita contra ataques de timing via comparação em tempo constante Alta
RNF-02 Uso de gerador de números pseudoaleatórios criptograficamente seguro (os.urandom) Alta
RNF-03 Conformidade estrita com padrões RFC 6238 (TOTP) e NIST SP 800-38D Média
RNF-04 Tratamento de exceções criptográficas sem vazamento de material de chaves Média
RNF-05 Isolamento dos fontes na subpasta sec-python/ Alta

🔗 Matriz de Rastreabilidade (RTM)

User Story Requisito Funcional Requisito Não-Funcional Módulo / Artefato de Código Status de Homologação
US-01 RF-01 RNF-01, RNF-02 sec-python/seguranca_core.py Testado
US-02 RF-02 RNF-01, RNF-03 sec-python/seguranca_core.py Testado
US-03 RF-03 RNF-01, RNF-03 sec-python/seguranca_core.py Testado
US-04 RF-04 RNF-02, RNF-04 sec-python/seguranca_core.py Testado
US-05 RF-05 RNF-01, RNF-05 sec-python/seguranca_core.py Testado

🏁 Checkpoints de Qualidade & Homologação

Checkpoint Escopo da Validação Artefato Verificado Status
CP-01 Inicialização & Estrutura de Pastas sec-python/ PASS ✅
CP-02 Modelagem de Domínio & Regras Centrais Domain Models PASS ✅
CP-03 Persistência & Operações de I/O Storage / Data PASS ✅
CP-04 Interface de Operação & Usabilidade CLI / GUI / API PASS ✅
CP-05 Homologação com Suíte de Testes Test Suite PASS ✅