Acerca de...
El equipo
Encuestas
WinTablets

Encuesta

Si las WINTABLETs no pudiesen ejecutar aplicaciones de escritorio, ¿las seguirías usando?

Cargando ... Cargando ...

últimas entradas importantes

Categorías

Archivos

08
Jul 2017
Opiniones

La paradoja de las contraseñas seguras, o si Pascal y Fermat levantaran la cabeza…

Desde hace tiempo se va extendiendo entre los servicios protegidos por contraseña la costumbre de pedir que éstas cumplan una serie de requisitos. Cada vez es más difícil encontrar un sitio donde no se exija que la contraseña tenga, por ejemplo, una letra mayúscula, una letra minúscula y un dígito, como mínimo. A priori, la lógica nos puede llevar a pensar que esto es algo positivo: una contraseña más enrevesada debe ser más segura. Y así sería, levemente, si los requisitos no fueran conocidos por quien pretende romper la seguridad, pero este no es el caso, así que ¿son realmente más seguras? La respuesta es no, y no sólo no son más seguras sino que, paradójicamente, lo son menos. Si quieres saber por qué, sigue leyendo.

El hecho de restringir las contraseñas que se consideran válidas, mediante la exigencia de una serie de requisitos, no es más que una forma de transmitir al usuario una falsa sensación de seguridad que, casi con toda probabilidad molestaría tanto a Pascal y Fermat, padres de la combinatoria moderna, como nos molesta a mí y a tantos y tantos usuarios, por obligarnos a tener que recordar contraseñas más complejas para nada.

Para comprender mejor el porqué de esta afirmación, lo ideal es un ejemplo y, como el mejor ejemplo es el más simple, vamos a ver el caso de una contraseña de 3 caracteres, que pueden ser letras, mayúsculas o minúsculas, o dígitos. Si colocamos libremente en cada una de las 3 posiciones cualquiera de los caracteres válidos (una mayúscula, una minúscula o un dígito) tendremos un total de 238328 combinaciones posibles, que no está nada mal para una contraseña de solo 3 caracteres de longitud. El número no me lo saco de la manga, claro. Tenemos 26 letras mayúsculas, otras tantas minúsculas y 10 dígitos, lo que nos da un total de 62 caracteres entre los que escoger el que colocaremos en cada una de las 3 posiciones de la contraseña, por tanto 62x62x62=623=238328.

Ahora agreguémosle algunas restricciones de “seguridad”: la contraseña debe contener al menos una letra mayúscula, al menos una letra minúscula y al menos un dígito. En nuestro ejemplo de 3 caracteres, esto se traduce en que las contraseñas válidas serán las que tengan un carácter de cada tipo. Visto desde el otro lado, todas las que no cumplen dicho requisito son contraseñas no válidas… Contémoslas:

  • primero descartamos los casos en que los 3 caracteres son del mismo tipo, son un total de 141608 combinaciones:
    • si son 3 números tenemos un total de 1000 (10x10x10) combinaciones
    • si son 3 letras (tanto mayúsculas como minúsculas) tenemos un total de 140608 (52x52x52) combinaciones
  • descartamos también los casos en los que hay 2 letras y un dígito, pero las 2 letras son mayúsculas o minúsculas, en vez de ser una de cada, que suman 40560 combinaciones:
    • las combinaciones de 2 letras mayúsculas son 676 (26×26), pero como estas 2 letras pueden distribuirse de 3 formas distintas (posiciones 1 y 2, posiciones 1 y 3 y posiciones 2 y 3) el total es 2028 (676×3) combinaciones
    • tenemos otras 2028 combinaciones para el caso de 2 letras minúsculas
    • como cada una de esas 4056 (2028+2028) combinaciones de 2 letras puede combinarse con un dígito en la posición restante, tenemos un total de 40560 (4056*10) combinaciones
  • por último descartamos también los casos en los que hay 1 letra y 2 dígitos, que suman 15600 combinaciones:
    • las combinaciones de 2 dígitos son 100 (10×10), pero como éstos pueden distribuirse de 3 formas distintas (posiciones 1 y 2, posiciones 1 y 3 y posiciones 2 y 3) el total es 300 (100×3) combinaciones; como para cada una de esas 300 combinaciones, la letra que colocamos en la posición restante puede ser cualquiera de las 52 (26 mayúsculas y 26 minúsculas), el total de combinaciones en las 3 posiciones es 15600 (52×300)

Al final, sumando todas esas contraseñas no válidas, tenemos un total de 197768 (141608+40560+15600) combinaciones. Por cierto, todo esto podría haberse calculado de otro modo, pero quería que se viera con más claridad de donde viene, por decirlo de algún modo, cada bloque de combinaciones descartadas.

En cualquier caso, si a las 238328 combinaciones que podríamos tener sin restricciones le restamos las 197768 combinaciones que las restricciones convierten en no válidas, el resultado es algún hacker de medio pelo frotándose las manos porque ahora la contraseña que debe averiguar es una entre 40560, en vez de una entre 238328. Las restricciones han hecho que quien pretenda romper la seguridad por fuerza bruta sólo tenga que buscar en el 17,02% del total de las combinaciones posibles.

En el caso de una contraseña de 4 caracteres con las mismas restricciones, el total de combinaciones es 14776336 y el número de combinaciones válidas es 5029440, lo que supone un 34,04% del total. Y en el caso de una contraseña de 5 caracteres el total de combinaciones sería es 916132832 y el número de combinaciones válidas es 438859200, que es un 47,90% del total.

Como puede verse, con el aumento del número de caracteres en la contraseña, el porcentaje de combinaciones válidas (que cumplen los requisitos) va en aumento, pero eso no cambia el hecho de que estas restricciones que se imponen a las contraseñas, dejan fuera de un plumazo una ingente cantidad de combinaciones, más cuanto más caracteres (aunque porcentualmente sean menos), que un ataque podrá pasar por alto sin perder tiempo en ellas, puesto que las restricciones pueden ser conocidas por cualquiera que tenga (o intente crear) una cuenta de acceso al servicio que las impone en sus contraseñas.

Mi opinión es, por tanto, que este tipo de combinaciones más enrevesadas deberían simplemente ser recomendadas al usuario y tenidas en cuenta a la hora de indicarle a éste si su contraseña es más o menos “fuerte”, pero no deben ser una imposición, porque se consigue el efecto contrario. Y vosotros, ¿qué opináis?

La imagen usada al principio del artículo está compuesta a partir de la imagen procedente de https://en.wikipedia.org/wiki/Matrix_digital_rain#/media/File:Xmatrix.png

Por Hal9000 | 14 Comentarios | Enlaza esta entrada

13 Comentarios

Pedro
Enviado el 08/07/2017 a las 20:53 | Permalink

Muy buen artículo y muy bien explicado.
Tienes razón que el hecho de obligar a la gente a usar ciertos caracteres restringe las posibilidades. Esto es matemáticamente correcto.
Pero me permito realizar un comentario, si no usas restricciones, estadísticamente la distribución de la mayoría de tus usuarios, ( dependiendo de lo concienciados en seguridad que estén y de la política de formación en ciberseguridad, que suele tender a cero en muchos casos 8-O ), usará solo minúsculas con lo que las posibles contraseñas son 17576, 26^3, que son muchas menos que aplicando restricciones, este porcentaje puede ser superior al 80%. Del otro 20% tendrás un porcentaje no menor que sólo usará dígitos, cuyas combinaciones son 1000,10^3.
En definitiva, aunque matemáticamente es correcto, un administrador de sistemas sabe que sino pone restricciones en las claves, las claves de sus usuarios serán muy débiles y por eso se ponen.
La estadística juega a favor de los crackers.
Espero haber aportado algo, aunque sea ruido ;)
Saludos mosqueteroweb

    Enviado el 09/07/2017 a las 00:00 | Permalink

    Coincido contigo, Pedro. Por eso digo que me parece bien que esta práctica se aplique como recomendación y como forma de calcular la seguridad de una contraseña, para poder indicársela al usuario, pero no como restricción. Desde el momento en que se convierte en restricción tiene el efecto contrario, al ser también conocida por los posibles atacantes.

    Saludos.

    Quique
    Enviado el 09/07/2017 a las 00:34 | Permalink

    Interesante artículo e interesante comentario. Todos los días se aprende algo nuevo.

    Si fuera por el sistema de recomendación sin restricciones ¿qué porcentaje de usuarios tiende a tomarlas en serio? ¿No debiera existir una pregunta de control para confirmar que el usuario si o sí quiere utilizar una contraseña que no respeta las recomendaciones?

      Enviado el 09/07/2017 a las 10:55 | Permalink

      Pues sí, podría estar bien para dejar constancia de que si no sigues la recomendación lo haces conscientemente, pero que se te permita no seguirla.

Enviado el 09/07/2017 a las 10:25 | Permalink

Muy buenas explicación, felicidades. Pero pienso que todo esto de la dificultad en las contraseñas está ya superado. Lo mejor para no tener que recordar contraseñas infernales, que al final si se empeñan te las pueden hackear, es la autenticación en segundo factor. Una contraseña fácil de recordar y luego confirmar vía móvil o con algún tipo de aplicación. Saludos

    Enviado el 09/07/2017 a las 11:29 | Permalink

    Muy cierto, es mucho más seguro, pero, por un lado, no es algo que se pueda aplicar de forma general, supone una molestia adicional que usualmente sólo se aplica en casos que requieren una seguridad extra. Por otro lado, no hay tantos servicios que estén cambiando a este método, mientras si estoy encontrando últimamente mucho servicios que antes no ponían restricciones y ahora sí.

abulafia
Enviado el 12/07/2017 a las 07:24 | Permalink

Un articulo muy interesante.
Por aportar algo, creo recordar que cuando aún no se había implementado la norma de que el numero de intentos de prueba para escribir una contraseña estuviese limitado, es decir, cuando se podía probar tantas veces como se quisiera sin que el sistema se bloqueara (que es algo que se puede seguir haciendo, por ejemplo, para tratar de averiguar la contraseña de un archivo comprimido protegido o de un documento ofimático con password), la técnica recomendada para intentar saltarse la protección consistía en crear un script que, de forma automatizada, fuese probando distintas contraseñas hasta dar con la buena.
Esos scripts utilizaban combinatoria, tal como has expuesto, pero también diccionarios con palabras en varios idiomas. El uso de números y letras combinados se introdujo para evitar esta ultima posibilidad.
Estoy contigo en que, actualmente, lo de la mayúscula, minúscula y número carece bastante de sentido, pues las técnicas de “hacking” actuales pasan por robar esa contraseña y no por trayar de averiguarla (phishing, man in the middle, keyloggers, etc.) Además, se sabe que, por ejemplo, el usar preguntas de recuperación para las contraeñas es un factor de inseguridad enorme: no tiene sentido usar obligar a usar una contraseña complejísima si, después, esta puede resetearse en caso de olvido respondiendo preguntas que muchas veces son obviedades (como se llama tu mascota, en que ciudad naciste, etc… pues es algo que podría saber mucha gente de ti).
En todo caso, creo recordar que leí que el robo de fotos “comprometidas” de muchos famosos del servicio de iCloud se produjo usando técnicas de fuerza bruta, es decir, probando contraseñas. Y que para ello se tuvo que juntar el fallo de Apple de dejar probar tantas veces como se quisiera distintas contraseñas, con el uso de contraseñas muy simples o palabras contenidas en un diccionario, por parte de los famosos que se fueron afectados.

    abulafia
    Enviado el 12/07/2017 a las 07:29 | Permalink

    Perdón por las incorrecciones y algunas palabras de más que aparecen en mi comentario. Lo he escrito desde un tablet en el tren y el corrector de android me juega estas malas pasadas (además de que aun estoy un poco dormido :mrgreen: )

Enviado el 12/07/2017 a las 09:07 | Permalink

¿Cómo se me ha pasado leer esta entrada? Encima de uno de los “missing” más famosos de esta web, el amigo hal9000.

A ver, entiendo el cálculo que haces y estoy de acuerdo con él, pero…

La debilidad de una password no está en relación con la complejidad que dejemos de meterle. Bien al contrario. Supongamos que pedimos al usuario que cree una password que debe contener Mayusculas, minusculas, dígitos, y simbolos, que no contenga palabras del diccionario y que la longitud sea 12 mínimo. ¿Existe password más segura que esa? Lo dudo. Al final la password va a ser algo como esto: hG877m&e239%kRM. ¿Y que va a hacer el usuario? Apuntarla. Así de fácil. Sí, un “experto” en seguridad con su CISM recién pagado (perdón, obtenido) te dará reglas mnemotécnicas para que crees passwords con esas reglas pero recordables. Lo único que consigues es limitar las opciones y bajar la seguridad, y aun así, el usuario la va a apuntar.

Permitidme que os cuente una historia de passwords.

Era se que se era un imberbe analista de sistemas que colaboraba en los últimos años 80 con una institución donde la seguridad era importante. Cada vez que se hacía un estudio de seguridad se encontraba en post-it debajo del teclado, o debajo del teléfono, o dentro de un cajón, o en cien mil sitios las passwords de acceso a sistemas muy muy importantes apuntadas. Los gerifaltes de esa institución montaban en cólera y se tomaban medidas contra las personas que lo hacían, y en esa institución las “medidas” eran jodidas, créanme. Pero el caso es que lo seguían haciendo. ¿Motivo? Se pedía complejidad en las passwords y la gente las apuntaba. Todo esto antes de la era de los smartphones… que ahora todos llevan sus passwords superseguras muy bien apuntadas en Google Keep o en Evernote.

A nuestro imberbe protagonista le pidieron que buscara una solución. El meditó bastante y decidió montar un sistema por el cual las palabras claves serían generadas por el ordenador, no elegidas por el usuario. Eso se hace hoy en día en algunos sitios y terminas con passwords como hJuaskn%028*hUj apuntadas en un papelito, claro, pero eso no es lo que hizo nuestro amigo.

El creo un programa que generaba password de la siguiente manera: consonante-vocal-consonante-vocal-digito-digito-digito-digito

Con eso conseguía passwords como quma8865 o gelo7677 o cosas similares. El pasaba sus palabras de 4 letras por un diccionario y borraba las que en él. Pero aun así las palabras eran PRONUNCIABLES, y eso marcaba la diferencia. El cerebro humano recuerda mejor una palabra si la puede pronunciar. Puede que no sepas que es “koja” o “qima” o “ledo” pero como mentalmente las puedes pronunciar puedes recordarlas.

Los CISM varios de la institución montaron en cólera. Son poquísimas combinaciones. Es fácil un ataque de fuerza bruta. Nuestro querido amigo imberbe les dijo que dedicaran esfuerzos a determinar los accesos por puertos TCP/IP de los cuales no estaban al tanto para que el sistema bloqueara el usuario temporalmente al cabo de X intentos. Solo eso. Los ataques de fuerza bruta requieren que puedas teclerar rápidamente un montón de passwords sin que el sistema diga nada, solo conteste OK o no a la password. De hecho siglos después el ataque de fuerza bruta a iCloud de Apple funcionaba gracias a que el sistema tenía un puerto no supervisado que permitía hacer infinitos intentos de acceso.

Al final el sistema se configuró de modo que las tres primeras veces pedía la password sin problemas. La cuarta tardaba un minuto en responder. La quinta 10 minutos. Y así en orden creciente de lentitud hasta que en la décima (que tardabas más de una hora en recibir el login) bloqueaba el usuario. En el intento 5 el sistema lanzaba una alarma sobre el usuario de modo que el administrador detectaba el problema antes de que se bloqueara el usuario. Tenía 45 minutos para tomar una decisión sobre que hacer.

Se atacó por todos los puertos hasta que se detectó los que respondían con logins y se reprogramaron para que tuvieran ese comportamiento.

¿Conclusión? Los usuarios tenían passwords seguras fáciles de recordar (el imberbe aun recuerda la primera que tuvo como administrador de uno de los sistemas, 30 años más tarde) y el sistema era globalmente más seguro. Las sucesivas inspecciones de seguridad no encontraron passwords apuntadas y nadie más fue destinado forzoso a un castillo en una roca en medio del Mediterraneo. El imberbe cobró su mérito (una bonita medallita) y todos fueron felices y comieron perdices.

Como dijo Graham Green, el escritor, lo que falla siempre es “El Factor Humano” como tituló a la novela donde trataba el tema.

Curiosamente y dado que el imberbe ni la institución con la que colaboraban patentaron la idea, años más tarde Movistar.es en su parte de grandes empresas genera las password de acceso a la facturación corporativa con el mismo sistema. Curiosamente.

abulafia
Enviado el 12/07/2017 a las 20:36 | Permalink

Buena historia :-D Cómo me gustan estas batallitas.

El libro que más he disfrutado sobre estos temas ha sido “El huevo del cuco” de Clifford Stoll, donde un astrofísico al que responsabilizaron de un sistema informático cuenta una “batallita” sobre un tema que parecía sin importancia y que acabó derivando en una historia apasionante.

Por cierto, interesante lo de Movistar :mrgreen:

    Enviado el 13/07/2017 a las 13:57 | Permalink

    Lo he leído. Es la historia del ataque por gusano de sendmail (para que digan que los UNIX son seguros) a máquinas UNIX y DEC por parte de Robert Tappan Morris. El tal Clifford Stoll ayudó a detenerle.

    Es mucho mejor que el libro de ciencia ficción de Tsutomu Shimomura, Takedown, de como él solito pilló a Kevin Mitnick.

    Pero tengo ambos.

      abulafia
      Enviado el 13/07/2017 a las 20:36 | Permalink

      Exacto. Y coincido contigo: yo tambien he leido Takedown y el tal Shimomura se hace tal cantidad de “autobombo” todo el tiempo que acaban dándote ganas de que se pegue una leche con los patines esos que usa. Parece el Cristiano Ronaldo de la informática :mrgreen:

Miguel
Enviado el 21/07/2017 a las 18:19 | Permalink

Interesante artículo, la verdad… Y buena historia la que comentas, Javier.

En esto de las passwords hay muchas variables que tener en cuenta, y coincido en que el factor humano es el que finalmente decide la fortaleza de las contraseñas. También opino que un sistema de seguridad en 2 pasos ayudaría a reforzar aquellas cuentas con contraseñas débiles, al igual que restringir el número de intentos antes de que la cuenta se bloquee.
Sin embargo, una cosa que yo creo que facilitaría el recordar contraseñas seguras, sería el utilizar una clave muy fuerte y después añadirle cosas según el servicio que estés usando. Por ejemplo, si a la clave que puso Javier (hG877m&e239%kRM) le añadimos el servicio que estemos usando según varios criterios que escojamos, solo tenemos que recordar la clave una vez, facilitando el tener contraseñas seguras y distintas para cada sitio.
Por ejemplo, he decidio que mi clave es la que puso Javier. Mi criterio para cada sitio es el nombre del servicio alternando maýusculas y minúsculas. Además, tengo otro criterio que es el de antes y después del nombre del servicio poner guiones bajos, y también poner ese nombre a partir de la posión 3 de mi clave.

– Si uso Hotmail, la clave final sería: hG8_HoTmAiL_77m&e239%kRM
– Si uso LinkedIn, la clave final sería: hG8_LiNkEdIn_77m&e239%kRM

Y así con otros servicios. Siempre son claves diferentes, y solo tengo que recordar un patrón. Por supuesto hay otras reglas que se pueden crear dando como resultados claves muy seguras. De todas formas, el problema viene cuando es el sistema el que te limita la longitud de la clave a introducir, lo que en mi opinión es un error, ya que al restringir la longitud, las posibles combinacioens son menores y el método que comento ya no valdría, porque la clave es demasiado larga.

Una Mención

El 02/11/2017 a las 10:44

[…] unos factores muy concretos (número de caracteres, símbolos, mayúsculas…), un sistema que, como se puede leer en Wintablet, al final acaba siendo contraproducente porque la mejor contraseña es la que puedes recordar. Para […]

Deja un comentario  

Tu email nunca se publica o se comparte. Los campos obligatorios están marcados con *

*
*
:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!:
Puedes usar las siguientes etiquetas y atributos HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

contacto@wintablet.info tema WinTablet.info por Ángel García (Hal9000)