Stockage et hashage des mots de passe

414 vues

Publié le

Stockage des mots de passe dans votre application: Enjeux & solutions

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
414
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Stockage et hashage des mots de passe

  1. 1. Dev backend php5 en SSII Mercenaire du code
  2. 2.
  3. 3.
  4. 4. “Après l’extension prestashop que j’ai développé. Et avant d’intégrer un wordpress. Je vais développer ma propre méthode de hash/cryptage” Genius!
  5. 5. Faire mieux que les centaines d’ experts en cryptologie qui bossent à la CIA/NSA ? en php ?
  6. 6. Que j’ai 10 ou 200 passagers, mon bus fera toujours 34 places… SUPERPOSITION! euh... COLLISIONS!
  7. 7. 100% 38 3.4 × 10 50% 2.2 × 1019
  8. 8. 264 Vers 2 54 Principe: toto: 01101101011001010111010101010101011110001110 titi : 10101010110111100010011001100110101001011101 tata : 10101011011011010110011101111010111001101101 Et quelques millions d’autres chaines xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Bits identiques Bits fixes
  9. 9. 280 263 Ce qui diminue le temps de recherche par un facteur de 131 072! http://www.iacr.org/conferences/crypto2005/r/2.pdf
  10. 10. Md5 1 000 < 0.002 s 100 000 < 0.1 s 1 000 000 < 0.8 s Sha1 < 0.003 s < 0.1 s <1s PC Portable Core i5 vPro 4Go de ram Windows 7 etc...
  11. 11. Basé sur l'algorithme de chiffrement par bloc Blowfish S’utilise avec la fonction crypt() de php crypt('azerty123', '$2a$08$salt$'); 2a = BCrypt, 2y = BCrypt, with fixed unicode problem 08 = Coût Et le salt !
  12. 12. Clé Temps 4 0.004 s 6 0.02 s 10 0.12 s 12 0.37 s 14 1.4 s 16 5.5 s PC Portable Core i5 vPro 4Go de ram Windows 7 etc...
  13. 13. Facteur temps md5 sha1 bcrypt 4 x1200 x1900 bcrypt 10 x11 000 x100 000 bcrypt 12 x420 000 x390 000 Temps réalisé sur portable perso Purement indicatif. Etrangement, les sha1 sur de petites chaines sont plus rapide que leur équivalent md5
  14. 14. Il existe aussi sha2 (disponible en 256-384-512 bits) Fonctionne sur le même principe que sha1. Round Temps 5 000 0.05 s Avantage : Il est possible de définir un “round” (itération) qui augmente le cout CPU. Inconvénient : Empreinte CPU fluctuante suivant l’architecture du CPU. Empreinte mémoire inférieur à celle de Bcrypt 20 000 0.1 s 100 000 0.4 s
  15. 15. Petite info: Il existe une étude scientifique de 2008 qui démontre qu’ il est possible d’optimiser un CPU polymorphic (MOLEN) pour générer des hash sha2. Résultats de fou! http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.148.7900&rep=rep1&type=pdf
  16. 16. En php il existe plusieurs méthodes pour générer des hashs dont : crypt() (>php4) Supporte plusieurs algorithmes hash() (>php 5.1) Supporte plusieurs algorithmes. Nécessite l’extension HASH.
  17. 17. Avec PHP5.5 il existe de nouvelles méthodes : password_get_info(); Obtient des infos sur l’algo utilisée et son “coût”. password_hash(); Permet de générer un hack d’un mot de passe, les options de l’algo sont directement envoyé par un tableau php et plus un salt. password_needs_rehash(); Détermine si le mot de passe correspond à l’aglo fournie password_verify(); Obtient les informations sur le hash, applique l’algo et les options identique à une chaine et compare.
  18. 18. Et pour générer de superbes hash avec php : Il existe une petite extension bien pratique! mcrypt_create_iv(int $size); string(20) "’™É€á7hüwy–ÕOÌI(ê" string(20) "ÌD (=3Ç×D¶Lhe(êæèã" string(20) "±Á.7“/ª³YŠ¯KË£W߯²" string(20) ".>¤-Á¾ çw}c(ß÷X¢sò" Enregistrement en BASE64 impérativement !
  19. 19. Des questions ?
  20. 20. http://project-rainbowcrack.com/table.htm http://php.net/manual/fr/function.mcrypt-create-iv.php http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.148.7900&rep=rep1&type=pdf http://blog.ircmaxell.com/2012/12/seven-ways-to-screw-up-bcrypt.html http://www.gregboggs.com/php-blowfish-random-salted-passwords/ http://md5decrypter.co.uk/ http://fr.wikipedia.org/wiki/SHA-1 http://php.net/manual/fr/function.password-hash.php http://cryptography.hyperlink.cz/md5/MD5_collisions.pdf http://www.iacr.org/conferences/crypto2005/r/2.pdf

×