El cifrado plausiblemente negable o cómo revelar una clave sin revelarla

Gonzalo Álvarez Marañón    11 enero, 2021
El cifrado plausiblemente negable o cómo revelar una clave sin revelarla

Cuando la policía secreta detuvo a Andrea en el control del aeropuerto, ella pensó que era un mero trámite reservado a todos los ciudadanos extranjeros. Cuando registraron su equipaje y encontraron el disco USB con todos los nombres y direcciones de los disidentes políticos a los que estaba ayudando a huir del país, se sintió tranquila: el disco estaba cifrado con una clave AES de 256 bits, ni con un supercomputador lo descifrarían en mil millones de años. Cuando la sujetaron desnuda a una parrilla y recibió la primera descarga de 1.000 voltios, sus nervios y músculos se convulsionaron en un estallido de pánico. ¿Cuánto tiempo podría aguantar antes de revelar la clave secreta? Si ella hablaba, ¿cuántas personas más serían torturadas y asesinadas? ¿De qué sirve la criptografía si pueden hacerte revelar la clave?

Efectivamente, ni el mejor algoritmo de cifrado del mundo resistirá al criptoanálisis de manguera de goma: ¿para qué molestarse en atacar matemáticamente un algoritmo de cifrado, cuando mediante extorsión, soborno o tortura pueden extraerse las claves de las personas que lo utilizan o administran?

Sería maravilloso poder cifrar la información de manera que, si revelas bajo coacción la clave de cifrado, no se descifre con ella la información sensible original, sino un señuelo. Por fortuna, esta asombrosa forma de criptografía existe: se trata del cifrado plausiblemente negable (plausibly deniable encryption).

El cifrado plausiblemente negable para descifrar un mensaje u otro en función del escenario

Como bien sabes, un algoritmo de cifrado (E) recibe como entradas un mensaje sensible a proteger (el texto claro, m) y una corta ristra aleatoria de bits (la clave, k) y produce como salida un conjunto de bits de aspecto aleatorio (el texto cifrado, c) de aproximadamente la misma longitud que el mensaje:

c = Ek( m )

El mismo mensaje m cifrado con la misma clave k produce el mismo texto cifrado c. Por simplificar, en este artículo dejaremos de lado el cifrado con relleno aleatorio que evita precisamente este determinismo. Recíprocamente, el mismo texto cifrado c descifrado con la misma clave k, produce el mismo texto claro m usando el correspondiente algoritmo de descifrado (D):

m = Dk( Ek( m ) )

Es en este sentido que se afirma que el cifrado compromete: una vez que has cifrado un texto m con una clave k y compartido el texto cifrado c, los tres valores quedan indisolublemente ligados. Si bajo coacción revelas k, a partir de c se obtendrá el texto original m, perfectamente legible por todos. Si en vez de revelar la clave verdadera k, te inventas cualquier valor k’, entonces el resultado de descifrar c con ella será un texto aleatorio y, por tanto, ilegible, por lo que todos sabrán que no confesaste la auténtica clave: k. De manera que podrán seguir coaccionándote hasta que reveles la verdadera k.

Es más, el mero hecho de almacenar o transmitir mensajes cifrados ya es de por sí incriminatorio en según qué escenarios. A un gobierno represivo, a un criminal sanguinario o a una pareja celosa, poseer o enviar información cifrada le hará sospechar que algo tienes que ocultar. El cifrado protege la confidencialidad del mensaje, pero no oculta su existencia. ¿Cómo salir del paso si un adversario intercepta tu información cifrada y exige que la descifres? Ni quieres revelar la información cifrada, ni puedes descifrarlo con una clave errónea que devuelva un texto ilegible.

El objetivo del cifrado plausiblemente negable es que el mismo texto cifrado c pueda descifrarse con dos claves distintas, k1 y k2, resultando en dos textos claros diferentes, m1 y m2, ambos perfectamente legibles, pero con un giro fascinante: m1 es el texto sensible cuya confidencialidad realmente deseas proteger, mientras que m2 es un texto legible y plausible, que actúa como señuelo, y que puedes mostrar alegremente para satisfacción del adversario. ¡Ambos creados a partir del mismo c!

Cómo conseguir un cifrado negable rudimentario mediante el cifrado XOR

Si crees que el cifrado plausiblemente negable es cosa de magia, verás cómo puede lograrse una versión rudimentaria mediante un sencillo ejemplo basado en la libreta de un solo uso. Basta con utilizar la operación XOR, también conocida como suma módulo 2, que representaremos por (+). En este algoritmo, se cifra y descifra de la siguiente manera:

Cifrado à c = m (+) k

Descifrado à m = c (+) k = m (+) k (+) k = m

ya que el XOR de un valor consigo mismo es igual a 0.

Partimos de dos mensajes, el sensible m1 y el señuelo m2, y de una clave secreta, k1, tan larga como el mensaje más largo. El texto cifrado c se calcula como:

c = m1 (+) k1

La clave k2 se calcula como

k2 = c (+) m2

Si c se descifra con k1 se obtiene m1:

c (+) k1 = m1 (+) k1 (+) k1 = m1

Mientras que si c se descifra con k2 se obtiene m2:

c (+) k2 = c (+) c (+) m2 = m2

¡El cifrado negable funciona! El adversario no tiene forma de saber si m2 era el mensaje auténtico o una falsificación. Con suerte, quedará satisfecho y dejará en paz a la víctima. Obviamente, se pueden calcular tantas claves y mensajes alternativos a partir de c como se desee.

Otro escenario de uso del cifrado negable que nada tiene que ver con la protección ante la coacción es enviar diferentes instrucciones a destinatarios distintos, pero ¡todas ellas contenidas en el mismo texto cifrado! Todos los destinatarios reciben abiertamente el mismo texto cifrado c. Sin embargo, a cada destinatario se entrega una clave ki distinta que descifrará un mensaje mi distinto a partir del mismo c. El destinatario 1 obtendrá el mensaje m1 si descifra c con la clave k1, el destinatario 2 obtendrá el mensaje m2 si descifra c con la clave k2 y así sucesivamente. Ninguno podrá leer el mensaje del otro. Es más, ni sospechará de su existencia.

Por supuesto, esta versión resultaría impráctica, ya que requiere claves tan largas como los propios mensajes. Así que los criptógrafos tuvieron que idear algoritmos más eficientes.

La mejora incremental del cifrado negable a lo largo de los años

El primer algoritmo operativo de cifrado negable fue propuesto en 1997 por R. Canetti, C. Dwork, M. Naor y R. Ostrovsky, basado en la siguiente ingeniosa idea: imagina que el emisor (Alice) y el receptor (Bob) han acordado un cierto método que permite a Alice elegir en algún dominio un elemento o bien de forma totalmente aleatoria o bien de forma pseudoaleatoria, de manera que Bob pueda distinguir la elección aleatoria de la pseudoaleatoria. Cuando Alice quiere transmitir un 1, envía una cadena pseudoaleatoria; mientras que para transmitir un 0, envía una cadena verdaderamente aleatoria. Dado que el adversario no puede distinguir el elemento pseudoaleatorio del aleatorio, Alice puede fingir haber enviado cualquier mensaje.

Con los años, se han ido proponiendo numerosos esquemas de cifrado negable, tanto de clave pública como de clave secreta. Estos últimos pueden usarse para cifrar grandes volúmenes de datos, como por ejemplo discos duros completos. Un buen exponente de estos sistemas de cifrado negable aplicado a discos es la herramienta multiplataforma Truecrypt, con sus volúmenes ocultos dentro de volúmenes cifrados. Se basó en el trabajo pionero desarrollado en 1997 por los criptopunks Julian Assange (sí, el de Wikileaks) y Ralf Weinmann, bautizado precisamente Rubberhose File System (sistema de archivos de manguera de goma), en referencia al mencionado método de criptoanálisis. Se han lanzado también herramientas para cifrado negable del contenido de smartphones con Android, como por ejemplo Mobiflage o MobiCeal. La app BestCrypt proporciona la mayor cobertura, ya que funciona en Windows, macOS, Linux y Android.

Cuidado con el cifrado negable, que puede delatarte

Con todo, el cifrado negable no está exento de riesgos muy serios. Si el adversario está suficientemente versado en criptografía, la mera sospecha de que estés usando un sistema de cifrado negable le motivará a seguir extrayéndote claves. Supón que has usado Truecrypt para cifrar la información de tu disco, dato que no puedes ocultar a una investigación forense digital básica. ¿Se contentará tu adversario con la primera clave que le reveles? Posiblemente te seguirá coaccionando, con manguera de goma u otros medios, para que reveles una segunda clave. Y una tercera. Y una cuarta… ¿Cómo sabrá el adversario que te ha extraído la última clave y no ocultas aún otra más? El cifrado negable puede volverse contra ti en un escenario de criptoanálisis de manguera de goma, porque podría incitar a no parar nunca.

En definitiva, el cifrado plausiblemente negable es otra herramienta más que la criptografía pone al servicio de las libertades y derechos civiles. Eso sí, en circunstancias de peligro real de coacción, debe usarse con precaución.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *