Ir al contenido principal

¿Qué es la Criptografía Cuántica?

La computación cuántica se va perfilando como la próxima revolución en computación. Es todo un cambio de paradigma en la forma de procesar información, aunque probablemente, los computadores cuánticos del futuro serán de propósito específico y no ordenadores para uso general como los que usamos ahora. Una de estas aplicaciones específicas es la Criptografía Cuántica, que promete crear un canal cifrado teóricamente inexpugnable. Desgraciadamente, la computación cuántica también llega con la promesa de poner en jaque a la actual criptografía de clave pública. Analicemos por qué.



Una amenaza para la criptografía de clave pública

La criptografía de clave pública, como RSA, basa su fortaleza en la dificultad de resolver el problema de la factorización de dos números primos muy grandes. En general, este problema tiene una complejidad del orden de O(Nk) en el dominio de la computación tradicional. En 1994 Peter Shor diseñó un algoritmo cuántico, conocido como algoritmo de Shor, basada en la transformada de Fourier cuántica capaz de reducir la complejidad del problema de la factorización a O((log N)3). O lo que es lo mismo, se acabaron los secretos.
Por suerte, no está todo perdido. No se conoce ningún algoritmo cuántico que facilite el descifrado en el dominio de la criptografía de clave compartida (como AES). De hecho, los algoritmos criptográficos de clave pública son usados hoy casi exclusivamente para el intercambio de claves debido a sus altas necesidades computacionales. Una vez intercambiada la clave, la comunicación se cifra usando criptografía de clave compartida. Así, pues, necesitamos una nueva forma de intercambiar las claves, y la computación cuántica nos ofrece también una solución.

Sobre fotones, polarizadores y espías

Antes de entrar a fondo con los el método de intercambio de claves cuántico (en realidad uno de ellos) vamos a ponernos de acuerdo en algunos conceptos básicos de Física Cuántica. Lo primero que necesitamos para transmitir información cuántica es un canal cuántico. En la actualidad, se utiliza fibra óptica para simular dicho canal y, obviamente, lo que viaja por esa fibra son fotones. Un fotón es una partícula cuántica sin masa que, obviando la precisión científica, transporta luz (espero que no haya ningún físico en la sala). Podemos imaginar, simplificando mucho, que los fotones viajan en línea recta, y además vibran en una dirección perpendicular a la dirección en la que se mueven (de ahí la dualidad onda-partícula). Por ejemplo, si vibran de arriba hacia abajo decimos que tienen polarización vertical o spin vertical. A esta polarización la vamos a llamar estado del fotón.
En su estado natural, un fotón está a la vez en todos sus estados posibles. Sí, has leído bien, vibra en todas direcciones a la vez, y cuando digo a la vez quiero decir que en el mismo instante está vibrando en cualquier dirección posible.
Es posible que te suene el nombre de Heisenberg (no el de Breaking Bad) y su principio de incertidumbre, que dice que no podemos conocer a la vez la velocidad y la posición de un fotón. Además, el propio hecho de medir alguno de estos parámetros afecta al estado del propio fotón.
Podemos sacar provecho de este principio de incertidumbre, ya que si enviamos un fotón por un canal cuántico, en principio, este fotón estará en todos sus estados posibles a la vez, pero si lo hacemos pasar por un polarizador, podemos obligar a dicho fotón a que tome el estado que nos interese, ya sea en horizontal, vertical o diagonal.
Otra propiedad interesante de los polarizadores es que si tratamos de hacer pasar un fotón con spin vertical por un polarizador vertical, éste lo atravesará sin mayor problema, sin embargo, si el polarizador y el espin del fotón no son iguales, el fotón tiene una probabilidad cos2(α) de pasar, siendo α el ángulo que forma la dirección de la vibración del fotón con la del polarizador. Esta propiedad se utiliza en el algoritmo de intercambio de claves que veremos a continuación.
Otro efecto, esta vez deseado, del principio de Heisenberg es que el propio hecho de que un espía observe el fotón puede introducir en él un cambio de estado, así que de entrada es imposible realizar un ataque de tipo man in the middle sin que sea detectado en los extremos del canal.

Intercambio de claves a la manera de la Física Cuántica

El algoritmo que voy a mostraros es el de Bennett-Brassard, también conocido como BB84, ya que fue propuesto por Charles Bennett y Gilles Brassard en 1984. Éste no es el único algoritmo posible para distribución de claves en un canal cuántico, pero sí el más conocido. Para este algoritmo se utiliza un canal de comunicación cuántico y otro canal clásico (por ejemplo, un enlace TCP/IP a través de Internet).
El método es como sigue:

- Supongamos que Alicia y Bernardo van a intercambiar 10 fotones. Para ello, ambos eligen al azar 10 polarizadores, que pueden ser vertical-horizontal (+) o diagonal (X). Obviamente Alicia y Bernardo todavía no saben qué polarizadores eligió el otro. Además, ambos llegan antes a un acuerdo en el significado de las polarizaciones. Por ejemplo, \ o | es un 1 y / o - es un 0.

- Alicia envía 10 fotones (polarizados según sea un 1 o un 0) a través de los 10 polarizadores que escogió, y Bernardo los recibe a través de los que él seleccionó (los fotones pueden tener 4 estados que denotaremos por | - / \ según la polarización). Si el polarizador que eligieron ambos es el mismo, el fotón llegará a Bernardo con la misma polarización con la que envió Alicia. Si no, como ya hemos visto, el fotón tiene una probabilidad cos2(α) de pasar o no.

- Una vez finalizada la transmisión de los 10 fotones, ambos usan el canal no cuántico para intercambiar los filtros que usó cada uno, y descartarán los fotones donde usaron polarizadores diferentes. Nótese que aunque un espía vea la secuencia de polarizadores de ambos, nunca podrá saber qué estado tenían los fotones que han intercambiado.

- La clave será aquella formada por los bits obtenidos de los fotones con polarizadores coincidentes.

Veamos un ejemplo:
Ambos se ponen de acuerdo en que:
1 = \ |
0 = / -

Estos son los polarizadores que eligen Alicia y Bernardo:
Alicia:   + + X + X X X + X +
Bernardo: + X X X + X + + + X

Alicia envía la siguiente secuencia de bits: 0110100101 haciéndola pasar por sus polarizadores y, al final, ambos envían su secuencia de polarizadores por el canal clásico. Como resultado, ambos descartan los bits 2, 4, 5, 7, 9 y 10 ya que no son coincidentes.

Bits Alicia0110100101
Polarizadores Alicia++X+XXX+X+
Spin fotones Alicia|-\|\//-/-
Polarizadores Bernardo+XXX+X+++X
Spin fotones Bernardo|/\/-/--|/
Descartados******
Clave0101

Así, pues, la clave que usaran Alicia y Bernardo en su comunicación cifrada es 0101.



Comentarios

Entradas populares de este blog

Creando firmas de virus para ClamAV

ClamAv es un antivirus opensource y multiplataforma creado por Tomasz Kojm muy utilizado en los servidores de correo Linux. Este antivirus es desarrollado por la comunidad, y su utilidad práctica depende de que su base de datos de firmas sea lo suficientemente grande y actualizado. Para ello es necesario que voluntarios contribuyan activamente aportando firmas. El presente artículo pretende describir de manera sencilla cómo crear firmas de virus para ClamAV y contribuir con ellas a la comunidad.

Manejo de grafos con NetworkX en Python

El aprendizaje computacional es un área de investigación que en los últimos años ha tenido un auge importante, sobre todo gracias al aprendizaje profundo (Deep Learning). Pero no todo son redes neuronales. Paralelamente a estas técnicas, más bien basadas en el aprendizaje de patrones, también hay un auge de otras técnicas, digamos, más basadas en el aprendizaje simbólico. Si echamos la vista algunos años atrás, podemos considerar que quizá, la promesa de la web semántica como gran base de conocimiento ha fracasado, pero no es tan así. Ha ido transmutándose y evolucionando hacia bases de conocimiento basadas en ontologías a partir de las cuales es posible obtener nuevo conocimiento. Es lo que llamamos razonamiento automático y empresas como Google ya lo utilizan para ofrecerte información adicional sobre tus búsquedas. Ellos lo llaman Grafos de Conocimiento o Knowledge Graphs . Gracias a estos grafos de conocimiento, Google puede ofrecerte información adicional sobre tu búsqueda, ad

Scripts en NMAP

Cuando pensamos en NMAP, pensamos en el escaneo de puertos de un host objetivo al que estamos relizando una prueba de intrusión, pero gracias a las posibilidades que nos ofrecen su Scripting Engine , NMAP es mucho más que eso. Antes de continuar, un aviso: algunas de posibilidades que nos ofrecen los scripts de NMAP son bastante intrusivas, por lo que recomiendo hacerlas contra hosts propios, máquinas virtuales como las de Metasploitable, o contrato de pentesting mediante. Para este artículo voy a usar las máquinas de Metasploitable3 . No voy a entrar en los detalles sobre el uso básico de NMAP, ya que hay miles de tutoriales en Internet que hablan sobre ello. Lo cierto es que NMAP tiene algunas opciones que permiten obtener información extra, además de qué puertos están abiertos y cuales no. Por ejemplo, la opción -sV trata de obtener el servicio concreto, e incluso la versión del servicio que está corriendo en cada puerto. Otro ejemplo es la opción -O, que intenta averiguar el