lundi 11 juin 2012

OWASP-S12 S14 - Stockage de mot de passes...

A moins que vous ne soyez complètement déconnectés depuis plusieurs jours de l'Internet , et qu'en plus vous n'avez pas de compte linkedin, alors vous avez surement entendu parlé du cas.

Donc, nos amis se sont fait piquer environ 6Millions de mots de passes...Et peut être les login ?  En dehors de se demander comment le méchant pirate a fait, la question est de savoir comment ces personnes ont fait pour garder si longtemps vos mots de passe dans cet état(sans sel, dans la base....)

Il est pourtant simple de rappeler les pratiques usuelles sur le stockage de mot de passe :

1/ Le stocker "hashé" => cf OWASP Top10 A-7, ou CWE 312

2/ Utiliser un algorithme de condensé "sur" : la question habituelle, c'est quoi un algorithme sur ?

Et bien en 2012, on considère comme algorithme sur => : SHA-1, 
SHA-224, SHA-256, SHA-384 SHA-512, SHA-512/224 et SHA-512/256

3/ préférer utiliser un mécanisme de PBKDF en remplacement du 2/

4/ "Saler" son mot de passe pour chacun de vos utilisateurs ! Sans sel, le condensé sera toujours le même pour le même mot de passe, et donc avec les Tables Arc-enCiel, ou le paradoxe de l'anniversaire, vous risqueriez d'être un peu mal...

5/effectuer plusieurs itérations de "hachage". Il est recommandé en 2012 de faire 64 000 itérations !


En gros, voila un code possible:



 
import java.security.*;
 
 
public byte[] coucouLeHash(int iteration, String password, byte[] sel) throws NoSuchAlgorithmException {
       MessageDigest digest = MessageDigest.getInstance("SHA-512");
       digest.reset();
       digest.update(sel);
       byte[] input = digest.digest(password.getBytes());
       for (int i = 0; i < iteration; i++) {
           digest.reset();
           input = digest.digest(input);
       }
       return input;
   }

Aucun commentaire:

Enregistrer un commentaire

//Activation syntaxhilight