Select Page
Kali 2021.2 + RPi 4: una pareja perfecta

Kali 2021.2 + RPi 4: una pareja perfecta

La unión de la última versión de Kali (2021.2) con la última versión de la Rapsberry Pi (4 Model B) crean la pareja perfecta para tener un dispositivo portátil de pentest.

Todos los profesionales de seguridad necesitamos, en algún momento, desplegar un dispositivo portátil que nos permita probar o analizar vulnerabilidades. Una de las opciones más lógicas es la de usar mini motherboards. Hoy en día existen muchas SBC’s (Single Board Computers) en el mercado. La mayoría de ellas se basan en procesadores ARM. Para la gran mayoría de ellas, existen diferentes distros de Linux, incluyendo Kali.

 

Experimentos

Si bien he experimentado con algunas otras, la placa que más suelo usar es la Raspberry Pi. Ya escribí sobre algunos experimentos que hice basándome en la RPi. Además de este trabajo, experimenté probando diferentes usos.

Uno de ellos fue el de reemplazar la notebook en un viaje, con algún dispositivo más pequeño y liviano que pudiera entrar el el bolsillo de la mochila. Este es uno de los kits que usé.

 

Kit de viaje con la RPi3

Fig. 1 – Mini set de viaje con la RPi3 😉

Ustedes dirán que falta el display, si! obvio! pero hoy en día no encontré hoteles donde no hay aun televisor con entrada HDMI… Así que si bien sólo la podía usar en el hotel, tenía toda la potencia de un Linux en el bolsillo.

Otro de mis experimentos fue el de instalar el Kali completo en la RPi 3. Bueno, se puede, pero no es muy fácil de usar. Recuerden que esta versión, aún la Model B, viene con un máximo de 1GB de RAM. Esto hace que sea algo difícil hacer correr las X. Entonces, si además cargamos alguna aplicación pesada, se vuelve imposible. Memory exhaust por todos lados o, en el mejor de los casos, tiempos de respuesta larguísimos. En especial si la dejamos conectada en un sitio remoto, y queremos acceder a las X vía VNC.

 

Openvas

Ustedes se preguntarán, qué aplicación necesito sí o sí correr en este hardware sobre las X? Bueno, una de ellas es el Openvas. Los que lo instalaron saben lo quisquilloso que es respecto al acceso remoto. Y si tienen que resolver algo rápido, no pueden estar días instalando, desinstalando y cambiando configuraciones para que funcione.

Por si les interesa, les paso una alternativa para no utilizar el Openvas desde un browser en la misma RPi, sino usando por SSH los comandos de línea del Openvas: el OMP. Como verán, correr un scan desde OMP es un chino. Pero si no hay otra forma de hacerlo, es una solución posible.

 

Raspberri Pi 4 Model B

Respecto a las limitaciones de hardware, todo se solucionó con la Raspberri Pi 4. El modelo salió a fines de 2018 y con una característica fundamental, la máxima configuración de RAM pasó de los humildes 1GB a 4GB. Además de muchas otras mejoras, en este modelo sí se podían correr aplicaciones un poco más pesadas. Y como verán, mi kit de viaje no cambió mucho…

Kit de viaje con la RPi3

Fig. 2 – Mini set de viaje con la RPi4 😉

El salto final, hasta hoy, obvio… se dió con la Raspberry Pi 4 Model B. En este caso, la máxima configuración de RAM con la que se puede comprar la placa es de 8GB. Ahora sí!

La empresa, además, apostó a una nueva mejora con la Raspberry Pi 400. Un modelo en el que implantan la RPI4 Model B en un case de teclado logrando esto:

Kit de viaje con la RPi3

Fig. 3 – Nuevo modelo: RPi400

El lado oscuro

Dependiendo de cómo la vayamos a usar y dónde la vayamos a instalar físicamente, una característica que obligatoriamente debemos tener en cuenta para esta versión es la temperatura. En términos simples, la RPi4 calienta. Es que es pura lógica, una gran velocidad viene con un gran consumo de energía, por lo tanto de disipación de calor.

Es por eso que los mejores gabinetes incluyen coolers, además de ser de aluminio para poder disipar mejor el calor. Yo tengo una Flirc case que, la verdad que disipa bastante bien. En la ofi también probamos la Argon One, que además de disipar bien, viene con un adaptador para sacar todos los conectores por detrás y convierte las 2 salidas de video de mini HDMI a HDMI.

 

Kali 2021.2

Es muy interesante que este año, todavía no llegamos a la mitad, y ya se liberaron dos versiones, Kali 2021.1 en febrero pasado y Kali 2021.2 el 1 de junio último.

Siendo la distro de seguridad más usada, se puede encontrar que hay versiones de Kali para muchas plataformas:

Kit de viaje con la RPi3

Fig. 5 – Plataformas de Kali.

 

La que ahora nos interesa en particular es la de ARM:

Kit de viaje con la RPi3

Fig. 6 – Descargar Kali para ARM.

Esta versión viene con muchas mejoras en general, pero particularmente las que me interesan son las relacionadas con la RPi.

Kit de viaje con la RPi3

Fig. 7 – Mejoras de Kali 2021.2 relacionadas con la Raspberry Pi.

 

Una de las que quiero destacar es la de kalipi-config. Si bien hasta ahora existía un raspi-config portado a Kali, estaba bastante limitado y se perdían muchas configuraciones del hardware en esta herramienta. El haber incorporado el raspi-config en forma nativa, nos da muchas más posibilidades.

La otra mejora que incorporan, es la configuración para displays TFT. No se si usar este tipo de displays es muy útil en este tipo de aplicaciones, pero bueno, la posibilidad está.

 

A probar!

Lo que yo veo como más interesante es que ahora la RPi tiene verdaderamente una potencia superior. Por un lado, la Raspberry Pi 4 Model B es bastante más rápida que la Raspberry Pi 3 Model B. Acá pueden ver los benchmarks. Por otro lado, el incremenetar la memoria máxima de 1GB a 8GB ya va dando otras posibilidades interesantes.

Por el lado de Kali 2021.2 para ARM, al mejorar los drivers para el hardware, juran que su performance sobre RPi subió 1500%… y que el booteo inicial pasó de 20 minutos a 15 segundos…

Bueno, esta pareja parece prometer, así que no queda otra que probar. Trataré de hacer algunas pruebas y pasaré los resultados como update de esta nota.

Hasta la próxima!

 

Nota por Carlos Benitez

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

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.
Cayendo en la trampa del Fallback…

Cayendo en la trampa del Fallback…

La empresa china eyeDisk desarrolló lo que prometía ser un pendrive “inhackeable“[1] y terminó siendo tan inseguro como cualquiera, por el inocente agregado de un fallback.

Todos los que estamos en este negocio, conocemos las dimensiones de seguridad de la información. Las 3 principales son: confidencialidad, disponibilidad e integridad. Nuestra tarea desde seguridad, es la de definir el esfuero y los recursos para protegerlas adecuadamente. Pero dependiendo del contexto y del negocio o la misión particular, a veces no todas las dimensiones se deben proteger de la misma forma.

 

Un caso extremo:

En el caso de las redes OT, a través de las que se controlan procesos industriales, la dimensión más importante a proteger es la disponibilidad. Muy especialmente en infraestructuras críticas. La interrupción de un servicio o proceso industrial no sólo puede llegar a costar muchísimo dinero, sino que además puede provocar gravísimos daños en el equipamiento o hasta en el medio ambiente. Es por esto que todas las medidas de protección van a estar enfocadas en que la disponibilidad sea lo más invulnerable posible. Integridad y confidencialidad se dejan en segundo plano.

 

Un caso intermedio:

Al desarrollar sistemas de protección, muchas veces se establecen, diseñan e implementan estrategias de vías o caminos alternativos para el caso que algún componente falle. Es el esquema de “fallback” o “plan B” en el que a veces se deben establecer relaciones de compromiso en las que se pierden o degradan algunas características de seguridad para mantener otras.

Un ejemplo de esto es el sistema de cifrado de la telefonía celular. Cuando se establece una comunicación entre teléfonos celulares, la información viaja cifrada. Esto se hace para que nadie que tenga un receptor de radio en la frecuencia de emisión de la comunicación, pueda interceptar fácilmente las conversaciones. El sistema de cifrado que se usa en GSM es la familia A5. Sin entrar en la discusión de las vulnerabilidades particulares de estos algoritmos (tanto A5/1 como A5/2 fueron rotos), es importante mencionar que la familia está compuesta por 5 miembros: A5/0, A5/1, A5/2, A5/3 y A5/4.

Cada algoritmo posee mayores fortalezas de cifrado que el anterior y, como consecuencia, de consumo de recursos. A pesar de que muchas veces no lo notamos por las deficiencias de las redes, en realidad los sistemas celulares están diseñados para que las comunicaciones nunca se interrumpan. Entonces, el uso de algoritmos de cifrado más fuertes, está íntimamente relacionado con contar con muy buena señal en los dispositivos. ¿Qué pasa entonces si estamos en una condición de baja señal? El sistema tiene varias instancias de fallback, en las que los algoritmos de cifrado se van degradando para no perder la comunicación. En el caso de tener muy baja señal, nuestros celulares bajan hasta el modo A5/0 en el que la comunicación no se cifra en absoluto. En este caso, alguien podría escuchar nuestras conversaciones.

Pero el negocio manda. Es decir, en telefonía celular, si bien no es tan crítico como en el caso de sistemas industriales, la dimensión que más se preserva es la de disponibilidad. ¿La razón? es más que obvia: segundo que el sistema no funciona, segundo que no se factura…

El fallback que implica la degradación de la privacidad está incorporado por diseño con toda la intención de que sea así.

 

Un caso erróneo:

Ahora bien, cuando se diseña un dispositivo cuyo principal objetivo es preservar la confidencialidad. Cuando se anuncia con bombos y platillos que el sistema es absolutamente “inhackeable“, se deben tomar ciertos recaudos. La firma china eyeDisk desarrolló por la modalidad de crowdfunding un pendrive que incorpora la sofisticada tecnología de lectura de iris para asegurar la confidencialidad de los datos que él se almacenen.

Según sus especificaciones, el acceso a los datos sólo puede hacerse mediante la lectura de iris del dueño. Teniendo en cuenta que el sistema de lectura de iris es resistente a la lectura de imágenes o fotografías, la empresa parecía haber creado el perfecto “for your eyes only“…

Sin embargo, David Lodge, de PenTestPartners, descubrió recientemente que si bien la resistencia a ataques de lectura de iris es real, el fallback del sistema compromete completamente la confidencialidad tan promocionada. Si la lectura de iris falla, se puede desbloquear el contenido del pendrive con una contraseña provista por el usuario al momento de la configuración.

Resulta que investigando la manera en la que se transfieren los datos, el investigador descubrió que internamente, la contraseña almacenada se transfiere via USB desde el dispositivo a la PC antes de la validación y en texto plano!!! Por esta razón, con sólo un poco de conocimientos y esfuerzo, es posible obtenerla y usarla…

 

Usando fallbacks

Hay veces que sinceramente no entiendo la forma en la que se diseñan los sistemas. En el caso de eyeDisk “el” argumento de venta del producto es la imposibilidad de que sea hackeado. El usuario debería quedarse 100% tranquilo de que si pierde un pendrive con información valiosa, nadie tendría forma de recuperarla mientras el pendrive no vuelva a encontrarse con el ojo del dueño. El concepto es muy bueno…!!! ¿qué necesidad hay entonces de crear un fallback que permita al usuario desbloquear el pendrive haciendo un bypass de la principal protección del sistema, la lectura del iris? ¿para qué dar esa vuelta más innecesaria cuando al hacerlo se destruye por completo el concepto inicial?

Al pensar, diseñar y construir dispositivos o sistemas, se los dota a éstos de un objetivo. Si se hacen bien las cosas, ese sistema deberia cumplir perfectamente con su objetivo y hacer sólamente eso, la razón para la cual fue diseñado. Esto es lo que diferencia a un producto líder de uno del montón, el hacer muy bien su trabajo. El error se comete cuando se intentan agregar objetivos o funciones extra, y es en esa diversificación innecesaria, cuando lo que se hacía muy bien en principio bien, se termina diluyendo.

En sistemas muy complejos, con muchos componentes y escenarios posibles, en los que se debe tener siempre una respuesta válida, son necesarios los fallbacks. Pero éstos deben estar bien pensados. Porque sino, podríamos sin darnos cuenta, caer en la trampa del fallback, instalando por ejemplo un botón que abra la puerta de calle de nuestras casas desde el exterior, por si nos olvidamos el token de la cerradura electrónica que acabamos de instalar en nuestra nueva puerta blindada…

 

[1] Perdón por el término, pero fue lo mejor que pude traducir la palabra original del fabricante, es decir: “Unhackable”…

Nota por Carlos Benitez

Carlos Benitez es un reconocido experto en seguridad de la información.
De chinos y camaleones

De chinos y camaleones

A través de la evolución, la naturaleza creó un recurso fabuloso con la que dotó a algunos seres vivos para que puedan ocultarse de sus depredadores aún estando delante de ellos. Esta habilidad se llama mimetismo, y hace que los geckos de Madagascar, los camaleones, los pulpos y muchos otros animales se confundan con su entorno cuando los acecha algún peligro. Este recurso defensivo es altamente riesgoso; depende de que el atacante no pueda ver a quién se está mimetizando, si el mimetismo falla, el mimetizado se convierte en el almuerzo del depredador. Sin embargo, a lo largo de los miles de años de evolución, la naturaleza ha perfeccionado tanto estos sistemas que esta habilidad hoy en día es extraordinaria. Los investigadores chinos vienen trabajando en el concepto de “Computación Mímica” (MC= Mimic Computing) y “Defensa de Seguridad Mímica” (MSD= Mimic Security Defense) desde hace varios años. Algunos de sus autores son Jiangxing Wu o Chao Qi y vienen impulsando este tipo de tecnologías muy fuertemente en su país. Estos desarrollos llevados a cabo ininterrumpidamente por casi 10 años, llevaron a la construcción de un sistema que se mimetiza en función de los ataques, formando un ciber-escudo casi impenetrable.
El sistema se denomina “Cyber Mimic Defense” (CMD) y para probarlo y perfeccionarlo llamaron a diversos concursos de hackers desafiándolos a atacar a los sistemas protegidos por dicho escudo. Entre ellos, en el Qiangwang International Elite Challenge – llevado a cabo en Nanjing, capital de la provincia oriental de Jiangsu, el 12 de mayo pasado – el CMD logró frustrar más de 500,000 ataques generados por 22 equipos de hackers de cinco países. Los mismos hackers que participaron del concurso sugirieron mejoras en el sistema para que agregue aún más dificultades y se mimetice mucho mejor. Esto permitirá que las redes de China, probablemente en un corto tiempo, cuenten con este ciber-escudo impenetrable.
La Defensa de Seguridad Mímica (MSD) consiste en seleccionar dinámicamente y pseudoaleatoriamente diversas variantes de hardware y software dentro de una red y sus sistemas, activándolas y desactivándolas de forma también pseudoaleatoria y adaptativa. Esto hace que los entornos de ejecución de hardware y las condiciones de trabajo del software observadas por los atacantes sean tan inciertas que sea difícil o hasta imposible construir una cadena de ataques basada en los errores o vulnerabilidades que ellos detecten.
Para los lectores más técnicos se podría decir que esto equivale a que un atacante ejecute un “nmap” a un rango de direcciones IP y éste le devuelva un resultado. Minutos después ejecuta el mismo nmap y ve otras direcciones IP activas y otros puertos. Minutos después vuelve a hacerlo y ya no encuentra ninguna de las direcciones IP anteriores. En este escenario es casi imposible llevar adelante un ataque. El sistema funciona ocultando los elementos verdaderos de una red, detrás de una serie de servicios, componentes de red y aplicaciones falsas que se van creando a medida que los atacantes van lanzando sus ataques. Como comentamos antes, esto se realiza de forma pseudoaleatoria teniendo como base para su ejecución, los sistemas de Redes Definidas por Software (SDN= Software Defined Networks). El concepto chino de MSD encara principalmente la grave asimetría determinada por la gran diferencia de los costos de atacar vs. defenderse en el ciberespacio. Hoy en día se trabaja con el paradigma de que quienes defendemos vamos perdiendo la batalla ya que los sistemas son “fáciles de atacar y difíciles de defender”. MSD viene a balancear esa simetría, no resolviendo el problema, pero sí agregando una gran cantidad de dificultades al atacante. El resultado final entonces, estaría dado por una ecuación económica: el costo de atacar podrá ser tan grande que en muchos casos no tendrá sentido hacerlo.  
Nota por Carlos Benitez