Attention, les fonctions de hachage cryptographiques tel que MD5, SHA-1 et SHA-2 (SHA-256/512) ne sont pas appropriés pour chiffrer les mots de passe.
En général, ce sont des variations de ces algorithmes qui sont utilisées pour crypter les mots de passe en faisant usage de techniques additionnelles telle que le "salting" ou le "stretching". Ainsi, actuellement, Silverpeas utilise en fait une variante connue de la méthode MD5 qui a été éprouvée avec les systèmes Unix.
Pour des raisons de sécurité, étant donné que la faiblesse de l'algorithme SHA-1 a été démontrée en 2005 (en utilisant des collusions), et conformément aux recommandations des experts en terme de sécurité des mots de passe, il a été décidé de choisir un algorithme plus approprié parmi celles-ci:
- PBKDF2 avec SHA-1 : c'est, en quelque sorte, un conteneur de fonction de hachage qui applique le salting et le stretching au chiffrement SHA-1 ici. Elle est fourni en standard avec Java.
- PBKDF2 avec SHA-256 ou SHA-512 : même chose que précédemment mais avec une des deux fonctions de hachage SHA-2. Elle a l'avantage d'être plus robuste que celle précédente du fait de l'utilisation d'un algorithme de la famille SHA-2. Néanmoins elle n'est pas fourni en standard avec Java et nécessite donc l'usage d'une librairie tierce (GNU Crypto par exemple).
- une variation éprouvée de SHA-2 pour les mots de passe. On choisirait dans ce cas ci une variation du SHA-512. Il existe une adaptation en Java de cette variation. L'avantage de celle-ci est que les empreintes générées sont conformes au modèle utilisé avec la variation du MD5.
Après réflexion, j'ai décidé de rester conforme finalement au modèle d'empreinte jusque là utilisé dans Silverpeas et donc de choisir la troisième solution.
De plus, après discussion, il a été décidé que, pour des raisons de simplicité de gestion mais surtout de sécurité, une seule méthode de chiffrement des mots de passe sera utilisée dans Silverpeas pour l'ensemble des utilisateurs. En conséquence, les algorithmes anciens seront dépréciés et les utilisateurs seront invités à modifier leur mot de passe de façon à ce qu'il soit chiffré avec le nouvel algorithme (ce dernier point sera traité par la feature #4152).