Publicado por vez primera en: Kriptópolis, 25 julio 2.001
Cifrando y firmando: pequeños grandes detalles
Arturo Quirantes Sierra
Un tal Don Davis, de Shym
Technology, ha tenido la ocurrencia de hacernos creer lo siguiente: existe un
fallo de implementación que permite re-enviar un mensaje cifrado y firmado
digitalmente, de tal forma que el destinatario final crea erróneamente que el
mensaje ha sido escrito para él. Es decir, podemos engañar a una persona con
respecto a la procedencia de un mensaje. Este fallo, según Davis, está latente
nada menos que en los protocolos de cifrado y firmado digital S/MIME, PKCS#7,
MOSS, PEM, PGP y XML ... y no incluyó más porque no se le ocurrió. El problema
de este "hoax" es que es cierto. Davis tiene razón, y sus afirmaciones están
adecuadamente demostradas y documentadas. Ningún protocolo o programa de los
mencionados nos protege contra el fallo de "remisión subrepticia".
Pero no corran a desinstalar sus programas de cifrado. El
problema de la remisión subrepticia no es el fin del comercio electrónico ni de
las comunicaciones digitales seguras. En realidad, no es tanto un fallo (flaw)
como una pillería inteligente que igual se puede dar en el mundo digital. Nos
permite ilustrar un principio muchas veces olvidado: la tecnología ayuda a
resolver muchos problemas, pero no es una varita mágica.
El hecho de cifrar y firmar digitalmente nos asegura tanto
la confidencialidad como la autenticidad. Si yo cifro un e-mail, tengo
garantizado que nadie más que el remitente que comparte la clave pueda leerlo.
Si además lo firmo, garantizo que yo he escrito ese mensaje. El problema es que
no tengo garantizado quién envió el mensaje. Por lo general, apelamos a la
lógica. Se supone que, si yo cifro y firmo un mensaje, también lo enviaré, ¿no?
Pues no siempre. Y para demostrarlo, usaremos un ejemplo
de carne y hueso (o mejor dicho, de papel y bolígrafo). Supongamos dos
empleados, Benito y Manolo, que trabajan en la misma empresa. Benito trabaja
duro y no se queja nunca. Por contra, Manolo no da un palo al agua, no sabe ni
hacer la o con un canuto y es la desesperación de su jefe Joaquín. Por ello,
éste decide despedirle. Para comunicárselo, el jefe escribe "Estás despedido.",
firma la carta y se la envía a Manolo por sobre cerrado. Éste recibe el sobre y
abre la carta, pero cae en la cuenta de que en ningún lugar de la carta se hace
referencia a él. Así que se le ocurre la siguiente idea: coge la carta, la
introduce en otro sobre, lo cierra ... y se lo envía a su compañero Benito.
Esto es perfectamente aplicable en el mundo digital. Los
protocolos de firmado y cifrado usan el sistema denominado "firmar y cifrar": es
decir, se firma el mensaje y después el conjunto se cifra, en ese orden. Ambos
pasos son independientes. Eso significa que podemos jugar con el cifrado y la
firma igual que en el caso de papel. Cuando el jefe envía el e-mail, primero lo
firma y después lo cifra. Manolo, al recibirlo, comienza por descifrarlo gracias
a su clave pública. Pero una vez que lo ha leído, puede remitir el mensaje a
cualquier persona. Puede hacerlo "en claro" o bien cifrando con la clave pública
del destinatario, en este caso el pobre Benito. Éste descifra el mensaje y lee
un texto que dice "Estás despedido". Ha de ser una broma, piensa Benito, así que
verifica la firma digital adosada al mensaje ... y comprueba aterrado que es la
de su jefe, y que es correcta. Nadie ha podido recrear esa firma ni alterar el
mensaje, de manera que el pobre Benito se ve en la cola del paro.
¿Representa esto un fallo? Tal vez, pero no es ningún "bug"
de programación. Es simplemente resultado de una presunción incorrecta: que la
persona que ha cifrado y firmado el mensaje es la misma que nos ha enviado el
mensaje. Pero muy a menudo nos olvidamos que ese mensaje que firmamos
digitalmente puede ir más allá de la bandeja de entrada del destinatario. Puede
que Cameron Díaz, al firmar el mensaje "te deseo, no puedo vivir sin tí, siempre
tuya Cameron", pretendiese que solamente su novio lo leyese. Pero si éste fuera
un guasón, podría remitirlo a mi propio buzón. Y a ver cómo le demuestro a mi
esposa que yo soy bueno e inocente. Peor aún, algunos países hacen al firmante
responsable legal de cualquier uso que se haga de su firma. De manera que el
jefe de Benito podría verse con una demanda de éste por despido improcedente...
y esperemos que Manolo no haya remitido copias a los otros quinientos empleados
de la fábrica.
¿Cómo puede evitarse este problema? Hay muchas formas. Por
ejemplo, el jefe podría firmar la carta, introducirla en sobre cerrado y firmar
también el sobre. Es decir, un proceso de firma-cifrado-firma. También podría
quitarse de preocupaciones, simplemente, detallando en su mensaje a quién va
dirigido. Un simple "Manolo, estás despedido" sería suficiente.
Más allá del nivel de usuario, sería deseable que los
procesos de cifrado y firma digital estuviesen interconectados, de forma que no
se pudiese descifrar y re-cifrar un mensaje firmado sin que tal alteración fuese
detectable. El problema es que esta solución conllevaría graves problemas de
programación. En la actualidad, los programadores que desean introducir opciones
de cifrado/firmado en sus aplicaciones echan mano de paquetes tipo API, en una
especie de "tome este producto, caliente cinco minutos en el microondas y listo
para servir". Una interconexión entre cifrado y firmado complicaría las cosas en
muchos sistemas donde la seguridad no es un fin en sí mismo, sino simplemente
una opción.
En cualquier caso, esta pillería de la remisión
subrepticia es un buen ejemplo de que para encontar fallos en un sistema no hay
que buscar desbordamientos de búfer o sofisticados errores de bajo nivel. En
palabras de un experto en cifrado, "no es un fallo de cifrado, es un fallo de
ingeniería". Es como decir que un sistema de acceso controlado es inseguro
porque el usuario se deja la contraseña apuntada encima de la mesa. Los "bugs"
cometidos por usuarios humanos sobrepasan en imaginación e ingenuidad cualquier
fallo que podamos esperar del resto del sistema. Así que Cameron, cielo, no me
firmes más mensajes, que mi esposa no va a tragarse dos veces lo de la remisión
subrepticia.
© Arturo Quirantes Sierra. Algunos derechos
reservados según Licencia Creative Commons