Ésta es una pregunta de dos partes:Ayuda con el cálculo (y utilidad) de la entropía contraseña
Parte 1
En primer lugar, se trata de calcular la entropía de una contraseña en PHP. No he podido encontrar ningún ejemplo de código que sea empíricamente sólido y realmente me gustaría obtener ayuda para encontrar la forma "correcta" de calcular un número final. Mucha gente en la red tiene su propio algoritmo de ponderación casero, pero realmente estoy buscando la respuesta científica a la ecuación.
Utilizaré la entropía de contraseñas como solo una parte de un sistema de seguridad más grande y como una forma de analizar nuestra seguridad general de datos basada en información accesible si la contraseña del usuario está comprometida y cuán fácilmente una contraseña puede ser rota por bruto fuerza.
Parte 2
La segunda parte de esta pregunta es: ¿Qué tan útil será este número realmente? Mi objetivo final es generar un "puntaje" para cada contraseña en el sistema que podamos usar para monitorear nuestra seguridad general del sistema como una entidad dinámica. Probablemente tendré que trabajar en otro algoritmo o dos para ataques de diccionario, contraseñas de reemplazo, etc., pero creo que la entropía jugará un papel importante en una calificación del sistema tan general. Sin embargo, doy la bienvenida a sugerencias para otros enfoques.
Lo que sé
he visto alguna mención de ecuaciones logarítmicas para calcular dicho entropía, pero todavía tengo que ver un buen ejemplo que no está escrito en realidad como una ecuación matemática. Realmente podría usar un ejemplo de código (incluso si no es estrictamente en PHP) para ponerme en marcha.
Extensión
Al hacer un comentario me di cuenta de que yo puedo explicar mejor la utilidad de este cálculo. Cuando estoy trabajando en sistemas heredados donde los usuarios tienen contraseñas extremadamente débiles, tengo que tener alguna evidencia concreta de esa debilidad antes de poder presentar un caso para obligar a todos los usuarios a cambiar sus contraseñas a una nueva contraseña fuerte (forzada). Al almacenar un puntaje de seguridad de contraseñas para cada cuenta de usuario en el sistema, puedo construir varias métricas diferentes para mostrar la debilidad general del sistema y defender las contraseñas más sólidas.
TIA
No puedo evitar la entropía, pero he utilizado [cracklib2] (http://www.fifi.org/doc/cracklib2/) con éxito antes. Hay un paquete Pear llamado [crack] (http://pecl.php.net/package/crack) para usar con PHP. – Mike
¿Qué pasa con el voto a favor? Si va a marcarlo, por favor dígame por qué puedo ajustar la pregunta o claificar. – Shane
+1 para contrarrestar un downvote solo porque es una buena pregunta. –