¿Cuánto mejorará la seguridad la caducidad de las contraseñas?
Estaimagenmuestra,paraalgunosescenarios,larelaciónentreeltiempoylaprobabilidad,dequeunataquedefuerzabrutaenuntipodecontraseñatuvoéxito,dependiendodelcambioregulardelacontraseña.Eltiempoabsolutoesdemenorinterés.Cuántotiempodura,onohaymuchadiferencia,olavulnerabilidadyaesbastantealta.
Comosemencionóanteriormenteenotros,haydiferentesescenariosenlosquecambiarlacontraseñapodríaayudar:
- a)ElusuarioAlediceauncompañerodetrabajoBsucontraseñaenunasituaciónespecial.Luegosedespideb.AhorapodríapensarenutilizarmallacontraseñadeA(suponemosquesehaeliminadosupropiacuenta),peropodríanecesitaralgodetiempo(perderunadisputacontralaempresaeneltribunal,porejemplo)antesdecomenzarsuataque.Aquí,esmuyútilcambiarlacontraseña,peroporsupuestonodesecret2010asecret2011.
- b)Elatacantetieneaccesoalarchivodelasombra,yestáforzadobrutalmenteconciertacantidaddepotenciadeCPU(oGPU).
Enelcasob),lapolíticaparacambiarlacontraseñaparecerazonable,peroustedsoloobtieneganancias,sielriesgodeservulnerableyaesrealmentealto.Déjameexplicarloconnúmeros:
Supongamosqueunatacantepodríaprobar250000contraseñasporsegundo.Supongamosquedicequelacontraseñacaducadespuésde183días,(aproximadamente6meses).Lacontraseñasegeneradesdea-zA-Z0-9quetiene62signos.Supongamosquelacontraseñatiene8signosdelongitud.Compruebequétanprobableesunarupturadespuésde10años,queesde20intervalosdecambio.
Heescritoun programa , para probar diferentes parámetros; llama al programa con
java PasswordCrackProb 8 62 250000 s 183 20
len = 8
signs = 62
attacks per day = 21 600 000 000
change after days= 183
intervals = 20 days = 3660 years = 10
M = 218 340 105 584 896
attacks = 79 056 000 000 000
p(cracked) = 0,3620773 without change
p(cracked) = 0,3060774 with change
El resultado significa que está descifrado con un 36% de probabilidad si no se cambió la contraseña y con un 31% si se cambió (pero el atacante tiene un nuevo archivo de sombra). La diferencia es significativa, y más aún si tomamos más tiempo, 40 intervalos, como 20 años:
p(cracked) = 0,7241546 without change
p(cracked) = 0,5184715 with change
pero aunque el 52% es mucho más bajo que el 72%, el 52% podría no ser aceptable.
Pero si nos fijamos en intervalos más pequeños, la diferencia relativa entre las contraseñas modificadas y no cambiadas se hace cada vez más pequeña.
p(cracked) = 0,0905193 without change
p(cracked) = 0,0873006 with change
Si asumes más potencia de CPU o contraseñas más débiles, el tiempo de crack se reduce, por supuesto, pero la cantidad de ataques por día no es muy interesante. Tenemos que asumir: No podemos obligar al usuario a cambiar la contraseña diariamente. Así que algunos días, tal vez una semana, es lo mínimo. Y no necesitamos un máximo por más de 20 años. Los sistemas cambian, las personas cambian de trabajo. No puede evitar cambiar la contraseña después de 20 años.
Si el atacante tiene demasiado poder y Brute fuerza todo el espacio de nombres en un solo día, un cambio semanal no te ayudará mucho, siempre gana. Y si el atacante solo puede aplicar fuerza bruta al 1% del espacio de nombres (para una longitud de contraseña determinada) en 50 años, tampoco ayuda, para cambiar la contraseña, (casi) siempre ganará.
Solo en un escenario intermedio y equilibrado, el cambio de contraseña podría hacer una diferencia, pero ¿sabe realmente si el malo necesita 1, 10 o 100 años para forzar su contraseña?
Pero tenga en cuenta: si el atacante solo tuvo acceso una vez a su archivo de sombra, que ya está vencido, la comparación de mi programa no se ajusta.