Lorsque l’on stocke les mots de passe d’un utilisateur dans un annuaire ou une base de données, il est fortement recommandé d’utiliser une fonction cryptographique non réversible. Une des techniques utilisées pour lutter contre les attaques via des tables arc-en-ciel (Rainbow tables) consiste à stocker une empreinte cryptographique générée par une fonction de hachage à partir du mot de passe et d’une séquence de caractères aléatoires, différente pour chaque utilisateur. Comment appelle-t-on cette séquence de caractères ?
[A] HMAC
[B] Sel (Salt)
[C] Poivre (Pepper)
[D] Nonce
Les fonctions HMAC sont des techniques cryptographiques qui utilisent des fonctions de hachage associées à une clé secrète afin d’assurer l’intégrité et l’authenticité d’un message. Par exemple, une opération HMAC-SHA256 se réalise par 2 opérations de hachage SHA-256 associées à une clé de 256 bits. Le HMAC est donc une technique cryptographique et non pas une séquence de caractères.
En cryptographie, un nonce est un nombre qui ne doit être utilisé qu’une seule fois. Le terme « nonce » vient de l’expression anglaise « number used once » (nombre utilisé une seule fois). Son objectif principal est d’empêcher le replay des messages ou de garantir la sécurité des opérations cryptographiques (notamment dans le chiffrement symétrique par blocs) en introduisant une valeur aléatoire. La chaine de caractère dont on fait référence dans la question sera utilisée à chaque authentification d’un utilisateur et donc plusieurs fois. Il ne peut donc pas s’agir d’un nonce.
Pour assurer la sécurité du stockage des mots de passe, on utilise en effet une séquence de caractères en complément du mot de passe en entrée d’une fonction de hachage. Cette séquence s’appelle un poivre ou sel. Mais quelle est la principale différence entre le poivre et le sel (mis à part que le sel est blanc et que le poivre est gris…) ? Et bien dans la protection des mots de passe, un sel différent sera utilisé pour chaque utilisateur alors qu’un seul poivre et donc la même valeur sera utilisée pour protéger l’ensemble de la base utilisateurs. On notera que si la table des sels est souvent enregistrée dans la même base de données que les empreintes, le poivre lui sera impérativement stocké à un autre endroit, dans un lieu sûr (secret manager, HSM,…) et si possible pas dans un fichier de configuration ou dans le code source de l’application.
Comme la question précisait « différente pour chaque utilisateur », la bonne réponse est donc la proposition [B]
Pour en savoir plus sur les fonctions cryptographiques de hachage et sur la sécurité de l’authentification nous vous recommandons de suivre les modules n°6 et n°13 de la formation CISSP en distanciel de VERISAFE.
Questions et réponses rédigées par VERISAFE selon le programme officiel du CISSP actuellement en vigueur
© VERISAFE – Utilisation ou reproduction (même partielle) strictement interdite sans l’accord écrit de VERISAFE