Select Page
Hackeando máquinas air-gapped con la USB Rubber Ducky

Hackeando máquinas air-gapped con la USB Rubber Ducky

 …cuando no nos queda otra…

Supongamos que tenemos acceso físico por unas cuantas horas a un equipo Windows hardenizado que queremos ownear. Un ejemplo de esto es cuando el equipo es del tipo air-gapped. Eso significa que está en modo stand-alone sin conexión a ninguna red. El plan habitual de pruebas, sería:

  1. entrar con algún usuario no privilegiado al que tenegamos acceso,
  2. comprobar los parches y actualizaciones aplicadas,
  3. encontrar vulnerabilidades,
  4. copiar o descargar algunas herramientas de seguridad o exploits,
  5. con ellas, escalar privilegios, romper protecciones,
  6. y convertirse en admin… bingo!

Pero ¿qué se puede hacer si el equipo está mucho más hardenizado de lo esperado? Por ejemplo, con todas esta condiciones: 

    • Hardware: OTS
    • Gabinete: Cerrado y sellado
    • Dispositivos de red: deshabilitados
    • Dispositivos de almacenamiento USB: deshabilitados
    • Dispositivos de red USB: desactivados
    • Dispositivo de booteo externo: desactivado
    • BIOS: protegida con password (que no tenemos)
    • Sistema operativo: Windows 10 (aunque también podrían ser otros…)
    • Servicios de red: deshabilitados

¿Qué es lo que sí tenemos?

    • Acceso físico al equipo por varias horas
    • Se puede bootear el sistema en Safe Mode
    • El usuario que bootea en Safe Mode tiene powershell habilitado
    • Dispositivos USB HID: habilitados

En estas condiciones, no es posible copiar nada, ni desde un pendrive ni por red. Entonces, en teoría no se podría ejecutar nada fuera de lo que ya está instalado en la máquina.

Ok, pero lo que sí se puede hacer es tipear…

Digamos que se descubre que el sistema es vulnerable. Y se está en posesión de un archivo .exe (recuerden que en este caso estamos en Windows) de un exploit de esa vulnerabilidad para ejecutarlo dentro de la máquina. ¿Cómo se pasa el archivo .exe a la máquina hardenizada para que se pueda ejecutar? ¿y sólo tipeando…?

 

 

USB Rubber Ducky

Bueno, aquí es donde entra la USB Rubber Ducky.
Con este dispositivo es posible programar y emular miles de tecleos en lugar de tipearlos manualmente.
Pero lo que en teoría no se puede escribir en forma directa con un teclado, es un archivo binario.

USB RUbber Ducky
Fig. 1. USB Rubber Ducky

Bueno, después de investigar un poco y probar mucho, se logró usar la USB Rubber Ducky para transferir ejecutables y otros binarios a una máquina en la que sólo es posible tipear.

En la seccion Tutoriales les dejo las dos versiones del tutorial para que jueguen, en Castellano y en Inglés.

Si lo hacen, por favor cuenten cómo les fue @ch4r1i3b.

Espero que les sirva.

Hasta la próxima!

 

 

Nota por Carlos Benitez

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

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.