📚 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.
v1.0 — Engenharia de Software & Práticas Profissionais
Trilha de Especialização Pedagógica
- Tecnologias: Python 3.12, Cryptography, Argon2id, PyOTP, TOTP QR Code, LGPD Security
- Arquivo Principal:
seguranca_core.py
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).
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)}")
No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:
cd seguranca_02_criptografia_mfa_oauth
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
A visualização arquitetural abaixo detalha a separação de responsabilidades e o fluxo de dados implementado na subpasta sec-python/:
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
| 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 |
| 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 |
| 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 |
| 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 |
| 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 ✅ |