TCFS es un software desarrollado en la Universidad de Salerno y
disponible para sistemas Linux que proporciona una solución al problema de la
privacidad en sistemas de ficheros distribuidos como NFS: típicamente en
estos entornos las comunicaciones se realizan en texto claro, con la enorme
amenaza a la seguridad que esto implica. TCFS almacena los ficheros cifrados,
y son pasados a texto claro antes de ser leídos; todo el proceso se
realiza en la máquina cliente, por lo que las claves nunca son enviadas a
través de la red.
La principal diferencia de TCFS con respecto a otros sistemas de ficheros
cifrados como CFS es que, mientras que éstos operan a nivel de aplicación,
TCFS lo hace a nivel de núcleo, consiguiendo así una mayor transparencia
y seguridad. Obviamente esto tiene un grave inconveniente: TCFS sólo está
diseñado para funcionar dentro del núcleo de sistemas Linux, por lo que si
nuestra red de Unix utiliza otro clon del sistema operativo, no podremos
utilizar TCFS correctamente. No obstante, esta gran integración de los
servicios de cifrado en el sistema de los ficheros hace que el modelo sea
transparente al usuario final.
Para utilizar TCFS necesitamos que la máquina que exporta directorios
vía NFS ejecute el demonio xattrd; por su parte, los clientes han de
ejecutar un núcleo compilado con soporte para TCFS. Además, el
administrador de la máquina cliente ha de autorizar a los
usuarios a que utilicen TCFS, generando una clave que cada uno de ellos
utilizará para trabajar con los ficheros cifrados; esto se consigue mediante
tcfsgenkey, que genera una entrada para cada usuario en
/etc/tcfspasswd:
rosita:~# tcfsgenkey
login: toni
password:
now we'll generate the des key.
press 10 keys:**********
Ok.
rosita:~# cat /etc/tcfspasswd
toni:2rCmyOUsM5IA=
rosita:~#
Una vez que un usuario tiene una entrada en /etc/tcfspasswd con su clave
ya puede acceder a ficheros cifrados; para ello, en primer lugar utilizará
tcfslogin para insertar su clave en el kernel, tras lo cual puede
ejecutar la variante de mount distribuida con TCFS para montar los
sistemas que el servidor exporta. Sobre los archivos de estos sistemas, se
utiliza la variante de chattr de TCFS para activar o desactivar el
atributo X (podemos visualizar los atributos de un fichero con lsattr), que indica que se trata de archivos que necesitan al demonio de TCFS
para trabajar sobre ellos (cifrando o descifrando). Finalmente, antes de
abandonar una sesión se ha de ejecutar tcfslogout, cuya función es
eliminar la clave del kernel de Linux. También es necesaria una
variante de passwd, proporcionada con TCFS, que regenera las claves
de acceso a archivos cifrados cuando un usuario cambia su password.
TCFS utiliza uno de los cuatro modos de funcionamiento que ofrece el
estándar DES ([oS80]) denominado CBC (Cipher Block Chaining).
El principal problema de este modelo (aparte de la potencial inseguridad de
DES) es la facilidad para insertar información al final del fichero cifrado,
por lo que es indispensable recurrir a estructuras que permitan detectar el
final real de cada archivo; otro problema, menos peligroso a priori, es
la repetición de patrones en archivos que ocupen más de 34 Gigabytes
(aproximadamente), que puede conducir, aunque es poco probable, a un
criptoanálisis exitoso en base a estas repeticiones. Más peligroso es el
uso del mismo password de entrada al sistema como clave de cifrado
utilizando la función resumen MD5 (el peligro no proviene del uso de esta
función hash, sino de la clave del usuario); previsiblemente en futuras
versiones de TCFS se utilizarán passphrases similares a las de PGP para
descifrar y descifrar.
© 2002 Antonio Villalón Huerta