<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Commentaires sur : Générer un mot de passe aléatoire sécuritaire</title>
	<atom:link href="http://www.sylvainlevesque.com/2009/10/22/generer-un-mot-de-passe-aleatoire-securitaire/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sylvainlevesque.com/2009/10/22/generer-un-mot-de-passe-aleatoire-securitaire/</link>
	<description>Mens sana in PHP sano !</description>
	<lastBuildDate>Wed, 28 Jul 2010 14:55:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Par : Sylvain Lévesque</title>
		<link>http://www.sylvainlevesque.com/2009/10/22/generer-un-mot-de-passe-aleatoire-securitaire/comment-page-1/#comment-82</link>
		<dc:creator>Sylvain Lévesque</dc:creator>
		<pubDate>Fri, 23 Oct 2009 19:45:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.sylvainlevesque.com/?p=175#comment-82</guid>
		<description>Donc ça donnerait !

&lt;pre lang=&quot;php&quot;&gt;
/**
 * Generate a random secure password.
 *
 * @param integer $nbChar Password length. Default 8.
 *
 * @access public
 * @author Sylvain Lévesque
 * @return string
 */
function generatePass( integer $nbChar = 8 ) {
    if ( empty($nbChar) ) {
        $nbChar = 8;
    }   
 
    return substr(crypt(uniqid(mt_rand(), true), 0, $nbChar);
}
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>Donc ça donnerait !</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**
 * Generate a random secure password.
 *
 * @param integer $nbChar Password length. Default 8.
 *
 * @access public
 * @author Sylvain Lévesque
 * @return string
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> generatePass<span style="color: #009900;">&#40;</span> integer <span style="color: #000088;">$nbChar</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">8</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$nbChar</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$nbChar</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">8</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>   
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">crypt</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">uniqid</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">mt_rand</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$nbChar</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
	</item>
	<item>
		<title>Par : Pierre-Yves Langlois</title>
		<link>http://www.sylvainlevesque.com/2009/10/22/generer-un-mot-de-passe-aleatoire-securitaire/comment-page-1/#comment-81</link>
		<dc:creator>Pierre-Yves Langlois</dc:creator>
		<pubDate>Fri, 23 Oct 2009 16:01:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.sylvainlevesque.com/?p=175#comment-81</guid>
		<description>Bon.. finalement c&#039;est Dave qui avait la solution!

http://ca.php.net/manual/fr/function.crypt.php

Keep it simple!</description>
		<content:encoded><![CDATA[<p>Bon.. finalement c&#8217;est Dave qui avait la solution!</p>
<p><a href="http://ca.php.net/manual/fr/function.crypt.php" rel="nofollow">http://ca.php.net/manual/fr/function.crypt.php</a></p>
<p>Keep it simple!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Pierre-Yves Langlois</title>
		<link>http://www.sylvainlevesque.com/2009/10/22/generer-un-mot-de-passe-aleatoire-securitaire/comment-page-1/#comment-80</link>
		<dc:creator>Pierre-Yves Langlois</dc:creator>
		<pubDate>Fri, 23 Oct 2009 15:19:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.sylvainlevesque.com/?p=175#comment-80</guid>
		<description>À propos du reset de mot de passe... Si un pattern était découvert dans l&#039;algo pseudo-aléatoire, le hacker n&#039;a qu&#039;à demander à répétition un reset du mot de passe et tester les mots de passe les plus probablement entre chaque reset...</description>
		<content:encoded><![CDATA[<p>À propos du reset de mot de passe&#8230; Si un pattern était découvert dans l&#8217;algo pseudo-aléatoire, le hacker n&#8217;a qu&#8217;à demander à répétition un reset du mot de passe et tester les mots de passe les plus probablement entre chaque reset&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Pierre-Yves Langlois</title>
		<link>http://www.sylvainlevesque.com/2009/10/22/generer-un-mot-de-passe-aleatoire-securitaire/comment-page-1/#comment-79</link>
		<dc:creator>Pierre-Yves Langlois</dc:creator>
		<pubDate>Fri, 23 Oct 2009 13:19:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.sylvainlevesque.com/?p=175#comment-79</guid>
		<description>Oups... le XOR c&#039;est pas ^ mais bien XOR il semblerait... du genre V1 XOR V2...

Pis au lieu de prendre seulement 2 caractères pour générer les index, tu es mieux avec 4, comme ça tu auras plus &quot;d&#039;unicité&quot;....

dsl pour mon petit côté obsessif! :D</description>
		<content:encoded><![CDATA[<p>Oups&#8230; le XOR c&#8217;est pas ^ mais bien XOR il semblerait&#8230; du genre V1 XOR V2&#8230;</p>
<p>Pis au lieu de prendre seulement 2 caractères pour générer les index, tu es mieux avec 4, comme ça tu auras plus &laquo;&nbsp;d&#8217;unicité&nbsp;&raquo;&#8230;.</p>
<p>dsl pour mon petit côté obsessif! <img src='http://www.sylvainlevesque.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Pierre-Yves Langlois</title>
		<link>http://www.sylvainlevesque.com/2009/10/22/generer-un-mot-de-passe-aleatoire-securitaire/comment-page-1/#comment-78</link>
		<dc:creator>Pierre-Yves Langlois</dc:creator>
		<pubDate>Fri, 23 Oct 2009 13:03:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.sylvainlevesque.com/?p=175#comment-78</guid>
		<description>Tu es tombé sur l&#039;un de mes dadas, la sécurité informatique! :D

J&#039;ai trouvé ici une super fonction en PHP:
http://ca3.php.net/manual/fr/function.uniqid.php


$better_token = md5(uniqid(mt_rand(), true));


Si tu génères 5 fois (ou plus au besoin) ce token, tu obtiens une longue string du genre:

4DF2AB05DFFC3E349295....B6097E8A3CAD492B

Si tu fais des paires avec chaque caractères, tu obtiens un chiffre en hexa entre 0 et 255:

4D = 77
DF = 223
F2 = 242
etc..

Ces valeurs pourraient devenir des indexes qui serviraient à choisir un lettre dans un tableau de caractères:

Pour le tableau:

023456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ#!$

77 = f  (J&#039;ai fait un tour complet du tableau + 14)
223 = C
242 = W

... tu obtiens ton mot de passe unique &quot;fCW....&quot;

Note:
Idéalement tu devrais ajoutez un &quot;sel&quot; sur ton token afin d&#039;éviter les problèmes au caus où ton token est généré trop rapidement: 


$better_token = md5(uniqid(mt_rand(), true) ^ str_shuffle($uneChainedeCaractereTresLongue));


J&#039;aurais aimé fournir le code en PHP mais mon php ne s&#039;est pas levé ce matin ;)

Qu&#039;est-ce que tu en penses?</description>
		<content:encoded><![CDATA[<p>Tu es tombé sur l&#8217;un de mes dadas, la sécurité informatique! <img src='http://www.sylvainlevesque.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>J&#8217;ai trouvé ici une super fonction en PHP:<br />
<a href="http://ca3.php.net/manual/fr/function.uniqid.php" rel="nofollow">http://ca3.php.net/manual/fr/function.uniqid.php</a></p>
<p>$better_token = md5(uniqid(mt_rand(), true));</p>
<p>Si tu génères 5 fois (ou plus au besoin) ce token, tu obtiens une longue string du genre:</p>
<p>4DF2AB05DFFC3E349295&#8230;.B6097E8A3CAD492B</p>
<p>Si tu fais des paires avec chaque caractères, tu obtiens un chiffre en hexa entre 0 et 255:</p>
<p>4D = 77<br />
DF = 223<br />
F2 = 242<br />
etc..</p>
<p>Ces valeurs pourraient devenir des indexes qui serviraient à choisir un lettre dans un tableau de caractères:</p>
<p>Pour le tableau:</p>
<p>023456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ#!$</p>
<p>77 = f  (J&#8217;ai fait un tour complet du tableau + 14)<br />
223 = C<br />
242 = W</p>
<p>&#8230; tu obtiens ton mot de passe unique &laquo;&nbsp;fCW&#8230;.&nbsp;&raquo;</p>
<p>Note:<br />
Idéalement tu devrais ajoutez un &laquo;&nbsp;sel&nbsp;&raquo; sur ton token afin d&#8217;éviter les problèmes au caus où ton token est généré trop rapidement: </p>
<p>$better_token = md5(uniqid(mt_rand(), true) ^ str_shuffle($uneChainedeCaractereTresLongue));</p>
<p>J&#8217;aurais aimé fournir le code en PHP mais mon php ne s&#8217;est pas levé ce matin <img src='http://www.sylvainlevesque.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Qu&#8217;est-ce que tu en penses?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Sylvain Lévesque</title>
		<link>http://www.sylvainlevesque.com/2009/10/22/generer-un-mot-de-passe-aleatoire-securitaire/comment-page-1/#comment-77</link>
		<dc:creator>Sylvain Lévesque</dc:creator>
		<pubDate>Fri, 23 Oct 2009 01:53:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.sylvainlevesque.com/?p=175#comment-77</guid>
		<description>À vrai dire rajouter une fonction de hachage est ultra simple en PHP.

&lt;pre lang=&quot;php&quot;&gt;
$password = md5( &#039;MonSuperMotDePasseAHacher&#039; );
&lt;/pre&gt;

ou encore mieux:

&lt;pre lang=&quot;php&quot;&gt;
$password = sha1( &#039;MonSuperMotDePasseAHacher&#039; );
&lt;/pre&gt;

Mais veux-tu bien me dire qui pourrait retenir un mot de passe de la longeur d&#039;un hash ? Pas très pratique. Mais je suis d&#039;accord avec le fait qu&#039;il serait plus sécuritaire.

Pour le reset de mot de passe, c&#039;est exactement le genre d&#039;application de cette fonction.

Pour ajouter un plus encore on pourrait se constituer un dictionnaire de mots et vérifier contre cette liste le mot de passe généré. En plus du cache de mots de passe ça serait pas mal du tout !</description>
		<content:encoded><![CDATA[<p>À vrai dire rajouter une fonction de hachage est ultra simple en PHP.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$password</span> <span style="color: #339933;">=</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'MonSuperMotDePasseAHacher'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>ou encore mieux:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$password</span> <span style="color: #339933;">=</span> <span style="color: #990000;">sha1</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'MonSuperMotDePasseAHacher'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Mais veux-tu bien me dire qui pourrait retenir un mot de passe de la longeur d&#8217;un hash ? Pas très pratique. Mais je suis d&#8217;accord avec le fait qu&#8217;il serait plus sécuritaire.</p>
<p>Pour le reset de mot de passe, c&#8217;est exactement le genre d&#8217;application de cette fonction.</p>
<p>Pour ajouter un plus encore on pourrait se constituer un dictionnaire de mots et vérifier contre cette liste le mot de passe généré. En plus du cache de mots de passe ça serait pas mal du tout !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Pierre-Yves Langlois</title>
		<link>http://www.sylvainlevesque.com/2009/10/22/generer-un-mot-de-passe-aleatoire-securitaire/comment-page-1/#comment-76</link>
		<dc:creator>Pierre-Yves Langlois</dc:creator>
		<pubDate>Thu, 22 Oct 2009 20:53:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.sylvainlevesque.com/?p=175#comment-76</guid>
		<description>Effectivement! Une solution avec une fonction de hachage rend le code beaucoup plus difficile à lire :( 

Est-ce que tes utilisateurs peuvent demander un &quot;reset&quot; de leur mot de passe pour les cas où il l&#039;aurait oublié?

Mais effectivement, tout dépend de l&#039;utilisation que tu en fais...</description>
		<content:encoded><![CDATA[<p>Effectivement! Une solution avec une fonction de hachage rend le code beaucoup plus difficile à lire <img src='http://www.sylvainlevesque.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  </p>
<p>Est-ce que tes utilisateurs peuvent demander un &laquo;&nbsp;reset&nbsp;&raquo; de leur mot de passe pour les cas où il l&#8217;aurait oublié?</p>
<p>Mais effectivement, tout dépend de l&#8217;utilisation que tu en fais&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Sylvain Lévesque</title>
		<link>http://www.sylvainlevesque.com/2009/10/22/generer-un-mot-de-passe-aleatoire-securitaire/comment-page-1/#comment-75</link>
		<dc:creator>Sylvain Lévesque</dc:creator>
		<pubDate>Thu, 22 Oct 2009 18:46:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.sylvainlevesque.com/?p=175#comment-75</guid>
		<description>Merci Pierre-Yves pour ton commentaire. J&#039;aime bien ce genre de commentaire geek ! :)

Selon la documentation officiel de PHP que l&#039;on peut retrouver ici dans la fonction shuffle:

http://ca3.php.net/manual/fr/function.shuffle.php

Le générateur de nombres aléatoires est initialisé automatiquement depuis la version PHP 4.2.0. Personnellement je suis sur PHP 5.2.6 et j&#039;espère que tout le monde est rendu à au moins PHP 5. À moins que je me trompe, et pour ça il faudrait vérifier la source en C (C++) de PHP, ceci n&#039;est plus un algo pseudo-aléatoire.

Une avenue possible pour éviter ce problème pourrait être de tenir un cache des mots de passe générés et de vérifier contre cette liste pour l&#039;unicité du mot de passe généré. Ça enlève la simplicité et l&#039;élégance de la solution par contre.

Ça dépend de l&#039;utilisation que nous voulons faire des mots de passe générés. Dans mon cas, c&#039;est des mots de passe temporaires destinés à être modifiés par l&#039;utilisateur ensuite. Par exemple pour un formulaire d&#039;inscription.

Merci pour le lien je vais le lire avec attention !</description>
		<content:encoded><![CDATA[<p>Merci Pierre-Yves pour ton commentaire. J&#8217;aime bien ce genre de commentaire geek ! <img src='http://www.sylvainlevesque.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Selon la documentation officiel de PHP que l&#8217;on peut retrouver ici dans la fonction shuffle:</p>
<p><a href="http://ca3.php.net/manual/fr/function.shuffle.php" rel="nofollow">http://ca3.php.net/manual/fr/function.shuffle.php</a></p>
<p>Le générateur de nombres aléatoires est initialisé automatiquement depuis la version PHP 4.2.0. Personnellement je suis sur PHP 5.2.6 et j&#8217;espère que tout le monde est rendu à au moins PHP 5. À moins que je me trompe, et pour ça il faudrait vérifier la source en C (C++) de PHP, ceci n&#8217;est plus un algo pseudo-aléatoire.</p>
<p>Une avenue possible pour éviter ce problème pourrait être de tenir un cache des mots de passe générés et de vérifier contre cette liste pour l&#8217;unicité du mot de passe généré. Ça enlève la simplicité et l&#8217;élégance de la solution par contre.</p>
<p>Ça dépend de l&#8217;utilisation que nous voulons faire des mots de passe générés. Dans mon cas, c&#8217;est des mots de passe temporaires destinés à être modifiés par l&#8217;utilisateur ensuite. Par exemple pour un formulaire d&#8217;inscription.</p>
<p>Merci pour le lien je vais le lire avec attention !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Pierre-Yves Langlois</title>
		<link>http://www.sylvainlevesque.com/2009/10/22/generer-un-mot-de-passe-aleatoire-securitaire/comment-page-1/#comment-74</link>
		<dc:creator>Pierre-Yves Langlois</dc:creator>
		<pubDate>Thu, 22 Oct 2009 18:02:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.sylvainlevesque.com/?p=175#comment-74</guid>
		<description>Salut Sylvain,

Ton algo se base un générateur pseudo-aléatoire... str_shuffle doit utiliser quelque chose comme rnd() en c++. Il est donc possible que le même mot de passe soit générer 2 fois ou même plus. Une faiblesse dans l&#039;algo pseudo-aléatoire pourrait mettre en évidence que certain mot de passe sont générés plus souvent que d&#039;autres. Le hacker pourrait essayer ces mots de passe en premier puisqu&#039;ils ont plus de chance d&#039;être générés...

Idéalement il faut que tu essaies de créer un algo qui ne génère jamais le même mot de passe 2 fois (ou sinon très rarement). Les fonctions de hachage peuvent aider à atteindre ton but mais il existe des méthodes plus sophistiquées:

https://www.grc.com/passwords.htm

:)</description>
		<content:encoded><![CDATA[<p>Salut Sylvain,</p>
<p>Ton algo se base un générateur pseudo-aléatoire&#8230; str_shuffle doit utiliser quelque chose comme rnd() en c++. Il est donc possible que le même mot de passe soit générer 2 fois ou même plus. Une faiblesse dans l&#8217;algo pseudo-aléatoire pourrait mettre en évidence que certain mot de passe sont générés plus souvent que d&#8217;autres. Le hacker pourrait essayer ces mots de passe en premier puisqu&#8217;ils ont plus de chance d&#8217;être générés&#8230;</p>
<p>Idéalement il faut que tu essaies de créer un algo qui ne génère jamais le même mot de passe 2 fois (ou sinon très rarement). Les fonctions de hachage peuvent aider à atteindre ton but mais il existe des méthodes plus sophistiquées:</p>
<p><a href="https://www.grc.com/passwords.htm" rel="nofollow">https://www.grc.com/passwords.htm</a></p>
<p> <img src='http://www.sylvainlevesque.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Sylvain Lévesque</title>
		<link>http://www.sylvainlevesque.com/2009/10/22/generer-un-mot-de-passe-aleatoire-securitaire/comment-page-1/#comment-73</link>
		<dc:creator>Sylvain Lévesque</dc:creator>
		<pubDate>Thu, 22 Oct 2009 16:36:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.sylvainlevesque.com/?p=175#comment-73</guid>
		<description>Merci pour ton commentaire !

Excellente suggestion que j&#039;ai répliqué dans le bout de code.

Ciao !</description>
		<content:encoded><![CDATA[<p>Merci pour ton commentaire !</p>
<p>Excellente suggestion que j&#8217;ai répliqué dans le bout de code.</p>
<p>Ciao !</p>
]]></content:encoded>
	</item>
</channel>
</rss>
