Se presenta aquí una nueva manera
de mantener la confidencialidad, interesante por el actual debate
político que tiende a regular la criptografía mediante
el polémico depósito de claves (key escrow). Este
tipo de restricciones cierra una puerta pero abren dos ventanas:
la esteganografía y 'Chaffing & Winnowing'.
Explicaremos como funciona un sistema
de confidencialidad basado en aventar. El proceso para el emisor
consta de dos partes: autentificación y empajado
(chaffing). El receptor para leer el mensaje original debe ser
capaz de separar la paja. Intentaremos dejar claro en cada paso
que no se está utilizando criptografía de ninguna
manera.
El emisor divide el mensaje en paquetes
y autentifica cada uno de ellos utilizando una clave secreta de
autentificación. Es decir que añade a cada paquete
un MAC (código de autentificación de mensajes) calculado
en función de los contenidos de dicho paquete y la clave
utilizando un algoritmo estándar como HMAC-SHA1.
En estos momentos el mensaje esta todavía
en claro, NO se ha encriptado. Hay que observar que los programas
que simplemente autentifican mensajes añadiendo un MAC
pueden exportarse libremente pues no están pensados para
la encriptación.
La clave de autentificación compartida
por emisor y receptor permite determinar que un paquete es auténtico
recalculando su MAC y comparándolo con el recibido. Si
la comparación falla, el paquete y su MAC se descartan
automáticamente. La clave debería acordarse previamente,
bien a través de un medio considerado seguro (en persona?)
bien con una técnica específica de intercambio de
claves como la de Diffie-Hellman por ejemplo.
Es típico que cada paquete contenga
también un número de serie que ayuda al receptor
a eliminar paquetes duplicados y a ordenar correctamente los recibidos
para obtener el fichero inicial. El MAC de cada uno es función
de la clave y de su contenido como queda dicho. Un ejemplo de
una serie de paquetes podría ser:
En este caso,
por cada número de serie hay un paquete bueno (grano) y otro
malo (paja).
Para obtener el mensaje correcto, el
receptor simplemente descarta los paquetes de paja reteniendo
los de grano. Pero de todas formas esto es lo que siempre hace
el receptor en una red, rechazando los paquetes recibidos con
MACs incorrectos. Recibir uno de estos paquetes podría
posiblemente disparar más de una respuesta del receptor,
pero habitualmente la detección de paquetes omitidos se
realiza a un nivel diferente de protocolo más que en el
momento de recibir un paquete incorrecto, ya que podría
haber sido transmitido más de una vez y haberse recibido
bien ya.
Llamemos empajar al proceso de añadir
paja a una serie de paquetes. Como antes aventar será el
proceso de descartar los MACs incorrectos. Llamaremos a los paquetes
buenos 'trigo' por seguir con la metáfora.
¿Proporciona empajar una buena
confidencialidad? Depende de como el mensaje original se divida
en paquetes y como se agregue la paja. Esta claro que el problema
para el adversario está en distinguir el trigo de la paja
y NO en romper un esquema criptográfico porque no realizamos
ningún cifrado y sin embargo obtenemos confidencialidad,
igual que con la esteganografía.
Si el adversario ve un solo paquete con
un número de serie dado, entonces este paquete es probablemente
trigo y no paja. De esta forma un buen proceso de empajado añadirá
al menos un paquete de paja por cada número de serie que
aparezca en el mensaje. También podría distinguirlos
si el trigo contiene palabras coherentes y la paja sólo
bits aleatorios, así sería muy sencillo aventar
el trigo.
Ahora, y en el extremo opuesto, si cada
paquete de trigo contiene un solo bit, y hay un paquete de paja
con el mismo número de serie y el bit complementario, el
adversario tendrá ante sí una tarea prácticamente
imposible. Distinguir el trigo de la paja requeriría romper
el algoritmo del MAC y/o conocer la clave secreta. Con un buen
algoritmo de autentificación la habilidad del adversario
para aventar es cero, perfecta confidencialidad.
Sumamos que el mensaje original se divide
en paquetes de 1 bit, cada uno de ellos con su número de
serie y su MAC. Hay una obvia ineficiencia aquí porque
el tamaño del mensaje podría multiplicarse por 200
si asumimos por ejemplo que los números de serie son de
32 bits y el MAC de 64.
El proceso de empajar también
es fácil: se crea un paquete con el número de serie
que sea e incluyendo 64 bits aleatorios. Este valor de MAC es
casi con total probabilidad incorrecto, solo será bueno
en un caso de cada 264, despreciable en la práctica. Es
especialmente intrigante observar que para empajar no se necesita
conocer la clave de autentificación, basta crear falsos
paquetes con MACs aleatorios.
Imaginemos entonces el siguiente escenario:
Alicia se comunica con Blas usando un protocolo estándar
basado en paquetes. Cada paquete se autentifica con un MAC creado
usando una clave que sólo ambos conocen. Además
supongamos que cada paquete contiene solo un bit de mensaje porque
el programa de comunicaciones lo escribió la propia Alicia
y contiene ese bug.
Hasta ahora Alicia y Blas no están
encriptando nada y usan técnicas estándar para intercambiar
mensajes que no son consideradas criptografía y no están
sujetas a controles de exportación. Alicia y Blas no tienen
intención de preservar la confidencialidad de sus mensajes
de un mirón.
Vale, ahora los paquetes de Alicia para Blas son enrutados a
través del ordenador del administrador Carlos, que por
alguna razón añade paquetes de paja a la serie.
El software de Alicia y Blas no ha sido modificado para conseguir
esta confidencialidad.
Carlos no sabe la clave de Alicia y Blas,
que ni siquiera se preocupaban por unas comunicaciones confidenciales.
Carlos no usa criptografía y no sabe ninguna clave y sin
embargo está proporcionando una gran confidencialidad a
la comunicación. No hay ninguna información que
Carlos pueda dar a las agencias gubernamentales.
En una variación de la escena
anterior, Carlos no está añadiendo paja sino simplemente
multiplexando el flujo de paquetes de Alicia para Blas con otro
flujo de paquetes (digamos de David a Elena). Para Blas, el flujo
de paquetes de David a Elena parece paja y se descarta. Para Elena
es al contrario y ella ignora los paquetes entre Alicia y Blas.
Lo que es trigo para un par de comunicantes es paja para los otros
dos y viceversa. Una situación así puede surgir
cuando Carlos está administrando un canal de transmisiones
vía satélite, aquí ambas partes reciben un
flujo de paquetes entremezclados y si la única forma de
distinguirlos es por la corrección de los MACs, un adversario
lo tendría muy difícil para separarlos.
En situaciones como las descritas, el
método obvio para las fuerzas gubernamentales sería
exigir tener acceso a la clave secreta de autentificación
que comparten Alicia y Blas. Sin embargo ya hace mucho que el
gobierno (de EE.UU.) llego al acuerdo de que no deseaban tener
dichas claves. Tener acceso a esas claves permitiría al
gobierno falsear paquetes para cualquier par de comunicantes.
Esto va mucho más allá que acceder a comunicaciones
encriptadas, pues la pérdida de dichas claves podría
causar desastres masivos en la estructura e integridad de todo
Internet, permitiría a hackers maliciosos no solo fisgar
mensajes electrónicos sino controlar sistemas eléctricos
o aeropuertos. El poder para autentificar es el poder para controlar,
dar todo el poder de autentificar a los gobiernos está
más allá de lo razonable.
Empujar y aventar guarda algún
parecido con la esteganografía. Recordemos la técnica
esteganográfica de mandar una carta con contenido inocuo
cuyas letras están escritas en dos fuentes diferentes aunque
muy similares. Borrando todas letras del mismo tipo, el mensaje
oculto escrito con la otra fuente permanece. La seguridad de esta
técnica como la mayoría de las esteganográficas
se basa en la asunción de que el adversario no observará
la diferencia. Con la técnica 'chaffing & winnowing'
el adversario puede saber o sospechar que hay dos clases de paquetes,
pero es incapaz de distinguirlos sin la clave de autentificación.
Empajar y aventar también guarda
parecido con el cifrado. De hecho el proceso de autentificar paquetes
y añadir paja consigue confidencialidad y por tanto constituye
criptografía para cualquiera que use una definición
tan amplia que incluya cualquier forma de asegurar la confidencialidad.
Sin embargo esto sería no caer en la cuenta de la especial
estructura: una clave no de cifrado sino de autentificación
para el primer paso, seguido por una fase de no-encriptado y sin
clave. Ya que el segundo paso lo puede realizar cualquiera (Carlos
en nuestro ejemplo) y ya que el primero puede ser realizado por
muchas otras buenas razones, estamos en el caso de conseguir una
fuerte confidencialidad sin el conocimiento ni el permiso del
emisor original.
Notemos que el uso de MACs puede ser
reemplazado por firmas digitales, pero no firmas normales porque
entonces todos podrían verificarla distinguiendo el trigo
de la paja. Las firmas de Chaum que sólo pueden ser verificadas
por las personas designadas por el firmante servirían bien.
Otra idea muy interesante es que el flujo
de paquetes contenga más de una subsucesión de paquetes
de trigo además de los paquetes de paja. Cada subsucesión
de trigo podría ser reconocida por separado usando una
clave diferente. La consecuencia.. si el gobierno forzase la entrega
de una clave de autentificación para poder identificar
el trigo, el emisor podría ceder una de tales claves que
identifica una subsucesión que contenga un mensaje inocuo,
dejando el resto como paja. Esto recuerda la técnica de
'deniable encryption' propuesta por Canetti et al (1997).