Criptografia de dados e TLS
1) Mapa de ameaças e alvos
No canal (in-transit): interceptação/modificação de tráfego, MitM, downgrade.
Em paz (at-rest): roubo de discos/bacapes, damps de BD/logs, insiders.
As chaves são fugas de segredos, rotatividade fraca, reutilização.
O objetivo é garantir a privacidade, a integridade e a autenticidade, com o SLO medido e a criptoagilidade controlada.
2) Classificação de dados e política
Classes: Public/Internal/Confidential/Restricted (PII/finanças/PAN).
Marcas: 'data. class`, `tenant`, `region`, `retention`.
Medidas obrigatórias para Restricted - criptografia ao nível do campo/objeto, registro de acesso, chaves individuais per-tenant/region.
3) Criptografia em paz (at-rest)
3. 1 Criptografia Envelope
O DEK (Data Encrypition Key) criptografa os dados; O KEK/CMK (KMS/HSM) criptografa o DEK.
A rotação KEK não requer decifração de dados - e-wrap DEK.
DEK é preferível per-objeto/partição/tenante com TTL curto.
3. Níveis 2
TDE: disco/espaço de tabela (PostgreSQL/MySQL/SQL Server). Simples, mas sem controlo granular.
Ao nível da aplicação: campos/objetos (PAN, segredos) - melhor para multi-tenant e acesso mínimo.
Armazéns/nuvens: S3/GCS SSE-KMS; para dados ACID - FLE (field-level encrypition) onde possível.
3. 3 Algoritmos e modos
AEAD: AES-256-GCM ou ChaCha20-Poly1305 (em CPU sem AES-NI).
IV/nonce: A exclusividade é estritamente obrigatória; armazenar junto ao ciphertext; Não se repita.
Hashing: senhas - Argon2id (ou scrypt/bcrypt) com sal e parâmetros de ferro.
MAS/assinaturas: HMAC-SHA-256 para integridade ou rótulo embutido AEAD.
3. 4 Práticas para BD/arquivos
PostgreSQL: pgcrypto/extensões; write: criptografe os campos sensíveis no aplicativo.
Mongo/Doc armazenamento: cliente-side FLE, chaves em KMS.
Bacapes: chaves individuais e disponíveis apenas do agente CI/CD; as cópias off-site são sempre criptografadas.
4) Gerenciamento de chaves (KMS/HSM/Vault)
Fonte da verdade: KMS/HSM; chaves privadas não deixam o aparelho/serviço.
Versioning: 'kid', 'purpose', 'alg', 'created _ at', 'rotates _ at'.
Acesso: least-privege; Divisão de responsabilidades (SoD).
Rotação: horário (3-6 m para assinatura), evento (incidente), rotate-on-use para tokens refresh.
Auditoria: Revistas imutáveis: quem, quando, o que assinou/decifrou.
Multi-tenante: chaves per-tenant/brand/region; BYOK/HYOK para os requisitos do cliente.
5) Criptografia «no canal» (TLS)
5. 1 Mínimos
TLS 1. 2 +, preferencialmente TLS 1. 3; HSTS em domínios.
Criptografados: TLS1. 3 - pré-definidos (AES _ 256 _ GCM _ SHA384/CHACHA20 _ POLY1305 _ SHA256).
PFS: Todas as trocas essenciais de epemérita (ECDHE).
ALPN: HTTP/2 e HTTP/3 (QUIC) incluir conscientemente; Vigiar os temporizadores.
5. 2 Certificados, OCSP, pinning
OCSP stapling e cadeias curtas.
Reutilizar sessões: TLS tickets com TTL curto.
0-RTT (TLS 1. 3): incluir com cuidado (apenas GET Idumpotentes).
Pinning: apenas 'público-key pinning via TSP/Key continuity' em aplicativos/celulares (não HPKP rígido).
mTLS: dentro do perímetro/entre os serviços e os parceiros; certificação de SAN.
5. 3 gRPC/HTTP/QUIC
gRPC transmite Deadline e metadados - verifique e limite o per-try timeout.
HTTP/3 (QUIC) acelera a first-byte; verifique a compatibilidade WAF/balanceadores.
6) mTLS e serviço-manha
SPIFFE/SPIRE ou mesh-CA para emissão automática de certificados curtos (7 a 30 dias).
Políticos: Quem fala com quem ( ) está no nível L7.
Rotação - transparente; revoke através de atualizações trust-bundle.
7) Produtividade e operação
AES-NI: servidores com suporte - AES-GCM mais rápido. Em CPU móvel/antigo - ChaCha20-Poly1305.
Sintonização TLS: chaves curtas com PFF, mas dentro de limites razoáveis (P-256/25519); A caixa dos apertos de mão.
Batching: minimize os pequenos pedidos; O TLS-overhead é proporcional ao número de conexões.
Offload: TLS no perímetro (Envoy/NGINX), no interior, mTLS no mesh.
8) Políticos de segredos e logs
Segredos apenas em KMS/Vault; Kubernetes - criptografia etcd + KMS-provedor.
Proibição de logs: chaves/tokens/PAN/segredos; camuflagem.
Snapshots/dampos: criptografar e restringir o acesso; Monitora as chaves.
9) Configs e exemplos
9. 1 NGINX (TLS perfil rigoroso)
nginx ssl_protocols TLSv1. 2 TLSv1. 3;
ssl_prefer_server_ciphers on;
ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:P-256;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
9. 2 Envoy (mTLS a upstream, pseudo)
yaml transport_socket:
name: envoy. transport_sockets. tls typed_config:
common_tls_context:
tls_params:
tls_minimum_protocol_version: TLSv1_2 tls_certificate_sds_secret_configs:
- name: service_cert # client certificate validation_context_sds_secret_config:
name: mesh_ca_bundle # trusted roots
9. 3 Exemplo de uso de AEAD (pseudo)
pseudo nonce = random(12)
ciphertext, tag = AES256_GCM. encrypt(key=DEK, nonce, aad=tenant object_id, plaintext)
store(nonce ciphertext tag)
10) Rotação e chaves retiradas
JWKS/' kid 'para JWT; curtas 'exp'.
Listas de 'jti '/' sid' para retirar os tokens da TTL.
Segredos HMAC (webhooks): ativo + canário; recebimento por ambos até à data limite.
TLS: alert T-30/T-7/T-1, extensão automática, canary seguro.
11) Observabilidade e alertas
Метрики: `tls_handshake_fail_total{reason}`, `tls_version_share`, `cipher_share`, `ocsp_stapling_errors`, `kms_ops_total{op}`, `decrypt_fail_total`, `jwks_kid_share`.
Logs de acesso: protocolo/versão/cifra (sem segredos).
Alerts: Certificados caducados, «bad _ record _ mac», crescimento de «cadeias desconfiadas», decodificações falhadas.
12) Especificidades do iGaming/Finanças
Fluxo PAN-safe: toquenização, armazenamento apenas de tokens; O PAN é um armazenamento PSP/Tóquio.
PCI DSS: criptografia de dados de detentores de cartões, restrição de acesso a chaves, registro de cripto, segmentação de rede.
Regionalidade: chaves e dados na região do jogador (latência/soberania).
Backoffice: mTLS + SSO, sessões curtas, FIDO2 para almirantes.
13) Antipattern
TLS < 1. 2; códigos fracos/RC4/3DES permitidos.
Segredos e chaves comuns «eternos» sem rotação e «kid».
Repetição IV/nonce em GCM (fatalmente para segurança).
Logs com segredos/chaves/dados pan-americanos.
Apenas TDE sem criptografia de campos sensíveis.
Pinning HPKP em venda (risco de auto-apiração).
0-PTT em write/solicitações não-ideais.
14) Folha de cheque pró-prontidão
- Classificação de dados e política de criptografia (per-class).
- AEAD (AES-GCM/ChaCha20-Poly1305); Singulares nonce; Argon2id para senhas.
- Criptografia Envelope: DEK per-objeto/tenante; KEK в KMS/HSM.
- TLS 1. 2+/1. 3, HSTS, OCSP stapling; um conjunto inteligente de códigos.
- mTLS no interior; emissão automática/rotação de certificados curtos.
- JWKS/' kid ', curtas' exp ', listas' jti '; rotação de segredos/sertos com sobreposição.
- Os bacapes e os logs estão criptografados; acessíveis e operações são auditadas.
- Dashboards/alertas por TLS/KMS/JWKS; testes de degradação e canary.
- Documentação: procedimentos de incidentes (comprometimento da chave/sertão).
15) TL; DR
Criptografe em todo o lado, no canal - TLS 1. 3/1. 2 com PFS e perímetro rigoroso; lá dentro, mTLS. Em paz - envelope (DEK/KEK) com chaves KMS/HSM, criptografe granularmente os campos sensíveis. Gerencie suas chaves através de 'kid '/JWKS e rotação regular com sobreposição, armazenando seus registros de cripto. Selecione AES-GCM (ou ChaCha20-Poly1305), não reuse-nonte, cripte os bacapes/logs. Para iGaming/PAN, o tocening e a segmentação PCI consciente.