Glasnost

Généralités

La sécurité de beaucoup d'applications de cryptographie à base de clés publiques, dépend en dernier recours sur un ou plusieurs mots de passes. Ces mots de passe limités en taille, sont potentiellement découvrables.

Lorsque ces mots de passe sont transmis, il faut les protéger d'une manière indépendante de la couche par laquelle ils transittent (IP sec. ou non, SSL ou non). Une des manières de les protéger est de les combiner avec un grain de sel (salt - Morris & Tompson) afin d'obtenir une clé dérivée du mot de passe. Ce grain de sel peut facilement être imagé par un index parmis l'ensemble des clées dérivables du mot de passe. Cet index ne nécessite donc pas d'être tenu secret, car s'il est facile de construire un dictionnaire de mots de passe potentiels, il devient beaucoup plus difficile d'en construire l'ensemble des clés dérivables. En effet, il y a autant de clés possible pour chaque mot que de grain de sel possibles.

Une autre approche est de dériver la clé par des moyens relativement coûteux, augmentant ainsi le coût d'une recherche exhaustive du mot de passe. Une manière d'augmenter le coût de dérivation est d'indiquer un nombre d'itération. Ce nombre précise combien de fois il faut exécuter certaines fonctions par lesquelles la clé est dérivée. Un nombre d'itération de 1000, loin d'être un fardeau pour les parties légitimes de l'échange, le devient pour les parties désirant découvrir le mot de passe.

Les clés dérivées de mot de passes le sont en fonction du mot de passe, du grain de sel et du nombre d'itération. Ces deux derniers paramètres n'ont pas besoin d'être tenu secret.

Il n'y a qu'un pas entre la dérivation d'une clé à partir d'un mot de passe, la définition d'un cryptage basé par mot de passe et les méchanismes d'authentification de message. Ce standard base les méchanismes de cryptage par mot de passe sur un mécanisme conventionnel de cryptage où la clé utilisée est la dérivée du mot de passe. Cette approche rend les techniques à base de mot de passe plus modulaires. Il est certain que les clés dérivées de mot de passe trouveront d'autres applications que les simples chiffrages et mécanismes d'authentification de message. Ainsi, une d'entre elle pourrait de dériver un jeu de clés à partir d'une dérivation initiale, chaque clé du jeu serait ensuite utilisée pour des applications différentes (protocole orienté session).

Une application très utilisée est la vérification de mot de passe, où la clé dérivée est enregistrée avec sont grain de sel et son nombre d'itération pour être comparée (avec la clé dérivée de la même manière du mot de passe enregistré par exemple).

Dans le standard PKC numéro 5, un mot de passe est considéré comme une chaine d'octet de longueur arbitraire sans pour autant correspondre à un texte. Il est tout de même recommandé de suivre des règles communes d'encodage de caractères (ASCII ou UTF-8 par exemple).