Vue d’ensemble
| Couche | Protection |
|---|---|
| Chiffrement | AES-256-GCM + envelope (DEK/KEK), IV aléatoire, ciphertext versionné. |
| Mots de passe | Argon2id (migration transparente depuis bcrypt). |
| 2FA | TOTP chiffré au repos, codes de récupération à usage unique. Imposable par organisation. |
| JWT | Algorithme épinglé HS256 (anti alg-confusion). |
| Tokens | Refresh hashé SHA-256, révocables, le brut n’est jamais stocké. |
| Rate-limit | Double : par IP (avant auth) + par userId (après auth). |
| Contrôle d’accès | Vérifié sur chaque route. Moindre privilège : nouveau membre en lecture seule. |
| Host-lock | Une clé verrouillée ne part que vers son domaine. |
| Show-once / TTL | Clé à révélation unique, ou expiration automatique. |
| Coupe-circuit | Set désactivé → secrets injoignables. |
| Anti-abus | Détection de burst de révélations → blocage + alerte. |
| Proxy | Bind 127.0.0.1, token constant-time, anti-SSRF + DNS-pinning. |
| Audit | Chaque accès tracé, inaltérable (UPDATE/DELETE bloqués en base). |
| Application | CSP stricte, HSTS, X-Frame-Options. |
Authentification à deux facteurs
Le 2FA (TOTP) est compatible Google Authenticator, Authy, 1Password. Une organisation peut le rendre obligatoire : un membre sans 2FA ne peut plus accéder aux secrets tant qu’il ne l’a pas activé.Audit inaltérable
Chaque accès et chaque modification sont enregistrés. La table d’audit est append-only : un trigger en base interdit toute modification et bloque la suppression des traces des 90 derniers jours. Un attaquant ne peut donc pas effacer ses traces récentes. Au-delà de 90 jours, les lignes sont purgées automatiquement (rétention).Modèle de confiance
Elding chiffre tes secrets au repos et les sert via HTTPS. Le serveur déchiffre pour les
livrer au proxy : c’est un modèle managed (comme AWS Secrets Manager, Doppler, Vault),
pas du zero-knowledge strict. La promesse “jamais sur ton disque ni dans la mémoire de ton
app” reste tenue côté client.