{"id":278,"date":"2012-01-26T14:17:04","date_gmt":"2012-01-26T20:17:04","guid":{"rendered":"http:\/\/sergiob.org\/wordpress\/?p=278"},"modified":"2012-01-26T14:17:04","modified_gmt":"2012-01-26T20:17:04","slug":"contrasenas-seguras-porque-mas-es-siempre-mejor","status":"publish","type":"post","link":"https:\/\/blog.sergiob.org\/?p=278","title":{"rendered":"Contrase\u00f1as seguras: porqu\u00e9 m\u00e1s es siempre mejor"},"content":{"rendered":"<p>Seguramente, al registrate en un sitio web, banca electr\u00f3nica, o cualquier otro servicio que solicite contrase\u00f1a, has encontrado un mensaje como el siguiente:<\/p>\n<p><code>La contrase\u00f1a debe contener al menos 8 caracteres, pero no m\u00e1s de 12,  y debe incluir al menos una letra y un n\u00famero<\/code><\/p>\n<p>(Ciertamente es una pobre pol\u00edtica de contrase\u00f1a segura, pero se entiende el ejemplo)<\/p>\n<p>\u00bfPorqu\u00e9 es esto? Bueno, es probable que hayas escuchado que esto hace <em>m\u00e1s segura<\/em> a tu contrase\u00f1a. Pero&#8230; es cierto esto?<\/p>\n<p>Dejemos de lado por un momento la posibilidad de que alguien se robe tu contrase\u00f1a directamente de los servidores del sitio (eso es tema para otro post, coming soon). Supongamos que lo que queremos evitar es que alguien la &#8220;adivine&#8221;. Seguramente, <em>gatito33<\/em> es lo suficientemente &#8220;diferente&#8221; para que alguien la adivine (a diferencia de, digamos, &#8220;gatito&#8221; a secas). Y probablemente estaremos en lo cierto, si por &#8220;alguien&#8221; nos referimos a un humano com\u00fan y corriente. El problema es que, cuando alguien quiere obtener tu contrase\u00f1a, usualmente no se la pasa adivinando y probando manualmente una por una (s\u00ed hay casos as\u00ed, pero, a diferencia de lo que Hollywood nos quiera hacer creer, son los que menos nos preocupan). No, la preocupaci\u00f3n mayor es lo que se conoce como un <a href=\"http:\/\/es.wikipedia.org\/wiki\/Ataque_de_fuerza_bruta\">ataque de fuerza bruta<\/a>.<\/p>\n<p>Mediante este m\u00e9todo, un atacante puede intentar adivinar miles (dependiendo de los recursos de c\u00f3mputo a su disposici\u00f3n, puede ser millones) de contrase\u00f1as por minuto. Evidentemente, tiene que probar todas las combinaciones. Por ejemplo, si quisiera yo adivinar una contrase\u00f1a de 4 caracteres o menos que utilice s\u00f3lo letras min\u00fasculas, tendr\u00eda que probar:<\/p>\n<p>a<br \/>\nb<br \/>\n&#8230;<br \/>\nz<br \/>\naa<br \/>\nab<br \/>\n&#8230;<br \/>\naz<br \/>\nba<br \/>\n&#8230;<br \/>\nzz<br \/>\naaa<br \/>\n&#8230;<br \/>\nzzzz<\/p>\n<p>Si mi contrase\u00f1a es &#8220;gato&#8221;, estar\u00e1 en esa lista. Y&#8230; cu\u00e1ntas son las que tiene que probar? Si recuerdas tus clases de probabilidad y estad\u00edstica, esto se calcula f\u00e1cilmente. Son todas las permutaciones de las letras del alfabeto en 4 lugares &#8211; o, en f\u00f3rmula: 26^4 (26 elevado a la cuarta potencia). Esto es, 26*26*26*26, o bien, 456,976. Un numerote.<\/p>\n<p>Pero, si dijimos que un atacante puede adivinar miles (o, en casos extremos, millones) de contrase\u00f1as por minuto, cu\u00e1nto tiempo puede tomarle adivinar mi peque\u00f1a contrase\u00f1a? Muy poco. Digamos que un atacante puede intentar un mill\u00f3n de contrase\u00f1as por minuto. En menos de 30 segundos, ya tendr\u00e1 mi contrase\u00f1a.<\/p>\n<p>Uff! Entonces una contrase\u00f1a de 8 caracteres ser\u00e1 mucho m\u00e1s segura, no? Efectivamente. Y m\u00e1s del doble, de hecho. Consideremos que para adivinar una contrase\u00f1a de m\u00e1ximo 8 caracteres, la f\u00f3rmula ser\u00eda:<\/p>\n<p>26^8 = 208,827,064,576 = Doscientos ocho mil ochocientos veintisiete millones (!) y fracci\u00f3n.<\/p>\n<p>Nuestro mismo atacante tardar\u00e1&#8230; pues 208,827 minutos en adivinar esta contrase\u00f1a. Lo cual es igual a&#8230; 145 d\u00edas. M\u00e1s de 4 meses. Caray, pero nuestro estimado de un mill\u00f3n por minuto puede ser bajo. Las botnets permiten controlar miles de computadoras a la vez! D\u00e9mosle m\u00e1s ventaja a nuestro atacante. Supongamos que puede calcular 1 mill\u00f3n de contrase\u00f1as *por segundo*. De ser as\u00ed, calcular todas las contrase\u00f1as de m\u00e1ximo 8 letras le tomar\u00eda 2.4 d\u00edas.<\/p>\n<p>NOTA: Hay que considerar que las pol\u00edticas de contrase\u00f1a, sin embargo, no suelen decir &#8220;de 1 a 8 caracteres&#8221;. No, en realidad dicen algo as\u00ed como &#8220;m\u00ednimo 6 y m\u00e1ximo 10 car\u00e1cteres&#8221;. Si solo utilizaramos letras, las posibilidades son 26^10 &#8211; 26^6 = 1.411667867\u00d710^14 = un numerototote (141 billones y fracci\u00f3n). De ahora en adelante seguiremos con estas consideraciones.<\/p>\n<p>Pensemos ahora en la pol\u00edtica de contrase\u00f1a arriba descrita: &#8220;La contrase\u00f1a debe contener al menos 8 caracteres, pero no m\u00e1s de 12,  y debe incluir al menos una letra y un n\u00famero&#8221;. Esto significa que nuestra base (el 26) cambia, porque ahora consideramos las letras (26) y los n\u00fameros (10). Entonces nuestra f\u00f3rmula ser\u00eda: 36^12 &#8211; 36^8 = 4.738378517\u00d710^18 (o bien, 4.7 trillones). Nuestro atacante (el de un mill\u00f3n de contrase\u00f1as por segundo) deber\u00eda pasar <strong>150,252 A\u00d1OS<\/strong> intentando obtener nuestra contrase\u00f1a, de todas las posibles.<\/p>\n<p>Ahora, un poco de matem\u00e1tica aburrida (y no, lo de arriba no fue matem\u00e1tica aburrida). Si ya est\u00e1s por dormirte, s\u00e1ltate el siguiente p\u00e1rrafo, y lee las conclusiones. <\/p>\n<blockquote><p>N\u00f3tese que cada que agregamos un nuevo caracter (es decir, aumentamos el tama\u00f1o de la posible contrase\u00f1a) disparamos exponencialmente el tama\u00f1o de la contrase\u00f1a; no as\u00ed cuando aumentamos el tama\u00f1o de la base (el crecimiento es m\u00e1s bajo). Esto cimenta la teor\u00eda de que es mejor utilizar contrase\u00f1as largas (ej. &#8220;estaesunacontrase\u00f1alargaquenosepuedeadivinarfacilmente&#8221; &#8211; 26^55) que una contrase\u00f1a m\u00e1s corta pero con m\u00e1s caracteres (ej. &#8220;U7w!5q3qw&#038;&#8221; &#8211; 60^10 considerando 8 s\u00edmbolos especiales), en particular porque a la persona promedio se le hace mucho m\u00e1s sencillo recordar la frase que el garabato del segundo ejemplo. M\u00e1s f\u00e1cil de recordar + m\u00e1s dif\u00edcil de vulnerar es una muy buena combinaci\u00f3n \ud83d\ude09<\/p><\/blockquote>\n<p>El punto es: usa m\u00e1s en tus contrase\u00f1as. Si vas a utilizar contrase\u00f1as cortas (nunca abajo de 8, pero no superiores a 10 o 12 caracteres) es *imprescindible* que utilices letras may\u00fasculas, min\u00fasculas, n\u00fameros, y s\u00edmbolos especiales. Si no te gustan esos garabatos, utiliza contrase\u00f1as MUY largas, de m\u00e1s de 20 o 30 caracteres. Una forma f\u00e1cil es utilizar frases, quitando espacios, acentos y puntuaci\u00f3n. Por ejemplo:<\/p>\n<p>&#8220;El respeto al derecho ajeno es la paz&#8221; &#8211;> elrespetoalderechoajenoeslapaz ==> 26^30.<\/p>\n<p>Y, por supuesto &#8211; no olvides cambiarla con frecuencia. Buen consejo para la ropa, buen consejo para las contrase\u00f1as \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Seguramente, al registrate en un sitio web, banca electr\u00f3nica, o cualquier otro servicio que solicite contrase\u00f1a, has encontrado un mensaje como el siguiente: La contrase\u00f1a debe contener al menos 8 caracteres, pero no m\u00e1s de 12, y debe incluir al menos una letra y un n\u00famero (Ciertamente es una pobre pol\u00edtica de contrase\u00f1a segura, pero &hellip; <a href=\"https:\/\/blog.sergiob.org\/?p=278\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Contrase\u00f1as seguras: porqu\u00e9 m\u00e1s es siempre mejor&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,22],"tags":[60,105,114],"class_list":["post-278","post","type-post","status-publish","format-standard","hentry","category-geek","category-seguridad-it","tag-fundamentos-geek","tag-poniendose-al-dia","tag-seguridad"],"_links":{"self":[{"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=\/wp\/v2\/posts\/278","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=278"}],"version-history":[{"count":0,"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=\/wp\/v2\/posts\/278\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=278"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=278"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}