Inteligencia artificial, turcos y Skynet

1997 marcó el principio del fin. Por un lado el 4 mayo Gary Kasparov sufre su primera derrota en el que finalmente sería el primer torneo que un campeón mundial de ajedrez pierde en condiciones oficiales ante una computadora¹.

Por otro lado el 29 de agosto, a las 2:14 a.m., EDT, el sistema Skynet, una red diseñada por el ejército de Estados Unidos con el fin de controlar de manera centralizada los sistemas de defensa de la nación y evitar el error humano, adquiere conciencia de sí misma y comienza un ataque nuclear masivo sobre Rusia, en los eventos conocidos como “día del juicio” que eventualmente generan un futuro dominado por computadoras y androides serie T, en el cual una desesperada resistencia envía cada verano a alguien al pasado para salvar a Sarah Connors y pelear con Terminators.

Terminator

La derrota de Kasparov fue durante el segundo juego del torneo, el primero fue ganado por él, el tercero, cuarto y quinto terminaron en tablas (empate) y el sexto lo ganó el/la representante de IBM, Deep Blue. Este juego es además memorable por un polémico movimiento en la jugada 37, el cual Kasparov comparó, en la conferencia de prensa posterior al encuentro (y que sigue comparando cada vez que alguien le pregunta) con el gol que Maradona marcó contra Inglaterra en el mundial de 1986, la famosa “mano de Dios”.

Aquí el juego:

Y aquí como se veía el tablero antes del movimiento de las piezas blancas controladas por la computadora:

KasparovDeepBlue

Kasparov había jugado toda la partida como es recomendado que el ser humano juegue ante una computadora: evitando situaciones donde el cálculo de combinaciones fuera la clave y tratando de llevar el juego hacia conceptos posicionales de estrategia a largo plazo. Cuando un pedazo de silicón puede evaluar millones de posiciones en un segundo, es mejor luchar con él en el incierto territorio del cerebro humano de “lo bueno y lo malo”. En esta posición Kasparov esperaba que la máquina lanzara la dama blanca a atacar a los peones negros de b5 y c4 (poniendo la dama en b6, por ejemplo), una acción lógica ya que encamina a algunas combinaciones en donde se gana material, lo cual es uno de los puntos claves en la programación de cualquier software que juegue ajedrez, después de todo ¿qué otra cosa podríamos enseñarles? Sin embargo Deep Blue rechazó esta ventaja concreta y eligió un camino más abstracto: colocó el alfil blanco en e4, evitando así que a largo plazo Kasparov pudiera utilizar su alfil negro en combinación con su dama para atacar a un rey blanco más o menos desprotegido. Es una jugada que tiene mucho sentido para el cerebro humano, pero que para una computadora debería de ser inalcanzable, ya que la cantidad de movimientos que hay que esperar y la cantidad de sacrificios que hay que hacer en el camino, jugando con negras, para hacer realidad esa idea generan un abanico tal de posibilidades que estarían numéricamente muy por encima de su capacidad de cálculo. Kasparov no pudo asimilar la idea de que una máquina pudiera tener una intuición y estuvo el resto del torneo exigiendo a IBM que mostrara la programación utilizada y acusando a la empresa de utilizar “turcos”, ambas cosas fueron negadas por IBM.

Se le llama turco al uso de la inteligencia humana para simular inteligencia artificial, y el origen del término tiene que ver con otra historia de ajedrez: en 1770 Wolfgang von Kempelen construyó un artefacto que era capaz de jugar a un nivel bastante avanzado y que fue una sensación en la Europa de esos años, llegando a vencer a Napoleón Bonaparte y a Benjamín Franklin.

Turco
Después de un tiempo se descubrió que era un engaño y que lo que en verdad había era un tipo adentro, bastante incómodo, moviendo con palancas e imanes al muñeco de turbante. Hoy en día el uso de turcos es muy común, ya que para algunos procesos un cerebro es más barato que un procesador; Amazon tiene una división de trabajo llamada “Mechanical Turk web service” que es básicamente un montón de gente sentada frente a una computadora y recibiendo instrucciones junto con el pago por llevarla a cabo. Por ejemplo, uno puede recibir un mensaje que diga: detectar la página repetida en estas cinco imágenes, recompensa 3 centavos. La persona lleva a cabo la tarea y 3 centavos son acreditados a su cuenta. Hay incluso un proyecto de arte en donde la instrucción enviada a estos “turcos” fue: dibuje una oveja mirando a la izquierda, recompensa 2 centavos. El resultado se puede ver en http://www.thesheepmarket.com/

En cuanto al torneo de ajedrez de 1997, una vez conquistado el triunfo IBM se llevó rápidamente todos sus juguetes y dio por terminada su participación en el mundo del ajedrez (su nuevo proyecto se llama Watson y juega Jeopardy). Fue un poco como el programa Apolo: una vez que llevaste a un tipo a la luna volverlo a hacer ya no genera Rating². Pero humana, artificial o artificialmente artificial en ese torneo hubo mucha inteligencia; el día que finalizó las acciones de IBM subieron un 15%, que es más de lo que gana la FIFA en dos mundiales, convirtiendo esa semana de ajedrez en lo que quizá sea la semana económicamente más exitosa de la historia de los deportes.

Deep_Blue

Ahora bien, si hace ya veinte años existían máquinas con atisbos de intuiciones: ¿no podríamos pensar en que esa inteligencia se pueda sacar de un tablero de 8×8 y aplicar a sistemas más complejos? ¿Qué, eventualmente, una computadora pueda predecir cuál es la mariposa en Japón cuyo aleteo provocará un tsunami al otro lado del mundo?

Y más importante ¿qué pensará de nosotros una inteligencia así? ¿Decidirá ser la comprensiva voz de Scarlett Johansson en “Her” o el letal pragmatismo de Skynet en “Terminator”?

Preguntas para otro día…

¹ La historia completa se puede encontrar en el documental de Robert Koehler “Game Over: Kasparov and the Machine”.

² Aunque el programa Apolo tuvo 17 misiones, 6 alunizajes y 12 “moon-walkers”, la creencia popular es que fue un hecho aislado. Las populares teorías de la conspiración en contra del hombre en la luna basan sus argumentos en algunas fotografías de la misión Apolo 11, excluyendo posteriores misiones y los programas Mercury y Gemini, antecesores del Apolo. Sin embargo la popularidad de cada alunizaje decreció en forma exponencial, y para diciembre de 1972 cuando el Apolo XVII alunizó el hecho fue apenas mencionado en los periódicos… en gran medida esta indiferencia es causa del eventual abandono del programa de exploración espacial.

Terrorismo, encriptación y como no perder tu trabajo esta semana

Comenzaré por el final: para no perder tu trabajo esta semana (si trabajas en el área de sistemas) lleva a cabo un BackUp de tu data crítica. Hace unos días, mientras trabajaba en una instalación de un software de seguridad para una empresa en Puerto Rico, uno de los administradores de sistemas me llevó una laptop de una usuaria con un mensaje que había aparecido esa mañana, algo así:

CTB Locker20

Esto es como la crónica de una muerte anunciada, con la diferencia de que la sangre y el drama no son en un pueblito inventado por García Márquez, sino en el datacenter de una empresa. Durante 2014 hubo un aumento considerable en ataques informáticos a través de adjuntos (attachments) en el correo electrónico: avisos (falsos) del IRS, UPS, notificaciones de Fax, etc., algunos realizados con la calidad suficiente para engañar a un usuario no experto o con poco tiempo para revisar cada uno de los correos en su Inbox (es decir, la mayoría de nosotros).

Muchos de esos ataques tuvieron consecuencias espectaculares con miles de millones de datos robados, impacto mediático, etc., pero otros aparentemente (y esto es solamente mi opinión de acuerdo a los reportes corriendo este mes) fueron un ataque de “espera”, es decir, adjuntos que al ser ejecutados instalaron un código que posteriormente abrió algunos puertos y conexiones, se reportaron con su “master” y quedaron en animación suspendida esperando órdenes o el momento indicado para atacar (como un huevo de Alien)

El resultado es que el atacante gana control de una gran cantidad de máquinas “zombies” que pueden ser vendidas en Internet para generar más ataques o, en el caso de ataques tipo “Ransomware – secuestro de archivos” pueden recibir instrucciones para descargar y ejecutar un software que buscará archivos personales (bases de datos, hojas de cálculo, procesadores de texto, imágenes, etc.,) y los encriptará, con lo que serán inaccesibles para el usuario.

Las noticias durante el mes de enero relacionadas al CTB locker 2.0 son alarmantes, y un buen artículo que habla al respecto es este que encontré en el NY Times:

http://www.nytimes.com/2015/01/04/opinion/sunday/how-my-mom-got-hacked.html?_r=0

“…the Sheriff’s Office of Dickson County, Tenn., recently paid a CryptoWall ransom to unlock 72,000 autopsy reports, witness statements, crime scene photographs and other documents.”

“…ransomware hackers have tested the market with prices as low as $100 and as high as $800,000, which the city of Detroit refused to pay in order to have its database decrypted”

Y por supuesto, en este tipo de ataques, al igual que en el secuestro, las víctimas lo que menos quieren es publicidad, por lo que seguramente la cantidad de casos reportados son apenas la punta del Iceberg.

Una vez que los archivos se encuentran encriptados la única manera de desencriptarlos (volverlos accesibles) es con la llave de encriptación, la cual obviamente se encuentra en poder de los delincuentes. Si el rescate no es pagado la llave es borrada y los archivos se pierden para siempre, ya que utilizar un ataque de fuerza bruta para tratar de desencriptar estos archivos es imposible en términos prácticos, mientras esto sucede la máquina infectada muestra una cuenta regresiva con el tiempo de vida que les queda a nuestros archivos. El pago debe de ser realizado dentro de ese lapso de tiempo y en mi ejemplo la cantidad solicitada era de 2 Bitcoins (+/- $250.00 USD cada uno). La buena noticia es que por las leyes de oferta y demanda si uno realiza el pago es casi seguro que recibirá la llave de encriptación, ya que a los delincuentes les conviene que corra la voz de que son gente “de palabra”, la mala noticia es que ese dinero va directamente a financiar al crimen organizado o a grupos terroristas.

¿Qué hacer al respecto? Para usuarios caseros la prevención es bien fácil:

– Mantener al día y con todos los parches de seguridad los sistemas operativos

– Mantener activado y actualizado el antivirus

– Mantener un backup actualizado en un disco duro externo de nuestra data (pero mantenerlo desconectado de los equipos mientras se erradica el virus)

– Y por supuesto, sentido común (entiéndase no ejecutar un archivo adjunto Abreme.ZIP)

Para los usuarios empresariales, además de lo anterior, hay que tener en cuenta que la mayor amenaza en este tipo de ataques son las carpetas compartidas, ya que el malware buscará todas las carpetas a las que el usuario infectado tiene acceso en la red y encriptará su contenido, por lo que si el usuario es un administrador con acceso a todo, todo será encriptado, incluidas bases de datos.

Hay por desgracia tantos vectores de ataque en el mundo empresarial que ni siquiera intentaré hacer una lista de ellos, pero independientemente de políticas y productos de seguridad el mejor consejo que se me ocurre es: “Deja lo que estés haciendo y haz un BackUp de tu data ahora mismo”. El malware como tal es bien fácil de eliminar, pero el daño causado es irreversible.

¿Y qué pasó con mi cliente? Afortunadamente no hubo grandes consecuencias, más allá de perder la data de una laptop y algunos archivos “share”, un equipo de trabajo se dedicó a actualizar sistemas operativos y seguridad en equipos críticos mientras otro generó backups de emergencia de la data en los sitios más vulnerables.

No se pagó ningún rescate y aunque todavía no se puede asegurar que la amenaza no existe, se ganó tiempo para comenzar a implementar soluciones y planes para enfrentarla.

Link del “United States Computer Emergency Readiness Team” acerca de este tipo de amenazas y mejores prácticas:

https://www.us-cert.gov/ncas/alerts/TA13-309A

Link de FireEye – Fox IT Scanner donde ofrecen desencriptar los archivos (no lo he comprobado):

https://www.decryptcryptolocker.com/

Búsquedas en Google:

ctb locker 2.0

Cryptowall

Cryptolocker

Chicas en las nubes y nuestra información

cdst

Una de las noticias que más circulación tuvo hace dos meses fue un incidente donde fotos de esas que la gente educada llama íntimas, de varias bellas y famosas chicas comenzaron a circular por Internet. Para muchos fue un mejor regalo que encontrarse el disco nuevo de U2 en el teléfono, y ambas cosas (el disco y las fotos) fueron cortesía de Apple.

Yo soy de la opinión de que cada quién puede decidir sobre su cuerpo como mejor le convenga, y tiene todo el derecho de sacarse o no las fotos que se le dé la gana, soy también de la opinión que cada persona debe tener control absoluto sobre con quién comparte esa y cualquier otra información privada. Sin embargo esta entrada trata sobre tecnología y desde ese punto de vista es que desarrollaré el tema.

¿Cómo llegaron estas imágenes al dominio público? Si uno mira con detenimiento la evidencia (como tuve que hacer yo para escribir este artículo) se dará cuenta de que la mayoría son “selfies” y la mayoría de estos “selfies” fueron tomados con un iPhone (sale en la foto), esto demuestra una vez más que la tecnología y la ciencia tienen el mismo efecto en la sociedad: nos gustan sus resultados pero no nos gusta estudiarlas, y tenemos la mala costumbre de pensar que ambas son gratis. La historia va más o menos así:

1. La chica se toma una foto.

2. La foto queda almacenada en el teléfono.

3. La foto se sincroniza automáticamente a iCloud. Esto es bastante similar a lo que pasa en la película “Sex Tape” con Cameron Díaz y un tipo, en donde como todos los equipos bajo una misma cuenta se sincronizan e incluso el fólder de “trash” tiene su back-up en la nube, toda la gente a la que el tipo ha regalado iPads acaba con una copia del video.

4. El atacante adquiere acceso a la cuenta iCloud.

Aquí hay dos teorías de cómo un atacante puede obtener ese material

La primera es que iTunes tiene un “bug” (ver blog anterior) que permite utilizar un ataque de fuerza bruta –iBrute –para romper el password. Un ataque de fuerza bruta es algo similar a adivinar la combinación en un candado probando una por una. Si el candado tiene 4 dígitos entonces la cantidad de combinaciones posibles es de 10,000, si uno no tiene ni mala ni buena suerte, se necesitan en promedio 5,000 movimientos para abrir el candado, lo cual es aproximadamente una hora de trabajo.

En un password promedio tenemos más o menos la siguiente cantidad de combinaciones: (26 letras minúsculas + 26 letras mayúsculas + 10 números + 8 símbolos) elevado a la octava potencia (un password de ocho dígitos) = 70^8 = 576,480,100,000,000 combinaciones, lo cual son casi dos años probando cuatro millones de combinaciones por segundo, esto es posible, pero el nivel de procesamiento que se necesita implica tener una granja de servidores dedicados a esta tarea, lo cual es bien caro, sobre todo si pensamos que las fotos obtenidas no tienen ningún valor económico.

candado-combinacion-abus-155

Por supuesto alguien podría entrar a Amazon o algún servicio similar y rentar varias máquinas virtuales para hacer el trabajo, o podría ser un millonario con una súper computadora y un cuartel secreto, pero ese es Batman y él no haría eso. Como sea, el resultado final es que el atacante tiene un montón de material robado que no puede vender –cualquier revista de esas que pagan 50k por fotos a los Paparazzi no podrían publicar ese material sin ser inmediatamente demandados –, no lo puede mostrar o prestar a nadie ya que publicarlo es perder la exclusividad sobre el mismo y se queda solamente con una historia que nadie le cree. Y al final acaba como Gollum, aferrado a su pequeño tesoro. En la vida real uno de los hackers que tenía las fotos intentó venderlas (por bitcoins) para lo cual publicó un “adelanto” pero el impacto fue tanto que mucha gente se hizo pasar por él para vender material no original, y el atacante no podía demostrar que solamente él tenía el material original sin perder su anonimato, por lo que publicó gran parte de su colección con la esperanza de borrar su rastro entre tantos sitios que publicaron las fotos.

Por la cantidad de combinaciones necesarias, no creo que esto haya sido el resultado de un ataque de fuerza bruta, a menos que las víctimas tuvieran passwords muy simples, así que mi consejo para Jennifer y todas las demás chicas famosas que siguen mi blog es: utilicen un password de más de 10 dígitos, combinando números, mayúsculas, minúsculas y símbolos seleccionados aleatoriamente, algo así:

Ow8h%49c!kI90b

Y además no escriban ni almacenen ese password en ningún lado más que en su cerebro, es complicado, lo sé, pero más difícil es aprenderse los diálogos de las 14 películas de Harry Potter.

Nota:

Es necesario generar y memorizar al menos 5 passwords de ese tipo, para utilizarlos en diferentes servicios y cambiarlos cada tres meses, de esa manera, si un sitio es comprometido, como ha pasado con Sony, LinkedIn, Facebook, DropBox, etc., –incluso quizá debería decir “cuando el sitio sea comprometido”– el password obtenido no será de utilidad en otros sitios. El precio de la fama.

Por supuesto las medidas de seguridad que debes de tomar con la información almacenada en tu teléfonos y otros dispositivos es directamente proporcional al número de paparazis que tienes asignados en un día promedio sumado al valor comercial que tu información tendría en el bajo mundo de Internet. Es decir que si tu estilo de vida no te exige sacar tu celular de vez en cuando para retratarte desnudo(a) y además la gente no se pelea por verte cuando vas a la playa, puedes relajar un poco tu seguridad y disfrutar al anonimato, sin embargo debes de tener en cuenta que aunque quizá tus fotos no le interesen a nadie, el back-up que tienes de tus documentos (pasaporte, SS, etc.,) son un botín bastante atractivo para los criminales, y especialmente en Puerto Rico, en donde existe la mayor cantidad de ciudadanos americanos con nombres latinos en el mundo.

La segunda teoría de cómo los atacantes consiguieron los passwords para entrar a iCloud es utilizando un ataque altamente personalizado basado en adivinar las preguntas secretas y deducir los passwords más comunes que alguien podría utilizar, por ejemplo, cambiar la letra a por el símbolo @ es como esconder la llave debajo del tapete, P@ssw0rd1, fechas de nacimiento, nombre12345, el nombre del perro, y las preguntas secretas, vaya tontería, cualquier persona que sepa a qué escuela fuiste tiene acceso a tu cuenta. Yo acostumbro destruir las preguntas secretas, por ejemplo, si me preguntan mi equipo favorito de futbol respondo 5dYn221F, aquí el consejo para Jennifer es el mismo: passwords aleatorios fuertes y esperar que la tecnología avance lo suficiente para hacer obsoleto el “algo que sabes” (ver la entrada El robo de identidad y The Twilight Zone) como único punto de autenticación. Y definitivamente activar la doble autenticación en los sitios que lo permitan (password + número que cambia cada 60 segundos en el teléfono).

Aquí la historia de cómo a alguien le quitaron su cuenta de 50k de twitter con este tipo de ataques sociales.

Otra cosa: hay que leer las letras chiquitas en nuestros contratos para servicios Cloud, ya no se trata solamente de esas advertencias tontas que nadie leía cuando instalaba software (y que al final terminabas con 40 plug-ins en tu navegador), asume que los servicios cloud son esencialmente inseguros y los límites de responsabilidad del proveedor nunca los sabrás si no te aseguras de tener un buen contrato con ellos. Este artículo está bueno:

http://arstechnica.com/security/2014/09/what–jennifer–lawrence–can–teach–you–about–cloud–security/

Y por último: las redes sociales no son tus amigas, son empresas gigantes que viven de tu información, ten cuidado con el material con el que las alimentas. Me da ternura (toda la ternura que un bloguero de tecnología puede sentir) cuándo alguno de mis contacto en Facebook se retrata dentro de un avión y comenta algo así como: “Toronto, prepárate que ahí vamos!!! 🙂  :p  😀  #decembertrip” ¿En serio confían tanto en sus 1,200 “amigos”? Vas a dejas tu casa sola un mes y tienes dinero para irte a Toronto y se lo anuncias al público, corriendo el riesgo de que un criminal desalmado te vacíe la casa y no le dé like a tu foto.

Facebook and you

El 80% de la seguridad en el mundo real y el virtual es sentido común: no accedas a tu info desde computadoras públicas, no le abras la puerta a extraños, instala un antivirus y mantenlo actualizado, no le creas nada al príncipe de Nigeria (excepto que trabajes en la ONU y en verdad sea el príncipe de Nigeria), mantén actualizado tu sistema operativo, no confíes en software gratis, no confíes en nada gratis, etc.,

Untitled picture

Una última reflexión: Aunque existen algunas leyes que protegen a las víctimas en casos de divulgación de fotos y material personal la naturaleza global de Internet las hace triviales, este por ejemplo es el “Removal Policy” de un sitio de “revenge porn” en el DeepWeb:

RemovalPolicy

En Puerto Rico se ha hablado mucho sobre la creación de una ley que castigue estos delitos, el mensaje de estos sitios, y la arrogancia de su lenguaje nos dice a priori que tal ley quizá sirva para dar notoriedad a algunos legisladores y dos o tres discursitos políticos, pero su utilidad en el mundo real será cero, nada más que otra “silly state revenge porn law” como las que menciona el sitio. Hay que buscar otra alternativa.

Teoría de la conspiración: ¿Y si todos estos “leaks” son un plan malévolo de varios gobiernos para empujar leyes de monitoreo y censura en la WWW?

Lo sabremos pronto.

Jorge A. Pinedo
Noviembre, 2014

La insoportable levedad del bug o ¿por qué mi computadora me hace esto?

BlueScreen

Cada vez que un ataque informático es publicado, que algún sistema en nuestra oficina actúa de forma extraña o que una actualización llega a nuestros teléfonos escuchamos el término “bug”: el atacante pudo tomar control del sistema gracias a un bug en una aplicación utilizada en la compañía; el bug que hacía que nuestra computadora nos mostrara una pantalla azul; o esas fotos filtradas que fueron resultado de un bug que permitía un ataque de fuerza bruta… pero ¿qué es un bug? Vamos a comenzar con un ejemplo, uno de estos “bugs” que existió en el mundo de Exchange Server (el servidor de correo electrónico de Microsoft) hace varios años, y que era más o menos así:

Un empleado de alguna compañía planeaba tomar unas vacaciones, y responsablemente definía en su sistema Outlook una respuesta automática para avisar a cualquier persona que le enviara un correo que él, o ella, no estaría en la oficina, algo así como:

“¡Hola! Gracias por tu correo, estoy de vacaciones de tal fecha a tal fecha, sin acceso a correo electrónico, teléfono de oficina, celular, fax, IM, SMS o ninguna otra manifestación del campo electromagnético, cualquier cosa por favor molesten a mi jefe o a mi asistente, sus datos son: emaildeljefe@ejemplo.com, etc.,”, el empleado dejaba esto programado, se iba de viaje, pero un momento antes de subirse al avión se conectaba a Internet por última vez para enviar un correo importante al Dr. Jack Shephard, un contacto suyo de otra empresa. El correo salía de su dirección y llegaba al buzón del Dr. Shephard, que en ese momento tampoco estaba disponible ¿dónde estaría? Pero que también había dejado programado Outlook para enviar una notificación de ausencia automática. El servidor del Dr. recibía este email y lo contestaba explicando que el Dr. estaba fuera de la oficina sin acceso a email y etc., el destinatario original recibía este correo automatizado del Dr., y lo contestaba con su mensaje automático, el servidor del Dr. recibía este segundo mensaje y lo volvía a contestar, -hola, gracias por tu correo, estoy de vacaciones…

Y el primer servidor contestaba: – hola, gracias por tu correo, estoy de vacaciones…

Y el segundo: – hola, gracias por tu correo, estoy de vacaciones…

Y el primero – hola, gracias por tu correo estoy de vacaciones…

y seguían así hasta que uno de los dos moría, es decir, se quedaba sin espacio de almacenamiento o reventaba su base de datos y toda la empresa se quedaba sin correo. Y el tipo de sistemas, que probablemente ese domingo en la noche estaba en su casa viendo “Lost” tenía que ir a la oficina y pasar las siguientes 36 horas rehaciendo volúmenes y rescatando “inboxes”

Se escucha divertido, sucedió, y definitivamente es una historia un poco embarazosa para Microsoft, no es el tema de este blog y no hay empresa “libre de pecado”, pero ¿existe alguna manera de crear un mundo “bug-free”?

Un bug yo lo entiendo como una interacción no anticipada entre las líneas de código de un programa con otras líneas de código en él mismo o en otra aplicación. Esta interacción puede tener consecuencias inocuas, como por ejemplo que el mouse no responda por unos segundos cuando abrimos determinadas aplicaciones en determinada secuencia, o devastadoras, como http://heartbleed.com/ que potencialmente le quita lo confidencial a todo lo confidencial en Internet.

Creo que con esta definición podemos contestar la pregunta: ¿podremos tener acceso algún día a software sin “bugs”? Sí, lo único que necesitaremos será una simulación de todas y cada una de las líneas de código interactuando de todas las maneras posibles con todas y cada una de las combinaciones de las otras líneas hasta lograr una especie de “determinismo binario”, o lo que es lo mismo, adivinar el futuro ¿es esto posible? Matemáticamente la respuesta es sí: lo único que necesitamos es una computadora con capacidad de procesamiento y de almacenamiento infinitos. Jeje.

En el mundo real las leyes de la termodinámica y la entropía en los sistemas nos cierran esta puerta definitivamente (temas relacionados: problemas de Hilbert, teorema de Shannon), así que la informática está condenada a un sistema evolutivo, no a uno determinista, y los errores van a ser siempre parte del avance de la tecnología en general y de extinción de algunas empresas en particular. Tony Hoare dijo: “hay dos maneras de diseñar software. Una es hacerlo tan simple que obviamente no haya errores. La otra es hacerlo tan complicado que no haya errores obvios”. La magnitud de la tarea y los miles de millones de líneas de código aún por escribir son parte de nuestra historia futura como especie, hay algunos movimientos interesantes como seL4, un sistema operativo cuyo Kernel ha comprobado matemáticamente estar libre de “bugs” pero claro, ningún equipo falla si no lo sacas de la caja, también hay tendencias en programación altamente preocupantes, como las utilizadas en casas de bolsa, lo cual me lleva a la segunda pregunta ¿está en peligro la humanidad de que un bug comience una guerra nuclear o destruya la economía? Sobre la guerra nuclear no tengo ni idea, espero que no, de la economía me encontré el otro día el siguiente artículo de Donald MacKenzie:

http://www.lrb.co.uk/v36/n17/donald-mackenzie/be-grateful-for-drizzle
La historia larga, corta, llega el tipo de comunicaciones en una de estas empresas de “stock-market” y le informa al VP correspondiente que la conexión con la sucursal de Londres ya está lista y que a partir de ese momento todos los cambios de un mercado se reflejarán de manera inmediata en el otro, y el VP le dice:

— Define inmediato

— Bueno, a la velocidad de la luz, la velocidad máxima en el universo. Si alguna acción o bono cambia de precio en NJ, ese cambio se transmitirá a la velocidad de la luz a Londres –uno se puede imaginar al tipo esperando su palmadita en la cabeza

— ¿Y cómo lo lograron?

— Unimos con fibra óptica las dos sucursales, fue un trabajo enorme, tuvimos que aislar la fibra con materiales que todavía no existían, cruzar los abismos más profundos del planeta y luchar con tiburones (todo esto es real)

— Ok, entonces cuando dices velocidad de la luz te refieres a la velocidad de la luz en un cristal, no en el vacío

— Correcto, 2/3 partes de la velocidad de la luz en el vacío, 125,000 millas o 5 vueltas a la tierra por segundo

— Pues no nos sirve, tiren esa fibra a la basura y conéctense por antenas, esto es una empresa seria.

Y efectivamente, a elegir geodesias y poner antenas, ya que la velocidad es crítica al grado de que incluso la longitud del cable que te conecta al router principal desde tu data center debe de ser igual al de todas las empresas que rentan espacio en el mismo. Para los desarrolladores que trabajan en este entorno las reglas cambian: utilizando la elegante técnica del “bit fucking” que ellos definen como: “no toques el Kernel, no toques la memoria, no invoques subrutinas” crean algoritmos en los circuitos integrados de estas máquinas que permiten un procesamiento suficientemente veloz como para sacar ventaja a la velocidad de la luz en el vacío vs. fibra óptica… ok… muy interesante, ¿Qué significa? Significa que esta evolución hacia la velocidad, este “bit fucking”, ha eliminado cualquier función adicional en el código, incluidos los mecanismos de detección de errores.

Vale, esto suena como un Meh! pero… un pequeño bug en estos sistemas, digamos alguien que confunda en el código el signo + por el signo –, que esté en producción unos segundos puede hacer perder millones al bróker, en 50 segundos más hacer quebrar al banco y en varios minutos colapsar la economía mundial, así que la siguiente vez que alguien confunda el 5 con la S podría ser el fin del mundo. Y eso es Mr. Bug.

Mi consejo a los programadores: coman frutas y verduras

Jorge A. Pinedo
Octubre, 2014

El robo de identidad y The Twilight Zone. Las víctimas del delito cibernético

SSN

Imagina que un día tomas tu celular para hablarle a un amigo, pero por error marcas el número de tu oficina, suena dos veces y después te escuchas contestando a ti mismo(a), no una grabación, sino alguien con tu misma voz tomando la llamada desde tu lugar de trabajo. Este es el inicio de un episodio de “La dimensión desconocida” (The Twilight Zone) donde el personaje se da cuenta que un doble suyo ha tomado control de su vida: su familia, casa, trabajo y todo lo demás, el personaje corre a su casa, intenta abrir la puerta pero sus llaves no funcionan, el carro no está, su tarjeta de crédito es rechazada, su perro lo muerde, etc., el capítulo termina con el tipo buscando comida en la basura, solo, en un callejón, viendo a lo lejos la ventana de su casa, donde esta persona que ahora es él cena con su familia.

Ahora bien, con excepción de algunos qué pensarían “Bueno, al fin salí de eso…” la historia tiene ese sentimiento de pesadilla en donde sabemos que estamos en peligro pero no entendemos la naturaleza de la amenaza. La vida es una historia y para vivirla entre otras personas necesitamos crear un personaje que tenga nombre, apellido, nacionalidad, trabajo, dinero, licencia de manejo, certificado de nacimiento, seguro social y muchos otros requisitos que día con día los demás nos piden (y les pedimos a los demás) para demostrar que somos quienes decimos ser.

¿Qué sucede cuando alguien más tiene acceso a esa información? Las dos consecuencias más comunes son el robo de identidad y el acceso a información confidencial (en el siguiente blog). En el primer caso, aunque es poco probable que llegue a los extremos del capítulo de “Dimensión desconocida”, alguien que conozca nuestro nombre, apellido, seguro social (en USA), dirección y teléfono puede, de manera exitosa, solicitar préstamos, comprar cosas y llenar reclamaciones de impuestos, lo cual nos hará ganadores de un caso con el IRS que puede durar dos o tres años, una destrucción total de nuestro historial crediticio y adiós casa, adiós vacaciones, adiós “home theater” y ahora sí, bienvenido a la dimensión desconocida en donde pasarás los siguientes diez años explicando “ese soy yo pero no fui yo” y “yo soy yo” cada vez que compres algo. Esto debido a que los documentos de autenticación son los mismos que hace 200 años: unos papeles firmados, unos números, una tarjetita de cartón; pero la tecnología para almacenar e intercambiar esa información definitivamente no lo es. Hemos pasado de un mundo en que había que presentar personalmente un papel y hablar con alguien a uno en donde conocer una secuencia de caracteres e ingresarla en un portal web es suficiente para identificarnos. Definitivamente la humanidad no podría regresar al papel (así como la economía no podría regresar al patrón oro), hacer algo así sería renunciar a gran parte de los logros que hemos logrado como especie, pero todavía estamos muy lejos de tener el andamiaje legal necesario para desarrollar tecnologías de autenticación seguras y eficientes.

Es muy corriente que el avance tecnológico esté muchos años adelantado al avance legal que es necesario para regularlo: el descubrimiento del campo electromagnético y los códigos para asignación de frecuencias tienen casi 100 años de diferencia y al día de hoy son un torpe obstáculo para la creación de nuevas formas de comunicación, no voy a desviarme mucho en el tema, pero les dejo estos dos links:

“The Path to Spectrum Deregulation”
http://www.bitsbook.com/excerpts/chapter8/
http://www.bitsbook.com/wp-content/uploads/2008/12/chapter8.pdf

La forma en que nos autenticamos en la red es obsoleta e insegura, de manera irresponsable los gobiernos no han creado las regulaciones que impidan y disuadan el robo de identidad, y mientras eso sucede es importante que cada uno se proteja lo mejor que pueda.

Dar consejos para “vivir” seguro en el Internet está más allá de los alcances de este blog (y quizá de cualquier blog), pero aquí algunos básicos para protegernos del robo de identidad:
http://www.transunion.com/personal-credit/identity-theft-and-fraud/how-to-prevent-identity-theft.page

Y algo muy importante, tanto en la creación de nuevas leyes, como en el día a día de los usuarios, tratar de combinar dos de los tres pilares fundamentales de la verificación de identidad en cada una de nuestras transacciones:

– Algo que sabes: Contraseña, preguntas “secretas”, etc.
– Algo que tienes: Una tarjetita con la que abres la puerta, “tokens”
– Algo que eres: huella digital, cornea, etc.,

Más información de estos conceptos aquí (si alguien sabe quién inventó estas tres leyes originalmente por favor compártalo en los comentarios)
http://www.cs.cornell.edu/courses/cs513/2005fa/nnlauthpeople.html

Por último aquí una historia real sobre cómo perder tu identidad cibernética:
http://www.wired.com/2012/08/apple-amazon-mat-honan-hacking/all/

En próximos blogs seguiré hablando de seguridad, bugs, protección de información confidencial y nubes con chicas desnudas… hasta entonces…

Jorge A. Pinedo
Pinjorge@hotmail.com

¿De qué tamaño es internet? IPv4, IPv6 y una historia de ajedrez

Cuenta la leyenda que el emperador de la India, fascinado por el recientemente inventado juego de ajedrez, quiso recompensar a su inventor concediéndole un deseo, el inventor fue llevado a audiencia y ahí, frente al emperador y sus consejeros pidió “un grano de maíz en la primera casilla del tablero, dos granos de maíz en la segunda, cuatro en la tercera y así hasta llegar a la última”, el emperador, entendiendo que eso era poca cosa para su generosidad terminó la audiencia y ordenó que le fuera entregada al hombre su recompensa…

Tablero

Algunos días después recordó este episodio y preguntó si ya le habían dado al hombre su saco de maíz, se hicieron la investigaciones y encontraron que los matemáticos del reino todavía no habían terminado de hacer el cálculo, pero que la cantidad necesaria hasta el momento era más que toda la producción de maíz de todos los reinos conocidos… el emperador quedó sorprendido y en recompensa ordenó que le cortaran la cabeza al inventor (eso último lo inventé yo, pero es un riesgo real de hacerle bromas a los emperadores).

Aquí las matemáticas:

Primera casilla = 1

Segunda casilla = 2

Tercera casilla = 2×2 = 4

Cuarta casilla = 2x2x2 = 8

.

.

.

Casilla 10 = 2x2x2x2x2x2x2x2x2x2 = 1024

Si recordamos que 2x2x2x2 (dos multiplicado por sí mismo 4 veces) puede ser escrito como 2^4, la lista queda como sigue:

2^0 = 1     (Búsqueda recomendada en Google: ¿Cuánto es un número elevado a la potencia cero?)

2^1 = 2

2^2 = 4

2^3 = 8

2^4 = 16

.

.

.

2^10 = 1024

Cómo los tableros de ajedrez tienen 64 casillas tenemos que el número de granos necesarios para darle al hombre la recompensa solicitada es:

2^64 – 1 = 9,223,372,036,854,779,999 granos de maíz. Más o menos el volumen del planeta tierra (si algún día me ves en la calle recuérdame explicarte de donde salió el “- 1” al final de la fórmula)

El concepto del 2 multiplicado por sí mismo es uno de los más importantes en el mundo de la tecnología.

Pensemos en Internet como la suma de la información generada por equipos y las rutas para que esa información llegue de un equipo a otro. Cualquier cosa que conectemos a Internet es como una persona que envía una carta: genera información que posteriormente pone en un sobre con una dirección y lo deposita en el buzón, en dónde el servicio postal hace su magia y la mayoría de las veces entrega esa carta a la persona a la que iba dirigida.

Para que esta analogía funcione cada cosa en Internet debe de tener una dirección única. El problema es que Internet es el hijo monstruoso de tecnologías y proyectos que datan desde finales de los años sesentas, como Arpanet, y que naturalmente no fueron diseñados para tener miles de millones de usuarios, fue hasta los años ochenta que nació el sistema actual de direcciones que utiliza la mayor parte del Internet hoy en día (llamado IPv4). Un ejemplo de una dirección de ese tipo se puede encontrar preguntándole al dispositvo a través del cual estás leyendo esto cuál es la dirección IP que está utilizando y que probablemente te dirá algo como esto:

192.168.1.2 (cuatro grupos de números entre el 1 y el 255)

Lo cual, en números binarios (0 y 1) se escribe así:

11000000.10100110.00000001.00000010 (cuatro grupos de ocho números ‘octetos’ compuestos por 0 y 1)

Para explicar que significa esto vamos a transformar todos los números en 1 para encontrar el número mayor que puede ser expresado con 32 dígitos binarios:

11111111.11111111.11111111.11111111

Ahora regresemos al inicio de la historia con el tipo y su tablero de ajedrez, tenemos 4 series de 8 unos, de igual manera que medio tablero tiene 4 filas de 8 casillas

MedioTablero

Los 1 significan que esa casilla tiene el número de granos de maíz que le corresponden por su posición, los 0 significan que tiene 0 granos, combinándolos podemos representar cualquier número, por ejemplo:

11100000 = 128 + 64 + 32 + 0 + 0 + 0 + 0 + 0 = 224

Si llenamos la primera mitad del tablero de ajedrez en la primera casilla tenemos 1 grano de maíz, en la segunda 2, en la tercera 4, y así hasta llegar a la número 32, en dónde tenemos 2,147,483,648. Ahora bien, si todas las casillas están llenas, es decir, este número:

11111111.11111111.11111111.11111111

Tenemos la suma 1 + 2 + 4 + 8 + 16 + … + 2,147,483,648 =

4,294,967,295 granos de maíz

Que es igual al número máximo de direcciones IPv4 que teoricamente pueden existir, es decir, es el tamaño máximo del Internet. Es importante aquí hacer la aclaración de que muchas de esas direcciones están reservadas para otros usos como “broadcasts”, experimentación y otros, pero para fines de este blog haré el análisis solamente desde el punto de vista aritmético, dicho esto, en los noventas aquí sería el punto final y cualquier estudiante podría seleccionar este texto (Ctrl + a) copiarlo (Ctrl + c), pegarlo (Ctrl + v), ponerle su nombre y terminar su tarea, sin embargo, aunque 4,294,967,295 se ve un número grande, es apenas aproximadamente la mitad de la población mundial (aunque desgraciadamente el porcentaje de acceso a Internet es todavía muy bajo y ese es otro tema), y muchas de esas direcciones se utilizan en el “backstage” de Internet (los equipos de las empresas proveedoras de Internet ‘ISP’), además hay personas que tienen 10 o más dispositivos conectándose a Internet (cel, pc, laptop, hotspot, reader, etc.,) y hay una enorme cantidad de dispositivos esperando su turno a conectarse (carros, neveras, hornos, licuadoras, muñecas inflables y el chip del perro), por lo que parece que tenemos un problema. Pero eso es noticia vieja, ya que desde mediados de los noventas las aproximadamente cuatro mil millones de direcciones de IPv4 se hubieran agotado si no hubiéramos aprendido a hacer trampa (NAT, PAT, mismo número para IP privadas, etc.,), sin embargo esas soluciones tienen un límite y nos hacen utilizar algunas tecnologías para cosas para las que no fueron planeadas -como los números de puertos, que fueron diseñados para identificar aplicaciones, no para aumentar el número de conexiones desde una misma dirección-. La solución definitiva existe desde 1998, cuando el “Internet Engineering Task Force (IETF)” definió el protocolo IPv6 (hubo antes un IPv5 pero nunca superó la fase de prueba) y para el año 2014 aproximadamente el 5% del tráfico de Internet se lleva a cabo en este nuevo esquema, el cual todavía presenta retos de migración, aprendizaje y costumbre que han evitado su adoptación total.

La diferencia principal entre IPv4 y IPv6 es su tamaño, es decir, la cantidad de direcciones que se pueden generar en cada uno:

IPv4 =    32 bits (un bit es el equivalente a una casilla del tablero o a la cantidad de dígitos en la dirección), por ejemplo, la dirección

11000000.10100110.00000001.00000010

Tiene 32 cifras = 32 bits

Entonces

IPv4 = 32 bits = 4,294,967,295 Granos de maíz (o direcciones IP de Internet)

Tablero de ajedrez = 64 bits = 9,223,372,036,854,779,999 granos de maíz

IPv6 = 128 bits = 170,141,183,460,469,000,000,000,000,000,000,000,000 (aproximado)

No es la biblioteca de Borges pero es número absurdamente grande, veámoslo de esta manera: IPv4 tiene suficientes direcciones para darle una dirección IP a cada uno de los habitantes en un planeta de 4,000 millones de habitantes; IPv6 tiene suficientes para que en 4,000 millones de galaxias, cada una con 4,000 millones de planetas habitados por 4,000 millones de personas, ewoks y aliens cada uno tenga 4,000 millones de direcciones disponibles. Galaxias más, galaxias menos, parece un plan bastante completo. Obviamente, no todas las direcciones están disponibles para uso público, y se espera que cada dispositivo utilice varias de ellas -Global, Unicast, Anycast, Unique, Local, sus combinaciones y lo que se les ocurra – y quizá comencemos a ver direcciones “desechables”, es decir, que se utilizarán para una transacción y después serán eliminadas, lo cual haría el Internet un sitio mucho más seguro. IPv6 nos permitirá también generar direcciones aleatoriamente sin preocuparnos de que se repitan (estadísticamente la probabilidad será despreciable) y otras ventajitas, como emplear y aprender tecnologías que no quedarán obsoletas y asignarle a tu empresa la dirección hexadecimal 2014:CACA:DE:BEBE::/64 … todo ese potencial lentamente se está desarrollando y los pronósticos son una migración completa a IPv6 en los siguientes 20 a 30 años aunque nadie tiene mucha certeza al respecto, quizá nos toque ver antes a algún tataranieto de Anakin Skywalker.

Jorge A. Pinedo

pinjorge@hotmail.com