
¿Cómo puedo saber si una contraseña tiene una entropía lo suficientemente buena como para evitar la fuerza bruta en una escala de tiempo realista? Por ejemplo, si tengo la siguiente contraseña, ¿cómo puedo determinar si es lo suficientemente segura como para evitar la fuerza bruta?
"?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245
Respuesta1
hayun sitio que puede brindarle una cifra estimada de entropía para la entrada de una contraseña. Para el ejemplo anterior, sugiere ~247 bits.
Puedes hacerte una idea muy aproximada de cuánto tiempo llevará¿Qué tan segura es mi contraseña?.
Sugiere que a una computadora le tomaría 15 novemdecillones de años descifrar la contraseña en su ejemplo.
Un análisis más detallado de la contraseña se puede ver enEl medidor de contraseñas.
Respuesta2
Su pregunta: "¿Es lo suficientemente fuerte como para evitar la fuerza bruta?"
La verdadera respuesta: "no"
La respuesta útil: "Probablemente, al menos en el futuro previsible"
Lo que deberías preguntar:
Necesito proteger este tipo de datos, que tienen requisitos xey, y sensibilidad z para mi empresa. ¿Es este un nivel apropiado de entropía?
Bueno, para ser justos, 210 bits, como señaló @Gareth, probablemente estarán bien durante mucho tiempo, pero eso puede ser excesivo, y haybuenas razones para no pasarse de la rayaen cifrado si no es necesario.
Respuesta3
Desde elBlog de tecnología de Dropbox,este es el mejor articuloque he visto recientemente, e incluso muestra una implementación de las teorías discutidas en él. No dude en hacerme saber si esto es útil de alguna manera.
Otra cosa a tener en cuenta sobre la seguridad, es la idea expresada en esteCómic XKCD.
Respuesta4
Depende de qué tan aleatoria sea tu contraseña.
Si elige una contraseña de la siguiente lista:
"?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245
aSBsb3ZlIHlvdSBLaXJzdGVuIFNoZWxieSBHdXllcg==
Entonces tienes exactamente 1 bit
de entropía (es la primera contraseña o la segunda).
Fue entonces cuando leíste elCómic XKCDesoDave vinculado.
Pero puedo hacer algunas suposiciones sobre tu contraseña:
"?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245 (40 characters)
Parece que usas un alfabeto de:
- mayúsculas
A-Z
(26 glifos) - minúsculas
a-z
(26 glifos) - números latinos
0-9
(10 glifos) - conjunto limitado de puntuación (asumiendo los 30 símbolos en un teclado de 101 teclas)
Eso suma un alfabeto de 92 caracteres.
Másasumiendoque todas tus contraseñas sean de 40 caracteres, eso te da:
92^40 = 3.56+E78
o3,5 quinvigintillonesposibles contraseñas.
Para convertir eso en bits
usted, haga:
ln(92^40) / ln(2) = 260.94 bits
Eso supone que su atacante tendría que forzar la contraseña de forma bruta.
Si solo queremos información, entonces el número de bits es en realidad mucho menor, porque en realidad usaste un alfabeto mucho más corto:
original: "?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245
rearranged: aaaaacdeeeegnoorrtuwyHI2245""?&&!!!!%%#$
alphabet: acdegnortuwyHI245"?&!%#$ (24 characters)
Realizando el mismo cálculo:
ln(24^40) / ln(2) = 183.4 bits
De manera realista, hay menos información allí porque puedo ver que cada vez que escribes e
va seguido de un símbolo:
e&
e&
e%
e%
Entonces reemplazamos e&
con el símbolo h
y e%
con el símbolo i
:
original: "?hyhga!ruaa!na!ita!irc#Iod$woH"2245 (36 characters)
rearranged: aaaaacdghhiinoorrtuwyIH2245""?!!!!#$
alphabet: acdghinortuwyIH2245"?!#$ (24 characters)
Lo que reduce el contenido de la información a:
ln(24^36) / ln(2) = 165 bits
Y noté que cada !
está precedido por una a
y seguida por una letra:
a!r
a!n
a!e
Reemplazando a!
con k
:
original: "?hyhgkruaknkitkirc#Iod$woH"2245 (32 characters)
alphabet: acdghiknortuwyIH2245"?#$ (24 characters)
Reduciendo bits a ln(24^32)/ln(2) = 146.7
.
Eso sólo reduce los bits necesarios para la codificación, a medida que descubrimos elcontenido de informaciondel mensaje.
Estos trucos no ayudan a un atacante, que generalmente no puede asumir que todas las contraseñas tienen estas secuencias conocidas.
Pero existen algunas heurísticas que se pueden programar en un algoritmo de búsqueda de claves. Las personas que intentan escribir al azar escriben muchas veces las mismas cosas. Por ejemplo, a menudo obtengo una colisión cuando escribo aleatoriamente:
adfadsfadsf
junto con otros 18.400 resultados de Google.
Mi contraseña más segura es de 57 caracteres, con un alfabeto de 27 caracteres ( a-z
, ), que viene en
266 bits
( ln(27^56) / ln(2) = 266.27
).
Por otra parte esoncepalabras. Hay 2^11
palabras comunes en el idioma inglés. Eso da:
(2^11)^11 = 2.66E36 passphrases => ln((2^11)^11)/ln(2) = 121 bits
Mucho menos que los 266 bits que se asumirían normalmente a partir de una contraseña aleatoria de 57 caracteres.
podría agregarun bitsi elijo entre:
- espacios entre las palabras
- sin espacios entre las palabras