Cryptage des données et TLS
1) Carte des menaces et des cibles
Dans le canal (en transit) : interception/modification du trafic, MitM, downgrade.
Au repos (at-rest) : vol de disques/backups, décharges OBD/logs, initiés.
Clés : fuites de secrets, rotation faible, réutilisation.
L'objectif est de garantir la confidentialité, l'intégrité et l'authenticité, avec des SLO mesurables et une cryptographie gérable.
2) Classification des données et politique
Classes : Public/Internal/Confidentiel/Restreint (PII/Finance/PAN).
Étiquettes : 'data. class`, `tenant`, `region`, `retention`.
Mesures obligatoires : pour Restricted - chiffrement au niveau du champ/objet, journal d'accès, clés individuelles per-tenant/région.
3) Cryptage au repos (at-rest)
3. 1 encodage Envelope
La clé DEK (Data Encryption Key) crypte les données ; KEK/CMK (KMS/HSM) chiffre DEK.
La rotation KEK ne nécessite pas de décryptage des données - plume-wrap DEK.
DEK est souhaitable par objet/lot/tenant avec une TTL courte.
3. 2 niveaux
Afficheur (TDE) : espace disque/tabulaire (PostgreSQL/MySQL/SQL Server). Simple, mais sans contrôle granulaire.
Au niveau de l'application : champs/objets (PAN, secrets) - mieux pour le multi-tenant et les minimums d'accès.
Stockage/nuage : S3/GCS SSE-KMS ; pour les données ACID - FLE (field-level encryption) si possible.
3. 3 Algorithmes et modes
AEAD : AES-256-GCM ou ChaCha20-Poly1305 (sur CPU sans AES-NI).
IV/nonce : l'unicité est strictement obligatoire ; stocker près de ciphertext ; Ne le répétez pas.
Hachage : mots de passe - Argon2id (ou scrypt/bcrypt) avec sel et paramètres par fer.
IAU/signatures : HMAC-SHA-256 pour l'intégrité, ou AEAD étiquette intégrée.
3. 4 Pratiques pour les bases de données/fichiers
PostgreSQL : pgcrypto/extensions ; sur write - crypter les champs sensibles dans l'application.
Stockage Mongo/Doc : client-side FLE, clés dans KMS.
Backups : clés individuelles et disponibles uniquement auprès d'un agent CI/CD ; copies offsite - toujours cryptées.
4) Gestion des clés (KMS/HSM/Vault)
Source de vérité : KMS/HSM ; les clés privées ne quittent pas l'appareil/le service.
Versioning : 'kid', 'purpose', 'alg', 'created _ at', 'rotates _ at'.
Accès : least-privilège ; séparation des tâches (SoD).
Rotation : programmée (3-6 mois pour la signature), par événement (incident), rotate-on-use pour les tokens refresh.
Audit : journaux immuables : qui, quand, ce qu'il a signé/décodé.
Multi-tenant : clés per-tenant/brand/region ; BYOK/HYOK aux exigences du client.
5) Chiffrement « dans le canal » (TLS)
5. 1 Minimums
TLS 1. 2 +, de préférence TLS 1. 3; HSTS sur les domaines.
Chiffrosuites : TLS1. 3 - prédéfinis (AES_256_GCM_SHA384/ CHACHA20_POLY1305_SHA256).
PFS : tous les échanges clés sont éphémères (ECDHE).
ALPN : HTTP/2 et HTTP/3 (QUIC) inclure consciemment ; surveillez les temporisateurs.
5. 2 certificats, OCSP, pinning
OCSP stapling et chaînes courtes.
Réemploi des sessions : Tickets TLS avec un court TTL.
0-RTT (TLS 1. 3) : inclure avec soin (GET idempotent uniquement).
Pinning : seulement 'public-key pinning via TSP/Key continuity' dans les applications/mobiles (HPKP non rigide).
mTLS : à l'intérieur du périmètre/entre les services et les partenaires ; Certification SAN.
5. 3 gRPC/HTTP/QUIC
gRPC transmet des Deadline et des métadonnées - vérifiez et limitez le temps d'exécution.
Le HTTP/3 (QUIC) accélère le premier byte ; vérifier la compatibilité WAF/équilibreurs.
6) mTLS et service-mash
SPIFFE/SPIRE ou mesh-CA pour la délivrance automatique de certificats courts (7-30 jours).
Politiciens : qui parle à qui (SVID→SVID), authZ au niveau L7.
Rotation - transparente ; revoke via trust-bundle mises à jour.
7) Performance et fonctionnement
AES-NI : sur les serveurs supportés - AES-GCM est plus rapide. Sur mobile/ancien CPU - ChaCha20-Poly1305.
Tuning TLS : clés courtes avec PFS, mais dans des limites raisonnables (P-256/25519) ; cache-mains.
Batching : minimiser les petites demandes ; TLS-overhead est proportionnel au nombre de connexions.
Offload : TLS sur le périmètre (Envoy/NGINX), intérieur - mTLS dans mesh.
8) Les politiques des secrets et des loges
Secrets uniquement dans KMS/Vault ; dans Kubernetes - chiffrement etcd + fournisseur KMS.
Interdiction des logs : clés/jetons/PAN/secrets ; masquage.
Snapshots/vides : chiffrer et restreindre l'accès ; surveiller les appels aux clés.
9) Configis et exemples
9. 1 NGINX (profil strict TLS)
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 à apstream, 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 Exemple d'utilisation de l'AEAD (pseudo)
pseudo nonce = random(12)
ciphertext, tag = AES256_GCM. encrypt(key=DEK, nonce, aad=tenant object_id, plaintext)
store(nonce ciphertext tag)
10) Rotation et révocation des clés
JWKS/' kid 'pour JWT ; court 'bou'.
Listes 'jti '/' sid'pour la révocation de tokens avec TTL.
Secrets HMAC (webhooks) : actif + canarien ; la réception des deux avant la date extrême.
TLS : alertes T-30/T-7/T-1, renouvellement automatique, canary sécurisé.
11) Observabilité et alertes
Метрики: `tls_handshake_fail_total{reason}`, `tls_version_share`, `cipher_share`, `ocsp_stapling_errors`, `kms_ops_total{op}`, `decrypt_fail_total`, `jwks_kid_share`.
Logs d'accès : protocole/version/chiffrement (pas de secrets).
Alert : certificats expirés, sursaut de « bad _ record _ mac », croissance de « chaînes méfiantes », décryptages ratés.
12) Spécificité de l'iGaming/Finance
Flux PAN-safe : Tokenization, stockage de tokens uniquement ; Le PAN a un stockage PSP/token.
PCI DSS : cryptage des données des détenteurs de cartes, limitation de l'accès aux clés, journal des opérations crypto, segmentation du réseau.
Régionalité : clés et données dans la région du joueur (latence/souveraineté).
Backoffice : mTLS + SSO, sessions courtes, FIDO2 pour les admins.
13) Anti-modèles
TLS < 1. 2; chiffrements faibles autorisés/RC4/3DES.
Les secrets « éternels » communs et les clés sans rotation et « kid ».
Répétition IV/nonce dans GCM (fatale à la sécurité).
Logs avec secrets/clés/données pan.
TDE uniquement sans chiffrement des champs sensibles.
HPKP-pinning dans la vente (risque de « auto-enregistrement »).
0-RTT sur write/non-idempotent.
14) Chèque-liste prod-prêt
- Classification des données et politique de cryptage (par classe).
- AEAD (AES-GCM/ChaCha20-Poly1305); un nonce unique ; Argon2id pour les mots de passe.
- Encryptage Envelope : DEK par objet/tenant ; KEK в KMS/HSM.
- TLS 1. 2+/1. 3, HSTS, OCSP stapling; un ensemble raisonnable de codes.
- mTLS à l'intérieur ; délivrance/rotation automatique de certificats courts.
- JWKS/' kid ', courts' bou ', listes' jti '; rotation des secrets/gris avec chevauchement.
- Les backups et les logs sont cryptés ; les accès et les opérations sont vérifiés.
- Dashboards/alertes selon TLS/KMS/JWKS ; tests de dégradation et canary.
- Documentation : procédures d'incident (compromission de clé/sert).
15) TL; DR
Crypter partout : dans le canal - TLS 1. 3/1. 2 avec PFS et périmètre strict ; à l'intérieur - mTLS. Au repos - envelope (DEK/KEK) avec les clés dans KMS/HSM, crypter granulairement les champs sensibles. Gérer les clés via 'kid '/JWKS et rotation régulière avec recouvrement, stocker les journaux d'opérations crypto. Choisissez AES-GCM (ou ChaCha20-Poly1305), ne reuse pas, crypter les backups/logs. Pour iGaming/PAN - Tokenization et segmentation PCI consciente.