= 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 [[http://lab.dyne.org/Dynebolic/NestingEs|Anidado]] ya presente desde las versiones 1.x del sistema operativo libre '''[[DynebolicFaqEs|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.2.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.2 (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) }}} === Instalar complementos === Tomb ofrece una variedad de herramientas adicionales que contribuyen a mejorar su funcionalidad o integrar el programa a situaciones específicas de entornos de sistema. ==== extras/gtk-tray ==== El indicador Gtk agrega una atractiva calaverita a la barra de herramientas del escritorio y se puede usar para cerrar y explorar las tumbas abiertas. Si pinentry-gtk-2 está presente en el sistema, agrega también una pequeña calaverita en la entrada de la contraseña, muy util para no confundirse con otros tecleos de contraseñas. Para instalarla cambiate al directoruo `extras/gtk-tray` y luego continua con el siguiente orden: 1. asegurate que los paquetes dev libnotify y gtk+-2.0 están presentes 2. ejecuta `make` dentro del directoruo para construir `tomb-gtk-tray` 3. ejecuta `sudo make install` (el PREFIX predeterminado es `/usr/local`) 4. inicia `tomb-gtk-tray tombname` luego de que abras una tumba También se puede incluir el lanzamiento de los scripts tomb-gtk-tray. ==== extras/qt-tray ==== El indicador QT agrega una señalización en las barras de herramientas de escritorios QT. Requiere de las versiones 5.4 o superiores de las librerias QT. Se construye con 'qmake' y luego con 'make'. ==== extras/kdf-keys ==== El envolvente KDF permite utilizar rondas KDF en las contraseñas para dificultar ataques de diccionario y de otro tipo de fuerza bruta. En caso de que tanto el archivo de tumba y su llave caigan en posesión de un atacante, las contraseñas que sean faciles de memorizar pueden ser descubiertas intentando rápidamente diferentes combinaciones. Con KDF cada intento requeriría un significativo trabajo computacional que reduciría el proceso evitando ciclos muy cerrados, lo que de hecho hace este tipo de ataques muy onerosos y prácticamente imposibles. Para instalar esta característica entra al directorio `extras/kdf-keys` y luego sigue este procedimiento: 1. asegurate que los paquetes dev libgcrypt están disponibles en el sistema 2. ejecuta `make` dentro del directorio para construir los ejecutables tomb-kdb-* 3. ejecuta `sudo make install` (el PREFIX predeterminado es `/usr/local`) 4. utiliza `--kdf 100` cuando estés forjando tu llave (ajusta en numero según tu cpu) Las llaves KDF son automáticamente reconocidas por Tomb, por lo que siempre se necesitará que el programa `extras/kdf-keys` esté instalado en tu máquina para que Tomb pueda abrir los archivos. Es importante observar que no tiene sentido utilizar llaves KDF junto con la estenografía, ya que esta última puede invalidar la protección contra ataques de fuerza bruta. Para detalles sobre esto ver el archivo [[https://github.com/dyne/Tomb/blob/master/KNOWN_BUGS.md|KNOWN_BUGS]]. ==== extras/translations/ ==== Existen varias traducciones disponibles para Tomb y se instalan automáticamente. Si quieres actualizarlas manualmente navega hasta el directorio 'extras/po' y ejecuta 'make install' como root: {{{ cd extras/translations sudo make install }}} ==== extras/gtomb/ ==== Este es una interfaz de usuario minimalista escrita en ZSh y que depende de Zenity para mostrar las cajas de diálogo. Cubre todas las operaciones básicas de Tomb y facilita la configuración de los ganchos. {{{ cd extras/gtomb ./gtomb }}} == Soporte para otras aplicaciones == '''¿Puede Tomb ser usado por otras aplicaciones?''' Claro que se puede! Considerando la licencia [[https://github.com/dyne/Tomb/blob/master/COPYING | GNU GPLv3+]] Tomb ofrece salidas legibles para la máquina e interacciones via algunas flags: {{{ flag | función --------------- | ------------------------------------------------ --no-color | evita el coloreado de color para permiter el parseo --unsafe | permite opciones de contraseña y llaves en plano desde stdin --tomb-pwd | especifica la llave como argumento --tomb-old-pwd | especifa la antigua llave como argumento -k cleartext | lee la llave sin encriptar desde stdin }}} Por favor considera que estas flags introducen vulnerabilidades y si existiesen otras personas conectadas en el mismo sistema pueden fácilmente registrar tus contraseñas mientras estos comandos son ejecutados. Solamente recomendamos el uso de pinentry para la entrada de contraseñas. === Python === La envoltura de Python está bajo desarrollo y aunque es posible utilizarla introduce algunas vulnerabilidades como las anteriormente mencionadas. La envoltura python se puede encontrar en el directorio `extras/tomber`. Para más información ver [[https://github.com/dyne/Tomb/blob/master/extras/PYTHON.md|extras/PYTHON.md]]. === Aplicaciones gráficas === Hasta el momento la única aplicación gráfica con soporte para volumenes cifrados Tomb es [[https://github.com/mhogomchungu/zuluCrypt|ZuluCrypt]]. Se necesita activar el plugin para Tomb incluido en su código fuente y con eso te permitirá crear, abrir y cerrar tumbas. Puede ser que pierda algunas funcionalidades avanzadas de Tomb que solamente están disponibles via línea de comandos. === Avisanos! === Si planeas desarrollar cualquier envoltura para Tomb eres bienvenida para compartir con nosotras. La idea de Tomb es mantenerla como herramienta minimalista que pueda ser compatible a largo tiempo con el manejo de algo tan delicado como nuestros secretos. Para cualquier otra cosa nos atenemos a tu propia iniciativa. Feliz hacking! ;^) ---- == 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 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.2 - un poderoso y amable sepulturero para tus secretos Copyright (C) 2007-2015 Dyne.org Foundation, Licencia GNU GPL v3+ Esto es software libre: eres libre de modificarlo y redistribuirlo Para actualizaciones del código fuente visita Syntaxis: tomb [opciones] comando [argumentos] 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) -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 Para más información sobre Tomb leer el manual: man tomb Favor de reportar bugs en . }}} ---- '''(...)'''