Select Page
Jugando con Qubits: el proyecto qiskit (parte 3)

Jugando con Qubits: el proyecto qiskit (parte 3)

Qiskit es parte del proyecto abierto de IBM para que cualquiera pueda experimentar con computadoras cuánticas. En esta tercera parte, veremos qué se puede programar en una computadora cuántica, y cómo jugar con las computadoras cuánticas que IBM pone a disposición de la comunidad.

Ya vimos algunos conceptos básicos de computación cuántica, hablamos de hardware y de software. Ahora vamos a poner manos a la obra.

Para poder jugar con las computadoras cuánticas de IBM, lo primero que tenemos que hacer es darnos de alta el el sitio correspondiente, es decir: https://quantum-computing.ibm.com.

Fig. 1 – IBM Quantum computing – login.

 

Como podemos ver, nos podemos loguear con cualquiera de estas opciones. Aunque por temas de seguridad, mi recomendación es NUNCA utilizar autenticación cruzada.

Una vez logueado, lo recomendables es recorrer los tutoriales y “getting started” iniciales para poder comenzar a entender lo que vamos a hacer.

 

Fig. 2 – IBM Quantum computing – home.

 

A la derecha se pueden las herramientas cuánticas disponibles. En el momento de tomar el screenshot, había 5 backends disponibles: las cuatro computadoras cuánticas y un simulador. Como puede verse, las computadoras cuánticas de Yorkshire y de Tenerife (ambas de 5 quibits) se encontraban en mantenimiento. Por otro lado, las de Melbourne (14 qubits) y Ourense (5 qubits) estaban en linea. Al final de la lista, puede verse un simulador de hasta 32 qubits.

Al hacer clic sobre cada máquina, se pueden ver sus características y su estructura. A modo de ejemplo, se muestra la computadora de Melbourne:

Fig. 3 – Estructura de la computadora cuántica de Melbourne de 14 qubits.

¿Qué es qiskit?

Qiskit es un framework de desarrollo open source, que permite desarrollar software sobre las computadoras cuánticas actuales. Qiskit cuenta con diferentes frameworks y librerías que tienen por objeto experimentar diferentes aspectos de las computadoras cuánticas. Como ejemplo:

Terra

Es prácticamente el core del sistema. Incluye herramientas para desarrollar programas cuánticos a nivel de circuitos y pulsos, optimizándolos para un procesador cuántico físico en particular.

Aqua

Incluye librerías con algoritmos cuánticos en diferentes dominios sobre los que se pueden desarrollar aplicaciones en forma relativamente sencilla y rápida. Permite hacer experimentos con aplicaciones de química, inteligencia artificial, optimización y finanzas.

Aer

Tal como comenté en la parte 1, el ruido o la decoherencia es uno de los grandes enemigos de las computadoras cuánticas. Aer tiene un conjunto de herramientas para trabajar con modelos de ruido altamente configurables para crear simulaciones de ruido realistas. Esto permite minimizar los errores que se producen durante la ejecución en dispositivos reales.

Ignis

Como Aer, es otro framework para entender y mitigar el ruido en circuitos y sistemas cuánticos.

Una de las mayores dificultades que, al menos yo, he tenido, fue la de trasladar los problemas del mundo real para resolverlos en una computadora cuántica en vez de en una computadora convencional. Para esto, qiskit ayuda bastante. He aquí por ejemplo un tutorial en el que con ejemplos muy básicos nos va guiando a cómo hacer ese cambio de paradigma en la cabeza.

 

Hello world!

Ok, ¿cómo empezamos a programar? Usando Qiskit, se pueden utilizar como inicio los tutoriales de Quiskit. Aquí se nos presentan no sólo las bases de la programación de framework, sino que también notebooks armadas de Jupyter donde podemos jugar desarrollando piezas simples de código.

Para trabajar con Aqua, un buen pinto de comienzo son los tutoriales y ejemplos que se encuentran en Github. Se puede comenzar con los fundamentals, y continuar con el advanced. Si bien muchos de estos notebooks se pueden encontrar dentro del sitio de IBM una vez que se logueen, si se encuentran algún notebook por ahí que no esé, se puede importar dentro de la app de IBM.

 

Fig. 3 – Menú de Notebooks de Qiskit.

 

 

Fig. 4 – Importar Notebooks en Qiskit.

 

Además de toda la información que se puede encontrar en el proyecto de IBM, existen otras fuentes que se pueden consultar y de donde aprender para empezar a desarrollar en modo Q. Una de ellas es Project Q, un proyecto que está bajo la licencia Apache 2. Su propósito es el de proporcionar herramientas que faciliten la invención, implementación, prueba, debugging y ejecución de algoritmos cuánticos utilizando tanto hardware clásico como computadoras cuánticas reales. En Project Q podemos encontrar 3 ejemplos concretos de aplicaciones desarrolladas para computación cuántica.

 

Shor

Hasta ahora llevamos tres partes de la nota y no hicimos ninguna mención a aplicaciones de ciberseguridad. Pero es obvio que las hay. La estrella de estas aplicaciones es el algoritmo de Shor. Peter Shor es un matemático del MIT que desarrolló un algoritmo revolucionario. El mismo permite factorizar números primos en una computadora cuántica de una forma que es imposible en computadoras clásicas debido a la complejidad y el tiempo necesario para el cálculo (años, siglos o milenios…). No hace falta que explique que si tenemos un número enorme que forma parte de un algoritmo de cifrado… y podemos extraer los dos números primos que se multiplicaron para obtenerlo… estamos a un paso de descifrar el mensaje sin tener las claves.

 

Hasta el infinito y más allá…

Pero esto recién empieza. Las posibilidades del uso de computación cuántica se multiplican en todas las ramas. Por lo que todo lo que necesite horas o días de procesamiento y hoy no se puede hacer, será posible cuando la potencia de cálculo cuántico esté disponible masivamente. Las aplicaciones de ciberseguridad no quedan ajenas. Desde las aplicaciones de redes como las Network Centric Quantum Communications, para la protección de infraestructuras críticas, como el uso de Machine Learning a velocidades de cálculo extremas, o sistemas de clasificación basados en Support Vector Machines.

¿Será entonces cuestión de esperar…? NOOO!!! Será entonces cuestión de poner manos a la obra, aprender, programar, experimentar y desarrollarse en este campo.

 

 

 

Nota: Vayan mis respetos a uno de mis colegas, ex-Si6, que hoy se encuentra trabajando en el proyecto Qiskit. Mis felicitaciones Luciano Bello!!! y GRACIAS por revisar y ayudar a mejorar el artículo.

 

 

 

< Jugando con Qubits (parte 2)

 

 

 

 

Nota por Carlos Benitez

Carlos Benitez es un reconocido experto en seguridad de la información.
Jugando con Qubits: el proyecto Qiskit (parte 2)

Jugando con Qubits: el proyecto Qiskit (parte 2)

Qiskit es parte del proyecto abierto de IBM para que cualquiera pueda experimentar con computadoras cuánticas. En esta segunda parte, veremos cómo es el hardware que se utiliza, y qué significa el concepto de software en computación cuántica.

En la primera parte vimos algunos conceptos básicos de computación cuántica. Ok, ¿pero cómo y dónde se hace el procesamiento en sistemas cuánticos?

 

Hardware

Dijimos que las computadoras cuánticas utilizan propiedades cuánticas a nivel atómico o subatómico. Entonces, ¿cómo se construye una computadora que trabaje con partículas subatómicas individuales? La respuesta es que no se puede. Además sería muy poco eficiente, dado que las partículas individuales son inestables debido al ruido ambiente. ¿Entonces?
Lo que se hace es simular estados cuánticos con diversas técnicas. La más utilizada es mediante el uso de superconductores. (Ver Superconductores). Para los interesados, aquí tienen un video de Google sobre como es posible simular estados cuánticos a escalas muy superiores a la atómica.

 

Superconductores

Son estructuras cristalinas en las que cuando se baja suficientemente la temperatura (es decir energía) ambiente, los átomos quedan como si estuvieran fijos (sin vibrar) y alineados. De esta forma, los electrones pueden atravesar dichas estructuras sin chocar con nada a su paso. Eso significa que nada les ofrece resistencia. Llevada a parámetros físicos, esto significa que su resistencia se vuelve cero ohms.

Rsc = 0 Ω

La superconductividad es una propiedad muy curiosa ya que cuando un material entra en estado superconductor su resistencia es absolutamente 0. Sí cero, no 0.00002 o 10-37… sino cero… es por eso que el conductor que entra en ese estado, se gana merecidamente el prefijo de Súper.

En mi caso personal, ¡qué bueno haberme reencontrado con los superconductores después de tantos años! Allá por fines de los ’80 participé en las mediciones de materiales superconductores cerámicos de alta temperatura (YBaCuO) fabricados por mi amigo que en ese entonces era mi jefe, el Lic. Ricardo Juárez.

Lo veía en el laboratorio pero me costaba creer que esos materiales pudieran levitar sobre sobre un imán debido a sus propiedades diamagnéticas… Es el efecto Meissner, por si no lo conocían y quieren verlo.

Lo que tuvo de maravilloso el descubrimiento de Bednorz y Müller allá por 1986 fue que hasta ese momento, la única forma de llevar a un material al estado superconductor era bajarle la temperatura a unos 4° Kelvin, la temperatura del Helio líquido, ¡¡¡…carísimo…!!! Pero con el nuevo material descubierto, ahora es posible hacerlo a unos 78 °K, la temperatura del aire líquido… en comparación ¡¡¡baratísimo!!!

Si bien hoy en día existen algunas iniciativas para usar superconductores de alta temperatura en computadoras cuánticas, todavía están en estado experimental. Los superconductores que se utilizan actualmente en computadoras cuánticas, son metales que se los enfría a temperaturas extremadamente bajas, del orden de los miliKelvins. Llevar a un material a esa temperatura no solo demora días sino que además el costo es extremadamente alto.

Es por estos elevadísimos costos que no solo la construcción, sino la misma operación de computadoras cuánticas quedan limitados a grandes corporaciones o laboratorios con muchos fondos disponibles. Esto… hasta que se logren construir computadoras cuánticas basadas en YBaCuO…

Dado que los superconductores utilizados deben ser enfriados a sólo algunos miliKelvins de temperatura, la construcción y puesta en funcionamiento de una computadora cuántica no es nada sencillo. En la siguiente imagen se puede ver cómo es una computadora cuántica. En este caso, la IBM-Q.

 

Fig 1.- Computadora cuántica IBM-Q

 

En el caso de las computadoras cuánticas de IBM, los qubits se simulan con capacitores de Niobio y superconductores de Aluminio formando junturas Josephson a temperaturas de 0.015 °K.
En el extremo inferior de lo que se ve en la figura, se encuentra el chip cuántico.

 

Fig. 2 – Chip de IBM-Q

 

Potencia

Es muy difícil medir la potencia de una computadora cuántica. La dificultad reside en que existen diferentes tecnologías que tienden a hacer foco en diferentes aspectos.  La métrica más obvia y simple de entender es la cantidad de qubits. En un sitio del MIT denominado qubitcounter se puede ver cómo viene evolucionando la carrera por construcción de computadoras cuánticas de mayor cantidad de qubits.
La computadora con la mayor cantidad de quibits construida hasta el momento, fue desarrollada por la empresa Righetti de Estados Unidos y es de 128 qubits.
En el siguiente gráfico, se puede ver cómo fue la linea de tiempo desde la primer computadora cuántica hasta ahora.

Fig. 3 – Linea de Tiempo de desarrollo de procesadores cuánticos.

 

 

Sin embargo, la cantidad de qubits no define la eficiencia o la potencia de una computadora cuántica. El tema del benchmarking de computadoras cuánticas está en discusión permanente dado que cada fabricante trata de favorecer lo que cada uno tiene como fortaleza. Un intento por determinar un parámetro que sea lo suficientemente objetivo puede verse aquí, aunque todavía no existe un acuerdo o normalización en este tema.

 

Software

Una vez que se posee la computadora cuántica, se necesita hacer que nuestros problemas sean resueltos por ésta. En el caso de una computadora clásica, esto se hace programando la lógica de lo que queremos hacer en lenguajes de alto nivel. Este programa después se compila en instrucciones de código de máquina para que el procesador pueda interpretarlo y ejecutarlo.

En el caso de una computadora clásica, se podría pensar en en que el código de programación se mapea en código de máquina de la siguiente forma.

 

Fig. 4 – Mapeo entre un lenguaje de alto nivel (izquierdaa) versus las respectivas instrucciones para un procesador (derecha).

 

 

En el caso de las computadoras cuánticas, el proceso es bien diferente. De acuerdo con la arquitectura que posea cada diseño, el código resulta en la construcción de circuitos cuánticos que representan el problema que queremos resolver. Este es un ejemplo:

Fig. 5 – Mapeo entre un programa en Python (izquierda) versus su respectivo circuito cuántico (derecha).

 

En el caso particular de los procesadores de IBM, se puede encontrar una documentación muy completa y clara sobre los circuitos cuánticos.

Ahora bien, ¿qué problemas se pueden resolver con computadoras cuánticas? La respuesta es: algunos problemas sencillos, y algunos que son imposibles para la computación clásica.

En la tercera parte, veremos qué se puede programar en una computadora cuántica, y cómo jugar con las computadoras cuánticas que IBM pone a disposición de la comunidad.

 

< Jugando con Qubits (parte 1)

 

 

 

Jugando con Qubits (parte 3) >

 

Nota por Carlos Benitez

Carlos Benitez es un reconocido experto en seguridad de la información.
Jugando con Qubits: el proyecto qiskit (parte 1)

Jugando con Qubits: el proyecto qiskit (parte 1)

Qiskit es parte del proyecto abierto de IBM para que cualquiera pueda experimentar con computadoras cuánticas. En esta primera parte, les cuento algunos conceptos básicos de computación cuántica.

Existe una gran cantidad de recursos para aprender y experimentar con computación cuántica. En este artículo les voy a mostrar cómo hacerlo con el proyecto de IBM.

Antes de empezar, quiero avisar que esta nota no es para nada sencilla y que para entender van a tener que leerse todas las referencias. En algunos casos hay cuadros que intentan explicar algunos conceptos y en otros es mejor recurrir a la fuentes. Advertidos están…

El mismísimo Richard Feynnman decía que si alguien cree que entendió la física cuántica es que no entiende la física cuántica. Obviamente yo no la entiendo y no pretendo que ustedes lo hagan. Sin embargo, creo que del mismo modo que para conectar, encender y apagar una lámpara led, no es necesario entender cómo se mueven los electrones en un cable o cómo un semiconductor emite fotones; tampoco necesitamos entender profundamente la mecánica cuántica para utilizar computadoras cuánticas.
Así que, vamos…

 

Primer interrogante:

Hago esta pregunta porque no sólo yo mismo me la hice, sino que la escuché muchísimas veces: ¿Criptografía o computación cuántica? después de todo… ¿no es lo mismo?
Bueno, definitivamente no.

Si bien en ambas áreas se utilizan las propiedades cuánticas como base, las formas de efectuar operaciones en los dos casos, son bastante diferentes. Leí decenas de textos que dicen que las computadoras cuánticas van a factorizar primos tan rápidamente, que la criptografía clásica va a morir. Y creo que es por esa conexión que muchas veces se confunden ambas disciplinas, pero no son lo mismo.

 

Criptografía cuántica:

Esta disciplina se refiere a los métodos y técnicas para cifrar información basándose en los principios de la mecánica cuántica. Existen varias aplicaciones de criptografía cuántica tales como dinero cuántico, generación de números aleatorios, computación segura entre dos o más partes, computación cuántica delegada. De todas estas aplicaciones, la más conocida es la distribución de claves cuánticas o QKD (Quantum Key Distribution). Su objetivo principal es el de realizar un intercambio seguro de claves simétricas entre emisor y receptor. En este caso no se realiza ninguna operación matemática, esto lo diferencia sustancialmente de la computación cuántica. (Ver QKD).

 

QKD

Este sistema fue presentado inicialmente por Bennet y Brassard en 1984. En su paper, los autores describen el diseño del protocolo de intercambio de claves denominado BB84, mediante la cual dos usuarios intercambian una clave aleatoria que luego se utilizará para cifrado asimétrico clásico, por ejemplo mediante AES.

El protocolo se inicia cuando el emisor genera fotones en secuencia y una secuencia de bits que corresponden a la semilla de lo que va a ser la clave. Cada bit de la clave corresponde a un dirección de polarización. El emisor entonces codifica dichos fotones uno a uno polarizándolos según la semilla de bits de la clave, llevando a cada uno a un estado de polarización relacionado con dicha secuencia.

Estos fotones se transmiten al receptor quien no conoce qué secuencia de polarización utilizó el emisor. Por este motivo, el receptor prueba aleatoriamente una secuencia de filtros para detectar el estado de cada fotón. En función de los resultados le envía al emisor la información de qué secuencia de filtros utilizó.

El emisor confirma cuáles filtros coinciden con los reales, sin decir los resultados obtenidos ya que esro se envía por un canal público. En función de esa información, ambos descartan los fotones erróneos y obtienen la clave que corresponde a una secuencia de bits que es un subconjunto de la semilla inicial.

Sin abundar en detalles, si alguien interceptara este mensaje, no podría determinar la clave debido a que tampoco conoce la secuencia de filtros utilizados. Como al leer los estados los destruye, el intruso debería regenerar los mismos fotones con la secuencia de polarizaciones que él considera válida. Como esta no lo es, tanto emisor como receptor se dan cuenta que alguien alteró la información debido a que la probabilidad total de estados correctos es menor a la que debería.

Sobre este protocolo se hallaron vulnerabilidades y se desarrollaron ataques, pero también se desarrollaron mejoras al protocolo BB84, como lo es SARG04.

Computación cuántica:

El principio básico de la computación cuántica consiste en que se pueden utilizar las propiedades cuánticas para representar y estructurar datos. Por otra parte, los mecanismos cuánticos pueden diseñarse y construirse para realizar operaciones con estos datos. Las dos principales propiedades cuánticas usadas son superposición y entrelazamiento. (Ver Propiedades Cuánticas).

La forma de modelar los datos y las operaciones son completamente diferentes a los sistemas binarios utilizados en las computadoras normales. En vez de codificar los números en bits que pueden tomar los valores 1 ó 0 como en la computación clásica, los datos se codifican en qubits. Éstos también pueden tomar valores |1〉 ó |0〉 pero en este caso, no mutualmente exclusivos, sino ambos valores al mismo tiempo. Los estados posibles de un qubit se representan en la esfera de Bloch.

 

Fig. 1 – Esfera de Bloch

 

El valor del qubit se puede representar como:

α|0〉 + β|1〉

Donde α y β son las probabilidades de cada estado y

α² + β² = 1

Como puede observarse fácilmente, la cantidad de números posibles de representar con n qubits es la misma que con n bits, es decir 2n. Sin embargo, lo disruptivo del modelo es que en computación clásica, con n bits, se puede representar sólo “un” estado dentro de los 2n posibles. En cambio con n qbits, por el principio de superposición, se pueden representar “todos” los 2n estados posibles a la vez.

 

Propiedades cuánticas

Superposición

Es la habilidad de un sistema cuántico de estar en múltiples estados a la vez, hasta tanto sea medido cuando la superposición se destruye. Para los que lo recuerdan de cuando lo estudiaron en física, este efecto es el que se explica con el gato de Schroedinger, que mientras el gato está dentro de la valija está vivo y muerto a la vez, hasta el momento de abrir la caja…

Entrelazamiento (Entanglement)

Propiedad por la cual dos partículas de energía o materia se correlacionan entre sí de modo que es posible predecir lo que va a hacer una si se interactúa con la otra. Esto ocurre sin importar la distancia que las separe.

Decoherencia

Pérdida de información de los qubits debido a su interacción con el medio ambiente. Si bien es una propiedad, corresponde a una vulnerabilidad para la computación cuántica y los equipos que desarrollan computadoras cuánticas trabajan constantemente para minimizarla.

 

En la segunda parte, hablaremos de los sistemas de procesamiento cuántico.

 

 

Jugando con Qubits (parte 2) >

Nota por Carlos Benitez

Carlos Benitez es un reconocido experto en seguridad de la información.
Cada vez más cerca

Cada vez más cerca

Un informe publicado el día de hoy, señala que es posible para un atacante alterar datos de sensores en aviones, que podrían desencadenar en desastres aéreos.

El informe de la empresa Rapid7, presenta el resultado del análisis de investigadores de dicha empresa sobre dos implementaciones de redes CAN populares en el mercado.

El bus de redes CAN (Controller Area Network) en un avión, es un medio de transmisión de datos donde viaja la información de todos los sensores del avión. Estos sensores miden parámetros físicos vitales para la operación de la aeronave, tales como los datos de parámetros del motor, o del mismo avión como: actitud, altitud, dirección, etc. Esa información se envía por un bus CAN hacia los diferentes sistemas y panel de instrumentos de la cabina del avión.

Es evidente que los pilotos necesitan esa información para navegar. En medio de la noche y a 10 mil metros de altura, el piloto no tiene idea de si está a 10 mil, 11 mil u 8 mil metros y si se está dirigiendo al Norte o al Nor-Noroeste si no fuera por sus instrumentos.

¿Qué pasaría entonces, si alguien pudiese alterar esa información?, ¿si alguien pudiera hacer que los instrumentos indiquen que está a 8 mil metros cuando en realidad está a sólo mil…? ¿..y con el avión descendiendo..?

Bueno, los investigadores descubrieron que esto es posible, al menos en aviones pequeños. Sin embargo, los buses CAN o variantes de ésta tecnología se utilizan también en aviones grandes y hasta en la industria automotriz. La popularidad de este sistema se debe a su bajo costo. En los buses CAN, TODOS los mensajes se transmiten por el mismo bus desde todos los sensores hacia todos los endpoints.  Esta característica es barata, pero como ya se habrán dado cuenta, no demasiado segura… En algunos casos se utiliza autenticación de mensajes, pero que puede saltearse fácilmente.

Otra condición para que un ataque de este tipo sea “existoso”, es que el atacante tenga acceso físico al avión…. (como por ejemplo… ¿¿¿un pasajero..???).

Por un lado, ya alguna vez hablamos sobre los pobres sistemas de seguridad que poseen las aerolíneas en sus sistemas de gestión de pasajes (1, 2). Por el otro, ya hace algunos años algunos investigadores descubrieron que los sistemas de entretenimiento de los aviones comerciales eran vulnerables. Uno de los defectos de seguridad de estos sistemas es que los dispositivos USB de los sistemas de entretenimiento, permiten conectar dispositivos como teclados o mice que son reconocidos por los sistemas. De esta forma, es posible interactuar tanto con las aplicaciones, como con los sistemas operativos.

Aquí se puede ver un ejemplo de cómo salir de la pantalla de control de un sistema de entretenimiento de un avión de una aerolínea internacional muy importante, simplemente conectando un teclado y probando diferentes combinaciones de teclas:

La pregunta entonces, es: ¿cuánto puede demorar alguien en saltar del sistema de entretenimiento a una red CAN y producir un desastre aéreo?

Tan grave fue el resultado de esta investigación y del informe publicado hoy, que el mismo US-CERT publicó hoy mismo una alerta en su página sobre infraestructuras críticas.

No por nada se están creando desde hace poco más de un año empresas de ciberseguridad que dedicarán sólo a desarrollar soluciones tendientes a mitigar potenciales ciberataques sobre aeronaves.

 

Nota por Carlos Benitez

Carlos Benitez es un reconocido experto en seguridad de la información.
Malboard: Replicando patrones de tipeo

Malboard: Replicando patrones de tipeo

Encuentran la forma de engañar a los sistemas de autenticación por reconocimiento de patrones de tipeo.

 

El Si6:

Fue allá por el 2003 en el Si6 donde iniciamos un conjunto de proyectos relacionados con la identificación de comportamiento de intrusos. Uno de los temas de investigación sobre el que trabajamos durante años, fue el de Keystroke Patterns o Patrones de Tipeo. El objetivo era el de poder identificar a un intruso, que se logueaba de forma interactiva a una shell, analizando su comportamiento de tipeo.

Aprovecho esta nota para nombrar a todos los investigadores que formaron parte del Si6, equipo al que me enorgullezco de haber pertenecido: Sebastián García, Flavio Fernández, Georgina Halladjian, Alejandro Benaben, Maximiliano Bertacchini, Luciano Bello, Verónica Estrada, Pablo Fierens y Carlos Benitez.

El Si6 no existe más, pero como los que estamos en este negocio sabemos que los rastros no se borran nunca en Internet, por si a alguien le interesa:

Como parte de nuestro trabajo, publicamos varios trabajos relacionados con la dinámica de tipeo, como por ejemplo:

Keystroke Dynamics:

Respecto a Keystroke Dynamics, el concepto es sencillo. Todas las personas utilizan sus dedos para oprimir teclas en un teclado. Del mismo modo que cada una de nosotros camina, sonríe o habla de forma diferente, también tipeamos de forma diferente. Por este motivo es posible identificar personas determinando lo que se denomina su “patrón de tipeo” o keystroke pattern.
Además de los trabajos de investigación, también desarrollamos una aplicación para detectar estos patrones en aplicaciones la web. La aplicación se denominaba k-profiler y los resultados de la investigación fue publicada en el paper: User Clustering Based on Keystroke Dynamics

 

El concepto consiste en medir los tiempos de latencia entre diferentes acciones realizada en el teclado (como apretar o soltar una tecla). La medición suele realizarse sobre el tiempo entre dos teclas sucesivas o “digrafos”.

En esa época, habíamos imaginado una némesis para el concepto. Consistía en la posibilidad de que un intruso alterara artificialmente su patrón de tipeo. De esta forma sería identificado como otro atacante y no como él mismo.

 

Malboard:

Pasaron 16 años y nuestro némesis se volvió realidad. Un grupo de investigadores de la universidad Ben-Gurion, descubrió una forma de engañar a los sistemas que autentican a las personas usando sus patrones de tipeo. El ataque, denominado Malboard, fue publicado en mayo pasado. En este caso, no es un usuario que se impersona en otro para falsear su patrón de tipeo. Sino que se utilizan dispositivos USB que se reconocen como teclados para inyectar comandos desde un teclado. Existen varios dispositivos de este tipo en el mercado, tal como el RubberDucky. Lo novedoso de este ataque es que los comandos se inyectan tal como lo haría el usuario al que se trata de impersonar.

Para el ataque, se evaluaron los patrones de tipeo de 30 personas realizando 3 acciones diferentes. A partir de la copia del patrón de tipeo, se inyectaron comandos maliciosos mientras se era monitoreado por diferentes sistemas de detección como TypingDNA o KeyTrac. El resultado fue que se logró evadir los sistemas de detección más del 83% de los casos.
Pero el grupo no se quedó sólo en el ataque. Desarrolló además un sistema que permite su detección. Con esto lograron un 100% de efectividad en la detección, al menos en las pruebas realizadas por ellos.

El método de identificación por patrones de tipeo se utilizó por primera vez con el telégrafo durante la guerra de secesión de Estados Unidos allá por 1860. Es interesante ver cómo técnicas como estas no mueren, sino que se reciclan constantemente evolucionando una y otra vez.

 

Nota por Carlos Benitez

Carlos Benitez es un reconocido experto en seguridad de la información.
El Agente Smith

El Agente Smith

Un nuevo virus denominado Agente Smith, ya ha infectado unos 25 millones de dispositivos Android en todo el mundo.

A los fanáticos de la trilogía Matrix, no hay qué explicarles quién es ni cómo actúa el agente Smith. El personaje vive dentro de la Matrix y es el principal enemigo de Neo.
Por su comportamiento, podría considerarse un virus con la capacidad de replicarse, transformado a culquier otra persona dentro de la Matrix en una copia de sí mismo.
Por este motivo, los investigadores de checkpoint, han denominado así al nuevo virus que actúa exáctamente como el agente Smith.

Ya en el 2015, el Chema Alonso había contado en Segurinfo una forma ingeniosa de infectar smartphones Android. La técnica consistía en dos pasos. El primero era comprar aplicaciones existentes en Google Play, a desarrolladores que se aburrieron de mantenerlas. El segundo consistía en infectar dichas aplicaciones y subir las versiones infectadas al Play, para infectar los celulares cuando los usuarios las actualizaran.

El Agente Smith, utiliza una técnica ligeramente diferente. El detalle técnico de su funcionamiento puede encontrarse en el sitio de checkpoint. A modo de resumen, podemos decir que la técnica consiste en 3 pasos:

  1. Engaña a los usuarios para que se instalen aplicaciones gratuitas (normalmente juegos o apps de adultos) desde sitios como 9Apps. Una vez instalado, el Agente Smith comprueba si el usuario posee instalada alguna aplicación pupular de una lista que trae internamente. Dentro de esa lista, están aplicaciones como Whatsapp u Opera Mini.
  2. Una vez dentro del dispositivo, descifra su payload malicioso que consiste en un archivo apk. Esto lo hace sin intervención del usuario utilizando vulnerabilidades conocidas de Android como por ejemplo: Janus o Man-in-the-disk.
  3. El Agente Smith ataca las aplicaciones del teléfono que estén en su lista, de la misma modo que lo hizo el personaje de Matrix con Morfeo. Descarga los apk’s de dichas aplicaciones de los sitios originales, los modifica inyectando código mailcioso, e instala esta nueva versión infectada replicándose en dichas aplicaciones. Esta técnica es similar a la comentada por el Chema, pero el Agente Smith lo hace dentro del mismo celular. Esta segunda instalación, la efectúa también abusando de las vulnerabilidades ya mencionadas.

Hasta el momento, los investigadores calculan que existen unos 25 millones de celulares infectados con el Agente Smith. Si bien la mayoría de las infecciones se dieron en la India, Bangladesh y Pakistán en el siguiente mapa puede verse que ya está distribuido por todo el mundo.

 

¿Pero cuál es el propósito de la infección? Por el momento es bastante inocente. Simplemente hace que las aplicaciones infectadas desplieguen pop-ups de publicidad. Se cree que el objetivo de estos Ads, es generar ganancias para el grupo desarrollador del malware sumando clics. Sin embargo, la técnica es tan sofisticada y se hizo con tanto cuidado, que podría ser fácimente modificable para llevar otro tipo de payload mucho más peligroso. Por ejemplo, se podría usar para obtener credenciales de acceso o bancarias, o hasta pinchar los teléfonos infectados.

 

Nota por Carlos Benitez

Carlos Benitez es un reconocido experto en seguridad de la información.
Ciberataques a centrales eléctricas… o Godzilla vs King Kong

Ciberataques a centrales eléctricas… o Godzilla vs King Kong

Recientemente, una impactante noticia sobre ciberataques a redes eléctricas recorrió portales en todo el mundo. La posibilidad de atacar centrales eléctricas, paralizando ciudades, estados y hasta países enteros, sería ya una realidad.

Ya habíamos mencionado hace poco más de un año, que los principales blancos de ciberataques a las infraestructuras críticas, eran las centrales eléctricas. Diferentes grupos en todo el mundo vienen intentando ingresar a las redes que controlan los sistemas de producción y distribución de electricidad.

Los principales blancos de ciberataques a las infraestructuras críticas, son desde hace mucho tiempo, las centrales eléctricas.

Estos grupos estuvieron tan activos, que hasta desarrollaron malware específico. Hace algunos años, investigadores de ESET descubrieron  malware como el Crashoverride (también llamado Industroyer), diseñado específicamente para atacar centrales eléctricas. El código fue descubierto dentro de una planta de distribución de energía eléctrica de Ucrania. El halllazgo se produjo luego de la interrupción del suministro eléctrico en la zona norte de la ciudad de Kiev, a varias decenas de miles de usuarios y por poco más de una hora. En ese momento la repercusión mundial fue enorme. La empresa Dragos analizó técnicamente al Crashoverride y los resultados del análisis se pueden ver en su sitio web, o en la charla que dieron en BlackHat en 2016.

 

Godzilla

Si bien esta actividad lleva años, esta semana ocurrió algo nuevo. El New York Times, publicó una serie de notas, que hacen referencia a un informe en el que se deja expuesto otro aspecto del problema. Según el informe, el gobierno de Estados Unidos, desarrolló e implantó un elaborado sistema de malware dentro de las redes del sistema de producción y distribución de energía eléctrica de Rusia. El objetivo parecería ser el de atacar la red eléctrica rusa en caso de que se produjera un conflicto importante entre Moscú y Washington.

 

King Kong

Pero del otro lado, las cosas no parecen ser muy diferentes. Ya el Wall Street Journal informaba muy detalladamente a principio de este año, sobre las actividades de hackers rusos en la infraestructura crítica de Estados Unidos. Al parecer  se fueron detectando rastros de infiltraciones en compañías eléctricas de 24 estados de la Unión. Previamente a esto, el 15 de marzo del año pasado, el gobierno de Estados Unidos, publicó un detallado informe en el que declararon la existencia de una campaña de hacking por parte de Rusia, para infiltrar la infraestructura crítica de Estados Unidos.

 

El G-20

Tanto ha escalado este conflicto silencioso en estos últimos días, que en este momento se está hablando que Putin y Trump se reunirían en privado, durante el próximo capítulo del G-20, sólo para tratar este tema. Lo que está claro es que las redes de energía eléctrica se han convertido recientemente en un campo de batalla internacional. Un nuevo campo de batalla donde, al parecer, dos monstruos decidieron enfrentarse.

 

Las redes de energía eléctrica se han convertido recientemente en un campo de batalla internacional. Un nuevo campo de batalla donde, al parecer, Rusia y Estados Unidos decidieron enfrentarse.

 

La pelea

¿Fue o no fue un ciberataque? Cuando hoy en día se produce un gigantesco apagón, dadas las circunstancias expuestas, lo primero que pensamos es que fue un ciberataque. Si bien puede ocurrir que en algunos casos no lo sea, la verdad es que la probabilidad de que sí lo sea es alta. Las herramientas de ataque están desarrolladas y disponibles. El esfuerzo por protegerse es muy alto mientras que el esfuerzo para atacar es mucho menor.

Para usar términos futbolísticos, los que estamos de este lado, sabemos que estamos perdiendo por goleada. Más o menos 10 a 1. Es 10 veces más facil atacar que defenderse. Se paga a los especialistas en ciberseguridad 10 veces más en el lado oscuro. El costo de las herramientas de ataque es 10 (¿o cien? ¿o mil?) veces más barato que las de defensa. Genera 10 veces más adrenalina atacar que defenderse. Los que estamos de este lado, perdemos en todos los partidos, aunque eso no significa que vamos a darnos por vencidos 🙂 algún día los sistemas serán lo suficientemente robustos como para que estas cosas no ocurran. De todos modos, hay un partido que ganamos, de cada 100 intentos de ataque, sólo uno llega al blanco.

 

En ciberseguridad, es 10 veces más fácil atacar que defenderse. El costo de las herramientas de ataque es 10 (¿o cien? ¿o mil?) veces más barato que las de defensa.

 

La baticueva

Mientras tanto en la baticueva… los diseñadores y programadores de todo este malware, deben probar muy bien el funcionamiento de sus desarrollos. ¿Y dónde probar…? El laboratorio es el laboratorio…, tiene grandes limitaciones. Es imposible reproducir todas las condiciones, escenarios y variables de instalaciones reales. Habrá que probar entonces de otra forma, en un escenario más verdadero, pero sin atacar a Godzilla ni a King Kong. ¿Porqué no hacerlo entonces, en algún pequeño y remoto país, con mínimas o nulas medidas de ciberprotección, y donde no haya demasiadas repercusiones por interrumpir el suministro eléctrico por algunas horas a algunos miles (¿…millones…?) de habitantes?

 

Los diseñadores y programadores de malware para centrales eléctricas, deben probar muy bien el funcionamiento de sus desarrollos.

 

Los monstruos

Cuando de chico veía las películas de Godzilla, siempre me preguntaba sobre la suerte que corrían las personas que quedaban aplastadas cuando los edificios se derrumbaban durante las peleas. Es que cuando pelean gigantes, es imposible no quedar cubiertos por toneladas de escombros como efecto colateral de tan titánica batalla.

 

 

 

Nota por Carlos Benitez

 

Carlos Benitez es un reconocido experto en seguridad de la información.
Prototipo portátil WiFi basado en RPi – Parte 7

Prototipo portátil WiFi basado en RPi – Parte 7

 

Parte 7

 

Uniendo todas las piezas:

 

Para el montaje del dispositivo dentro de un gabinete, se han diseñado e impreso varias piezas en una impresora 3D. Las partes se pueden descargar desde aquí. En la siguiente foto se muestran todas ellos.

Fig 46 – Partes del gabinete del proyecto.

 

Ahora es el momento de ensamblar todo. El primer paso es poner el botón dentro de la botonera. Más tarde, se debe colocar el botón de manera que pueda quedar en su posición correcta:

Fig 47 – Ubicación del botón.

 

A continuación, necesitamos conectar el display a la motherboard de la RPi mediante el cable plano HDMI y el micro USB que lleva la alimentación y la información del touchscreen como entrada.

Fig 48 – Conección del display a la RPi.

 

Primero se debe colocar la pantalla táctil, para que la superficie de la pantalla quede alineada con la del gabinete:

Fig 49 – Display ubicado en su lugar.

 

Se imprimió una lámina separadora para evitar cortocircuitos entre las partes en contacto dentro del prototipo.

 

Fig 50 – Lámina separadora a ser ubicada.

 

Fig 51 – Lámina separadora instalada.

 

Más tarde, la RPi y la UPS se deben plegar por los cables e insertar los orificios en los pines internos de la caja. Se debe enchufar la batería y colocar el botón en el asiento.

Fig 52 – Todos los componentes en su lugar.

Finalmente, se coloca la tapa trasera y se cierra la el gabinete. El gabinete tiene dos ranuras, una para la tarjeta SD:

Fig 53 – Ranura para insertar la memoria micro SD.

 

y el otro, para el adaptador de la fuente de alimentación.

 

Fig 54 – Orificio para el adaptador de la fuente de alimentación.

 

 

En la siguiente sección, mostramos el prototipo funcionando.

 

< Parte 6: Haciendo más espacioParte 8: Haciéndola funcionar >

 

Nota por Carlos Benitez y Juan Carlos Ferro

 

Carlos Benitez es un reconocido experto en seguridad de la información.
Prototipo portátil WiFi basado en RPi – Parte 7

Prototipo portátil WiFi basado en RPi – Parte 6

 

Parte 6

 

Haciendo más espacio:

 

Ubicando todas las partes en su lugar, vimos que la batería incrementa varios milímetros la altura del dispositivo completo. Y nos dimos cuenta que este tamaño podría reducirse más si pudiéramos colocar la batería al lado de la UPS. Analizando cómo se podría lograr esto, notamos que la plaqueta de la UPS tiene parte de la superficie sin contactos internos, sólo con el espacio para el conector GPIO y los tornillos. Como no vamos a usar ninguno de esos elementos, podemos cortar parte de la plaqueta y hacer espacio para la batería. En la siguiente figura, se puede ver la plaqueta cortada a la altura de la 3ra fila de perforaciones. El corte se puede hacer con una herramienta filosa pasándola una y otra vez guiados por una regla, sobre la linea que forma la tercer hilera de islas perforadas.

Fig 43 – Cortando parte de la plaqueta de la UPS.

 

Al hacer este corte, se debe tener cuidado de no dañar el cuarto LED que se encuentra en la parte inferior de la plaqueta de la UPS. Finalmente, la batería se puede colocar de esta forma:.

 

Fig 44 – Haciendo lugar para la batería.

 

Como puede verse, todavía se deben que hacer otros cambios. El conector del micro USB en la UPS, debe estar ubicado de forma que se pueda acceder desde el exterior para poder conectarlo al cargador de corriente. Así que se debe desconectar la UPS de la motherboard de la RPi y volverla a conectar con cables flexibles más largos.

En la siguiente imagen se puede ver el resultado:

Fig 45 – Separando la placa de la RPi de la UPS.

 

En la siguiente sección, mostramos el armado de todo el prototipo.

 

 

< Parte 5: Reemplazando el conector HDMIParte 7: Uniendo todas las piezas >

 

Nota por Carlos Benitez y Juan Carlos Ferro

 

Carlos Benitez es un reconocido experto en seguridad de la información.
Prototipo portátil WiFi basado en RPi – Parte 7

Prototipo portátil WiFi basado en RPi – Parte 5

 

Parte 5

 

Reemplazando el conector HDMI:

 

La Raspberry Pi y la pantalla táctil tienen más conectores de alto perfil que se pueden reemplazar para reducir su tamaño. Dado que el display que utilizamos tiene interfaz de video HDMI, la idea es reemplazar el conector estándar HDMI por un conector más pequeño. Para esto se debe tener en cuenta, que la señal que va a transmitir es de un gran ancho de banda, por lo que no se debería usar cualquier cable o conector. Por este motivo, se eligieron cables planos (ribbon cables) que se utilizan dentro de los circuitos de algunos drones para transmitir las señales de las cámaras de video a sus placas principales inernas. El cable elegido fue comprado en Aliexpress. Su propósito indica: “FPV FPC Ribbon Flat Cable 0.5mm Pitch 20Pin for HDMI HDTV FPV Multicopter Aerial Photography”, es decir “Cable plano tipo cinta, de 0,5 mm de separación, de 20 pines, para HDMI y HDTV para multicópteros de fotografía aérea”.

Un detalle a considerar, es que el conector HDMI posee 19 conexiones, tales como se muestran en la siguiente figura:

.

 

Fig 32 – Pinout del conector HDMI

.

pero no pudimos conseguir cables o conectores de 19 pines. Los que conseguíamos eran de 18 0 20, por este motivo seleccionamos el de 20 pines dejando uno de los pines sin utilizar.

Los conectores y cables utilizados son estos:

Fig 33 – Conectores de cable plano y cable plano de 20 pines.

.

En primer lugar, se retira el conector HDMI de la Raspberry Pi, como se puede ver en la siguiente imagen::

Fig 34 – Conector HDMI retirado de la Raspberry Pi.

.

Después de eso, se suelda el conector de cable plano. Es muy importante notar que el paso de ambos conectores, (el retirado y el nuevo), son exactamente iguales.  De lo contrario, sería imposible soldar el nuevo.

En la siguiente imagen se puede ver el nuevo conector instalado::

Fig 35 – Nuevo conector de cable plano HDMI instalado en la RPi.

 

Dado que el conector tiene 20 pines en vez de 19, se debe decidir cuál pin no utilizar y hacer lo mismo en la plaqueta del display. Nosotros decidimos NO CONECTAR el pin 1.
A continuación, se debe realizar la misma tarea en la pantalla táctil 52Pi. La pantalla en sí está conectada y pegada a la paca principal. Como el proceso de desoldar y soldar debe hacerse con aire caliente, y esto puede dañar la pantalla, ésta debe desconectarse y desacoplarse de la placa principal.

Inicialmente se desconectan los cables planos que interconectan el display y la placa principal. En la siguiente imagen, se pueden ver dos cables planos desconectados:

Fig 36 – Cables planos del display 52Pi desconectados.

El proceso de despegar ambas placas, debe hacerse con mucho cuidado. El trabajo se facilita si se utiliza algún tipo de calentador de displays de celulares que elevan la temperatura a no más de 100 grados. Una vez elevada la temperatura, el pegamento se ablanda por lo que insertando una herramienta delgada entre el pegamento y la superficie de la plaqueta, se puede ir despegando con cuidado hasta hacerlo completamente.

La siguiente imagen muestra la pantalla desacoplada de la placa principal de la pantalla táctil:

Fig 37 – Display 52Pi despegado de la placa.

.

Posteriormente, el conector se quita utilizando aire caliente:

Fig 38 – Conector HDMI del display 52Pi desoldado.

De la misma forma, se instala el conector para cable plano. Se debe recordar cuál de los pines extremos del conector se decidieron dejar sin uso. En nuestro caso, eliminamos el número 1.

 

Fig 39 – Conector HDMI del display 52Pi desoldado.

Este es un buen momento para probar si el display funciona por si se deben repasar las soldaduras. Para ello, se debe conectar el cable plano entre las dos placas, la RPi y la 52Pi.

 

 

 

Fig 40 – Detalle del display HDMI conectado a la Raspberry Pi.

.

Fig 41 – Por ahora… todo funciona…

Como el conector micro USB aún no está conectado, la alimentación de la pantalla para la prueba se debe realizar con una fuente de alimentación externa.

 

El conector micro USB en el display no se eliminó porque no aumenta demasiado el perfil. Para finalizar las conexiones, se debe conectar la interfaz USB del display a la RPi. Esto permite alimentar el display y transferir los datos del touchscreen a la RPi.
Al no eliminar el micro USB del display, la forma de conectarlos es cableando una ficha micro USB macho a una de las lineas USB libres de la RPi. Esto se puede ver en la siguiente imagen:

 

 

Fig 42 – Conector micro USB cableado a la Raspberry Pi.

En la siguiente sección, mostramos cómo seguir reduciendo espacio.

 

 

< Parte 4: El turno del WiFiParte 6: Haciendo más espacio >

 

Nota por Carlos Benitez y Juan Carlos Ferro

 

Carlos Benitez es un reconocido experto en seguridad de la información.