2008-09-24 16 views
5

Je travaille sur un algorithme de validation de mot de passe qui doit vérifier les mots de passe potentiels par rapport au dictionnaire. Si le mot de passe ou une partie de celui-ci peut être trouvé dans le dictionnaire, le rejeter. La fonction est assez facile, mais où puis-je trouver la liste des mots? Existe-t-il déjà un service Web pour rechercher des mots? J'ai fourré autour de certains, mais pas trouvé quelque chose qui crie "Pick Me!" Merci.Où puis-je trouver un dictionnaire pour la validation du mot de passe?

EDIT: Lorsque j'ai posé cette question, je n'avais pas pensé à des dictionnaires de mots de passe spécifiques comme @Joe Skora qui incluraient des mots qui pourraient être évités. Donc, je vais étendre la question pour inclure ce type de dictionnaire, et tout autre chose que je ne pense pas à écrire cette fonction.

La plate-forme est C#/ASP.Net/SQL Server. Ceci est seulement un composant de l'algorithme pour les mots de passe forts qui devront être implémentés. Merci encore.

Répondre

0

Je pense que l'ancien programme était wwwhack .. il avait quelques dictionnaires de force brute que vous pouvez utiliser comme base (ils ont été inclus en tant que fichiers de texte à plat je pense), à ​​part que je ne connais aucun endroit avoir des dictionnaires PW communs disponibles au public.

1

Il existe plusieurs listes de mots/bases de données générales de licences ouvertes (non spécifiques aux mots de passe). Mon préféré est le Princeton WordNet

1

Habituellement

  • /usr/dict/words

ou

  • /usr/share/dict/Mots

selon sur lequel vous avez unix.

Il y a plus disponible en ligne, comme ce free multilingual dictionary

+1

il est sur une plate-forme ASP.Net; Je doute qu'il ait accès à/usr/quoi que ce soit. – hometoast

0

Un dictionnaire couple/lexiques sont disponibles here.

1

Pour vérifier un mot de passe fort, vous devez faire plus que vérifier les mots dans le dictionnaire. Mais s'il n'y a pas déjà une bibliothèque pour le faire dans votre plate-forme (qu'est-ce que c'est?), Il suffit de la traiter comme si vous vouliez faire une vérification orthographique. Si une partie du mot de passe passe un correcteur orthographique, il échoue.

Microsoft a un library for spell-checking. Si vous souhaitez spécifiquement utiliser un web service, consider this.

+0

Merci. la vérification du dictionnaire n'est qu'un élément de la validation du mot de passe. C#/ASP.Net/SQL Server 05. – JasonS

6

Googling sur des dictionnaires gratuits vous donne beaucoup de dictionnaires disponibles librement. Si vous les téléchargez dans une base de données, vous pouvez rechercher rapidement un mot connu.

Cependant, ne pense pas qu'il va éliminer les attaques non-force brute!

Vous devriez jeter un oeil à applications de craquage de mot de passe! L'extension la plus simple de l'attaque par dictionnaire consiste à combiner des mots.De plus, il existe d'autres types d'attaques, comme le remplacement de caractères, qui sont proches les uns des autres sur un clavier. (Par exemple: mettez d à f.)

La meilleure application de craquage de mot de passe que j'ai vue jusqu'à maintenant est John the Ripper. Si vous voyez, quel type d'attaques il utilise, vous pouvez construire un meilleur générateur de mot de passe.

Vous devriez aussi étudier les habitudes des utilisateurs , parce que un mot de passe typique est un mauvais mot de passe. Par exemple, la plupart des utilisateurs mettent des nombres dans la fin de leur mot de passe, donc un mot de passe fort est, qui a un nombre dans son milieu.

1

Je pense qu'il n'y a pas besoin de vérifier par rapport à un dictionnaire, surtout si vous voulez rejeter même une partie de votre mot de passe. L'anglais a beaucoup de petits mots et s'étendre aux dictionnaires multilingues empêcherait probablement d'utiliser n'importe quel mot de passe d'une taille raisonnable sans pour autant que chaque lettre soit un 'z' 'q' ou 'y': 'un' 'sur' 'dans' « je » « hum » « o » etc.

Je ne comprends pas très bien pourquoi vous vous occupez d'un mot de passe dans un dictionnaire lorsque vous pouvez facilement imposer d'autres règles simples:

Le mot de passe avec un minimum longueur de 8 caractères doit consister en:

  • 2 à 8 caractères majuscules
  • 2 à 8 caractères minuscules
  • 2 à 8 numéros
  • 1 à 4 caractères spéciaux (*** + » % de & /() - [] {} \ <> etc.)
+0

Je ne me soucie pas des mots du dictionnaire, mais les exigences le font! – JasonS

+2

Le NIST n'est pas d'accord avec vous. http://csrc.nist.gov/publications/nistpubs/800-63/SP800-63V1_0_2.pdf – DanO

1

J'ai obtenu la liste de mots de here, et l'ai chargée dans ma base de données. Suppression de tous les mots de moins de 3 caractères.

Ecrit une fonction C# pour analyser chaque sous-chaîne d'un mot de passe (uniquement pour l'instant) dans une chaîne XML.

Transmettez la chaîne xml à un proc stocké qui crée une table temporaire de 1 colonne avec chaque sous-chaîne faisant une ligne.

Joignez la table temporaire à ma liste de mots, et si des lignes sont retournées, je sais que le mot de passe contient un mot de dictionnaire, et je sais quelles sous-chaînes correspondaient.

Cela fonctionne bien, mais je pense que nous finirons par modifier un peu la liste de mots, car elle peut être trop restrictive.

Merci pour l'aide sur la liste des mots

j'ai essayé d'abord d'aller la route correcteur orthographique, mais je ne ai trouvé un moyen de faire une vérification orthographique sans soit une composante 3ème partie (redistribution était trop cher et nous vendons un produit), ou nécessitant MS Word sur le serveur.

+0

Ce lien est mort! – Sukima

+0

La base de données référencée est une base de données SQL Server et vous pouvez l'obtenir à partir de sa source d'origine ici: [https: // code.google.com/p/wordnetsqlserver](https://code.google.com/p/wordnetsqlserver). La base de données elle-même est en fait ici: [https://code.google.com/p/wordnetsqlserver/source/browse/trunk/Database/WordNet-SQLServer.zip](https://code.google.com/p/wordnetsqlserver /source/browse/trunk/Database/WordNet-SQLServer.zip). – STLDeveloper