Dev backend php5 en SSII
Mercenaire du code
…
…
“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 d...
Faire mieux que les centaines d’
experts en cryptologie qui
bossent à la CIA/NSA ? en php ?
Que j’ai 10 ou 200 passagers, mon bus
fera toujours 34 places…
SUPERPOSITION! euh...

COLLISIONS!
100%

38

3.4 × 10

50%

2.2 × 1019
264
Vers

2

54

Principe:
toto: 01101101011001010111010101010101011110001110
titi : 1010101011011110001001100110011010100...
280 263
Ce qui diminue le temps de recherche par un facteur de
131 072!

http://www.iacr.org/conferences/crypto2005/r/2.pd...
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
Win...
Basé sur l'algorithme de chiffrement par bloc Blowfish

S’utilise avec la fonction crypt() de php
crypt('azerty123', '$2a$...
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
Windo...
Facteur temps

md5

sha1

bcrypt 4

x1200

x1900

bcrypt 10

x11 000

x100 000

bcrypt 12

x420 000

x390 000

Temps réali...
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...
Petite info:
Il existe une étude scientifique de 2008 qui démontre qu’
il est possible d’optimiser un CPU polymorphic (MOL...
En php il existe plusieurs méthodes pour générer des hashs dont :

crypt() (>php4)
Supporte plusieurs algorithmes

hash() ...
Avec PHP5.5 il existe de nouvelles méthodes :
password_get_info();
Obtient des infos sur l’algo utilisée et son “coût”.

p...
Et pour générer de superbes hash avec php :
Il existe une petite extension bien pratique!

mcrypt_create_iv(int $size);

s...
Des questions ?
http://project-rainbowcrack.com/table.htm
http://php.net/manual/fr/function.mcrypt-create-iv.php
http://citeseerx.ist.psu....
Stockage et hashage des mots de passe
Stockage et hashage des mots de passe
Stockage et hashage des mots de passe
Stockage et hashage des mots de passe
Stockage et hashage des mots de passe
Stockage et hashage des mots de passe
Stockage et hashage des mots de passe
Stockage et hashage des mots de passe
Stockage et hashage des mots de passe
Stockage et hashage des mots de passe
Stockage et hashage des mots de passe
Stockage et hashage des mots de passe
Stockage et hashage des mots de passe
Prochain SlideShare
Chargement dans…5
×

Stockage et hashage des mots de passe

392 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
392
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

×