Tomb, el sepulturero criptográfico

https://www.dyne.org/wp-content/uploads/2011/11/github_tomb.jpg http://dyne.org/software/tomb | https://github.com/dyne/Tomb


Introducción

Tomb es un instrumento para la gestión simple de directorios cifrados bajo GNU/Linux. Su origen se remonta al efectivo sistema de Anidado ya presente desde las versiones 1.x del sistema operativo libre dyne:bolic.

Esta es una herramienta 100% libre y de código abierto enfocada a la portabilidad y respaldo de archivos personales. Su código está escrito de tal manera que puede ser revisado fácilmente además de que comparte elementos comúnes presentes en sistemas operativos libres.

Su mecanismo es simple pero efectivo: Tomb genera archivos cifrados de almacenamiento que se abren y cierran utilizando archivos-llave que son protegidos por contraseñas elegidas por los usuarios.

Una Tumba (Tomb) es similar a un directorio cerrado que puede ser transportado de manera segura y vuelta oculta en un sistema de archivos; sus archivos-llave pueden ser separados físicamente, por ejemplo como cuando dejas la tumba en el disco duro de tu computadora, y te llevas las llaves para abrirla en una memoria USB.

Documentación

Nota: los siguientes textos son una adaptación o traducción de la documentación disponible en el repositorio principal de Tomb. En edición permanente. Si quieres colaborar aparece en el canal #dyne de irc.dyne.org (SSL puerto 9999).

Instalación

Requerimientos

Tomb necesita algunos programas previamente instalados en un sistema para poder funcionar:

  • zsh
  • sudo
  • gnupg
  • cryptsetup
  • pinentry-curses (and/or -gtk-2, -x11, -qt)

La mayoría de los sistemas ofrecen estas herramientas en su colección de paquetes. En Debian/Ubuntu por ejemplo se puede utilizar apt-get install. En Fedora y en CentOS se puede utilizar yum install, y en Arch pacman es la opción.

Instalar

Para instalar Tomb simplemente descarga la fuente principal publicada (el archivo tar.gz) desde la dirección https://files.dyne.org/tomb y descomprimela. Puedes hacer algo similar a lo siguiente desde la terminal:

    cd Descargas (suponiendo que es en este directorio donde descargaste el archivo)
    tar xvfz Tomb-2.0.tar.gz (corrige esto colocando el nombre actual del archivo)

Luego entra en este directorio y ejecuta 'make install' como administrador (con sudo o como root), lo cual instalará Tomb dentro del directorio /usr/local. Desde la terminal esto seguiría un proceso como el siguiente:

    cd Tomb-2.0 (corrige esto colocando el nombre correcto del directorio)
    sudo make install

Luego de la instalación se puede leer la ayuda disponible en la linea de comandos o leer el manual:

    tomb -h     (imprime en la terminal una breve ayuda)
    man tomb    (muestra completo el manual de uso)

Utilización

Uso básico

Una vez terminada la instalación se puede proceder a crear una tumba (archivo tomb), por ejemplo siguiendo los siguientes pasos:

    tomb dig -s 10 secretos.tomb      (cava una tumba de 10MB, ten paciencia)
    tomb forge -k secretos.tomb.key    (ten paciencia y sigue las instrucciones para forjar la llave)
    tomb lock  -k secretos.tomb.key secretos.tomb  (con esto aseguras que la llave pueda cerrar-abrir la tumba)

Cuando este proceso concluya, la tumba puede ser abierta con:

    tomb open -k secretos.tomb.key secretos.tomb

El archivo que funciona para abrir y cerrar la tumba puede también ser escondida dentro de una imágen para ser usada posteriormente como llave.

    tomb bury -k secretos.tomb.key coatlicue.jpg
    tomb open -k coatlicue.jpg secretos.tomb

También puedes respaldar tu llave generando un código QR que pueda ser impreso en un papel para por ejemplo resguardarlo dentro de un libro. Los códigos QR pueden ser escaneados con cualquier dispositivo móvil, lo que daría como resultado un bloque de texto que luego puede ser usado con la opción '-k' como cualquier otra llave.

    tomb engrave -k secretos.tomb.key  (también funciona con una imagen)

Hay más cosas que una tumba puede hacer por tí. Por eso te sugerimos leer atentamente las páginas del manual y la ayuda disponible en la línea de comandos.

Ganchos

Amarrando ganchos

El archivo de ancla o gancho (hook) es muy útil para montar directorios específicos ubicados dentro de la tumba, a colocarse dentro del directorio personal de cada usuario (home)

Imagina que lo que quieres es guardar de modo seguro dentro de tu tumba algunos directorios que normalmente se encuentran ubicados dentro de tu directorio personal, y que debido a ello deben estar exactamente en su lugar. Por ejemplo los directorios Mail y el subdirectorio "secretos" ubicado dentro de Documentos.

Los ganchos anclados te ayudan a solucionar este problema. Tan sólo tienes que mover esos directorios dentro de la raíz de la tumba y luego crear un archivo que se llame "bind-hooks", el cual deberá estar ubicado en ese mismo lugar. Entonces deberás escribir dentro de ese archivo una tabla a dos columnas siguiendo el modelo siguiente:

 correo Mail
 secretos Documentos/secretos

Como puedes observar, en la primera columna se indican las rutas relativas a la tumba y en la segunda columna se indican las rutas relativas a tu directorio personal Home. Toma en cuenta que previamente deberás crear los directorios en la ruta a la que quieras sean montados, en este caso el directorio "secretos" fue creado previamente.

De esta manera cada vez que abras tu tumba, los directorios serán montados en el lugar correcto, es decir, en el lugar que indicaste en las segunda columna.

Ganchos dinámicos

Otra manera de utilizar los ganchos es mediante archivos de consola o de ejecutables binarios a ser lanzados al abrirse la tumba.

Supongamos que lo que necesitas es que cada vez que abras tu tumba, también se abra el archivo "mis-tareas-por-hacer.txt", guardado dentro de la raíz de tu tumba. Para ello deberás crear un archivo que nombrarás "post-hooks", guardado también en la raíz de la tumba, y con el siguiente contenido:

 #!/bin/sh

 <tu editor de texto preferido> mis-tareas-por-hacer.txt

Ayuda

Vía línea de comandos

Desde la consola puedes teclear tomb -h y obtener una rápida y compacta guía de ayuda sobre el uso general de Tomb.

Tomb 2.0 - un poderoso y amable sepulturero para tus secretos


Syntaxis: tomb [opciones] comando [archivo]

Comandos:


Creación

 dig        crear un nuevo ARCHIVO de TUMBA del tamaño -s en MB
 forge      crea un nuevo archivo de LLAVE (key) con su respectiva contraseña
 lock       instala un candado en una TUMBA para usarla con la LLAVE 


Operaciones con tumbas

 open       abre una TUMBA. Abre un archivo tomb ya existente
 index      actualiza el indice de búsquedas de tumbas
 search     busca nombres de archivo en base a patrones de texto
 list       lista tumbas o archivos tomb abiertos y ofrece información sobre ellas
 close      cierra una tumba específica (o cierra todas utilizando 'all')
 slam       cierra inmediatamente una tumba y mata todos los programas que la utilizen
 resize     redimensiona una tumba al nuevo tamaño indicado con -s (sólo puede aumentar de tamaño)


Operaciones con llaves

 passwd     cambia la contraseña de la llave de alguna tumba (requiere la antigua contraseña)
 setkey     cambia la LLAVE (key) que bloquea una tumba (requiere la llave antigua y su contraseña)



Respaldo en papel

 engrave    genera un código QR code de una llave para que pueda ser impresa en papel


Esteganogradía

 bury       esconde una llave dentro de una imagen JPEG (para ser usado con -k)
 exhume     extrae una llave de una imagen JPEG (lo imprime a stout)


Opciones:

 -s     indica el tamaño del archivo tomb durante su creación/redimensión (en MB)
 -k     ruta a la llave a utilizar para abrir una tumba (con '-k -' se lee desde stdin)
 -n     no procesa los ganchos encontrados en la tumba
 -o     opciones especiales para montaje (por default: rw,noatime,nodev)
 -f     forza una operación (i.e. aunque swap se encuentre activo)
 --kdf  genera contraseña blindadas contra ataques de diccionario

 -h     muestra esta ayuda
 -v     sobre la versión de la herramienta
 -q     se ejecuta silenciosamente sin mostrar información
 -D     muestra información (debugging) del proceso durante el arranque 


(...)