Copy Link
Add to Bookmark
Report
SET 021 0x05
-[ 0x05 ]--------------------------------------------------------------------
-[ Del PGP a un Foton. Presente y Futuro ]-----------------------------------
-[ by SiuL+Hacky ]----------------------------------------------------SET-21-
DEL PGP A UN FOTON. PRESENTE Y FUTURO.
======================================
En el pasado numero de SET (20), Falken a~adio al articulo de Homs una
breve introduccion sobre criptografia cuantica que me ha "motivado" a hacer
una pausa en el curso de cracking bajo linux, y extenderme un poco mas en ese
y otros temas estrechamente relacionados.
Llamaba ciertamente la atencion la noticia aparecida (en la edicion
electronica al menos) el pasado 29 de Septiembre en el Sunday Times
http://www.sunday-times.co.uk/news/pages/tim/99/09/
29/timintint02001.html?1341861
En resumen venia a decir que segun noticias filtradas por el Instituto
Israeli Weizmann, tenian disponible un dispositivo (incluso un dispositivo de
mano) que rompia el codigo RSA-512 bits en 12 microsegundos. Para tan noble
tarea, utilizaba un dispositivo mezcla de procesamiento optico y de computacion
cuantica.
Que nadie se alarme, a pesar de que en criptografia nada se puede asegurar,
era una patra~a sensacionalista. El articulo estaba firmado por un tal Ben
Hammersley, y era un batiburrillo de ideas mal pegadas. Mezclaba seguramente
la noticia aparecida meses atras, donde se presentaba un dise~o de un
http://www.rsa.com/rsalabs/html/twinkle.html
dispositivo electro-optico para atacar el citado sistema, con algun articulo
leido en la red. Por cierto, este dispositivo electro-optico, a pesar de
todo, dejaba las claves de 768 y 1024 bits como inabordables. La noticia del
Sunday es falsa; en primer lugar porque este tipo de hallazgos no se filtran
(y menos por los israelies), en segundo porque no existen ordenadores
cuanticos de ese numero de bits, y en tercero porque ni mucho menos estaria
disponibles en un sistema de mano.
A pesar de que no pasa de ser ejercicio de sensacionalismo, podria ser en un
futuro mas o menos lejano algo cierto. La base teorica, existe, pero de
momento no se sabe como llevar a cabo satisfactoriamente. El que la
seguridad de las claves RSA (por ejemplo) se vea completamente en
entredicho, vendria de la mano de la casi recien nacida: COMPUTACION
CUANTICA.
COMPUTACION CUANTICA -------------------------------------------------------
Es indudable el exito que han alcanzado hoy en dia los computadores
digitales electronicos. La miniaturizacion ha llevado a los micropocesadores
a un papel crucial dentro de la actual era tecnologica. Probablemente ni
Intel (ni los japoneses que les encargaron el proyecto), ni nadie,
sospechaba que la tecnologia pudiera evolucionar hasta la cotas actuales.
Esto da idea de lo dificil que es anticipar el desarrollo de los avances
tecnologicos. Esta situacion tiende a hacer creer la idea de que todo es
simulable y computable. Aquellos problemas en los que no se ha tenido exito
todavia (como la realidad virtual), parece que se solucionan dejando pasar
el tiempo y que el aumento de la velocidad de procesamiento haga el resto.
Pero realmente ¿ todo es computable ? No parece que desde la primera mitad
del siglo, cuando Turing y Church expusieron sus teorias, se halla avanzado
mucho en estos aspectos teoricos. Se puede dar como buena la proposicion
conocida como "Tesis de Church": todos los dispositivos computacionales se
pueden simular mediante una maquina de Turing. Esta proposicion no deja sin
embargo una definicion clara de lo que seria un dispositivo computacional.
De cualquier forma, si que parece haber acuerdo en que todo NO es
computable, o para ser mas preciso, no todo es eficientemente computable.
Esta ineficiencia, no seria una cualidad propia de un dispositivo particular
(por ejemplo, un dispositivo no optimizado), sino que afectaria a todos
ellos. En el terreno de otros temas mas delicados, como la inteligencia, o
la consciencia, no parece nada claro si podran ser alguna vez simulables.
Se suele poner el limite de las "cosas" eficientemente computables, como
aquellas que contando con un numero de elementos variables N, los recursos
consumidos para su computacion, incluido el tiempo, dependen polinomicamente
de N. Por ejemplo, supongamos un sistema cuya computacion requiera:
N^2 + 6*N^3 + N^10 recursos
(N^2 significa N elevado a 2)
para N=3 elementos tendriamos 3^2 + 6*3^3 + 3^10 = 59220 recursos
para N=6 elementos tendriamos 6^2 + 6*6^3 + 6^10 = 60467508 recursos
parece que crece rapido, bueno pues esto SI es eficientemente computable.
Hay otros problemas, cuyos recursos no crecen polinomicamente, sino
exponencialmente con el numero de elementos N. Un ejemplo muy conocido es el
de la factorizacion de numeros, en el que se basan las claves RSA. Hallar
los factores primos de un numero, con el mejor algoritmo convencional
conocido, es un problema que consume unos recursos exponencialmente
crecientes con N. Esto no significa que mañana, alguien, muy listo por
cierto, descubra una nuevo algoritmo que rompa con todo esto y convierta la
factorizacion en un problema EFICIENTEMENTE computable.
A veces es complicado tener presente la diferencia en que algo que crece
como N^10, crezca mas despacio que algo que crece con e^N (donde e es un
numero entero cualquiera mayor que uno). Veamos un ejemplo.
(a) Problema A. Recursos crecen con N^10
(b) Problema B. Recursos crecen con e^N
Empezando con N=10 elementos:
(a) Problema A. Recursos = 10^10
(b) Problema B. Recursos = 10^3
parece que esto nos contradice. El problema A consume unos recursos 7 ordenes
de magnitud (10.000.000 de veces) mayores ... y este era el EFICIENTE.
Doblemos N a ver que pasa. Con N=20 elementos:
(a) Problema A. Recursos = 20^10 = 2*10^11
(b) Problema B. Recursos = 10^8
la distancia se ha reducido notablemente. Parece claro que, a pesar de la
diferencia inicial, los crecimientos son muy diferentes. Cuadrupliquemos el
numero de elementos a ver que pasa (N=80).
(a) Problema A. Recursos = 80^10 = 8*10^11
(b) Problema B. Recursos = 10^34
Parece increible, pero el multiplicar el numero de elementos por 4, en el
problema exponencial, ha supuesto usar 26 ordenes de magnitud (mas de un
billon de billones) mas en recursos. Bien sabemos que doblar la velocidad de
procesamiento es algo complicado, pues eso da una muy buena idea de que el
problema NO ES EFICIENTEMENTE COMPUTABLE.
Entre este tipo de problemas, esta no solo la factorizacion de numeros, sino
la simulacion de sistemas cuanticos o la simulacion de fluidos. Conviene
repetir que en el caso de la factorizacion, la traba no radica
intrinsecamente en la factorizacion, sino en los algoritmos de factorizacion
existentes.
Precisamente la mecanica cuantica presenta este tipo de problemas, pero de
una forma intrinseca, ya que para describir un sistema con N posibles
estados (posteriormente quedara mas claro, que significa esto), hacen falta
2^N numero complejos. Es por ello, que Feynman y otros cientificos,
propusieron en los 80' que un sistema computacional que se comportara
cuanticamente deberia ser util a la hora de simular fenomenos de este tipo,
y ayudar asi a comprenderlos.
¿ Que significa esto de comportarse cuanticamente ? Toca ahora entrar
brevemente en un poquito de teoria al respecto. No puedo prometer que lo
vaya a entender todo el mundo, pero voy a intentarlo y espero aclare
bastantes equivocos al respecto. Lo que si puedo asegurar es que el
modelo de "realidad" que presenta, esta bastante a disgusto con el modelo de
realidad cotidiana que nos toca vivir.
Supongamos un sistema que consideraremos clasico en cuanto a que no conoce
la mecanica cuantica ni de oidas: un dado por ejemplo. De un dado, podemos
definir (entre otras cosas) 6 estados, dependiendo del numero que marque en
la cara frontal. Situado en una superficie horizontal, desechando que pueda
caer de canto, SIEMPRE se encuentra en un estado muy definido.
Pero un dia nos vienen unos cientificos y nos presentan una nueva realidad,
de la que como ejemplo muestran un dado cuantico. La diferencia, es sutil,
pero brutal: resulta que si lanzamos el dado dentro de una caja, que
cerramos antes de que caiga (para no poder verlo): el dado no se encuentra
en ningun estado concreto, sino en una composicion de estados; es decir, es
como si el dado marcara 1,2,3,4,5 y 6 a la vez.
Nadie puede negarlo, porque nadie ha visto el dado dentro de la caja. El
caso es que cuando se abre, tachannn, esa composicion de estados se
transforma en uno concreto: hemos hecho una medida. ¿ Y porque ha salido un
3 o un 6, o lo que sea, y no otro numero ? Bueno, de la composicion de
estados que teniamos con la caja cerrada, algunos podrian ser "mas
importantes" que otros, en el sentido de que es mas probable que aparezcan
cuando abramos la caja (un dado trucado por ejemplo). No es este el caso que
nos ocupa, ya que los 6 estados son igual de "importantes" (o probables).
Visto el dado, y hecha la medida, hasta que no cambie algo, y esto es algo
que no se suele tener claro, por mucho que cerremos y abramos la caja, el
estado no va a cambiar y no hay probabilidades de por medio.
Este ejemplo, que ya considerareis si es mas o menos afortunado, pretende
ilustrar las peculiaridades de los estados cuanticos. El estado mas general
de una particula/sistema es una composicion de estados. Si, es una especie
de estado fantasmagorico, que hasta que no lo medimos no se concreta en uno.
Si no se perturba, midamos una o mil veces, el valor sera el mismo; siempre
que se mida la misma "cualidad" y no se intente conocer cualidades
"incompatibles" de forma simultanea (como velocidad y posicion). No se si os
habeis dado cuenta, pero el hecho de que una particula se encuentre en una
composicion de estados (y no en uno concreto), trae consigo una serie de
consecuencias filosoficas sobre la realidad en las que no entrare, pero
que os las dejo para consumo posterior. La paradoja de gato de Schrodinger,
pone de manifiesto los problemas que surgen al aplicar la teoria cuantica
(comprobada hasta la saciedad) a un pobre gatito.
Fin de la parte teorica, imprescindible en mi opinion para comprender algo
de como habria de funcionar un computador cuantico. El equivalente cuantico
de un bit, es lo que se conoce como qubit (quantum bit). En los ordenadores
digitales sus dos posibles estados: 1 o 0, corresponden con dos niveles de
tension electrica distintos. Para el equivalente cuantico, se toma una
particula con dos posibles estados. La gran diferencia es que el qubit no se
va a encontrar en un estado concreto, sino en una composicion de estados, es
decir, cada qubit es un 1 con una cierta probabilidad y un 0 con otra. Al
aplicarse puertas logicas, ira variando la probabilidad del estado "1" y del
estado "0", pero la salida sera tambien una composicion de estados.
Esta peculiaridad, aparte de marcar una clara diferencia con los sistemas
digitales que conocemos, le confiere la potencia que luego explicara
comportamientos casi magicos. El trabajar con composiciones de estados le
dota de un parelelismo interno que hace que un ordenador cuantico de N
qubits, trabaje con 2^N bits a la vez, y cada operacion posterior se lleva a
cabo sobre todas las combinaciones a la vez. Tomemos un ordenador de 3 qubits,
su estado general sera:
estado = a*000 + b*001 + c*010 + d*011 + e*100 + f*101 + g*110 + h*111
donde a,b,c,d,e,f,g y h dan una idea de la probabilidad de cada estado.
Cualquier operacion digital la haremos sobre los 2^3=8 estados a la vez. Un
algoritmo que buscara el numero 011 como solucion de algun problema, deberia
procurar que todos los coeficientes (a,b,c,e,f,g,h) se anularan, excepto el
que va sobre si mismo (d), que seria igual a uno.
estado = 011
evidentemente, si la composicion de estados solo se compone de ese estado,
al medirlo, obtendriamos 011. Dicho de otra manera, deberia ir eliminando
todas las posibles combinaciones que NO son solucion de ese problema en
particular.
Esto es una somera idea de como se comportaria. El como se llega es otra
historia. No se sabe como construir un ordenador con un numero
arbitrariamente grande de qubits. Hay diversos prototipos de ordenadores
cuanticos de 2 o 3 qubits a lo sumo. Para hacerse una idea de lo poco que
tienen que ver con los ordenadores actuales (y con el dispositivo de mano
famoso), uno de los dise~os mas prometedores se basa en mediciones de
resonancia magnetica nuclear (si, esto donde miran si un futbolista se ha
hecho pupa). Recuerda un poco a lo mastodonticos que eran los primeros
ordenadores, y quien sabe como evolucionara esto que practicamente acaba de
nacer.
¿ A que viene entonces tanto bombo? Fundamentalmente a 2 descubrimientos que
vienen a dar idea de como esa potencialidad se puede aplicar a problemas
palpables y no resueltos hasta ahora:
(a) En 1994, Peter Shor (Bell Labs) propone un algoritmo, susceptible de ser
ejecutado en un ordenador cuantico, que factoriza dos numeros en un tiempo
polinomico. La razon de que esto no cause alarma, es que no hay computadores
cuanticos de un numero de bits tales, que permitan abordar claves
comercialmente utilizadas. Al menos ya existe la base teorica.
(b) En 1997 Grover (tambien de Bell Labs) publica un algoritmo de busqueda
ciertamente revolucionario (tambien cuantico, claro). Las bases de datos,
basan la potencia de sus mecanismos de busqueda en una ordenacion previa de
los datos. En un conjunto de N elementos desordenados, encontrar un elemento
particular, lleva indefectiblemente una media de N/2 intentos. El algoritmo
de Grover lo consigue en raiz_cuadrada(N) intentos. Volvamos al ejemplo
numerico:
intentos intentos
alg. convencional alg. Grover
si N=1000 500 31
si N=1 millon 500.000 1000
la diferencia vuelve a ser evidente.
¿ Progresara o se convertira en puro ejercicio mental ? Solo el tiempo lo
dira. Queda tambien por demostrar en cuantos de los problemas reales se
muestra mas eficiente que los metodos actuales; y es que hasta ahora hay muy
pocos algoritmos en los que se muestren mas eficientes.
Si todo sale bien, quiza la criptografia no pueda volver a basarse en
planteamientos matematicos. Quien hace la ley, hace la trampa, y la solucion
vendria entonces de confiar no en conjeturas matematicas, sino en leyes
fisicas (igual son lo mismo :):
CRIPTOGRAFIA CUANTICA ----------------------------------------------------
A diferencia de este panorama un tanto especulador, el campo de la
criptografia cuantica si que se encuentra lo suficiente consolidado como
para pensar que puede ser una realidad proxima en sistemas opticos que
requieran una seguridad excepcional.
Su origen no es mucho mas antiguo que el de la computacion cuantica, data de
principios de los ochenta, y sin que este muy claro (como siempre) el
autentico padre de la idea. De lo que caben menos dudas, es de que el primer
dispositivo experimental, tal y como apunto Falken en el articulo de set20,
se construye en 1989 por Bennett y Brassard (IBM, para que veais quien anda
metido en estos ajos). Transmitieron a lo largo de 32 cm. No parece mucho,
pero en otras circunstancias, 32 cm es una cifra destacable.
Para explicar como funciona esto, y que cada uno de vosotros vea por si
mismo el quid de la cuestion, voy a utilizar el problema que ya introdujo
Falken, pero me voy a extender bastante mas para que no queden cabos
sueltos.
Vamos a utilizar para el invento fotones polarizados. No es necesario ser el
maestro de los fotones polarizados para entender lo que hacen en este
ejemplo, asi que, que nadie se asuste. Los fotones vibran de maneras muy
diferentes. Lo que en realidad vibra es el campo electromagnetico asociado a
ellos, pero quedemonos en que pueden vibrar. Por ejemplo, de forma parecida a
como vibra la cuerda de una guitarra, o un pendulo: bien de arriba a abajo,
bien de derecha a izquierda, bien en diagonal, etc ... Al primer caso se les
llama con polarizacion vertical, al segundo polarizacion horizontal y al
tercero polarizacion diagonal (razones evidentes). Un polarizador se
comporta como una especie de filtro que solo deja pasar a determinados
fotones: un polarizador vertical deja pasar los fotones con polarizacion
vertical. Una cosa es importante aclarar: cuando atraviesa un foton un
polarizador, o pasa, o no pasa, pero no cometais el error de que pasa
"empeque~ecido" o con alguna propiedad cambiada.
Veamos algunos ejemplos:
(a) Un foton polarizado verticalmente (|), atraviesa un polarizador vertical
P(|)
foton(|) -> P(|) -> foton(|)
ese foton SIEMPRE PASARA.
(b) Un foton polarizado horizontalmente (-), atraviesa un polarizador
vertical P(|)
foton(-) -> P(|) -> foton muerto
ese foton NO PASA NUNCA.
(c) Un foton polarizado diagonalmente (\) o (/), atraviesa un polarizador
vertical P(|)
foton(/) -> P(|) -> 50 % de la veces foton (|)
-> 50 % de la veces foton muerto
inescrutables los caminos de la mecanica cuantica. Este hecho resulta
ciertamente magico, pero es asi.
Espero que hayais captado la idea aunque no haya reflejado todas las
combinaciones. Ahora, establecemos (igual que la que puso Falken), el codigo
binario de equivalencia para nuestros fotones:
/ = 1
- = 1
\ = 0
| = 0
El esquema de la transmision va a ser el siguiente: Un emisor, equipado con
un buen generador de numeros aleatorios, produce una secuencia, susceptible
de ser utilizada como llave de encriptacion. Para enviarla, traduce los 1s y
0s a fotones polarizados segun tenemos escrito arriba (para cada 1 o 0 elige
aleatoriamente cada una de las dos opciones disponibles). El receptor, que
debe estar sincronizado con el emisor, elige, tambien aleatoriamente medir
cada foton con P(|) o con P(\) Detras de cada polarizador hay un detector de
fotones que comprueba si han pasado o no. Una vez realizada la transmision,
el emisor y receptor se comunican por un canal "publico" el tipo de
polarizacion que han utilizado para cada bit. Los casos en los que hayan
coincidido (50% en principio) se toman como validos, y el resto se deshechan
(otro 50%):
-------- secuencia binaria
| -------
----------------- P(|)-| |
| generador de | / | Mux |- bits
| fotones |==================================== | |
----------------- fibra optica \ P(\)-| |
-------
EMISOR RECEPTOR
en el detector he puesto polarizadores vertical (|) y diagonal hacia la
izquierda (\), pero vereis que es indiferente de elegir horizontal (-) y
vertical derecha (/). La caja etiquetada "Mux", es un multiplexor (o era
demultiplexor ?:-/) que se ocupa de que el foton pase por un polarizador u
otro (solo uno para cada bit/foton). Veamos ahora como eligiendo la misma
base de polarizacion en el emisor y en el receptor, la comunicacion funciona.
(a) Emisor con P(+)-------- Detector con P(|)
Envia un "1" Recibe un "1"
foton(-) -> P(|) -> foton muerto
Envia un "0" Recibe un "0"
foton(|) -> P(|) -> foton(|)
(b) Emisor con P(X)---------Detector con P(X)
Envia un "1" Recibe un "1"
foton(/) -> P(\) -> foton muerto
Envia un "0" Recibe un "0"
foton(\) -> P(\) -> foton(\)
en este caso la convencion sera: si se recibe un foton, consideraremos un
"0", si no se recibe consideraremos un "1". La convencion se puede cambiar,
modificando los polarizadores del receptor. Para los casos en que han
elegido bases distintas: el 50% de las veces se vera un 1 (foton muerto) y
el otro 50% un 0 (foton detectado); esto **independientemente** de que el
emisor enviara un 1 o un 0.
Y ahora empieza la magia. Resulta que hay un espia en medio de nuestro canal
de transmision (que he puesto una fibra, pero podria ser espacio abierto).
Nuestro espia, la unica opcion que tiene de interceptar la comunicacion es
interponer sus polarizadores y detectores. Debera igualmente elegir para
cada bit una base (+ o X) y dependiendo de lo que detecte, debera generar
nuevos fotones para que el receptor no sospeche nada raro. Ahora bien, el no
conoce la base utilizada por el emisor, luego por puro azar el 50% de las
veces elegira la opcion equivocada. En ese 50% de fotones "mal leidos" leera
datos aleatorios. De estos datos aleatorios, en principio la mitad
coincidiran con los verdaderos, y la otra mitad NO. ¿ Que implica esto ? Que
la tasa de errores cuando hay un espia de por medio, sera siempre alrededor
del 25%. En ese caso, la clave habra quedado comprometida.
Esta es la gran diferencia con los sistemas de intercambio de claves
convencionales: se sabe cuando la llave NO ha sido comprometida. En caso de
tasas altas de error, estos se podran deber a un espia o a fallos de nuestro
propio sistema (ya veremos muchos luego).
Es maravilloso el mundo de los experimentos teoricos, pero desgraciadamente,
cuando se trata de implementarlos en un sistema real, empiezan a aparecer
las pegas:
* Para empezar no existen hasta la fecha fuentes de fotones capaces
funcionar de una forma tan sincrona como las que necesitaria nuestro
experimento.
* Hay que evitar enviar mas de un foton por bit, ya que seria
posible para un espia retener uno de ellos y dejar al otro seguir su curso.
En una conjetura mental, dificilmente realizable (no hay que dejar lugar a
la duda), podria almacenarlos hasta que emisor/receptor anunciaran su
eleccion, y utilizar entonces estos datos para hacer las medidas correctas.
* Inevitablemente la fibra optica presenta absorcion, con lo que un
determinado numero de fotones se perdera por el camino. En el caso de la
atmosfera, eligiendo determinados tipos de fotones (determinada luz
infrarroja por ejemplo), la absorcion es muy baja, pero existen fenomenos
atmosfericos capaces de modificar la polarizacion de los fotones.
* La efectividad de los detectores de fotones dista mucho,
muchisimo de ser perfecta. Por un lado algunos fotones no se van a detectar,
y otros se van a detectar aunque no existan. Esto engrosara la tasa de
errores, que a pesar de ello es posible mantenerla todavia lejos de ese 25%.
¿ Y que es lo que se ha conseguido en experimentos reales ? Pues los
progresos son ciertamente positivos, aunque se trate unicamente de
prototipos.
En fibra, recientemente se ha conseguido una comunicacion a lo largo de 48
Kms, que ya es una distancia utilizable. Mas importante parece la
aplicacion en comunicaciones al aire libre, especialmente comunicaciones por
satelite. El gran problema es lo "ruidoso" que es el sol. Por ello tan solo
se han publicado transmisiones en torno a 500 m y de forma nocturna. Es de
esperar, no obstante, que las perturbaciones atmosfericas en un enlace
tierra-tierra se minimizaran bastante en un enlace tierra-satelite, ya que
la parte alta de la atmosfera presenta condiciones mas estable.
Veremos, veremos ...
SiuL+Hacky
*EOF*