TrueCrypt en Linux (III): Gentoo

Esta guía es una especie de traducción, ampliación o refrito de HOWTO: Install TrueCrypt and encrypt your firefox/TB files, complementada con documentación que he ido recopilando de las webs que menciono en la sección de referencias.

Esta guía os enseñará a:

1. Instalar TrueCrypt en Gentoo (la diferencia con otras distribuciones es mínima).
2. Crear y usar un volumen cifrado.
3. Utilizar algunos scripts para automatizar el montado y desmontado del volumen cifrado.

TrueCrypt

TrueCrypt es un software de cifrado que mediante el uso de volúmenes cifrados nos permite cifrar nuestros datos en un dispositivo de almacenamiento de tal forma que no puedan ser leídos por nadie que no tenga la contraseña o la contraseña y el archivo de claves. Un volumen cifrado puede ser un archivo contenedor especial que crearemos mediante TrueCrypt o puede ser una partición de disco u otro tipo de almacenamiento (disco externo USB, CD, pen USB, etc).

TrueCrypt cifra y descifra los datos al vuelo; esto es, cuando se lee de un volumen cifrado o se escribe a un volumen cifrado, las operaciones criptográficas se realizan en la RAM. TrueCrypt nunca guarda ningún dato sin cifrar en el disco. Todo el sistema de archivos de un volumen cifrado está cifrado (nombres de archivos y de directorios, el contenido de los archivos, espacio libre, meta datos, etc). TrueCrypt nunca guarda la contraseña del volumen cifrado en el disco.

Una vez montado el volumen cifrado, el acceso a los archivos para el usuario es completamente transparente, es decir, todas las operaciones con archivos se realizan como si el volumen cifrado fuese un disco normal. Una vez desmontado el volumen cifrado, los datos son completamente inaccesibles (están cifrados en el interior del contenedor).

Ventajas de TrueCrypt

1. Es pequeño y fácil de instalar.

2. Usa los algoritmos de cifrado más recientes. Soporta AES, TWOFISH, SERPENT y otros. Además, y también importante, soporta el nuevo modo de operación LRW, que ha sido especialmente diseñado con los requerimientos de cifrado de disco en mente. Es mucho más apropiado para este objetivo que los modos usuales, como ECB, CBC o COUNTER, que usan otras herramientas.

3. Soporta cifrado de "negación razonable" mediante volúmenes ocultos. Mediante la ocultación de un volumen cifrado en un volumen cifrado contenedor, si nos viésemos forzados a revelar la contraseña del volumen cifrado podríamos revelar sólo la contraseña del volumen cifrado contenedor y así los datos importantes que estuvieran en el volumen oculto no se verían revelados.

4. TrueCrypt está disponible tanto en Windows como en Linux. Si creas un contenedor TrueCrypt que contenga un volumen FAT en un pen USB podrás montarlo usando TrueCrypt tanto en Windows como en Linux.

5. TrueCrypt además del uso de archivos como volúmenes contenedores, permite cifrar particiones de disco, discos externos USB, DVD's, CD's, etc.

Instalación

Requisitos del Kernel

TrueCrypt necesita un kernel 2.6.5 o superior, con las siguientes opciones seleccionadas como módulo o integradas en el kernel:

Device Mapper

Device Drivers --> Multi-device support (RAID and LVM) ---> 
[*] Multiple devices driver support (RAID and LVM)
<*> Device mapper support
<*> Crypt target support

Algoritmos de cifrado

Cryptographic options  --->
<*> AES cipher algorithims
<*> DES and Triple DES EDE cipher algorithms
<*> Blowfish cipher algorithm
<*> Twofish cipher algorithm
<*> Serpent cipher algorithm

Loop Device

Device Drivers -->  Block Devices -->
<*> Loopback device support

Instalación de TrueCrypt

Instalamos el paquete mediante emerge:

# emerge -av truecrypt

Añadimos el módulo al arranque de la máquina:

# echo "truecrypt" >> /etc/modules.autoload.d/kernel-2.6

Cargamos el módulo:

#modprobe truecrypt

Puesta a punto de TrueCrypt

Archivos de claves

Opcionalmente (no es obligatorio) podemos crear un archivo de claves. Estas son las ventajas de crear un archivo de claves:

  • Proporciona protección contra keyloggers. Aunque alguien consiga la contraseña no podrá montar el volumen cifrado sin el archivo de claves.
  • Puede mejorar la protección contra ataques de fuerza bruta. Especialmente si la contraseña no es muy fuerte.

El mayor inconveniente que tiene crear un archivo de claves es que en caso de pérdida o corrupción de éste no podríamos volver a acceder al volumen cifrado, ya que para hacerlo hacen falta el archivo de claves y la contraseña. Por esto, si usáis archivo de claves es mejor realizar copias de seguridad de este archivo, y si es en otros dispositivos mejor.

Creación del archivo de claves:

# truecrypt --keyfile-create keyfile.txt
TrueCrypt will now collect random data.

Is your mouse connected directly to computer where TrueCrypt is running? [Y/n]: Y

Please move the mouse randomly until the required amount of data is captured...
Mouse data captured: 100%

Keyfile created.

La versión de Windows de TrueCrypt permite ocultar un archivo de claves en un archivo que ya exista en nuestro disco duro. Este archivo puede ser de cualquier tipo, archivos comprimidos con zip, archivos de vídeo .avi, archivos mp3, etc. El contenido del archivo que oculta la clave no se ve afectado, siendo indetectable el hecho de que contiene la clave. De momento, parece que esta posibilidad no está disponible en la versión de Linux (al menos en la versión 4.3). Para más información ver el sitio de TrueCrypt.

Configuración

Ahora crearemos un volumen contenedor TrueCryt. Éste es un archivo cifrado que contendrá los datos a cifrar. Pero primero crearemos el directorio para los volúmenes y los puntos de montaje:

# mkdir -p /var/local/lib/truecrypt/{volumes,mnt}

Nos movemos al directorio donde crearemos el volumen:

# cd /var/local/lib/truecrypt/volumes

Ahora crearemos el archivo contenedor cifrado. Le llamaremos, por ejemplo, private.tc. Al ejecutar truecrypt, nos dará una serie de opciones que deberemos ir seleccionando. Dependiendo del tamaño que escojamos, truecrypt tardará más o menos en crear el volumen cifrado.

Nota:

.tc es la extensión de archivo correspondiente a TrueCrypt; no hace falta que el volumen cifrado tenga esta extensión, podéis usar la que queráis .bin .iso, etc. o ninguna en absoluto. TrueCrypt no necesita ninguna extensión. No usar el .tc como extensión puede ser útil para ocultar aún más vuestros datos, ya que mientras no esté montado el volumen este archivo no será más que un archivo de datos binario. Podéis leer más sobre este tema en el sitio de TrueCrypt y en este artículo de la wikipedia.

# cd /var/local/lib/truecrypt/volumes
# truecrypt -c private.tc
Volume type:1) Normal
2) Hidden
Select [1]: 1

Filesystem:
1) FAT
2) None

Select [1]: 2

Enter volume size (bytes - size/sizeK/sizeM/sizeG): 100M

Hash algorithm:
1) RIPEMD-160
2) SHA-1
3) Whirlpool

Select [1]: 1

Encryption algorithm:
1) AES
2) Blowfish
3) CAST5
4) Serpent
5) Triple DES
6) Twofish
7) AES-Twofish
8) AES-Twofish-Serpent
9) Serpent-AES
10) Serpent-Twofish-AES
11) Twofish-Serpent

Select [1]: 8

Enter password for new volume 'private.tc':
Re-enter password:

Enter keyfile path [none]:

TrueCrypt will now collect random data.

Is your mouse connected directly to computer where TrueCrypt is running? [Y/n]: Y

Please move the mouse randomly until the required amount of data is captured...
Mouse data captured: 100%

Done: 97.48 MB  Speed: 12.30 MB/s  Left: 0:00:00
Volume created.

Ahora veremos un poco por encima qué significan estas opciones:

  • Tipo de volumen: La opción Hidden permite crear un volumen oculto dentro de un volumen cifrado, de forma que aunque se monte el volumen cifrado no se pueda saber que contiene un volumen oculto. Nosotros usaremos la opción normal.
  • Sistema de archivos: Escogemos ninguno, ya que formatearemos el volumen posteriormente.
  • Tamaño del volumen: Se puede especificar el tamaño en kilobytes, megabytes o gigabytes precediendo el tamaño que queramos con las letras K, M o G respectivamente. Si no usamos ninguna letra el tamaño será en bytes. En este ejemplo hemos seleccionado un tamaño de 100 megabytes.
  • Algoritmo de hash: Escogemos RIPEMD-160, ya que se considera más seguro que SHA-1. Para más información, ver el sitio de TrueCrypt.
  • Algoritmo de cifrado: AES-Twofish-Serpent nos proporciona un sistema de triple cifrado. Para más información, ver el sitio de TrueCrypt.
  • Contraseña: Aquí introduciremos nuestra contraseña. Para los paranoicos, os aconsejo esta página.
  • Ruta al archivo de claves: Escogemos "none", ya que en este ejemplo no usaremos archivo de claves.

Cuando truecrypt haya terminado de crear el volumen, lo montaremos para poderlo formatear.

# truecrypt -N64 private.tc

Usamos el 64 para obligar a truecrypt a crear el nodo para el disco virtual como /dev/mapper/truecrypt64. Es un número arbitrario y truecrypt podría elegir cualquier número por si mismo, pero indicándoselo de esta forma no tendremos que averiguar el nodo asignado que necesitaremos para el siguiente paso.

Ahora crearemos el sistema de archivos:

#  mkfs.ext2 /dev/mapper/truecrypt64
Nota: Podéis usar el sistema de archivos que queráis, pero consultad esta página para ver qué problema tienen los sistemas de archivos con journaling.

Ahora crearemos un punto de montaje y montaremos en él el sistema de archivos que acabamos de crear:

# cd ../mnt
mkdir private
mount /dev/mapper/truecrypt64 private

¡Ya tenemos el volumen cifrado montado y listo para usar!

Ahora crearemos un enlace simbólico en el directorio de nuestro usuario para usarlo como directorio cifrado.

$ cd
$ ln -s /var/local/lib/truecrypt/mnt/private private

Ahora todos los archivos que guardemos en /home/user/private serán cifrados transparentemente para nosotros como parte del volumen cifrado private.tc.

Para desmontar el volumen cifrado sólo tendremos que ejecutar lo siguiente:

# truecrypt -d 64

Pero si vamos a usar frecuentemente el volumen cifrado es más práctico que añadamos un script llamado truecrypt a /etc/init.d/ , que lo desmonte al apagar la máquina.

#!/sbin/runscript

LSMOD="/sbin/lsmod"
CUT="/usr/bin/cut"
GREP="/bin/grep"
TRUECRYPT="/usr/bin/truecrypt"

depend() {after localmount}

start() {ebegin "Initializing truecrypt"eend ${?}}

stop() {ebegin "Cleaning up truecrypt"
if $LSMOD | $CUT -d' ' -f1 | $GREP truecrypt > /dev/null; then
$TRUECRYPT -d
fi
eend $?}
Nota: Este tipo de script es especifico de gentoo y no funcionará en otras distribuciones. Yo cuando tengo que escribir scripts de arranque en otras distribuciones lo que hago es buscar uno que sea sencillo en la propia máquina y modificarlo según mis necesidades.

A continuación lo hacemos ejecutable y lo añadimos al arranque de la máquina:

# chmod +x /etc/init.d/truecrypt
# rc-update add truecrypt boot

Ahora crearemos un script llamado /usr/local/sbin/tcmount para montar el volumen cifrado:

#!/bin/shtruecrypt -N64 /var/local/lib/truecrypt/volumes/private.tc
/var/local/lib/truecrypt/mnt/private/ 

Y por último, crearemos un script llamado /usr/local/sbin/tcumount para desmontar el volumen:

#!/bin/shtruecrypt -d

Sólo nos queda dar permisos de ejecución a estos scripts:

# chmod +x /usr/local/sbin/tcmount
# chmod +x /usr/local/sbin/tcumount

 

REFERENCIAS

 

Opinar

Los comentarios publicados en este sitio expresan sólo la opinión de su autor, quien será el único responsable de los mismos. La publicación de cualquier comentario no supone en absoluto la conformidad del responsable de este sitio con su contenido.

Como norma general, en este sitio no se publican comentarios que incluyan datos personales, ni direcciones de correo, ni ninguna otra forma de establecer contactos privados o comerciales, así como comentarios que no aportan nada, fuera de tema o que no se ajustan a la netiqueta, la ortografía o la educación.

Para poder enviar tus comentarios has de permitir las cookies del sitio.

Por favor, escribe arriba el resultado de la operación planteada. Gracias.
  • Etiquetas HTML permitidas: <a> <em> <strong> <ul> <ol> <li> <p> <u> <br><strike> <blockquote> <div>

Más información sobre las opciones de formato...