Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/07/2006, 21h15   #1
Membre chevronné
 
Inscription : juillet 2006
Messages : 1 194
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 1 194
Points : 751
Points : 751
Par défaut [Sécurité] Mot de passe autogénéré

--
Sergejack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2006, 21h27   #2
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Je ne vois pas l'intérêt. Ce qui permet l'accès reste la clé, à la charge de l'utilisateur.
A quoi sert le mot de passe en base de données, exactement ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2006, 22h02   #3
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

J'ai l'impression que tu as simplement inversé les termes : ta clef est en fait le mot de passe, et ton mot de passe est en fait la clef.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2006, 22h03   #4
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par Yogui
Salut

J'ai l'impression que tu as simplement inversé les termes : ta clef est en fait le mot de passe, et ton mot de passe est en fait la clef.
Ca change rien à ma question : à quoi sert la partie qui est conservée sur le serveur, celle qui est chiffrée avec l'info de l'utilisateur ? Je pige pas
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2006, 22h20   #5
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
C'est le grain de sel.
Tu enregistres un grain de sel pour tout le site ou pour chaque utilisateur et tu l'utilises pour modifier le mot de passe (contacténation, ce que tu veux). C'est cette nouvelle chaîne que tu cryptes avant de la stocker en BDD et c'est elle que tu utiliseras en lieu de mot de passe.

C'est une pratique très utilisée.

Exemple par Chris Shiflett

Stockage du mot de passe :
Code :
1
2
3
4
5
6
7
8
9
10
<?php
 
/* $password contains the password */
 
$salt = 'DEVELOPPEZ';
$password_hash = md5($salt . md5($password) . $salt));
 
/* Store password hash */
 
?>
Comparaison du mot de passe :
Code :
1
2
3
4
5
6
7
8
<?php
 
$salt = 'DEVELOPPEZ';
$password_hash = md5($salt . md5($_POST['password']) . $salt));
 
/* Compare password hashes */
 
?>
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2006, 22h23   #6
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par Yogui
C'est le grain de sel.
Tu enregistres un grain de sel pour tout le site ou pour chaque utilisateur et tu l'utilises pour modifier le mot de passe (contacténation, ce que tu veux). C'est cette nouvelle chaîne que tu cryptes avant de la stocker en BDD et c'est elle que tu utiliseras en lieu de mot de passe.
Oué, ça je comprends... C'est pour augmenter l'entropie du hashage ?
Mais c'est bien ça qui est fait ici ???
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2006, 22h28   #7
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Si la BDD est compromise, les mots de passe ne seront pas récupérables car tu n'as pas utilisé un simple md5 mais aussi augmenté l'entropie du hash. Il faudrait au pirate toutes les infos pour espérer décoder les mots de passe, ce qui lui complique passablement la tâche.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2006, 22h32   #8
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Tu as conservé ta sémantique pour écrire ce dernier message ou bien tu as repris la terminologie du reste du monde ?

[Edit] Ce qui est appelé "mot de passe" est une chaîne choisie par l'utilisateur (ou du moins qu'il possède et utilise), tandis que la "clef" ne lui est pas nécessairement communiquée (puisque c'est une donnée automatisée).
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2006, 23h17   #9
Membre chevronné
 
Inscription : juillet 2006
Messages : 1 194
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 1 194
Points : 751
Points : 751
Je n'ai pas devinné que mon vocabulaire portait à confusion, je reprends.

En consiérant 3 chaînes de caractères, A, C, RA.

A est crypté avec la clé d'encryption C et donne RA, résultat de l'encryption.

J'utilise une encryption à clé plus sûre que le MD5 qui a été cassé.
J'ai un site où j'utilise une seule clé d'encryption pour toutes les encryptions et je garde cette clé dans un fichier de configuration.

Est-ce que, encryptant tous les mot de passes avec cette même clé, l'utilisateur gagnerait en sécurité en changeant régulièrement son mot de passe ?
Sergejack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2006, 23h21   #10
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
on gagne toujours en sécurité en changeant souvent de mot de passe.

point de vue vocabulaire, je ne crois pas qu'on parle de clé pour un algo de hash, vu que la "clé" ne permet pas l'opération inverse.

C'est quoi que tu utilises comme algo, par curiosité ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2006, 23h38   #11
Membre chevronné
 
Inscription : juillet 2006
Messages : 1 194
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 1 194
Points : 751
Points : 751
Citation:
Envoyé par Eusebius
on gagne toujours en sécurité en changeant souvent de mot de passe.
Ce n'est pas dit, parce que cela doit dépendre du bon choix du traitement fait au MDP.

Si l'on a deux séries A[] et RA[] (de longuer n) de chaînes de caractère, et une chaîne de caractère C qui sert de clé d'encryption.
Où un élémént RA[x] correspond à l'encryption de l'élément A[x] avec la clé C.

Le hacker potentiel connait A[] et RA[] n'aurait-il pas d'autant plus facile à retrouver C que ces séries seraient longues ?

Citation:
Envoyé par Eusebius
C'est quoi que tu utilises comme algo, par curiosité ?
AES implémenté dans MySQL Ici
Sergejack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2006, 23h43   #12
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par Sergejack
Le hacker potentiel connait A[] et RA[] n'aurait-il pas d'autant plus facile à retrouver C que ces séries seraient longues ?
Si, mais il faut pour cela qu'il récupère tout l'historique, Non ? Et de plus lorsqu'on change de mot de passe, il n'y a a priori pas de relation entre le chiffré de l'un et le chiffré de l'autre.
Alors que si le changement de mdp est moins fréquent, si ta connexion n'est pas chiffrée (mais bon j'imagine qu'elle l'est), si qqn sniffe le mot de passe de l'utilisateur, qu'il y ait AES derrière ou pas, il sera valable jusqu'à ce qu'il soit changé.

Citation:
Envoyé par Sergejack
AES implémenté dans MySQL
OK, donc pas comparable avec MD5, c'est pas un algo de hash.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 09h51   #13
Membre éprouvé
 
Homme
Consultant en Business Intelligence
Inscription : mai 2003
Messages : 910
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mai 2003
Messages : 910
Points : 407
Points : 407
Citation:
Envoyé par Yogui
C'est le grain de sel.
Tu enregistres un grain de sel pour tout le site ou pour chaque utilisateur et tu l'utilises pour modifier le mot de passe (contacténation, ce que tu veux). C'est cette nouvelle chaîne que tu cryptes avant de la stocker en BDD et c'est elle que tu utiliseras en lieu de mot de passe.

C'est une pratique très utilisée.

Exemple par Chris Shiflett

Stockage du mot de passe :
Code :
1
2
3
4
5
6
7
8
9
10
<?php
 
/* $password contains the password */
 
$salt = 'DEVELOPPEZ';
$password_hash = md5($salt . md5($password) . $salt));
 
/* Store password hash */
 
?>
Comparaison du mot de passe :
Code :
1
2
3
4
5
6
7
8
<?php
 
$salt = 'DEVELOPPEZ';
$password_hash = md5($salt . md5($_POST['password']) . $salt));
 
/* Compare password hashes */
 
?>
Merci beaucoup Chris Shiflett !

Il serait intéressant de le mettre dans les sources PHP, non ?

Gôm
__________________
Quand on n'a pas d'tête, on a ...
ghohm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 10h27   #14
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
En effet mais nous sommes en train de prévoir quelque chose de plus complet, merci de nous laisser un moment pour finaliser tout cela.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 12h22   #15
Membre chevronné
 
Inscription : juillet 2006
Messages : 1 194
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 1 194
Points : 751
Points : 751
Un exemple reprennant l'essemble des rêgles de sécurité serait plus approprié.

Stockage du mot de passe :
Code :
1
2
3
4
5
6
7
<?php
 
$password_hash = $_POST['md5_password']; // pasword hshé du côté client
 
/* Store password hash */
 
?>
Comparaison du mot de passe :
Code :
1
2
3
4
5
6
7
8
9
10
<?php
 
// $salt dynamique stocké dans une variable de Session, et mise à connaissance du client via un JS dans la page précédement envoyé
$password_hash = md5($salt . $md5_password . $salt));
 
/* Compare password hashes */
 
// ($password_hash == $_POST['md5_passwordAndSalt'])
 
?>
Sergejack est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h41.


 
 
 
 
Partenaires

Hébergement Web