En los últimos años los usuarios de Unix se han concienciado cada vez más
con la seguridad de los datos que poseen en sus sistemas, especialmente de la
privacidad de los mismos: un sistema fiable ha de pasar necesariamente por un
método de almacenamiento seguro; por supuesto, esta preocupación de los
usuarios automáticamente se traduce en más investigaciones y nuevos
desarrollos en este campo de la seguridad. En este capítulo hemos analizado
las ventajas, las desventajas y el funcionamiento de algunos de estos sistemas,
desde el modelo clásico y habitual en Unix hasta las últimas herramientas
de análisis forense y su problemática, pasando por aplicaciones tan simples
como crypt o tan complejas como PGP; aunque se ha pretendido dar
una visión general de lo que se entiende por un almacenamiento seguro en
Unix, es imposible tratar todas las implementaciones de sistemas que incrementan
la seguridad en la actualidad. No obstante, antes de finalizar este
capítulo hemos preferido comentar algunas de las características de
sistemas que se han hecho ya, se están haciendo, o previsiblemente se harán
en un futuro no muy lejano un hueco importante entre los mecanismos de
almacenamiento seguro en Unix.
No podemos finalizar sin hablar del sistema CFS (Cryptographic
File System), del experto en seguridad Matt Blaze ([Bla93]), que se
ha convertido en el sistema más utilizado en entornos donde coexisten
diferentes clones de Unix (ya hemos comentado el problema de TCFS y su
dependencia con Linux). Provee de servicios de cifrado a cualquier sistema de
ficheros habitual en Unix, NFS incluido, utilizando una combinación de varios
modos de trabajo de DES que son lo suficientemente ligeros como para no
sobrecargar demasiado a una máquina normal pero lo suficientemente pesados
como para proveer de un nivel aceptable de seguridad. Los usuarios no
tienen más que asociar una clave a los directorios a proteger para
que CFS cifre y descifre sus contenidos de forma transparente utilizando dicha
clave; el texto en claro de los mismos nunca se almacena en un dispositivo o
se transmite a través de la red, y los procedimientos de copia de seguridad
en la máquina no se ven afectados por el uso de CFS. Todo el proceso se
realiza en el espacio de usuario (a diferencia de TCFS, que operaba dentro del
kernel de Linux) utilizando principalmente el demonio cfsd en
la máquina donde se encuentren los sistemas cifrados.
Peter Gutmann, del que ya hemos hablado en este capítulo, desarrolló
en la primera mitad de los noventa SFS (Secure File System). Este
modelo de almacenamiento seguro se diseñó originalmente para sistemas
MS-DOS o Windows, donde funciona como un manejador de dispositivos más, aunque
en la actualidad existen también versiones para Windows 95, Windows NT y OS/2.
No está portado a Unix, pero aquí lo citamos porque existe un sistema de
almacenamiento seguro para Unix denominado también Secure File System,
SFS, pero no tiene nada que ver con el original de Gutmann. El SFS de Unix
funciona de una forma similar a CFS pero utilizando el criptosistema Blowfish y una versión minimalista de RSA en lugar de DES; no vamos a entrar
en detalles de este software principalmente porque su uso en entornos
Unix no está ni de lejos tan extendido como el de CFS.
La criptografía es la herramienta principal utilizada en la mayoría
de los sistemas de almacenamiento seguro; sin embargo, todos ellos plantean un
grave problema: toda su seguridad reside en la clave de cifrado, de forma que el
usuario se encuentra indefenso ante métodos legales - o ilegales - que le
puedan obligar a desvelar esta clave una vez que se ha determinado la presencia
de información cifrada en un dispositivo de almacenamiento. Esto, que nos
puede parecer algo exagerado, no lo es en absoluto: todos los expertos en
criptografía coinciden en afirmar que los métodos de ataque más
efectivos contra un criptosistema no son los efectuados contra el algoritmo,
sino contra las personas (chantaje, amenazas, presiones judiciales...).
Intentando dar solución a este problema, durante los últimos años de
la década de los noventa, prestigiosos investigadores de la talla de Roger
Needham, Ross Anderson o Adi Shamir ([ANS98]) han establecido las bases
de sistemas seguros basados en modelos esteganográficos, con desarrollos
especialmente importantes sobre plataformas Linux ([MK99],
[vSS98]...). La disponibilidad
del código fuente completo de este clon de Unix unida a su política de
desarrollo ha propiciado enormemente estos avances, hasta el punto de que
existen en la actualidad sistemas de ficheros basados en esteganografía que
se insertan en el kernel igual que lo hace un sistema normal como ufs o nfs, o que se añaden a ext2 proporcionando funciones de
cifrado.
La idea es sencilla: si por ejemplo tenemos cinco archivos cifrados con una
aplicación como PGP, cualquier atacante con acceso al dispositivo y
que haga unas operaciones sobre ficheros puede determinar que tenemos
exactamente esos archivos cifrados; con esta información, su labor para
obtener la información está muy clara: se ha de limitar a obtener las
cinco claves privadas usadas para cifrar los ficheros. Conocer el número
exacto es de una ayuda incalculable para el atacante. Con los sistemas
esteganográficos, a pesar de que es imposible ocultar la existencia de
cierta información cifrada, alguien que la inspeccione no va a poder
determinar si la clave de descifrado que el propietario le ha proporcionado
otorga acceso a toda la información o sólo a una parte de la misma. Un
atacante que no posea todas las claves no va a poder descifrar todos los
ficheros, y lo más importante: no va a poder saber ni siquiera si otros
archivos aparte de aquellos a los que ha accedido existen o no, aunque posea un
acceso total al software y al soporte físico. Para conseguir esto
se utiliza una propiedad de ciertos mecanismos de seguridad denominada plausible deniability, algo que se vendría a traducir como `negación
creible'; dicha propiedad permitiría a un usuario negar de forma creible
que en un dispositivo exista más información cifrada de la que ya se ha
podido descubrir, o que cierta transacción se haya llevado a cabo. Volviendo
al ejemplo de PGP, el usuario podría revelar la clave de cifrado
de sólo uno o dos de los archivos, aquellos que no considere vitales,
ocultando las claves y la existencia del resto sin que el atacante sea capaz
de determinar que la información accedida no es toda la existente.
© 2002 Antonio Villalón Huerta