Entierra tus secretos con Tomb (1.0)

Entierra tus secretos con Tomb (1.0)

Tomando en cuenta, como siempre, que no hay seguridad total en sistemas informáticos, pero si algunos métodos que se pueden aplicar para mejorar la privacidad de tus datos. Más allá de pensar en que si tenemos o no algo que esconder, algo bueno o malo que resguardar, la privacidad de nuestros datos digitales es un derecho y el cifrado nos ayuda a ejercerlo, es como cuándo mandamos una carta por correo postal, le ponemos sobre porque no queremos que el cartero o un tercero lea el contenido durante el trayecto de la carta a su destino, hagamos de cuenta que el sobre es nuestro cifrado en nuestras comunicaciones y datos digitales.

Desde aquellos días de intercambio de conocimientos en el hoy extinto HacklabZAM allá por el 2009, experimentábamos con diversas herramientas de cifrado de varios tipos y entre ellas conocimos algunas para archivos y carpetas. Dentro de este experimento recuerdo particularmente algunas como:

TrueCrypt:

Herramienta que escondía y cifraba carpetas de archivos, hasta que el proyecto dejó de desarrollarse y ellos mismos lo tacharon de “no seguro”. Hubo diversas especulaciones entre la comunidad y algunas de éstas las puedes leer aquí: http://www.rebelion.org/noticia.php?id=198595

EncFS:

Ante la situación con TrueCrypt probamos EncFS, un bonito Software Libre que cifra archivos con permisos de usuarios del módulo FUSE. Este programa funciona desde la terminal con ciertos comandos, aunque hay varias interfaces gráficas para usarlo, una de estas interfaces que más me gustaba era CryptKeeper aunque dejó de estar en los repositorios de Debian ya que había algunas cuestiones de actualizaciones no realizadas por lxs desarrolladorxs de CryptKeeper. Actualmente hasta el mismo navegador de archivos Gnome tiene una opción para usar de modo gráfico EncFS: https://blog.desdelinux.net/gnome-encfs-manager-una-excelente-herramienta-para-encriptar-tus-archivos/

VeraCryp:

Esta herramienta es un fork de TrueCrypt. Algunos desarrolladorxs tomaron el código de TrueCrypt he hicieron la bifurcación para crear VeraCrypt bajo Software Libre, aunque como contiene partes del código anterior, tuvieron que hacer una mezcla entre la licencia privativa de TrueCrypt Collective License 3.0 y la licencia libre Apache License 2.0. Personalmente nunca he usado este programa pero mucha gente lo recomienda, aquí más al respecto: https://www.genbeta.com/herramientas/veracrypt-el-reemplazo-al-extinto-truecrypt

Y ahora si…

TOMB:

Debido a las experiencias ya mencionadas, y de ciertos problemas en algunas computadoras con el módulo FUSE o algunas interfaces desactualizadas para EncFS, me llevó a buscar ciertas alternativas y cuándo conocí Tomb me encantó. Esa es la razón por la cual ya no usé VeraCrypt, además de que TOMB es desarrollado por el colectivo hacktivista Dyne y eso genera una motivación extra para usarlo.

A continuación pondré el manual de uso de TOMB basado en la documentación en inglés que tienen en su página web:

TOMB :: Cifrado de archivos en GNU/Linux

Cuídate de los fantasmas de tu closet!

Tomb (“tumba” traducido desde el inglés) es un software 100% libre y de código abierto para cifrar archivos en GNU/Linux, facilitando los respaldos de tus archivos secretos. Tomb está escrito en un código que es fácil de revisar y vincula componentes comúnmente compartidos.

Tomb genera carpetas de almacenamientos cifradas que se abren y cierran usando llaves de cifrado asociadas que están protegidas con una contraseña elegida por lxs usuarixs.

Un archivo en Tomb es como una carpeta bloqueada que puede ser transportada y escondida en un sistema de archivos seguro; las llaves pueden mantenerse separadas, por ejemplo, se puede guardar el archivo de Tomb en tu computadora y las llaves de cifrado en una memoria USB.

Tomb es una herramienta simple para administrar el almacenamiento cifrado en GNU/Linux desde los hashes de dyne:bolic nesting.

Tomb trabaja únicamente en sistemas GNU/Linux.

INSTRUCCIONES DE INSTALACIÓN DE TOMB

Instalar las herramientas requeridas:

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

La mayoría de sistemas cuentan con estas herramientas en sus repositorios, por ejemplo, en Debian/Ubuntu se puede usar apt-get install , en Fedora y CentOS se puede usar yum install y pacman en Arch.

Las distribuciones son libres de incluir Tomb como quieran, teníamos una auto configuración y un paquete para Debian que aparentemente tenían una facilidad para la instalación, pero ahora lo descartamos para una mayor simplicidad.

¡Ponte a cargo de tu sistema y que la fuerza te acompañe!

Instalar Tomb

Para instalar Tomb simplemente descarga el archivo tar.gz desde https://www.dyne.org/software/dynebolic/ , lo descomprimimos y escribimos desde la terminal:

cd Downloads 
tar xvfz Tomb-2.4.tar.gz

En cd Downloads ponemos el nombre de la carpeta dónde descargamos el archivo y en Tomb-2.4.tar.gz ponemos el nombre del archivo que descargamos.

Dentro del directorio donde descargamos el archivo corremos el comando “make install” como root, esto instalará Tomb en /usr/local:

cd Tomb-2.4
sudo make install

En cd Tomb-2.4 pondremos el nombre correcto de la versión que descargamos

Después de la instalación podemos consultar en la linea de comandos las recomendaciones de ayuda o el manual:

tomb – h
man tomb

Con “tomb -h” podemos ver las recomendaciones de ayuda y con “man tomb” podemos ver el manual.

¿CÓMO FUNCIONA NUESTRO CIFRADO DE ARCHIVOS EN GNU/LINUX?

Tomb es un simple script de Shell, tu puedes bajar la fuente y copiarlo en tu path, se revisaran los requerimientos instalados.

Tomb es operado desde una terminal de línea de comandos que requiere acceso root a la máquina (o acceso sudo)

Aquí hay una bonita reseña hecha por los chicos de Linux Action Show en agosto del 2014, ellos recomiendan Tomb para reemplazar a TrueCrypt en GNU/Linux. (Está en inglés)

Una vez instalado podemos proceder a crear nuestra carpeta cifrada, en nuestra terminal accediendo con sudo, tecleamos:

tomb dig -s 10 secrets.tomb

Aquí estamos indicando que crearemos un archivo de tomb de 10MB con el nombre “secrets”. Si queremos que el archivo sea más grande, entonces ponemos la cifra deseada en lugar de 10, y en lugar de “secrets” ponemos el nombre que le queramos poner a nuestro archivo.

Ahora debemos crear la llave de cifrado para este archivo:

tomb forge -k secrets.tomb.key

Aquí estamos creando la llave, dónde dice “secrets” irá el nombre que elegimos para nuestro archivo. Posteriormente nos pedirá que elijamos una contraseña para la llave.

tomb lock – k secrets.tomb.key secrets.tomb

Cerramos nuestro archivo con su llave.

Cuándo esto este hecho ya podemos abrir nuestro archivo cifrado y usarlo con normalidad, tecleando en la terminal:

tomb open -k secrets.tomb.key secrets.tomb

En lugar de “secrets” va el nombre que elegimos para nuestro archivo y nuestra llave, posteriormente nos pedirá nuestra contraseña.

La llave que generamos también puede esconderse en una imagen, para ser usada después como llave:

tomb bury -k secrets.tomb.key nosferatu.png

Acá estamos indicando que nuestra llave creada “secrets.tomb.key” se guarde en una imagen llamada “nosferatu.png”, obviamente cambiamos “secrets” por el nombre de la llave que queramos y “nosferatu.png” por el nombre de la imágen que ocupemos.

Posterior a esto, para abrir nuestro archivo cifrado seria:

tomb open -k nosferatu.png secrets.tomb

También se puede usar un Código QR para esconder la llave, este código incluso se puede imprimir. Los códigos QR pueden ser escaneados con alguna aplicación de teléfono móvil, dando como resultado un bloque de texto que puede ser usado con -k con toda normalidad. Para esto tecleamos:

tomb engrave -k secrets.tomb.key

Después de haber terminado de trabajar con tu archivo cifrado en Tomb, puedes cerrarlo tecleando en la terminal lo siguiente:

tomb close

O si tienes prisa, entonces tecleamos:

tomb slam all

Cuando tu cierras inmediatamente tus archivos cifrados en Tomb, éste finalizará todas las aplicaciones que se estén usando. Se pueden usar varios archivos cifrados creados con Tomb al mismo tiempo, los directorios y archivos se pueden unir a los que estén en tu HOME.

HERRAMIENTAS OPCIONALES

Estas son algunas de las cosas que Tomb puede hacer para ti, también asegúrate de revisar el manual y las recomendaciones de ayuda para encontrar más funciones que te pueden servir.

También hay algunas interfaces gráficas como registros mime-type y cosas que hacen más fácil el uso de Tomb en el escritorio, puedes ver en extras/.

¿PORQUÉ SE DEBERÍA CONFIAR EN ESTE SCRIPT?

Buena pregunta: depende de cualquiera que use una herramienta tan delicada para evaluar la confianza, si tienes una comprensión del código, sabrás cómo esta estructurado ya que es de fuente libre.

Nosotrxs creemos que las cosas complejas ocultan la inseguridad, por lo tanto Tomb es de código abierto y básicamente es sólo un script que puedes leer y checar las cosas que hace. Hacemos lo mejor para que sea corto y fácil de entender y lo puedes checar en la Documentación del código.

Todas las dependencias usadas en Tomb son componentes comunes de GNU/Linux, revisados e incluidos en la mayoría de las distribuciones. Además no tiene servicio de nube y no necesita de conexión a internet para funcionar: Tomb trabaja totalmente fuera de linea, por supuesto.

¿QUIÉN NECESITA TOMB?

“La democracia necesita privacidad, tanto como la libertad de expresión” Anónimo

Nuestro objetivo común son los usuarios de computadoras que no tienen tiempo para hacer tantos clicks, y que a veces usan computadoras viejas o prestadas, operando en lugares peligrosos de conflictos donde una fuga de datos personales puede ser una amenaza.

Si tu no tienes una laptop entonces es posible que lleves contigo una memoria USB y usar una computadora prestada, sin dejar rastros y manteniendo tus datos seguros durante algún trayecto o transporte. Tomb facilita todo esto y es operable entre sistemas operativos basados en GNU/Linux.

Internet ofrece muchos servicios gratuitos, en la ola de la web 2.0 y el boom de la comunidad, mientras toda la información privada es alojada en servidores que son propiedad de las grandes corporaciones globales y monopolios.

“La diferencia entre lo público y privado se convierte cada vez más en algo borroso con la creciente intrusión de los medios y los avances de la tecnología electrónica. Si bien esta negociación es el resultado de una negociación cultural continua, sigue siendo crítica, ya que dónde no hay privacidad, la democracia es imposible”  De: [Privacy Conference, Social Research, New School University](https://www.newschool.edu/centers/socres/privacy/Home.html)

Es importante tener en cuenta que nadie más que tu puede garantizar la privacidad de tus datos personales. Los servicios alojados en los servidores y las tecnologías integradas en la web reúnen todos los datos en enormes grupos de información que están disponibles para los regímenes económicos y culturales establecidos.

Este software invita a reflexionar sobre la importancia de la privacidad. El mundo está lleno de corrupción y de encarcelamientos por causas políticas, la guerra se desata en varios lugares y los medios de comunicación comerciales son usados para la propaganda de los poderosos en turno. Algunos de nosotrxs corremos el peligro de ser rastreados por opresores que se oponen a nuestra autodefinición, pensamiento independiente y libres acuerdos.

¿NO HAY SUFICIENTES HERRAMIENTAS DE CIFRADO?

Hemos sentido la necesidad de tener disponible Tomb para otras distribuciones de GNU/Linux que no sean dyne:bolic, ya que actualmente las herramientas de cifrado de archivos no son muy óptimas para el escritorio de las distribuciones.

TrueCrypt utiliza bibliotecas enlazadas estáticamente para que su código sea difícil de consultar, además no es considerado libre por las distribuciones de sistemas operativos por razones de responsabilidad, puedes consultar en Debian, Ubuntu, Suse, Gentoo y Fedora.

CryptKeeper es la mejor alternativa a Tomb y una de sus ventajas es que no necesita acceso root en la máquina para su uso. Pero CryptKeeper tiene algunos inconvenientes como el que usa EncFS que implementa un cifrado más débil que dm-crypt y no promueve el almacenamiento separado de llaves.

Por último, los mecanismos de cifrado de la carpeta Home en distribuciones GNU/Linux como Debian y Ubuntu adoptan un algoritmo de cifrado tan fuerte como el que Tomb utiliza, pero éstos necesitan ser configurados cuándo el sistema operativo se está instalando en la máquina, no pueden transportarse fácilmente y no promueven el almacenamiento separado de llaves.

¿DE DÓNDE APRENDEMOS?

Aquí algunos artículos útiles para comprender Tomb con más detalle y para ponerse en contacto con el laborioso trabajo del “Crypto-Enterrador”:

Con Tomb tratamos de superar todas esas limitaciones brindando una herramienta de cifrado fuerte, animando a los usuarios a separar las llaves de los datos y permitiéndoles transportar sus archivos de cifrado fácilmente. También para facilitar la auditoría y personalización, tenemos la intención de:

- Escribir código corto y legible, vinculando bibliotecas compartidas.
- Proporcionar interfaces gráficas fáciles de usar con integración de escritorio.
- Mantener el proceso del desarrollo abierto y distribuido usando GIT.
- Distribuir Tomb bajo la licencia [GNU General Public License v3](https://www.gnu.org/licenses/gpl-3.0.html).

Si crees que este es un esfuerzo digno, eres bienvenido a apoyarlo → https://www.dyne.org/donate/

El lanzamiento más reciente está firmado por el responsable del mantenimiento de Tomb Jaromil

Para ponerse en contacto con lxs desarrolladorxs puedes unirte al chat en https://irc.dyne.org/ (SSL a través del puerto 9999) en el canal #dyne.

WINDOWS

Se rumora que hay planes de tener Tomb en Windows o al menos puede ser posible abrir los archivos de Tomb bajo Windows: esto pudiera ser posible usando FReeOTFE o agregando compatibilidad en SecureTrayUtil y las contribuciones son bienvenidas en esas direcciones.

De cualquier manera recordamos fuertemente a las personas que necesitan un cifrado fuerte que NO USEN WINDOWS, o al menos no generar particiones cifradas en él, ya que puede contener puertas traseras cuando generan números aleatorios, tal y cómo lo señalan Bruce Schneider y Niels Ferguson en este breve ensayo sobre Dual_EC_DRBG

APLICACIONES COMPATIBLES

Tomb puede ser usado en scripts y algunos desarrolladorxs han creado contenedores para facilitar su uso con interfaces gráficas o con diferentes scripts en varios lenguajes.

zuluCrypt permite la apertura y cierre de archivos generados en Tomb, también permite esconder las llaves en imágenes.

Tomber es un contenedor de Python que permite las funciones de Tomb, con lo que facilita su uso dentro de las aplicaciones Python.

Si conoces más herramientas que deberían estar aquí, por favor avísanos.

TIPS…

Tomb se puede adaptar para un uso ad-hoc y crear secuencias de comandos dentro de sistemas de aplicaciones más grandes, a continuación algunos escenarios de su uso:

Datos privados en uso diario

Simplemente con un comando para montar y para desmontar, además de la configuración de bind-hooks, tu carpeta Home puede cambiar para incluir tus archivos cifrados en la posición correcta para las rutas de tu aplicación, como esa puerta secreta detrás de la biblioteca con la que siempre soñaste.

Transportar información delicada

Cuando transportas información delicada, el riesgo de la intercepción es alto: incluso usando cifrado, si el mensajero es capturado se puede encontrar la llave con el y se puede obtener la contraseña mediante tortura. La solución que proponemos es separar las llaves del almacenamiento, para que el mensajero sólo, necesite el otro punto para montar la llave. Nunca guardes tus llaves dentro de los archivos cifrados de Tomb.

Negable, pero fácil de recordar, almacenamiento de llaves

La esteganografía es efectiva aquí, Tomb ofrece la posibilidad de “enterrar” y “exhumar” llaves de cifrado en imágenes jpg, png, etc. Si steghide está instalado en tu sistema, entonces Tomb te ofrecerá éstos comandos.

Cuando aseguras tus datos privados, uno de los grandes problemas son las fallas de tu memoria: En algún futuro puedes olvidar dónde dejaste las llaves.

El modo que proponemos deja que tengas en mente una imagen que está es tu sistema de archivos, es mucho más fácil de recordar. Esto también ayuda a esconder bien la llave de cifrado y eventualmente la comunicación sin que esto parezca sospechoso, es realmente muy difícil detectar la presencia de una llave de cifrado dentro de una imagen sin saber la contraseña que tienes para descifrarlo.

Otra posibilidad de portar las llaves es haciendo un respaldo de una manera física: tenemos el comando “engrave” que generará un Código QR de nuestra llave y éste puede ser impreso, y aún así puede mantenerse secreto, como entre las páginas de tu libro favorito. Para recuperar el contenido de la llave incrustada en el Código QR, puedes decodificarlo con una aplicación móvil, guardar el resultado en texto plano y usarlo como una llave en Tomb.

LLAVES DE CIFRADO EN DIFERENTES MÁQUINAS

La seguridad se puede mejorar eliminando putos de falla, especialmente si hay una conexión de red disponible. Un archivo cifrado en Tomb se puede almacenar y usar en una máquina mientras sus llaves de cifrado están lejos: Se copian y se eliminan cada vez que se utilizan, pero nunca se almacenan en la misma máquina. En este ejemplo veremos cómo abrir un archivo cifrado en Tomb llamado “secretos” en el “escritorio” de la máquina dónde se está trabajando, utilizando las llaves alojadas en un servidor llamado “servidor.onthe.net”:

ssh usuarix@server.onthe.net cat secretos.tomb.key | tomb open secretos.tomb -k

SSH es usado para transportar la llave de cifrado, lo que también puede ocurrir sin contraseñas con el uso de llaves SSH públicas. La opción “-k-” que tiene Tomb, le dice que tome la llave desde una entrada estándar STDIN.

LLAVES DE CIFRADO EN TU TELÉFONO MÓVIL

Una buena y ordenada configuración es tener el archivo de cifrado Tomb en tu laptop y la llave de cifrado en tu teléfono móvil, asegurándose que nunca se guarden en el mismo lugar, bolsillo o mochila. Cada vez que el archivo de cifrado de Tomb es abierto, el teléfono móvil activa un software “obex ftp deamon” que pone la llave a través de bluetooth a dispositivos autorizados. Sigue una simple secuencia de comandos para que eso suceda, sustituye ESSID 11:22:33:44:55:66 con el ESSID de tú dispositivo:

mkdir -p /dev/shm/secrets
chmod go-rwx /dev/shm/secrets
cd /dev/shm/secrets
obexftp -b 11:22:33:44:55:66 -q secrets.tomb.key
tomb open $HOME/secrets.tomb -k secrets.tomb.key
wipe -f secrets.tomb.key
cd -
rmdir /dev/shm/secrets.key

ALMACENAMIENTO EN LA NUBE PRIVADA

Mantener archivos de cifrado con Tomb en servidores remotos puede ser una buena opción para evitar robos físicos al viajar, sin tener que transportar nada relacionado con tus datos. Hasta cierto punto, usar Tomb dificulta el robo de datos de los servidores, incluso para los proveedores que tienen acceso físico a ellos.

Para el uso basado en el servidor, tenemos que poner atención en algunas cosas: crear una llave de cifrado de Tomb es por lo regular muy lento en servidores remotos o en VPS, lo mejor es crear la llave (forge) desde tu computadora y después subirlo al servidor. La segunda cosa es que probablemente olvidemos cerrar un archivo cifrado en Tomb, y sólo cerramos la sesión: para evitar esto los usuarixs Zshell pueden simplemente teclear un “tomb close” o “tomb slam” en la ruta ~/.zlogout.

La última cosa pero no menos importante es que es posible montar un archivo cifrado de Tomb de manera local, de tal modo que el servidor remoto nunca tenga algo claro respecto al contenido de los archivos cifrados. Para esto se usa sshfs:

sshfs -o allow root user@remote.host:/ /local/mountpoint/

Acá nos conectamos vía sshfs, y en lugar de user@remote.host pondríamos nuestro usuario y nombre del servidor remoto, en /local/mountpoint/ la ruta dónde lo montaremos en nuestra computadora local.

tomb open /local/mountpoint/yourthings.tomb -k /path/to/key

Acá abrimos el archivo cifrado con Tomb, en /local/mountpoint/ indicamos la ruta donde lo montamos en nuestra computadora local, en lugar de yourthings.tomb va el nombre de nuestro archivo cifrado.

Favor de tener en cuenta que el comando sshfs necesita la opción ‘-o allow_root’ porque de lo contrario, root no tendrá permisos para leer el archivo remoto.

Si quieres saber más, esta tesis de maestria en ciencias de la computación menciona el uso exitoso de Tomb sobre el almacenamiento de archivos en la nube y nuevos posibles horizontes par su desarrollo.

MÁS TIPS…

Si quieres saber más tips interesantes los puedes encontrar en la documentación en Wiki. Anteriormente también estaba la Paranoid #! Security Guide en los foros de la excelente distribución de GNU/Linux “CrunchBang” (que tristemente ya no existe más), ahora lo puedes encontrar en los foros del fork llamado “BunsenLabs”.

DESARROLLO

Tomb se desarrolla usando GIT y su repositorio principal está alojado en GitHub.

Los desarrolladorxs son bienvenidxs para interactuar con nosotrxs vía reportes, solicitudes o directamente en la cryptolista de correos en https://lists.dyne.org/lurker/splash/index.en.html.

También puedes leer el tutorial para probar Tomb para obtener algunas instrucciones de cómo solucionar problemas. Si planeas escribir código, entonces este tutorial de desarrollo de Tomb es para ti.

Para estar en contacto con nosotrxs, también te puedes unir a nuestra sala de chat en https://irc.dyne.org/ (SSL en el puerto 9999) en los canales #dyne y #tomb – o mejor aún participa en persona cada año en el Hackmeeting Italia usualmente durante el verano.

ETAPA DE DESARROLLO

Actualmente Tomb es fácil de usar e instalar, básicamente consiste en un script de Shell y código C auxiliar para la integración en escritorio (GTK), una interfaz gráfica en Python que utiliza los modos de lote.

Eres bienvenido a unirte especialmente para ayudar a mejorar la compatibilidad entre sistemas operativos, paquetes de distribución, integración de GUI, traducciones y documentación. La regla de oro para nosotrxs es: escribe código corto y legible. La transparencia y la facilidad de la revisión del código es uno de los puntos fuertes de una herramienta de cifrado con la que todos tenemos la intención de confiar.

PYTHON

Se está desarrollando un contenedor de Python y ya se puede usar, pero presenta algunas vulnerabilidades. Puedes encontrarlo dentro de la carpeta “extras/tomber” de tu instalación de Tomb. Para más información mira Python.

HAZNOS SABER!

Si tu plan es desarrollar algún tipo de contenedor para Tomb, eres bienvenido. Tomb se debe mantener como una herramienta mínima de compatibilidad a largo plazo cuando se trata de manejar algo tan delicado como los son nuestros secretos. Para cualquier cosa, confiamos en tu propia iniciativa.

Happy hacking! ;^)

GENTE INVOLUCRADA

Tomb es originalmente diseñado y escrito por Jaromil, incluye código de Hellekin O. Wolf, Anathema y Boyska, el trabajo de arte es contribución de Món Mort.

Las pruebas, reseñas y documentación son contribución de Dreamer, Shining the Traslucent, Mancausoft, Abesto Molesto y Ningnux.

La mayoría de las investigaciones a las que nos referimos está documentada por Clemens Fruhwirth quien también desarrolló CryptSetup junto con Christophe Saout.

"Todo lo que sé es lo que las palabras saben y las cosas muertas, y eso hace una pequeña suma hermosa, con un principio, un medio y un final, como en la frase bien construida y la larga sonata de los muertos". Samuel Beckett

Israel Pirra

Enero 2020. Jovel, Chiapas, México.

https://pirra.punks.computer