tomb

the crypto undertaker
git clone git://parazyd.org/tomb.git
Log | Files | Refs | README | LICENSE

commit b8447dbf24731c4ca26307efaaf27b4b085a6b0b
parent e8ca2998b92fd929351ff58d1ba670304b9c6c89
Author: Jaromil <jaromil@dyne.org>
Date:   Mon,  6 Jul 2015 13:03:32 +0200

documentation update and small swish-e fix

The fix is due to the new naming scheme without .tomb extension recently
introduced for mountpoints. While testing this a problem arised with
swish-e related to compression of indexes, to be addressed.

Diffstat:
MAUTHORS.md | 8++++----
MINSTALL.md | 23++++++++++++-----------
MREADME.md | 21++++++++++++---------
Mdoc/tomb.1 | 21++++++++++++---------
Mtomb | 15++++++---------
5 files changed, 46 insertions(+), 42 deletions(-)

diff --git a/AUTHORS.md b/AUTHORS.md @@ -11,10 +11,10 @@ Gettext internationalization and Spanish translation is contributed by GDrooid, French translation by Hellekin, Russian translation by fsLeg, German translation by x3nu. -Testing, reviews and documentation are contributed by Dreamer, Shining -the Translucent, Mancausoft, Asbesto Molesto, Nignux, Vlax, The Grugq, -Reiven, GDrooid, Alphazo, Brian May, TheJH, fsLeg, JoelMon and the -Linux Action Show! +Testing, reviews and documentation contributed by Dreamer, Vlax, +Shining the Translucent, Mancausoft, Asbesto Molesto, Nignux, TheJH, +The Grugq, Reiven, GDrooid, Alphazo, Brian May, fsLeg, JoelMon, Jim +Turner, Maxime Arthaud and the Linux Action Show! Cryptsetup was developed by Christophe Saout and Clemens Fruhwirth. diff --git a/INSTALL.md b/INSTALL.md @@ -37,18 +37,18 @@ After installation one can read the commandline help or read the manual: Once installed one can proceed creating a tomb, for instance: - tomb dig -s 10 secrets.tomb (dig a 10MB Tomb, be patient) - tomb forge -k secrets.tomb.key (be patient and follow instructions) - tomb lock -k secrets.tomb.key secrets.tomb + tomb dig -s 10 secrets.tomb (dig a 10MB Tomb) + tomb forge -k secrets.tomb.key (create a new key and set its password) + tomb lock -k secrets.tomb.key secrets.tomb (format the tomb, lock it with key) When this is done, the tomb can be opened with: - tomb open -k secrets.tomb.key secrets.tomb + tomb open -k secrets.tomb.key secrets.tomb (will ask for password) The key can also be hidden in an image, to be used as key later - tomb bury -k secrets.tomb.key nosferatu.jpg - tomb open -k nosferatu.jpg secrets.tomb + tomb bury -k secrets.tomb.key nosferatu.jpg (hide the key in a jpeg image) + tomb open -k nosferatu.jpg secrets.tomb (use the jpeg image to open the tomb) Or backupped to a QRCode that can be printed on paper and hidden in books. QRCodes can be scanned with any mobile application, resulting @@ -72,10 +72,11 @@ executable | function steghide | bury and exhume keys inside images resizefs | extend the size of existing tomb volumes qrencode | engrave keys into printable qrcode sheets - mlocate | have fast search of file names inside tombs - swish++ | have fast search of file contents inside tombs - unoconv | have fast search of contents in PDF and DOC files - haveged | have fast entropy generation for key forging + mlocate | fast search of file names inside tombs + swish++ | fast search of file contents inside tombs + unoconv | fast search of contents in PDF and DOC files + lesspipe | fast search of contents in compressed archives + haveged | fast entropy generation for key forging As for requirements, also optional tools may be easy to install using the packages provided by each distribution. @@ -184,4 +185,4 @@ let us know. Tomb is really meant to be maintained as a minimal tool for long-term compatibility when handling something so delicate as our secrets. For anything else we rely on your own initiative. -Happy hacking! :&^) +Happy hacking! ;^) diff --git a/README.md b/README.md @@ -126,23 +126,21 @@ usage, etc. Death is the only sure thing in life. That said, Tomb is a pretty secure tool especially because it is kept minimal, its source is -always open, and its code is easy to review with a bit of shell script -knowledge. +always open to review (even when installed) and its code is easy to +read with a bit of shell script knowledge. All encryption tools being used in Tomb are included as default in many GNU/Linux operating systems and therefore are regularly peer reviewed: we don't add anything else to them really, just a layer of usability. -The code of Tomb is made to be read in literate programming style. - The file [KNOWN_BUGS.md](KNOWN_BUGS.md) contains some notes on known vulnerabilities and threat model analysis. -In absence of the Tomb script it is always possible to access the -contents of a Tomb using a dm-crypt enabled Linux kernel, cryptsetup -and GnuPG issuing the following commands as root: - +In absence or malfunction of the Tomb script it is always possible to +access the contents of a Tomb only using a dm-crypt enabled Linux +kernel, cryptsetup, GnuPG and any shell interpreter issuing the +following commands as root: ``` lo=$(losetup -f) losetup -f secret.tomb @@ -150,7 +148,12 @@ pass="$(gpg -d secret.key)" echo -n -e "$pass" | cryptsetup --key-file - luksOpen $lo secret mount /dev/mapper/secret /mnt ``` - +One can change the last argument `/mnt` to where the Tomb has to be +mounted and made accessible. To close the tomb then use: +``` +umount /mnt +cryptsetup luksClose /dev/mapper/secret +``` # Stage of development diff --git a/doc/tomb.1 b/doc/tomb.1 @@ -79,18 +79,21 @@ open tomb mountpoint paths. .B .IP "index" -Creates or updates the search indexes of all tombs currently -open: enables use of the \fIsearch\fR command using simple word -patterns on file names. Indexes are created using mlocate updatedb(8) and -stored in a file inside the tomb's root. To avoid indexing -a specific tomb simply touch a \fI.noindex\fR file in its root. +Creates or updates the search indexes of all tombs currently open: +enables use of the \fIsearch\fR command using simple word patterns on +file names. Indexes are created using mlocate's updatedb(8) and +swish-e(1) if they are found on the system. Indexes allow to search +very fast for filenames and contents inside a tomb, they are stored +inside it and are not accessible if the Tomb is closed. To avoid +indexing a specific tomb simply touch a \fI.noindex\fR file in it. .B .IP "search" -Searches through all tombs currently open for filenames matching one -or more text patterns given as arguments. Search returns a list of -files found in all open tombs on which the \fIindex\fR command was run -at least once. +Takes any string as argument and searches for them through all tombs +currently open and previously indexed using the \fIindex\fR command. +The search matches filenames if mlocate is installed and then also +file contents if swish++ is present on the system, results are listed +on the console. .B .IP "close" diff --git a/tomb b/tomb @@ -44,8 +44,8 @@ # {{{ Global variables -typeset VERSION="2.0.1" -typeset DATE="Dec/2014" +typeset VERSION="2.1" +typeset DATE="Jul/2015" typeset TOMBEXEC=$0 typeset TMPPREFIX=${TMPPREFIX:-/tmp} # TODO: configure which tmp dir to use from a cli flag @@ -2149,9 +2149,9 @@ index_tombs() { # here we use swish to index file contents [[ $SWISH == 1 ]] && { _message "Indexing ::1 tomb name:: contents..." $tombname - [[ -r ${tombmount}/.swishrc ]] || { - _message "Generating a new swish-e configuration file: ::1 swish conf::" ${tombmount}/.swishrc - cat <<EOF > ${tombmount}/.swishrc + rm -f ${tombmount}/.swishrc + _message "Generating a new swish-e configuration file: ::1 swish conf::" ${tombmount}/.swishrc + cat <<EOF > ${tombmount}/.swishrc # index directives DefaultContents TXT* IndexDir $tombmount @@ -2190,7 +2190,6 @@ FileRules filename is sys FileRules filename is supervise FileRules filename regex /\.asc$/i FileRules filename regex /\.gpg$/i - # pdf and postscript FileFilter .pdf pdftotext "'%p' -" FileFilter .ps ps2txt "'%p' -" @@ -2218,15 +2217,13 @@ FileFilterMatch unoconv "-d document -f txt --stdout %P" /\.tex$/i IndexContents HTML* .htm .html .shtml IndexContents XML* .xml EOF - } swish-e -c ${tombmount}/.swishrc -S fs -v3 - } - _message "Search index updated." done } + search_tombs() { { command -v locate 1>/dev/null 2>/dev/null } || { _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }