Primero creo que es prudente entender la entropía de las contraseñas matemáticas. La wiki en Seguridad de la contraseña es un buen lugar para comenzar, pero en resumen, la entropía de la contraseña es probable que se pueda adivinar una contraseña dado un conjunto de símbolos.
Esto no es ni complejidad ni "habilidad de crack", la entropía se excluye mutuamente, estos dos conceptos no lo son.
Es importante entender primero la entropía porque tiene dos requisitos:
- Número de símbolos
- La longitud de esos símbolos
Número de símbolos
El número de símbolos proporcionado es una línea de base para el número de bits de entropía por símbolo. El alfabeto en mayúsculas solo no tiene los mismos bits de entropía como si incluyera también los símbolos en minúsculas. Si incluyes números, la entropía por símbolo aumenta. Cuantos más símbolos agregue, más bits de entropía obtendrá por símbolo, en otros términos, cuanto mayor sea su conjunto de símbolos, mayor será la entropía para cada símbolo.
Longitud de los símbolos
La longitud de los símbolos es importante porque cada símbolo agregado duplica efectivamente la entropía. Esta es la razón por la cual la longitud sola es un concepto tan importante que se inserta en la seguridad de la contraseña.
¿Qué es la complejidad?
La complejidad de una contraseña son las reglas que implementamos para hacer cumplir la "aleatoriedad" de las contraseñas. Aquí están las reglas básicas:
- mayúsculas
- minúsculas
- número
- carácter especial
Estos son comunes a la mayoría de las personas. Los sitios web lo utilizan todo el tiempo para intentar forzar a las personas a la aleatoriedad. Nosotros, sin embargo, no somos aleatorios. Esta es la razón por la cual los atacantes pueden usar algo como ataques de diccionario y algoritmos predictivos para adivinar contraseñas.
Sin embargo, va más allá de incluir medidas de seguridad como:
- Se utiliza cifrado o hash
- La fuerza de una sal
- Seguridad de una clave privada
y así sucesivamente.
Crack-ability
Esto es mucho más complicado que un simple post aquí. Sin embargo, es un tema interesante (menos para mí :)). La habilidad de crack es subjetiva, y la parte que debe comprender es que solo puede medir este concepto en base a un conjunto de reglas definidas. (No puedo decir una palabra mejor, no me gusta la "habilidad de crack", pero estoy bastante seguro de que entiendo lo que preguntas).
PCFG Generator
Dependiendo de lo que intentes definir utilizando el PCFG puede ser bastante complejo. Lo básico de un PCFG es que si lo alimenta con algo, palabras comunes, frases, etc., proporciona una probabilidad de lo que podría seleccionarse a continuación. Puede ver esto en la vida cotidiana utilizando teléfonos inteligentes con texto predictivo. (¿Alguna vez notaste que cuando empezaste a usarlo, las conjeturas eran mías y ahora es bastante bueno saber lo que vas a decir?)
Podrías alimentarlo con contraseñas comunes, y luego verificar que probablemente una persona use esa contraseña.
Para su proyecto, a menos que esté tratando de evaluar la probabilidad de que una persona elija una contraseña, sugeriría buscar otra cosa.