En théorie, tu n’as même pas besoin de clef maître, puisque tu pourrais la baser sur le mot de passe via une dérivation de clef.
Tu en as besoin en pratique pour permettre le changement de mot de passe et d’éviter de le stocker au login.
La subtilité est d’arriver à obtenir une clef et un iv (même si c’est moins grave pour le 2nd) unique pour chaque chiffrement à réaliser. Réutiliser une clef de chiffrement est une erreur grave en crypto (on est potentiellement capable de deviner des choses sur les textes en clair à partir des données chiffrées uniquement).
À la création de l’utilisateur :
on génère un sel S de 64 bits via un CSPRNG
on génère une clef maîtresse MK de chiffrement de 256 bits via un CSPRNG
on calcule une clef de chiffrement K et un IV IV via K, IV = PBKDF2(password, S)
on chiffre MK via C, T = AES-256-GCM(MK, K, IV)
on stocket S, T et C en bdd, associé à l’utilisateur
Au login utilisateur :
on calcule K, IV = PBKDF2(password, S)
on déchiffre MK via MK = AES-256-GCM(C, K, IV, T)
Pour chiffrer une donnée :
on génère un salt s de 64 bits via un CSPRNG
on calcule une clef de chiffrement k et un iv de 256 bits à partir de de la master key via k, iv = PBKDF2(MK, s) (en résumé c’est cette étape qui manque chez toi)
on chiffre les données d via c, t = AES-256-GCM(d, k, iv)
on stocke s, t et c en bdd
Pour déchiffrer une donnée :
on lit s, t et c en bdd
on recalcule la clef et l’iv via k, iv = PBKDF2(K, s)
on déchiffre les données d via d = AES-256-GCM(c, k, iv, t)
[^] # Re: Crypto pas crypto
Posté par Aeris (site web personnel) . En réponse au journal Passprotect - Gestionnaire de mot de passe. Évalué à 4. Dernière modification le 03 octobre 2016 à 13:04.
En théorie, tu n’as même pas besoin de clef maître, puisque tu pourrais la baser sur le mot de passe via une dérivation de clef.
Tu en as besoin en pratique pour permettre le changement de mot de passe et d’éviter de le stocker au login.
La subtilité est d’arriver à obtenir une clef et un iv (même si c’est moins grave pour le 2nd) unique pour chaque chiffrement à réaliser. Réutiliser une clef de chiffrement est une erreur grave en crypto (on est potentiellement capable de deviner des choses sur les textes en clair à partir des données chiffrées uniquement).
À la création de l’utilisateur :
Au login utilisateur :
Pour chiffrer une donnée :
Pour déchiffrer une donnée :