Quand un marchand connecte son compte Stripe à 0fee.dev, il soumet sa clé secrète Stripe. Quand il connecte PaiementPro, il soumet son identifiant marchand et sa clé API. Quand il connecte Hub2, il soumet une clé API et une clé d'abonnement. Ces identifiants sont les clés de la capacité de traitement des paiements du marchand. S'ils fuient, un attaquant peut initier des paiements, consulter les données de transaction ou voler des fonds. Chiffrer ces identifiants au repos n'est pas optionnel -- c'est l'exigence de sécurité de base pour un orchestrateur de paiement.
Chiffrement Fernet/AES
0fee.dev utilise le chiffrement Fernet de la bibliothèque cryptography de Python. Fernet est un standard de chiffrement symétrique basé sur AES-128-CBC avec authentification HMAC-SHA256. Chaque identifiant est chiffré individuellement avec une clé de chiffrement maîtresse dérivée de la variable d'environnement ENCRYPTION_KEY.
Stockage par application
Les identifiants sont stockés par application, pas par utilisateur. Cela signifie que chaque application du marchand peut avoir ses propres identifiants Stripe, ses propres identifiants Hub2, etc. Un marchand avec plusieurs applications (production, staging, test) peut configurer chacune avec des identifiants de fournisseur différents.
Ce que l'audit de sécurité a révélé
L'audit de sécurité (Session 055) a identifié plusieurs améliorations : rotation de la clé de chiffrement, chiffrement des clés API dans la base de données (pas seulement les identifiants de fournisseurs), et journalisation de tous les accès aux identifiants déchiffrés.
Cet article fait partie de la série « Comment nous avons construit 0fee.dev ». 0fee.dev est un orchestrateur de paiement couvrant 53+ fournisseurs dans 200+ pays, construit par Juste A. GNIMAVO et Claude depuis Abidjan sans aucun ingénieur humain. Suivez la série pour l'histoire complète de la construction.