19 de julio de 2020

Lo que no vemos (2)

Nuestra idea de la realidad esta formada por la información que nos llega, lo que vemos, oímos, leemos, etc. Pero esa información no es "la realidad", sino lo que paso luego de un proceso de filtrado que no vemos, donde hubo una selección, priorización, y incluso modificación de esa información. No vemos esos filtros, pero tomamos el resultado de esa manipulación como la realidad.

Hay filtros físicos, solo vemos dentro de determinado rango de anchos de banda, oímos en un rango de frecuencias, no podemos ver directamente lo demasiado chico, demasiado grande, demasiado lejos o demasiado tenue, hay información para la cual no tenemos sentido para percibirla, y hay mucho que esta directamente fuera de nuestro alcance directo o indirecto.

De lo que nos llega a nuestros sentidos, tenemos procesos que hacen de filtro. El punto ciego es un lugar que nuestros ojos no perciben, pero complementamos la información con lo que vimos antes o simplemente se inventa lo que debería haber en ese lugar, y eso es lo que nos dice nuestra percepción, lo que cuenta para nosotros como realidad. Hay muchos experimentos y juegos que se pueden hacer que nos muestran como nuestra percepción de la realidad difiere de esta, pero tenemos que tener en cuenta que ese filtro esta siempre presente.

Y tenemos otros filtros internos, el sesgo de confirmación hace que registremos solo lo que sigue patrones que esperamos. Y hay muchos mas Sesgos cognitivos que tienen un proceso de selección o modificación con lo que percibimos o recordamos.

Aparte de lo interno, hay filtros externos, lo que vemos en las noticias es el resultado de un proceso de selección, y en muchos casos modificación, de lo que pasa en la realidad. Los libros y películas a las que accedemos también, aunque para cosas caras de producir el filtrado haya ocurrido antes de que se hubiera creado el producto. Lo que vemos en las redes sociales también lo fue, en una escala mucho mas grande de generación de contenido, y de filtrado, selección y muchas veces modificación o reedición.

Si bien es difícil quitar esos filtros, o siquiera ubicarlos, podemos ver parte de su acción teniendo distintas fuentes, esperando consistencia, tener alguna visión del campo real que nos están filtrando (alguna idea vaga sobre las cosas que no estamos viendo, lo que fue modificado, o intencionalidad/razón de ese filtrado para volverlo predecible). Hacer visible esos filtros, entenderlos, y entender lo que no nos están dejando ver, y por qué, puede darnos una mejor comprensión de la realidad. O al menos, ser conscientes del tipo de cosas que se nos oculta.

1 de abril de 2020

La paradoja de la prediccion

Me gusta la ciencia ficción, y las historias de viajes en el tiempo y las paradojas que eso provoca son bastante populares.

Un motivo que me pareció medio único es el del cuento El Factor Letal, de Phillip K. Dick (recomiendo leerlo antes de continuar con esto, discuto mucho de su trama). En esta historia, ocurre una paradoja no por viajar al pasado y cambiarlo, sino por viajar al futuro, y volver esencialmente con información que provocó que se tomaran decisiones distintas. El problema no fue el ir al futuro, sino que la información del futuro fue a su propio pasado, y ese futuro ya dejó de ser lo que era. Y como en El Ruido de un Trueno de Ray Bradbury, un cambio muy pequeño como esa información provocaba cambios muy grandes en el futuro.

No podemos viajar al pasado, pero tenemos predicciones de una forma u otra, cosas que nos dicen como debería ser el futuro, y sobre las cuales tomamos decisiones. Esto ya nos deja en el terreno de la paradoja, no tanto porque el futuro hubiera realmente sido otro, sino porque la misma predicción es un factor que puede influir en que ese futuro pase.

Hacemos predicciones todo el tiempo. Probablemente una de las cosas que nos dio una ventaja evolutiva fue nuestra capacidad de hacer predicciones a largo plazo, a veces por extrapolación, otras veces por reconocimiento de patrones, y otras veces por historias y tradiciones. No nos decía como iba realmente a ser el futuro, pero nos daba una predicción y una guía de acción mejor que el actuar al azar o sin saber posibles consecuencias. Con el tiempo esas predicciones se hicieron mas sofisticadas, la religión daba una serie de reglas que si no se seguían, algo malo iba a pasar en el futuro, la literatura nos dio más historias con acciones o actitudes que nos llevaban a alguna forma de éxito o fracaso sobre los cuales las culturas y las formas de actuar cambiaron, y la ciencia nos dio una forma de predicción mas rigurosa, aunque más sobre la naturaleza que sobre factores humanos.

Esas predicciones, para empezar, no son perfectas. Tenemos un conocimiento muy parcial de los factores que nos llevan al futuro, sobre lo que otras personas conocen y usan al tomar sus propias decisiones. Cuando nuestra predicción es sobre algo delimitado y sin intervención humana (por ejemplo, "este puente va a soportar X peso?") tal vez nuestras predicciones estén adecuadamente fundadas, pero cuando entran factores humanos las cosas no son tan precisas.

Y nuestras predicciones usualmente cambian como actuamos. Decidimos que hacemos en buena parte en base a nuestra predicción (exacta o intuitiva, basadas en historias o hechos, o siguiendo "impulsos", sesgos cognitivos, o caprichos) de lo que consideramos que pueden traer nuestras distintas vías de acción, o cuando menos, una vía de acción.

Ahí ya hay un problema.  Muchas decisiones son solamente predecir que pasaría si hago X cosa, y decidir que se hace o no dependiendo de ese resultado, pero no se estudia el que pasa si no se hace. Podemos apartarnos de un futuro que prevemos y no nos gusta para ponernos en camino a otro que no nos preocupamos en prever y que puede ser peor.

Pero mas al foco de esto, nuestra predicción ya cambió lo que "iba" a pasar, actuemos distinto o no, ahora tenemos información que antes no teníamos, y podemos actuar de formas distintas a lo que lo hubiéramos hecho en el camino a lo que nos llevaría nuestra decisión. Y si esto es malo a nivel de individuos, lo es mas a nivel de poblaciones, cuyos integrantes hacen y consumen predicciones también.

Y esto vale tanto a nivel de predicciones personales, como predicciones institucionalizadas, hechas por economistas, sociólogos, inversores, equipos de gobierno o encuestadoras. Y si bien las diferencias de actitudes de individuo a individuo pueden tener un factor de azar que puede considerarse "ruido", hay veces que actitudes de uno o muy pocos individuos pueden causar grandes cambios sobre lo predicho, o no ser una diferencia no tan al azar, ya sea por factores externos, o causados por las mismas predicciones (publicadas o personales) y la predicción errar por mucho a lo que realmente pase. Y esto es independiente de cuan correcta era la matemática usada en las predicciones iniciales, que se conozca el resultado de esa matemática, no su proceso, sería lo que invalidaría su precisión. Y si no fueran lo suficientemente difundidos esos resultados, predicciones menos formales hechas por cada uno ya serían un factor de cambio.

Por supuesto que la realidad es mucho mas compleja que esto, y hay factores externos o no tomados en cuenta que influyen en como se van a desarrollar las cosas. Pero aún si se tuviera un sistema cerrado y completamente conocido, el futuro, o sus predicciones, agregan un factor fundamental en nuestras probabilidades de predecir como se va a comportar.

18 de enero de 2020

Lo que no vemos (1)

Somos malos con los números grandes, y aun más malos en tratar de entender la realidad sin colocar una historia detrás. Así que voy a definir está parte como lo opuesto a eso.


Somos conscientes sobre ganadores de loterías, millonarios, personas famosas y destacadas. Son números chicos después de todo, apuntando a muy pocos, identificables y hasta tal vez se pueda empatizar con ellos. Tienen detrás historias de compra llegaron adonde están, como lo lograron, un mapa de ruta para nosotros por si quisiéramos ser como ellos o lograr algo parecido. No siempre tiene que ser positivo lo que logren, un criminal, alguien a quien le pasó una desgracia y tiene visibilidad en un informativo u obra que se centre en el, también cumple con estas características.

En este aspecto lo que no vemos es todos los otros, que son números de órdenes varias veces mayor. Si, somos intelectualmente conscientes que por cada ganador del premio mayor de la lotería hay de decenas de miles, a millones, que no sacaron nada (podemos entender la palabra millón, pero enfrentado a un ganador de lotería puede pensarse en un número suficientemente chico de gente como para tener posibilidades. Lo mismo pasa con famosos, millonarios, artistas y más, por cada uno que llega a nuestra atención hay realmente mucha gente que quedó en el camino, número que no se percibe o asimila como especialmente grande.

Y a esto hay que sumarle historias. No se llega ahí por azar, sino un conjunto de pasos definidos que si uno siguiera igual hubiera terminado en la misma situación. Pero entre las cosas que no vemos, en el conjunto de gente que no logro esa visibilidad, es si tomaron o no los mismos pasos, tenían capacidades similares o se enfrentaron a las mismas oportunidades. La historia que nos lleva ahí puede no llevarnos ahí, o ser mucho más compleja, o tener un conjunto de factores lo suficientemente caóticos como para que no haya un camino claro. Pero sólo percibimos las historias claras y relativamente simples, pocos factores y visibles, no los cientos o miles de componentes que forman parte del camino.

Aún en lo que tenemos cerca y al alcance es algo que borramos, o no podemos abarcar, de como entendemos el mundo.

Y sobre esto, tenemos que incluir lo que no tenemos al alcance.

16 de febrero de 2019

La realidad es compleja

Vemos una realidad que es compleja de forma simplificada. Eso nos ayuda a tomar decisiones o evaluaciones rápidas, pero como toda simplificación, no coincide con la realidad, y las diferencias pueden ser importantes.

Visita a Planilandia

Sacando un poco la idea de Planilandia, mucho de la realidad lo vemos en 0 dimensiones. Ser o no ser, si o no, está o no, se corresponden con un punto matemático. Agregar mas puntos individuales, o distintas etiquetas no aumenta la cantidad de dimensiones, bueno o malo, A, B, o C.

Recién cuando entramos en comparativos, decimales o tonos de gris pasamos a una dimensión. Mejor, mayor, caliente y otros implican una serie de puntos mas o menos continua, donde se puede tener más o menos de una cualidad o un atributo, no solamente tenerlo o no tenerlo.  Tener varios de estos criterios no significa automáticamente tener mas dimensiones, recién cuando se relacionan 2 o más podemos tener un plano o mayores dimensiones.

El tema es que la realidad es compleja. Vemos la "sombra" de algo de muchas dimensiones en las pocas que usamos para medirlo o evaluarlo, no haciéndonos una idea correcta de lo que estamos evaluando. Distintos criterios pueden dar distintas imágenes, y no ser ninguna de esas imágenes correctas o lo suficientemente representativas de la realidad.

Y no usamos muchas dimensiones en nuestras evaluaciones o modelos. De algo arbitrariamente complejo y multidimensional decimos que es o no es tal cosa (proyección a 0 dimensiones), o que es mejor o peor que otra cosa basados en un criterio (proyección a 1 dimensión) algo ya mas complejo basados en 2 o mas criterio (proyección hacia un plano u objeto 3d). Pero esto siempre es limitado, no somos buenos visualizando mas de 3 dimensiones espaciales, y cuando se nos presenta para evaluar el modelo de algo, o se limita a pocos criterios (1 a 3) relacionados, o se tienen criterios no relacionados (que hace que no se tengan dimensiones extra, y no se tengan integradas todas las dimensiones del problema.

En la imagen se puede ver un problema (una figura geométrica relativamente simple) por sus proyecciones a 3 planos (digamos que ver el problema, combinando de a pares, 3 criterios distintos). Pero esas combinaciones no reflejan lo que es la realidad del objeto que estamos viendo, es recién yendo a 3D (o a la cantidad de dimensiones correcta) que vemos realmente con lo que estamos tratando. Y lo que nos encontramos en la realidad no son figuras geométricas regulares, sino cosas mucho mas amorfas, con mucho mas ruido, mas detalle, mas texturas.

Todo esto parece muy geométrico, pero es lo mismo que pasa con ideas, personas o eventos de la vida real. Y sobre esto, hay que contar que hay dimensiones e informaciones que no sabemos, y tal vez ni siquiera intuimos. Nuestras proyecciones pueden dar alguna idea de que hay algo más, o no.

El mapa no es el territorio

Como conceptualizamos lo que vemos? Una isla. una montaña, caminos, ciudades, mar, etc. Nuestro diagrama de lo que es no nos muestra cada árbol, cada pájaro, cada grano de arena, cada fruta caída. Hay cosas que no nos interesa mostrar que están ahí, por mucho que estén, y que eventualmente puedan ser importantes para algo que queramos hacer o evaluar en el futuro. Hay animales peligrosos? Insectos o parásitos que transmiten enfermedades? Plantas alimenticias o medicinales? Doblones de oro escondidos entre la arena? Está afectando la circulación de una corriente marina? Que necesidad de información tendremos en el futuro? Las simplificaciones que hacemos pueden estar dejando afuera algo que puede ser esencial, especialmente cuando dejamos el ambiente prístino de nuestros modelos y nos enfrentamos con la realidad misma.

Tenemos que contrastar nuestros modelos con lo que realmente es. Sin importar lo claros, simétricos, elegantes o fáciles de transmitir que sean, nuestra conceptualización de la realidad tiene que explicar lo que realmente pasa,  admitir que son erróneos o incompletos, y/o usar las discrepancias para corregirse.

9 de diciembre de 2018

Lo opuesto a la iluminación

Uno imagina que con el correr del tiempo uno va a aprender más, y saber mucho más mas adelante, pero la sensación que tengo es de cada vez saber menos. Hay varios factores que me causan eso.

Expandiendo horizontes

En la medida que uno aprende (si no lo hace de forma totalmente focalizada y cerrada, al menos) van apareciendo nuevas cosas en nuestro horizonte. Algunas cosas que aprendemos, por supuesto, pero por sobre todo, cosas que notamos que no sabemos. Aprendemos que existe la química, y se abre todo un mundo de cosas que no conocemos. Leemos un libro de un autor, y notamos la cantidad de libros de su autoría que no leímos. Exploramos comunidades al azar y nos encontramos con un montón de gente discutiendo de temas que no conocemos, o que no teníamos idea de su profundidad. 

Es como si con cada paso que damos hacia el horizonte, este se aleja 10 kilómetros mas lejos, y se vuelve muchísimo mas amplio. Podemos retraernos, refugiarnos en las cosas de las que conocemos y donde nos sentimos seguros, pero tarde o temprano nos vamos a chocar con muchas de las cosas que estaríamos evitando ahora, y no tener ni idea de ellas en su momento puede tener un efecto bastante negativo.

Por otro lado, explorar siempre cosas nuevas nos pone en una situación donde la mayoría es nuevo y desconocido para nosotros, donde lo que va a primar es nuestra ignorancia. Y siempre habrá campos importantes donde eso va a pasar. 

Percibiendo lo desconocido

Ese ritmo de descubrir cosas nuevas, muchas de las cuales no teníamos idea de su existencia antes, termina convenciéndonos que no es algo que pase ocasionalmente o hasta cierto punto sí y después  ya no. Podemos dar un paso adelante y tomar como letra del problema que hay cosas que ni sabemos que no sabemos, la mayoría de las cuales que nunca vamos a saber ni tener idea de su posibilidad, y que muchas de ellas van a influir o afectar nuestras vidas o nuestro entorno inmediato. Podemos tratar de descubrir algunas de ellas, aprendiendo mas, o encontrando patrones donde no debería haberlos, cosas que no podemos explicar y que tienen que tener una razón detrás, por como se comportan los demás y otras medidas indirectas si hay cosas que aún no podemos percibir o conocer.

Pero como los horizontes que se amplían de la sección anterior, pero esto es algo muchísimo mas amplio que lo que podemos alguna vez saber que no conocemos, y también nos afecta. La imagen que me hago es la de caminar en la niebla, donde no veo por donde estoy caminando aunque creo que estoy sobre un camino seguro, y yendo el linea recta. Pero puedo estar equivocado, haber obstáculos, pozos, o no estar desde hace ya tiempo sobre terreno sólido. Puedo simplemente seguir con mi seguridad, y avanzar como si no hubiera ningún peligro, o puedo tantear el camino, lo que puede mejorar un poco mis posibilidades en caso de si haber algo, pero que me enlentecería mucho de no haber nada o al menos nada por donde vaya.

Lo que se y como pienso no es fiable

Nos preciamos de estar muy seguros de como pensamos, lo que sabemos y recordamos, pero la realidad es otra. Tenemos una serie de atajos y simplificaciones que nos han sido muy útiles en el pasado para tomar decisiones (especialmente en los casos donde no tenemos mucho tiempo o información para decidir), políticas por defecto, preferencias y historias que nos creamos para darle un sentido a la realidad. Esos factores y otros son la base de nuestros sesgos cognitivos

Muchas de ellas ponen en entredicho las decisiones que creemos que son reflexionadas y seguras. En algunas (por ejemplo el efecto Benjamin Franklin), llegamos a reescribir nuestra memoria, eso que consideramos inviolable y fiel, para que ajuste a nuestras acciones. Y para peor, siendo consciente de estos sesgos no garantiza no caer en ellos.

Uno podría aducir que como atajos que se han formado en generaciones, deberían estar la mayoría de las veces bien y no afectarnos mucho, si bien pueden causar que cometamos errores no debería de ser algo que pase frecuentemente. Pero pueden ser usados en nuestra contra, apuntados como errores metódicos que podemos cometer y obligarnos a hacer cosas que nos perjudican. En el pasado tal vez no era demasiado común, aunque en la historia se pueden haber destacado personas con conocimiento intuitivo de varios de ellos que podían haber tomado ventaja. Pero en las ultimas décadas se ha transformado en una ciencia, en un conocimiento metódico, algo al alcance de gente en los ámbitos políticos, financieros, publicidad, empresas, agencias de inteligencia, etc. Y se lo usa activamente para hacer que hagamos cosas que afectan negativamente nuestro futuro, o que no usemos nuestro criterio o conocimiento.

Cuanto de lo que sabemos esta ahi por fuentes confiables y realmente verificadas? Cuanto aceptamos de forma tácita por alguno de estos sesgos, pasando a formar parte de nuestra cultura? Cuanto de lo que elaboramos nosotros mismos (conclusiones, deducciones, trabajo, etc) pisa sobre terreno realmente firme a la luz de todo esto?

Prediciendo el futuro

Para que sirve el conocimiento? Entre otras cosas, nos permite de alguna forma predecir el futuro, o las consecuencias de alguna acción, o cuando menos alguna nebulosa noción de que lo que hacemos "esta bien" por las alguna de las cosas que implicarían en algún futuro cercano o lejano. Dentro de nuestro oficio o especialidad, "sabemos" como van a terminar siendo las cosas que hacemos, que van a resistir, para que van a servir, con que se van a encontrar.

Pero la realidad es mas caótica e impredecible de lo que pensamos, y nuestras predicciones en general mas incorrectas por nuestras propias limitaciones.

Parte de nuestra base para hacer predicciones es nuestro conocimiento del pasado, y cosas que no son exactamente conocimiento, como historias, cuentos, analogías, e incluso la historia que nos vamos construyendo de nosotros mismos. Eso toma prioridad contra, por ejemplo, probabilidades ("esta posibilidad en un millón es seguro que pase porque se trata de mi, ahora, etc"), no somos intuitivamente buenos en estadísticas, y es acá donde entran fuertemente esos sesgos o atajos de mas arriba. Somos buenos haciendo analogías contra otros eventos o cuentos, pero no siempre nos fijamos en lo que realmente hizo funcionar los eventos pasados, ni si esos factores siguen jugando ahora. Y la selección de las cosas sobre las cuales hacemos analogías también tiene sesgos. Y por supuesto, nuestro conocimiento (a veces parcial) no nos asegura que vendrá en el futuro.

Tampoco conocemos lo que hace funcionar las predicciones, los factores que intervienen en la causalidad. Acá entran también los factores que no conocemos que no conocemos, tanto para los eventos pasados como los futuros que estamos previendo, y eso tanto en su existencia como en su influencia. Incluso cambios pequeños pueden tener una influencia en determinados sistemas.

Otro factor que influye en nuestra capacidad de predecir son los bucles de realimentación. No siempre se tiene una acción puntual con un resultado definitivo e instantáneo, el resultado de nuestras acciones puede formar parte de un proceso, y nuestras futuras acciones depender del resultado de las anteriores. Y por supuesto, puede haber más actores, tanto más personas como entorno, ambiente, física o o incluso factores que consideramos externos, formando parte de esos bucles. Estos bucles puede manifestar un comportamiento emergente, una tendencia u orden que no podríamos deducir de los factores aislados.

A pesar de tener un nombre tan poco usual, es algo que nos encontramos en el día a día. Las ondas y su reflejo en un charco,  tendencias sociales, el como ajustamos nuestro comportamiento en base a quienes nos rodean y como lo hacen ellos, la lista es muy larga, solo hay que saber como verla. Y no se necesita demasiados componentes para llegar a algo complejo, el ejemplo más clásico que conozco, de física es  el  problema de los 3 cuerpos , algo casi caótico a partir de solo 3 elementos simples interactuando. Esas interacciones mutuas y realimentación es son cosas que usualmente descartamos o ignoramos, pero afectar y mucho, el como terminan pasando las cosas.

22 de abril de 2018

Manejadores de passwords

Algunas definiciones


Ataque de Fuerza bruta


El atacante intenta probar todas las combinaciones posibles de letras hasta llegar a la clave. Esto implica una cantidad grande de intentos, que aumenta mucho con el largo de la clave y cantidad de diferentes caracteres posibles., 27 por cada letra minúscula individual, 27x27=729 por cada par de letras, 27x27x27=19683 por ternas y así sucesivamente.  Con mayúsculas+minúsculas+dígitos mas símbolos normales=96 letras distintas, así que x1=96, x2=9216, x3=884736.

Diccionario


En vez de probar todas las combinaciones posibles de letras, el ataque por diccionario se basa en tener una o varias listas de palabras para probar (por ejemplo la lista de palabras de un idioma, por eso se la llamo diccionario), por lo que la cantidad de intentos empieza siendo la cantidad de palabras en esa lista, por lo cual la cantidad de intentos es usualmente menor a los que se hacen en ataques de fuerza bruta. Sobre esto hay refinamientos que se hacen, como hacer transformaciones en las palabras del diccionario probando pasar letras a mayúsculas, substituir letras por números que se le parecen y transformaciones por el estilo. También se suele agregar a las listas de palabras nombres, palabras relacionadas con las personas/organizaciones a las cuales se quieren determinar la clave y otros.

Como los atacantes obtienen nuestras claves?


La forma mas trivial es intentar identificarse como nosotros a los sitios donde tenemos usuarios y claves. Dependiendo de cual sea el sitio, podrían hacer miles o millones de intentos por dia intentando llegar a ella, siguiendo un ataque de fuerza bruta o de diccionario. Algunos servidores limitan la cantidad de intentos, o no son especialmente rápidos validando usuarios (con un intento por segundo solo haría 86000 intentos en un día), pueden bloquear al equipo remoto que hace esos intentos, o incluso alertar al usuario que eso esta pasando, pero no todos los servidores son asi.

Hay veces que hay intrusiones en algunos servidores donde nuestras claves estan almacenadas. ya sea por amenazas internas, software con alguna vulnerabilidad u otros factores.

Usualmente las claves no se guardan en texto plano, sino encriptadas de tal forma que no toma mucho tiempo verificar que una clave tiene una determinada encriptacion, pero es imposible a partir de una encriptacion determinar la clave que la origino (pensar en una suma larga de numeros, a partir de los numeros puedo saber el resultado, pero a partir del resultado no puedo obtener los numeros que me hicieron llegar a el, solo que en este caso la "cuenta" que se hace es mas compleja). Pero con las claves encriptadas se puede hacer (fuera de linea, de forma distribuida, sin nada que bloquee el proceso, y muy rapido) un ataque de fuerza bruta o diccionario tambien, solo que mucho mas rápido y por lo tanto con muchos mas intentos por dia/hora que las pruebas en linea. Pero aun siendo mas rapida la cantidad de intentos, hay limites practicos respecto a la cantidad de claves que se pueden probar, si la cantidad de claves posibles son en el orden de trillones, y cada intento lleva milesimas de segundo tomaria decadas probar todas desde una sola computadora.

En algunos sitios las claves si se han guardado en texto plano, y se han difundido las claves de sus usuarios, pudiendo ser usadas en ese servicio e intentadas en otros, de hecho, pasando a formar parte de las listas que se intentan en los ataques de diccionario. Eso ha ocurrido en el pasado con empresas y servicios grandes como Adobe, LinkedIn y Yahoo!.

A priori uno no sabe cuan seguro es manejando claves un sitio, o cuan de confianza es su personal, o cuan forzados estén por resoluciones de su gobierno a dar datos privados de sus usuarios a organizaciones de su gobierno o personal de él.

En este contexto, que hace que una clave sea buena, respecto a estos tipos de ataque?

- Un compromiso entre largo y variedad de caracteres, para que las combinaciones posibles sean del orden de millones de millones. Algo que contenga letras mayúsculas y minúsculas, dígitos y algunos símbolos como espacios, comas y similares, con un largo de 12 caracteres o mas es lo considerado actualmente seguro ante un intento de determinar claves a partir de su versión encriptada usando un numero razonable de computadoras. Podría ser con un conjunto mas limitado de caracteres, pero mas largo, para llegar a las mismas probabilidades.
- No ser una (o dos) palabras de diccionario, obviamente, ni modificaciones triviales de ellas. Recordar que las listas de palabras usadas no tiene porque ser las de un diccionario formal, puede incluir palabras o frases usadas en nuestra cultura, nombres,  o palabras/números/fechas relacionadas con uno mismo. Y tampoco ser una clave que hayamos usado en otro lado, o una que se pueda derivar de ella, ya que podemos no saber si sus claves se han difundido de forma no publica. Y que sea improbable que una o varias personas hayan usado la misma clave en otros lados (ya que sería más probable que aparezcan en listas de claves filtradas usadas como diccionario).

Claves seguras y memorables


Ya sabemos que aspecto tiene que tener una clave segura. Como hacemos que sea recordable? No somos buenos recordando secuencia largas de letras y números sin sentido, pero que pasa si le damos un sentido? Somos buenos recordando cosas con sentido, historias, expresiones y similares. Hay muchas estrategias al respecto.

En vez de ampliar la cantidad de caracteres, podemos usar letras normales y usar frases, llegando a la cantidad de combinaciones mas por largo que por variedad de letras. Esas frases deberían apuntar a ser mas bien únicas, no usables por nadie más y no demasiado obvias respecto a nosotros para terceros.

na forma es tomar varias palabras al azar (digamos, 4, con la cantidad de palabras del idioma español aún sabiendo nuestra estrategia de generación son muchas combinaciones) y formar una asociación de ideas con ellas, una historia, una imagen, algo con un sentido, y con ese sentido en la cabeza podemos recordar esas palabras.  En xkcd: Password Strenght (en inglés) hay una explicación de esta práctica.

Se pueden recordar frases largas (estrofas de canciones, anécdotas de la vida, pasajes de libros, etc), pero es algo muy engorroso de escribir cada vez que se quiera usar esa clave. Pero se puede agregar a esto una transformación fácil de recordar y hacer, para que quede algo mas corto, y tal vez con un conjunto de caracteres más variado, para que quede con los criterios de "buena clave" expresados mas arriba. Digamos que tomo como frase recordable "En 1815 Napoleón perdió la batalla de Waterloo." Y digamos que me quedo con las 2 letras iniciales de cada palabras, números, símbolos de puntuación, y mantengo las mayúsculas donde van. Esa frase larga de escribir me quedaría como "En1815NapelabadeWa.", cosa que es difícil de atacar por fuerza bruta (19 caracteres de todos los tipos), es difícil que encontrar en listas (a menos que usen exactamente la misma frase y transformación en varias de sus cuentas) y si bien la clave en sí es difícil de recordar, la frase original no lo es, y la transformación tampoco, y eso es lo que tenemos en mente al escribirla.
Esa frase y transformación son sólo ejemplos, cada uno tiene potenciales frases que recuerda mejor, o que puede querer usar frecuentemente (por ejemplo, ya que es algo que pueda tener que escribirse frecuentemente, algo motivacional, objetivos o algo estimulante puede tener consecuencias en nuestra vida mas allá de el ingresar nuestra clave). Y las transformaciones también hay varias posibles que son fáciles de recordar, primera, segunda, o última letra de cada palabra, número o símbolo cuando la palabra signifique eso, p/ej si la palabra es "igual" poner "=", mismo con mas, coma, punto, etc, alternar mayúsculas, y otros)
Lo que importa con esta u otras estrategias de frases es que se cumpla con los requerimientos de seguridad (largo y variedad de caracteres), verificar, si se genera la clave, que no caiga justo a ser una palabra existente (por ejemplo, las iniciales de "Pero al saberse sólo Washington ordeno retirada de soldados" generaria "PassWords", que es vulnerable a un ataque de diccionario), y no usar la clave en todos lados.

Demasiadas claves. Usemos administradores de contraseñas.


Lo de arriba esta bien con pocas claves, pero no funciona con decenas o cientos de claves. Acá es donde entra una categoría de programas llamados administradores de contraseñas. En esencia, esos programas nos permiten almacenar y recuperar nuestras claves, usualmente requiriendo una clave maestra para accederlas. De esta forma la clave que tengo que recordar, la que tiene que ser memorable, tener algún sentido, tener una forma de generarla, etc, es la clave maestra del administrador de contraseñas, no todas y cada una de las claves que manejo.

Hay muchos administradores de contraseñas. Los navegadores usualmente incluyen uno propio, o pueden usar el provisto por el sistema operativo. Hay varios sitios web de renombre que dan ese servicio, como Dashlane o LastPass, pero en lo personal, como el manejo de claves es algo muy delicado, prefiero algo que corra en mi propia computadora, sea multiplataforma, y sea de código abierto.

Mi preferido al respecto es KeePassX (basado en KeePass, y con un derivado con algunas mejoras en KeePassXC, los 3 tienen el mismo esquema y pueden usar el mismo formato de archivos, asi que se podría elegir cualquiera de ellos). Hay muchos otros manejadores de claves, algunos código abierto, otros comerciales, y también hay maliciosos, pero estos están lo suficientemente probados como para ser una buena opción por defecto.

Con este administrador uno tiene un archivo que es donde se almacenan las claves (puedo tener varios almacenes de claves, lo que me permite manejar de distinta maneras a diferentes grupos de claves que me interesa que estén separadas), con una clave maestra para abrirlo. En el puedo tener de forma jerárquica mis claves, categorizarlas, agregarles información asociada (usuario, sitio, notas, etc), incluye generadores de claves seguras, buscar, cortar y pegar y otras funciones útiles a la hora de manejar claves. Al estar basado en archivos individuales, esos archivos puedo respaldarlos en pendrives, sincronizarlos via la nube, incluso usarlos desde el celular (hay aplicaciones para móviles que abren esos archivos, por ejemplo KeePassDroid) o compartirlos con otras personas de ser todas claves de cuentas compartidas con ellos.
 

Estrategias para el uso de un administrador de claves


Con un administrador de claves, ya no es tan difícil tener una clave distinta y segura por cada servicio. Uno puede tener una clave maestra que sea a la vez segura y memorable (como vimos más arriba), pero las claves de los servicios no tienen porque ser todas memorables. Puede ser arbitrariamente larga, compleja y al azar, que de todas formas se pegaría en el dialogo de ingreso del servicio sin siquiera verla.

Hay algunas claves que probablemente nos interese que sean recordables. La clave del administrador de contraseñas (para los que son tipo KeePassX, de cada uno de los archivos donde almacenemos claves) entra en esta categoría. La clave del correo donde uno puede recuperar contraseñas, o del sitio donde respaldé los archivos del administrador de contraseñas, o de sitios/situaciones donde uno no puede ir al administración de contraseñas o ver la clave, son otros posibles. Y también puede ser con los sitios a los que uno tenga que colocar la clave con suficiente frecuencia como para que sea un peso el entrar al manejador y luego al sitio. Con cuentas de banco es complicado, algunos bancos colocan restricciones al uso de administradores de contraseñas (por ejemplo, no dejando pegar una contraseña en el diálogo de entrada), amen de tener restricciones de como pueden ser las claves que pueden no ser fácilmente memorables, o desde donde se puede entrar. Pero siempre puede servir un administrador de contraseñas como ayudamemoria.

Una cosa que es importante respecto a donde se ejecuta o como se accede al administrador de contraseñas es que sea un equipo seguro. El archivo en si, si se le coloco una clave razonablemente compleja, es seguro, pero cuando colocamos la clave para abrirla, si hay algo que intercepta o puede ver lo que escribimos (aplicaciones maliciosas en el celular o computadora, especialmente si la computadora es de terceros, o sitios web que simulan ser el donde guardamos las claves, pero que no lo son) podria obtener la clave maestra y por lo tanto el acceso a las claves en el archivo. Y por supuesto, escribir las claves en papelitos, pizarrones u otros sitios que sean visibles por terceros (en persona, fotos que compartimos por celular, etc) pueden volver a todo el esquema inseguro.

29 de marzo de 2018

Explorando lo desconocido

Hay dos tipos de "desconocido": lo que sabemos que no sabemos, y lo que  no sabemos que no sabemos. El ejemplo de ellos que había leído hace varios años era que uno caminaba por un bosque, encontraba manzanas y las comía porque sabia que eran sanas, luego encontraba bayas, y si bien no las conocía a esas en particular sabía que algunas podían ser venenosas, así que las evitaba. Pero luego encontraba hongos, y como sabía que existían hongos venenosos, los comía con malos resultados.

Ambas categorías nos impactan día a día. Y si bien uno puede tomar precauciones o en consideración respecto a las cosas que sabe que no sabe, para lo que no es consciente de ello las cosas son mas complejas.

Una forma de minimizar lo que no sabemos que no sabemos es aprender mas, por supuesto. Eso no sólo va a aumentar lo que sabemos, sino que va a hacer que tomemos conciencia de varias cosas que no. Y es mas fácil y rápido aprender sobre que grupos grandes de temas uno no sabe que aprender esos temas. Es mejor ser consciente de nuestro desconocimiento que el caer en cosas como el síndrome de Dunning-Kruger.

Otra forma, dentro de nuestra área de experiencia o entorno personal, es medir y cotejar, dentro de lo que sabemos, cuanto podemos explicar nuestras mediciones y patrones que aparezcan en ellas. Esos patrones y mediciones que no podemos explicar pueden ser una huella dejada por cosas de las que no sabemos que no sabemos. Y si bien podemos no llegar a explicar o entender esas cosas, podemos con distintas medidas caracterizarlo, darle una forma.

Es algo delicado de hacer, principalmente porque somos un instrumento muy poco fiable de medición. Recordamos de forma muy parcial (los sesgos cognitivos son muy buenos reconociendo patrones donde realmente no los hay) por lo cual registrar todo es importante, aunque puede venir implícito en lo que registramos usando computadoras. Podemos estarnos enfrentando a algo cercano a caótico o con muchos factores que no conocemos afectando el resultado, tal vez de forma no consistente en el tiempo.

No sólo no somos fiables como herramientas de medición, sino que somos especialmente malos midiéndonos a nosotros mismos, especialmente teniendo en cuenta esos sesgos cognitivos que nombre arriba. Otra categoría de cosas que no sabemos que no sabemos tiene que ver con como pensamos, especialmente porque somos a la vez el observador y el objeto que cambia (incluyendo nuestra memoria). Pero podemos observarnos a nosotros mismos al observar, o a nuestro entorno, para notar como cambiamos. Una analogía al respecto es pensar que se esta flotando en el mar, quizás arrastrados por una corriente no muy fuerte. Sin puntos externos de referencia, podemos pensar que estamos siempre en el mismo lugar, es cuando vemos algo mas que consideramos sólido que notamos que nos movemos.