como dato para las contraseñas, creo la Ñ está en repocos idiomas/dialectos/distribuciones-de-teclado/dibujitos/pictogramas/geoglifos/etc. (en realidad no tengo idea si está en algo mas que el español)
Así que intercalando ñ y Ñ en la contraseña incrementas el tiempo para hackearla en zilliones
mmm en acuerdo y en desacuerdo... Aquí ya se entra al terreno de la entropía[1] y la cardinalidad[2]. En muuuuuuy breve (sugiero leer sobre el tema, es bastante interesante si te gusta la matemática y encriptación): entropía sería el universo de caracteres de donde puedes elegir y cardinalidad es el cálculo sobre lo único que resulta (si hay criptógrafos acá, técnicamente no es tan así, pero para este ejemplo: bare with me).
Agregar 2 letras por si solo no vale mucho más, si ocupas un generador de entropía, esa misma entropía será bastante más grande que lo que a ti se te pueda ocurrir.
Por ejemplo, toma las dos siguientes contraseñas:
Código:
w.Y@(5j1y[tHnvDwqTpu})@U{^*jaNz.
hol4 yo soy p3drito p3rico de los p4lotes!1 Ñaña pffff
Cuál de las dos es más segura? Pues
computacionalmente, la segunda. Puede parecer irse en contra de toda lógica, ya que la segunda tiene menor entropía y mayor cardinalidad (harto más), pero eso para los cálculos no importa: estos se tienen que basar en la
posible entropía que pueda existir: por lo tanto, una contraseña de ~60 caracteres como el de pedrito de los palotes es más segura que una contraseña de apenas 32 caracteres como el primero.
Por el otro lado, la cosa cambia completamente si tomamos en cuenta la gama completa de UTF-8. Tradicionalmente, las contraseñas se generan sólo con un subset del primer byte disponible (por lo general del 33 al 128 [6]): la razón? Esto es universal, la entropía es todavía suficiente y no importa la codificación (de aquí en adelante charset para no confundirse con collation y otros términos).
La Ñ (y ñ) caen fuera de este rango al ser un carácter que ocupa 2 bytes [3][4]. Como por lo general en las db se guarda un hash de esta representación, podría llegar a ocurrir que si hay un problema o diferencia en el charset en alguna capa de comunicación entre tu user-agent y el destino final (típicamente una base de datos), termines en una situación donde tu contraseña jamás será igual al hash, ya que este fue calculado en un principio de forma distinta.
En la práctica en Chile se ve día a día este problema: cuántas veces no han visto sitios que en vez de una `é` imprimen `é`? Eso se debe fundamentalmente a que el valor original fue salvado como un ISO-8859-1 pero impreso en UTF-8. Más info acá[5]
Detectar problemas de charsets por el otro lado es suuuuuumamente complejo, ya que requiere saber y entender muy bien el cómo funciona. Y si llegaste e hiciste cambios donde no debías, las posibilidades son grandes de que no entiendas el por qué. Y así es como terminas con unos cuantos usuarios que ya no pueden acceder a tu sitio pq en alguna parte del proceso introdujeron un cambio en la forma de calcular el hash de tu contraseña.
Como ejercicio: en vez de ocupar la n, ocupa una de las alternativas:
http://www.fileformat.info/search/google.htm?q=n&domains=www.fileformat.info&sitesearch=www.fileformat.info&client=pub-6975096118196151&forid=1&channel=1657057343&ie=UTF-8&oe=UTF-8&cof=GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:11&hl=en
Un muy buen ejemplo es el ataque que se está viviendo ahora último: en facebook y twitter se están propagando links hacia por ejemplo baṇcoestado.cl . Notan algo particular? Pues la n no es una n: es una ṇ[7]: un caracter en UTF-8 que, cuando se hace link y se subraya [9], no se nota el puntito debajo del mismo.
Hay por supuesto otros caracteres con los cuales hay que tener cuidado: está la famosa i turca (que visualmente es lo mismo que una i[8]), la misma a con punto abajo y así suma y sigue la lista. Para no olvidarse: UTF-8 puede tomar hasta 4 bytes (expandibles en el futuro a quizás 5) con lo cual actualmente puedes tener una entropía de 2^21 caracteres: 2.097.152 caracteres en total.
Saludos.
[1]
https://en.wikipedia.org/wiki/Entropy_(information_theory)
[2]
https://en.wikipedia.org/wiki/Cardinality
[3]
https://www.fileformat.info/info/unicode/char/f1/index.htm
[4]
https://www.fileformat.info/info/unicode/char/00d1/index.htm
[5]
http://www.weblogism.com/item/271/why-does-e-become-a-ii
[6]
http://www.asciitable.com/
[7]
https://www.fileformat.info/info/unicode/char/1e47/index.htm
[8]
https://www.fileformat.info/info/unicode/char/ff49/index.htm
[9]
https://www.reddit.com/r/CryptoCurr...be_careful_of_spoof_exchanges_would_you_have/