générateur htpasswd - encodage de mots de passe

5 mars 2015
Cette application web utilise une adaptation en JavaScript du programme htpasswd fourni avec le serveur Apache. Pour assurer une confidentialité totale, rien n'est transmis à aucun serveur, tout reste dans le navigateur, et je vous conseille même de l'utiliser hors-ligne.

1. Utilisateurs et mots de passe

Un utilisateur par ligne, avec ou sans mot de passe :

Générer des mots de passe de
Tout aléatoires


Prononçables (minuscules) - prenez plus long




2. Fichier htpasswd généré

Hachage :








Avec crypt() tous les mots de passe sont tronqués à 8 caractères maximum.
Vos données contiennent des caractères non-ascii. Le fichier de mots de passe devra être enregistré en ISO-8859-1 pour Firefox et Chrome, ou en UTF-8 pour Opera. N'utilisez que des caractères ascii pour être compatible avec tous les navigateurs.
Vos données contiennent des caractères unicode. Ça ne peut fonctionner qu'avec Opera, en UTF-8.
Sur votre navigateur, le générateur cryptographique de nombres aléatoires est

Algorithmes de hachage

bcrypt préfixe $2y$ ou $2a$
Algorithme de chiffrement actuellement considéré comme sûr. Les hashes bcrypt sont très lents à calculer (c'est d'ailleurs l'une des raisons de la qualité de ce hash). Le paramètre de coût permet de définir la durée de traitement (plus elle est longue, meilleure sera la sécurité). La valeur par défaut est 5 et les valeurs autorisées vont de 4 à 31.
Attention réfléchissez bien avant de dépasser 10, c'est vraiment très lent. Vous pouvez bloquer votre machine.
Compatibilité : Apache à partir de la version 2.4 (nécessite apr-util 1.5+)
md5 (APR) préfixe $apr1$
Hachage basé sur 1000 itérations de l'algorithme standard MD5. C'est l'algorithme utilisé par défaut depuis Apache 2.2.18
Compatibilité : toutes les versions d'Apache, Nginx 1.0.3+.
crypt(), aussi appelé crypt(3) pas de préfixe
Il était employé par défaut jusqu'à Apache 2.2.17. N'utilise que les 8 premiers caractères du mot de passe. Considéré comme non sûr.
Compatibilité : toutes les versions d'Apache et d'Nginx, sous Unix uniquement. Caractères ASCII non accentués uniquement.
sha-1 salé préfixe {SSHA}
Considéré comme non sûr. L'utilisation du sel interdit seulement de craquer plusieurs mots de passe simultanément, elle ne rend pas plus difficile le craquage d'un mot de passe.
Compatibilité : Nginx 1.0.3+ uniquement.
sha-1 préfixe {SHA}
Considéré comme non sûr. N'utiliser que pour certains cas particuliers de migration.
Compatibilité : toutes les versions d'Apache, Nginx 1.3.13+.
En clair (pas de hachage) pas de préfixe pour Apache, {PLAIN} pour Nginx
Les mots de passe sont stockés en clair.
Compatibilité : toutes les versions d'Apache sous Windows et Netware uniquement, Nginx 1.0.3+.

Configuration de votre serveur

• Placez votre fichier de mots de passe dans un répertoire inaccessible depuis le web sinon vos utilisateurs pourraient le télécharger.
• Si vous pouvez, utilisez une connection https pour éviter que les identifiants soient transmis en clair quand vos utilisateurs se connectent.

Fichier .htaccess Apache

AuthUserFile /chemin/vers/htpasswd
AuthName "L'accès à ce répertoire est sécurisé."
AuthType Basic
Require valid-user

Configuration Nginx

location  /  {
  auth_basic  "L'accès à ce répertoire est sécurisé";
  auth_basic_user_file  /chemin/vers/htpasswd;
}

Remerciements

Plusieurs scripts tierce-partie ont été nécessaires pour faire en sorte que cette application web soit 100% javascript côté client, donc utilisable hors ligne sans transmettre vos données nulle part :
• Les portages javascript des algorithmes md5 standard et sha1 ont été écrits par Paul Johnston.
• Une version modifiée du portage javascript de la fonction crypt(3) d'unix écrit par Jeff Walden.
en asm.js
zxcvbn pour le test de force des mots de passe.
• Une version modifiée du générateur de mots de passes prononçables de Tom Van Vleck.

Cette application utilise par ailleurs twin-bcrypt, mon implémentation de bcrypt super-rapide.

>