tomb.1 (19383B)
1 .TH tomb 1 "April 16, 2017" "tomb" 2 3 .SH NAME 4 Tomb \- the Crypto Undertaker 5 6 .SH SYNOPSIS 7 .B 8 .IP "tomb [options] command [arguments]" 9 10 .SH DESCRIPTION 11 12 Tomb is an application to manage the creation and access of encrypted 13 storage files: it can be operated from commandline and it can 14 integrate with a user's graphical desktop. 15 16 Tomb generates encrypted storage files to be opened and closed using 17 their associated keys, which are also protected with a password chosen 18 by the user. To create, open and close tombs a user will need super 19 user rights to execute the tomb commandline utility. 20 21 A tomb is like a locked folder that can be safely transported and 22 hidden in a filesystem; it encourages users to keep their keys 23 separate from tombs, for instance keeping a tomb file on your computer 24 harddisk and its key file on a USB stick. 25 26 27 .SH COMMANDS 28 29 .B 30 .IP "dig" 31 Generates a file that can be used as a tomb and will occupy as much 32 space as its desired initial size, the unlocked \fI.tomb\fR file can 33 then be locked using a \fIkey\fR. It takes a mandatory \fI-s\fR option 34 which is the size in megabytes (MiB). Tombs are digged using random 35 data gathered from a non-blocking source (/dev/urandom). 36 37 .B 38 .IP "forge" 39 Creates a new \fIkey\fR and prompts the user for a \fIpassword\fR to 40 protect its usage using symmetric encryption. This operation uses 41 random data from a blocking source (/dev/random) and it may take long 42 when run on a server with low entropy; to switch using a non-blocking 43 source the \fI--use-urandom\fR flag can be used. The \fI-g\fR option 44 switches on the use of a GPG key instead of a password (asymmetric 45 encryption), then the \fI-r\fR option indicates the recipient key; 46 more recipient GPG ids can be indicated (comma separated). The default 47 cipher to protect the key is AES256, a custom one can be specified 48 using the \fI-o\fR option, for a list of supported ciphers use 49 \fI-v\fR. For additional protection against dictionary attacks on 50 keys, the \fI--kdf\fR option can be used when forging a key, making 51 sure that the \fItomb-kdb-pbkdf2\fR binaries in \fIextras/kdf\fR were 52 compiled and installed on the system. 53 54 .B 55 .IP "lock" 56 Initializes and locks an empty tomb (made with \fIdig\fR) using a key 57 (made with \fIforge\fR), making it ready for usage. After this 58 operation, the tomb can only be opened in possession of the key and 59 knowing its password. As in any other command requiring a key, the 60 option \fI-k\fR should be used to specify a key file; in case of 61 encryption to GPG recipients the \fI-g\fR flag should be used followed 62 by \fI-r\fR and the recipient's secret GPG key id. The \fI-o\fR 63 option can be used to specify the cipher specification: default is 64 "aes-xts-plain64:sha256", old versions of Tomb used 65 "aes-cbc-essiv:sha256". If you are looking for something exotic, also 66 try "serpent-xts-plain64". More options may be found in cryptsetup(8) 67 and Linux documentation. This operation requires root privileges to 68 loopback mount, format the tomb (using LUKS and Ext4), then set the 69 key in its first LUKS slot. 70 71 .B 72 .IP "open" 73 Opens an existing \fItomb file\fR (first argument) using a key 74 (\fI-k\fR) which can also be an \fIjpeg image\fR (see 75 \fIbury\fR/\fIexhume\fR). If a second argument is given it will 76 indicate the \fImountpoint\fR where the tomb should be made 77 accessible, else the tomb is mounted in a directory inside /media (if 78 not available it uses /run/media/$USER). The option \fI-o\fR can be 79 used to pass mount(8) options (default: rw,noatime,nodev). The 80 \fI-g\fR option is needed when using GPG encryption to recipients. 81 82 .B 83 .IP "list" 84 List all the tombs found open, including information about the time 85 they were opened and the hooks that they mounted. If the first 86 argument is present, then shows only the tomb named that way or 87 returns an error if it's not found. If the option 88 \fI--get-mountpoint\fR is used then print a simple list of currently 89 open tomb mountpoint paths. 90 91 .B 92 .IP "index" 93 Creates or updates the search indexes of all tombs currently open: 94 enables use of the \fIsearch\fR command using simple word patterns on 95 file names. Indexes are created using mlocate's updatedb(8) and 96 swish-e(1) if they are found on the system. Indexes allow to search 97 very fast for filenames and contents inside a tomb, they are stored 98 inside it and are not accessible if the Tomb is closed. To avoid 99 indexing a specific tomb simply touch a \fI.noindex\fR file in it. 100 101 .B 102 .IP "search" 103 Takes any string as argument and searches for them through all tombs 104 currently open and previously indexed using the \fIindex\fR command. 105 The search matches filenames if mlocate is installed and then also 106 file contents if swish++ is present on the system, results are listed 107 on the console. 108 109 .B 110 .IP "close" 111 Closes a currently open tomb. If more tombs are open, the first 112 argument should be used to specify the name of the tomb to be closed, 113 or \fIall\fR to close all currently open tombs. This command fails if 114 the tomb is in use by running processes (to force close, see 115 \fIslam\fR below). 116 117 .B 118 .IP "slam" 119 Closes a tomb like the command \fIclose\fR does, but it doesn't fail 120 even if the tomb is in use by other application processes: it looks 121 for and closes each of them (in order: TERM, HUP, KILL). This command may 122 provoke unsaved data loss, but assists users to face surprise 123 situations. It requires \fIlsof\fR else it falls back to \fIclose\fR. 124 125 126 .B 127 .IP "passwd" 128 Changes the password protecting a key file specified using 129 \fI-k\fR. With keys encrypted for GPG recipients use \fI-g\fR followed 130 by \fI-r\fR to indicate the new recipient key, or a comma separated 131 list.. The user will need to know the key's current password, or 132 possess at least one of the current recipients GPG secret keys, 133 because the key contents will be decoded and reencoded using the new 134 passwords or keys. If the key file is broken (missing headers) this 135 function also attempts its recovery. 136 137 .B 138 .IP "setkey" 139 Changes the key file that locks a tomb, substituting the old one with 140 a new one. Both the old and the new key files are needed for this 141 operation and their passwords or GPG recipient(s) secret keys must be 142 available. The new key must be specified using the \fI-k\fR option, 143 the first argument should be the old key and the second and last 144 argument the tomb file. Use the \fI-g\fR option to unlock the tomb 145 with a GPG key, the \fI-r\fR to indicate the recipient or a comma 146 separated list for more than one recipient. 147 148 .B 149 .IP "resize" 150 Increase the size of a tomb file to the amount specified by the 151 \fI-s\fR option, which is the new size in megabytes (MiB). Full access to the tomb using 152 a key (\fI-k\fR) and its password is required. Tombs can only grow and 153 can never be made smaller. This command makes use of the cryptsetup(8) 154 resize feature and the resize2fs command: its much more practical than 155 creating a new tomb and moving everything into it. 156 157 .B 158 .IP "engrave" 159 This command transforms a tomb key into an image that can be printed 160 on paper and physically stored as backup, i.e. hidden in a book. It 161 Renders a QRCode of the tomb key, still protected by its password: a 162 PNG image (extension \fI.qr.png\fR) will be created in the current 163 directory and can be later printed (fits an A4 or Letter format). To 164 recover an engraved key one can use any QRCode reader on a smartphone: 165 save it into a file and then use that file as a key (\fI-k\fR). 166 167 .B 168 .IP "bury" 169 Hides a tomb key (\fI-k\fR) inside a \fIjpeg image\fR (first argument) 170 using \fIsteganography\fR: the image will change in a way that cannot 171 be noticed by human eye and hardly detected by data analysis. This 172 option is useful to backup tomb keys in unsuspected places; it depends 173 from the availability of \fIsteghide\fR. Use the \fI-g\fR flag and 174 \fI-r\fR option followed by recipient id to use GPG asymmetric 175 encryption. 176 177 .B 178 .IP "exhume" 179 This command recovers from jpeg images the keys that were previously 180 hidden into them using \fIbury\fR. Exhume requires a key filename 181 (\fI-k\fR) and a \fIjpeg image\fR file (first argument) known to be 182 containing a key. If the right key password is given, the key will be 183 exhumed. If the password is not known, it is very hard to verify if a 184 key is buried in any image or not. 185 186 .SH OPTIONS 187 .B 188 .B 189 .IP "-k \fI<keyfile>\fR" 190 For all operations requiring a key, this option specifies the location 191 of the key file to use. Arguments can also be \fIjpeg image\fR files 192 where keys have been hidden using the \fIbury\fR command, or text 193 files retrieved from \fIengraved\fR QR codes. If the \fIkeyfile\fR 194 argument is "-" (dash), Tomb will read the key from stdin (blocking). 195 .B 196 .IP "-n" 197 Skip processing of post-hooks and bind-hooks if found inside the tomb. 198 See the \fIHOOKS\fR section in this manual for more information. 199 .B 200 .IP "-o" 201 Manually specify mount options to be used when opening a tomb instead 202 of the default \fIrw,noatime,nodev\fR, i.e. to mount a tomb read-only 203 (ro) to prevent any modification of its data. Can also be used to 204 change the symmetric encryption algorithm for keys during \fIforge\fR 205 operations (default \fIAES256\fR) or the LUKS encryption method during 206 \fIlock\fR operations (default \fIaes-xts-plain64:sha256\fR). 207 .B 208 .IP "-f" 209 Force flag, currently used to override swap checks, might be 210 overriding more wimpy behaviours in future, but make sure you know 211 what you are doing if you force an operation. 212 .B 213 .IP "-s \fI<MBytes>\fR" 214 When digging or resizing a tomb, this option must be used to specify 215 the \fIsize\fR of the new file to be created. Units are megabytes (MiB). 216 .B 217 .IP "-g" 218 Tell tomb to use a asymmetric GnuPG key encryption instead of a 219 symmetric passphrase to protect a tomb key. This option can be followed by \fI-r\fR when the command needs to specify recipient(s). 220 .B 221 .IP "-r \fI<gpg_id>[,<gpg_id2>]\fR" 222 Provide a new set of recipient(s) to encrypt a tomb key. \fIgpg_ids\fR 223 can be one or more GPG key ID, comma separated. 224 .B 225 .IP "--kdf \fI<itertime>\fR" 226 Activate the KDF feature against dictionary attacks when creating a 227 key: forces a delay of \fI<itertime>\fR times every time this key is 228 used. The actual time to wait depends on the CPU speed of the 229 computer where the key is used. Using 5 or 10 is a sane amount for 230 modern computers, the value is multiplied by 1 million. 231 .B 232 .IP "-h" 233 Display a help text and quit. 234 .B 235 .IP "-v" 236 Display version and quit. 237 .B 238 .IP "-q" 239 Run more quietly 240 .B 241 .IP "-D" 242 Print more information while running, for debugging purposes 243 244 .SH DEV MODE 245 .B 246 .IP "--no-color" 247 Suppress colors in console output (needed for string parsing by 248 wrappers). 249 .B 250 .IP "--unsafe" 251 Enable using dev-mode arguments, i.e. to pass passwords from 252 commandline options. This is mostly used needed for execution by 253 wrappers and testing suite. 254 .B 255 .IP "--use-urandom" 256 Use a non-blocking random source to improve the speed of the 257 \fIforge\fR command (key generation): tomb uses /dev/urandom instead 258 of /dev/random. According to some people using the non-blocking source 259 of Linux kernel doesn't degrades the quality of random. 260 .B 261 .IP "--tomb-pwd <string>" 262 Use string as password when needed on tomb. 263 .B 264 .IP "--tomb-old-pwd <string>" 265 Use string as old password when needed in tomb commands requiring 266 multiple keys, like \fIpasswd\fR or \fIsetkey\fR. 267 .B 268 .IP "-U" 269 Switch to this user ID when dropping privileges. 270 .B 271 .IP "-G" 272 Switch to this group ID when dropping privileges. 273 .B 274 .IP "-T" 275 Switch to this TTY terminal when dropping privileges. 276 277 .SH HOOKS 278 279 Hooks are special files that can be placed inside the tomb and trigger 280 actions when it is opened and closed; there are two kinds of such 281 files: \fIbind-hooks\fR and \fIpost-hooks\fR can be placed in the 282 base root of the tomb. 283 284 .B 285 .IP "bind-hooks" 286 This hook file consists of a simple two column list of files or 287 directories inside the tomb to be made directly accessible inside the 288 current user's home directory. Tomb will use the "mount \-o bind" 289 command to bind locations inside the tomb to locations found in $HOME 290 so in the first column are indicated paths relative to the tomb and in 291 the second column are indicated paths relative to $HOME contents, for 292 example: 293 .EX 294 mail mail 295 .gnupg .gnupg 296 .fmrc .fetchmailrc 297 .mozilla .mozilla 298 .EE 299 300 .B 301 .IP "exec-hooks" 302 This hook file gets executed as user by tomb with the first argument 303 determining the step of execution: "open" or "close". The exec-hooks 304 file should be an executable (ELF or shell script) present inside the 305 Tomb. Tomb executes this hook as user supplying two or more arguments, 306 the first being the step, followed by the mountpoint of the tomb and, 307 on close events, its name, loopback device and dev-mapper device 308 paths. 309 310 .SH PRIVILEGE ESCALATION 311 312 The tomb commandline tool needs to acquire super user rights to 313 execute most of its operations: to do so it uses sudo(8), while 314 pinentry(1) is adopted to collect passwords from the user. Tomb 315 executes as super user only when required. 316 317 To be made available on multi user systems, the superuser execution of 318 the tomb script can be authorized for users without jeopardizing the 319 whole system's security: just add such a line to \fI/etc/sudoers\fR: 320 321 .EX 322 username ALL=NOPASSWD: /usr/local/bin/tomb 323 .EE 324 325 Password input is handled by the pinentry program: it can be text 326 based or graphical and is usually configured with a symlink. When 327 using Tomb in X11 it is better to use a graphical pinentry-gtk2 or 328 pinentry-qt because it helps preventing keylogging by other X 329 clients. When using it from a remote ssh connection it might be 330 necessary to force use of pinentry-curses for instance by unsetting 331 the DISPLAY environment var. 332 333 334 .SH SWAP 335 336 On execution of certain commands Tomb will complain about swap memory 337 on disk when present and \fIabort if your system has swap 338 activated\fR. You can disable this behaviour using the 339 \fI--force\fR. Before doing that, however, you may be interested in 340 knowing the risks of doing so: 341 .IP \(bu 342 During such operations a lack of available memory could cause the swap 343 to write your secret key on the disk. 344 .IP \(bu 345 Even while using an opened tomb, another application could occupy too 346 much memory so that the swap needs to be used, this way it is possible 347 that some contents of files contained into the tomb are physically 348 written on your disk, not encrypted. 349 .P 350 351 If you don't need swap, execute \fI swapoff -a\fR. If you really need 352 it, you could make an encrypted swap partition. Tomb doesn't detect if 353 your swap is encrypted, and will complain anyway. 354 355 .SH DENIABILITY 356 357 The possibility to have an encrypted volume which is invisible and 358 cannot be detected is called "deniability". The cryptographic layer of 359 the device mapper in Linux (dm-crypt) does not implement 360 deniability. Tomb is just a wrapper on top of that and it doesn't add 361 cryptographic deniability. However a certain way of using tomb can 362 facilitate a weak sort of deniability outside of the scenario of 363 seized devices and forensic analysis of files and blocks on disc. 364 365 For instance to eliminate any trace of tomb usage from the shell 366 history ZSh users can activate the "HISTIGNORESPACE" feature and 367 prefix all invokations of tomb with a blank space, including two lines 368 in ".zshrc": 369 370 .EX 371 export HISTIGNORESPACE=1 372 alias tomb=' tomb' 373 .EE 374 375 .SH PASSWORD INPUT 376 377 Tomb uses the external program "pinentry" to let users type the key password into a terminal or a graphical window. This program works in conjunction with "gpg-agent", a daemon running in background to facilitate secret key management with gpg. It is recommended one runs "gpg-agent" launching it from the X session initialization ("~/.xsession" or "~/.xinitrc" files) with this command: 378 379 .EX 380 eval $(gpg-agent --daemon --write-env-file "${HOME}/.gpg-agent-info") 381 .EE 382 383 In the future it may become mandatory to run gpg-agent when using tomb. 384 385 .SH SHARE A TOMB 386 A tomb key can be encrypted with more than one recipient. Therefore, a 387 tomb can be shared between different users. The recipients are given 388 using the \fI-r\fR (or/and \fI-R\fR) option and if multiple each GPG 389 key ID must be separated by a comma (\fI,\fR). Sharing a tomb is a 390 very sensitive action and the user needs to trust that all the GPG 391 public keys used are kept safe. If one of them its stolen or lost, it 392 will be always possible to use it to access the tomb key unless all 393 its copies are destroyed. The \fI-r\fR option can be used in the tomb 394 commands: \fIopen\fR, \fIforge\fR \fIsetkey\fR, \fIpasswd\fR, 395 \fIbury\fR, \fIexhume\fR and \fIresize\fR. 396 397 .SH EXAMPLES 398 399 .IP \(bu 400 Create a 128MB large "secret" tomb and its keys, then open it: 401 402 .EX 403 tomb dig -s 128 secret.tomb 404 405 tomb forge secret.tomb.key 406 407 tomb lock secret.tomb -k secret.tomb.key 408 409 tomb open secret.tomb -k secret.tomb.key 410 .EE 411 412 .IP \(bu 413 Open a Tomb using the key from a remote SSH shell, without saving any 414 local copy of it: 415 416 .EX 417 ssh user@my.shell.net 'cat .secrets/tomb.key' | tomb open secret.tomb -k - 418 .EE 419 420 .IP \(bu 421 Open a Tomb on a remote server passing the unencrypted local key on stdin via SSH, 422 without saving any remote copy of it: 423 424 .EX 425 gpg -d .secrets/tomb.key | ssh server tomb open secret.tomb -k cleartext --unsafe 426 .EE 427 428 .IP \(bu 429 Create a bind hook that places your GnuPG folder inside the tomb, but 430 makes it reachable from the standard $HOME/.gnupg location every time 431 the tomb will be opened: 432 433 .EX 434 tomb open GPG.tomb -k GPG.tomb.key 435 echo ".gnupg .gnupg" > /media/GPG.tomb/bind-hooks 436 mv ~/.gnupg /media/GPG.tomb/.gnupg && mkdir ~/.gnupg 437 tomb close GPG && tomb open GPG.tomb -k GPG.tomb.key 438 .EE 439 440 .IP \(bu 441 Script a tomb to launch the Firefox browser every time is opened, 442 keeping all its profile data inside it: 443 444 .EX 445 tomb open FOX.tomb -k FOX.tomb.key 446 cat <<EOF > /media/FOX.tomb/post-hooks 447 #!/bin/sh 448 if [ "$1" = "open" ]; then 449 firefox -no-remote -profile "$2"/firefox-pro & 450 fi 451 EOF 452 chmod +x /media/FOX.tomb/post-hooks 453 .EE 454 455 .IP \(bu 456 Script a tomb to archive Pictures using Shotwell, launching it on open: 457 458 .EX 459 tomb open Pictures.tomb -k Pictures.tomb.key 460 cat <<EOF > /media/Pictures.tomb/bind-hooks 461 Pictures Pictures 462 EOF 463 cat <<EOF > /media/Pictures.tomb/post-hooks 464 #!/bin/sh 465 if [ "$1" = "open" ]; then 466 which shotwell > /dev/null 467 if [ "$?" = "0" ]; then 468 shotwell -d "$2"/Pictures/.shotwell & 469 fi 470 fi 471 EOF 472 chmod +x /media/Pictures.tomb/post-hooks 473 .EE 474 475 .SH BUGS 476 Please report bugs on the Github issue tracker at 477 .UR https://github.com/dyne/Tomb/issues 478 .UE 479 480 One can also try to get in touch with developers via the #dyne chat 481 channel on \fIhttps://irc.dyne.org\fR. 482 483 .SH COPYING 484 485 This manual is Copyright (c) 2011-2017 by Denis Roio <\fIjaromil@dyne.org\fR> 486 487 This manual includes contributions by Boyska and Hellekin O. Wolf. 488 489 Permission is granted to copy, distribute and/or modify this manual 490 under the terms of the GNU Free Documentation License, Version 1.1 or 491 any later version published by the Free Software Foundation. 492 Permission is granted to make and distribute verbatim copies of this 493 manual page provided the above copyright notice and this permission 494 notice are preserved on all copies. 495 496 .SH AVAILABILITY 497 498 The most recent version of Tomb sourcecode and up to date 499 documentation is available for download from its website on 500 \fIhttps://tomb.dyne.org\fR. 501 502 .SH SEE ALSO 503 504 .B 505 .IP cryptsetup(8) 506 .B 507 .IP pinentry(1) 508 .B 509 .IP gpg-agent(1) 510 511 GnuPG website: https://www.gnupg.org 512 513 DM-Crypt website: https://gitlab.com/cryptsetup/cryptsetup/wikis/DMCrypt 514 515 LUKS website: https://gitlab.com/cryptsetup/cryptsetup/wikis/home