Making Tombs
If you want to use store stuff data, put it in a Tomb, the crypt undertaker. For remote SSHFS can help you. An SSH server is a pretty common piece of software, by default on all Linux hosts and SSHFS allows you to mount the remote filesystem via SSH.
You may skip and rather how to get started
The good
It's encryption, and can burry things into all sort of non usual suspect files too.
- Easy to Set Up: Even to facilitates syncing Tomb between computers.
The bad
- Not Suitable for Real-Time Sharing: The same Tomb cannot be opened by two different computers in read/write mode simultaneously.
The ugly
- Not many seem to know about it.
HOWTO SSHFS
-
Copy your Tomb to the remote server via SCP:
scp /path/to/yourthings.tomb user@remote.host:/ -
Install SSHFS on your system. For example, on Debian:
sudo apt-get install sshfs -
Mount the remote file system locally:
sshfs -o allow_root user@remote.host:/ /local/mountpoint/ -
Open your Tomb:
tomb open /local/mountpoint/yourthings.tomb -k /path/to/key
That is it. keep going for autosync, or skip to how to get started.
Tomb Autosync via SSHFS
Disclaimer
The code in this section is for users who understand it and are willing to debug.
Scenario
Have two laptops: a big one and a netbook, and we need to share a Tomb with personal settings and data.
Description
We can't use a "shared" Tomb because it cannot be mounted by more than one computer simultaneously. Tomb has no built-in locking mechanism, so we need an external lock.
Process
- Acquire the lock
- Mount the remote Tomb
- Use Unison to sync
- Unmount
- Release the lock
The (not so) HORRIBLE bashing
Login Script
#!/bin/bash
# LOGIN SCRIPT
lockfile="/local/mountpoint/tomb.lock"
imgpath=$(zenity --file-selection --text='Choose an image file with an embedded key' --title='Select File')
tomb exhume /tmp/local.tomb $imgpath
(flock 5
if ! tomb open /path/to/local.tomb -k /tmp/local.tomb.key; then
zenity --error --text='Impossible to mount local tomb!' --title='Horror!'
return 1
else
zenity --notification --text='Local tomb correctly mounted'
fi
if sshfs remote.server:/ /local/mountpoint/; then
tomb open /local/mountpoint/remote.tomb -k /tmp/local.tomb.key
zenity --notification --text='Remote tomb correctly mounted'
else
zenity --error --text='Impossible to mount remote tomb!' --title='Horror!'
return 1
fi
) 5> $lockfilePost-Hook in Remote Tomb
#!/bin/bash
# POST-HOOK IN REMOTE TOMB
remotetomb="/media/remote.tomb/"
localtomb="/media/local.tomb/"
if unison $remotetomb $localtomb; then
zenity --notification --text='Data sync success'
else
zenity --error --text='Data sync failed!' --title='Horror!'
return 1
fiLogout Script
#!/bin/bash
# LOGOUT SCRIPT
lockfile="/local/mountpoint/tomb.lock"
wipe -f -s /tmp/local.tomb.key
(flock 5
if tomb close all; then
zenity --notification --text='Tombs closed, your bones will rest in peace.'
else
zenity --error --text='Problems closing tombs!' --title='Horror!'
return 1
fi
) 5> $lockfileCron Script
#!/bin/bash
# CRON SCRIPT
remotetomb="/media/remote.tomb/"
localtomb="/media/local.tomb/"
lockfile="/local/mountpoint/tomb.lock"
(flock 5
if !ping -c 1 remote.server; then
return 1
elif !mountpoint /local/mountpoint/; then
if sshfs remote.server:/ /local/mountpoint/; then
tomb open /local/mountpoint/remote.tomb -k /tmp/local.tomb.key
unison $remotetomb $localtomb
fi
fi
) 5> $lockfileUsing Tomb with Cloud Storage: TombDropbox
Using Tomb with Dropbox to securely store data in the cloud is coo, but has some limitations. Some are Tomb's fault, others Dropbox's.
Limitations
- Cannot open a Tomb from two different places simultaneously.
- Syncing changes to Dropbox is slow because Dropbox doesn't handle deltas well. This limitation is mitigated when using programs like SSHFS, rsync, or SparkleShare.
Why
The cloud can be useful, but storing personal data on remote servers can compromise privacy. Using Tomb with Dropbox can help you benefit from cloud storage without sacrificing privacy.
HOWTO
-
Create a Tomb:
tomb create -s X <tomb-name> -
Move the Tomb encryption key to a secure place:
mv <tomb-name>.tomb.key /secure/place/ -
Move the Tomb file to a Dropbox shared directory:
mv <tomb-name>.tomb /dropbox/shared/directory/ -
To access the Tomb:
tomb -k /secure/place/<tomb-name>.tomb.key open /dropbox/shared/directory/<tomb-name>.tomb
Your Tomb will be accessible in the media directory:
/media/<tomb-name>.tomb/Enjoy secure cloud storage!
Hide secrets in photos
- Hide the Key
- Extract a Hidden Key
- Hooks
- Bind Hooks
- Post Hooks
- Other avanced features
Hide the Key
To hide the key inside an image file (JPEG):
tomb bury -k /path/to/key /path/to/file.jpgExtract a Hidden Key
To extract a pre-hidden key:
tomb exhume -k /path/to/key /path/to/file.jpgHooks
Hooks are special files that trigger actions when a Tomb is opened or closed.
Bind Hooks
To securely store directories in a Tomb while keeping them in their original locations:
- Move the directories to the Tomb's root.
- Create a
bind-hooksfile in the Tomb's root with paths relative to the Tomb and$HOME.
Example bind-hooks files:
mail Mail documents DocumentsPost Hooks
To execute a script or binary after opening a Tomb, create a post-hooks file in the Tomb's root.
Example post-hooks file:
#!/bin/sh
<your preferred text editor> todolist.txtNow that you know how to do cool things with Tomb, here is how to get started
How Tomb Works
Tomb’s hidden file encryption generates encrypted storage folders opened and closed using key files protected by a user-chosen password. Tomb files are indistinguishable and can be safely renamed, transported, and hidden.
The keys should be kept separate, e.g., Tomb file on the hard disk and key files on a USB stick. Once open, a Tomb looks like a folder.
Getting Started
Tomb works on GNU/Linux systems and WSL2 on Windows 11. Also works on OSX thanks to MacTomb.
Installation
To install manually:
Clone the github repo, then:
make installThis copies Tomb into /usr/local/bin along with its manpage.
Usage
To create a 100MB Tomb called "secret":
tomb dig -s 100 secret.tomb
tomb forge secret.tomb.key
tomb lock secret.tomb -k secret.tomb.keyTo open it:
tomb open secret.tomb -k secret.tomb.keyTo seal it:
tomb closeTo seal all Tombs immediately:
tomb slam allAdvanced Usage
- Protect passwords from keyloggers.
- Deniable Key Storasge with Steganography.
- Use multiple Tombs simultaneously.
- Resize Tombs.
- Back to how to SSHFS
This article started with ready to use tomb script to takes care of the incantations to improve a user’s behaviour and the security of tombs in everyday usage: it protects the typing of passwords from keyloggers, facilitates hiding keys inside images, mounts directories in place without copying delicate files around, allows a user to kill all running processes and slam close a tomb in a straightforward command, warns the user about free space and last-time usage, etc.
One can use multiple tombs simultaneously on the same system and list them using tomb list.
Using tomb resize, one can expand tombs to have more space (but cannot shrink them).
When it is open, a tomb can bind contents inside the user’s $HOME folder using bind-hooks. For instance, .gnupg will only be found inside your $HOME when the tomb opens.
A tomb can be used on a local machine with keys on a server and never stored on the same device:
ssh me@dyne.org 'cat my.tomb.key' | tomb open my.tomb -k
# -k - tells tomb to take the key from stdin.Using SSHFS
Mount a Tomb stored on a cloud service:
sshfs -o allow_root me@dyne.org:/ /mnt/cloud/
tomb open /mnt/cloud/my.tomb -k my.keyDeniable Key Storage
Hide keys using steganography:
tomb bury
tomb exhumeBackup Keys as QR Codes
Engrave keys to be hidden between book pages:
tomb engraveSecurity and Compliance
Tomb is secure because it is minimal, open-source, and works offline. It is compliant with several industry standards, including FIPS 197.
Manual Access
To access a Tomb without the Tomb script:
lo=$(losetup -f)
losetup -f secret.tomb
gpg -d secret.key | head -c -1 | cryptsetup --key-file - luksOpen $lo secret
mount /dev/mapper/secret /mntTo close it:
umount /
mnt
cryptsetup luksClose secret
losetup -d $loEpilog
All I know is what the words know, and dead things, and that makes a handsome little sum, with a beginning and a middle and an end, as in the well-built phrase and the long sonata of the dead.