2008-09-24 32 views
5

Estoy trabajando en un algoritmo de validación de contraseñas que necesita verificar contraseñas potenciales contra el diccionario. Si la contraseña o cualquier parte de ella se puede encontrar en el diccionario, rechazarla. La función es bastante fácil, pero ¿dónde obtengo la lista de palabras? ¿Ya hay un servicio web para buscar palabras? He hurgado un poco, pero no he encontrado nada que grita "¡Pick Me!" Gracias.¿Dónde puedo encontrar un diccionario para la validación de contraseñas?

EDIT: cuando hice esta pregunta, no había pensado en diccionarios de contraseñas específicos como @Joe Skora que incluirían palabras que podrían evitarse. Por lo tanto, ampliaré la pregunta para incluir ese tipo de diccionario y cualquier otra cosa con la que no esté pensando al escribir esta función.

La plataforma es C#/ASP.Net/SQL Server. Este es solo un componente del algoritmo para contraseñas seguras que será necesario implementar. Gracias de nuevo.

Respuesta

0

Creo que el viejo programa era wwwhack ... tenía algunos diccionarios de fuerza bruta que podías usar como base (se incluyeron como archivos de texto plano, creo), aparte de eso, no conozco ningún lugar que tener diccionarios PW comunes disponibles para el público.

1

Existen varias listas de palabras/bases de datos generales de licencia abierta (no específicas para contraseñas). Mi favorito es el Princeton WordNet

1

Por lo general

  • /usr/dict/words

o

  • /usr/share/dict/words

dependiendo en que unix tienes

Hay más disponibles en línea, como este free multilingual dictionary

+1

está en una plataforma ASP.Net; Dudo que tenga acceso a/usr/cualquier cosa. – hometoast

0

Un diccionario par/listas de palabras están disponibles here.

1

Para verificar una contraseña segura, debe hacer más que solo buscar palabras en el diccionario. Pero si ya no hay una biblioteca para hacer esto en su plataforma (¿qué es eso por cierto?), Simplemente trátelo como si quisiera hacer una revisión ortográfica. Si alguna parte de la contraseña pasa un corrector ortográfico, falla.

Microsoft tiene un library for spell-checking.

Si desea utilizar específicamente un web service, consider this.

+0

Gracias. la comprobación del diccionario es solo un componente de la validación de la contraseña. C#/ASP.Net/SQL Server 05. – JasonS

6

Googling en los diccionarios gratuitos que da mucha diccionarios libre disposición de. Si los sube a una base de datos, puede hacer una búsqueda rápida de una palabra conocida.

Sin embargo, no creo que elimine los ataques de fuerza no bruta!

Debería echar un vistazo a aplicaciones para descifrar contraseñas! La extensión más simple del ataque del diccionario es combinar palabras.Además, hay otros tipos de ataques, como el reemplazo de caracteres, que están cerca el uno del otro en un teclado. (Por ejemplo: da vuelta a f.)

La mejor aplicación de descifrado de contraseñas que he visto hasta ahora es John the Ripper. Si ves, qué tipo de ataques usa, puedes construir un mejor generador de contraseñas.

También debe estudiar los hábitos del usuario , porque una contraseña típico es una contraseña incorrecta. Por ejemplo, la mayoría de los usuarios ponen los números en el final de su frase de contraseña, por lo que es una contraseña segura, que tiene un número en su medio.

1

Creo que no es necesario verificar con un dictionario, especialmente si desea rechazar incluso una parte de su contraseña. El inglés tiene muchas palabras pequeñas y extenderse a dictionnarios multilingües podría evitar el uso de cualquier contraseña de un tamaño razonable sin que todas las demás letras sean 'z' 'q' o 'y': 'a' 'en' 'en' 'je' 'um' 'o' etc.

no entiendo del todo por qué usted está cuidando de una contraseña en un diccionario cuando se puede imponer fácilmente a otras reglas simples:

La contraseña con un mínimo longitud de 8 caracteres debe consistir en:

  • 2 a 8 caracteres en mayúsculas
  • 2 a 8 caracteres en minúsculas
  • 2 a 8 números
  • 1 a 4 caracteres especiales (*** +" % & /() -? [] {} \ <> etc.)
+0

No me importan las palabras del diccionario, pero sí los requisitos. – JasonS

+2

NIST no está de acuerdo con usted. http://csrc.nist.gov/publications/nistpubs/800-63/SP800-63V1_0_2.pdf – DanO

1

Obtuve la lista de palabras de here y la cargué en mi base de datos. Se eliminaron todas las palabras de menos de 3 caracteres.

Escribió una función C# para analizar cada subcadena de una contraseña (reenviar solo por ahora) en una cadena xml.

Pase la cadena xml a un proceso almacenado que crea una tabla de temp. De 1 columna con cada subcadena formando una fila.

Únase a la tabla temporal de mi lista de palabras, y si se devuelve alguna fila, sé que la contraseña contiene una palabra del diccionario, y sé qué subcadenas coinciden.

Esto funciona bien, pero creo que terminaremos modificando la lista de palabras un poco, ya que puede ser demasiado restrictivo.

Gracias por la ayuda en la lista de palabras

principio intenté ir a la ruta de revisión de ortografía, pero que no encontrar una manera de hacer una revisión ortográfica, ya sea sin un componente tercera parte (redistribución era demasiado caro y estamos vendiendo un producto) o requiriendo MS Word en el servidor.

+0

¡Ese enlace está muerto! – Sukima

+0

La base de datos a la que se hace referencia es una base de datos de SQL Server, y puede obtenerla desde su fuente original aquí: [https: // code.google.com/p/wordnetsqlserver](https://code.google.com/p/wordnetsqlserver). La base de datos en sí misma está aquí: [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

Cuestiones relacionadas