Disable wait for entropy (useful for batch tests)
Force through errors where possible
Disable memory locking
Quiet
Quick and quiet, enable -d0, -ELQTW and -P0 options
Disable reseting file time stamps to epoch
Disable memory wiping (useful for batch tests)
Set debug level to 'level'
Set self-psychoanalysis rigour to 'level'
Dump informative info about aspect
Attach extent
Binds aspect to device
Change keying for aspect
Decrypt from Aspect to output
Conventional file decryption
Dekey aspect
Detach previously attached extent
Encrypt from input to Aspect
Conventional file encryption
Show example usage for command
General help or help on a particular command
Display configuration
Key aspect (needs an attached extent)
List available ciphers, commands or remaps
Create new aspect for keymap
Create new extent
Create new keymap file
Visit the psychiatrist
Dump remap information
Test cipher speeds
Sync hose daemon pending writes to disk
Terminate hose daemon
Unbind aspect from device
Wipe file or extent
aspectinfo [-a aspect] [keymap]
Use aspect number 'aspect'
Dump informative info about aspect |
Example 1. Example aspectinfo
$ hose aspectinfo -a 0 maru.keymap Agitating master key with cast-cbc key generator over 123562 iterations... Aspect 1 passphrase ("." to end): Aspect 2 passphrase ("." to end): Aspect 3 passphrase ("." to end): Aspect 4 passphrase ("." to end): Aspect 5 passphrase ("." to end): Aspect 0: Lattice Cipher: cast-cbc Block Cipher: idea-cbc Start: 0 Blocks: 64 |
attachextent [-B] [-a aspect] [-R path] [keymap [extent [device]]]
Disable pro-active block reallocation (bmap)
Use aspect number 'aspect'
Rendezvous with hosed AF_UNIX socket at 'path'
Attach extent |
bindaspect [-R] [-a aspect]
Rendezvous with hosed AF_UNIX socket at 'path'
Use aspect number 'aspect'
Binds aspect to device |
changepass [-a aspect] [keymap]
Use aspect number 'aspect'
Change keying for aspect |
decryptaspect [-a aspect] [-o file] [-s blocks] [keymap [extent [output]]]
Use aspect number 'aspect'
Output operation to 'file'
Size in 'blocks'
Decrypt from Aspect to output |
Example 5. Example decryptaspect
$ hose decryptaspect -a 0 -o maru.out Agitating master key with cast-cbc key generator over 123562 iterations... Aspect 1 passphrase ("." to end): Aspect 2 passphrase ("." to end): Aspect 3 passphrase ("." to end): Aspect 4 passphrase ("." to end): Aspect 5 passphrase ("." to end): decrypted 64 blocks from maru.extent to maru.out |
decryptfile [-3 cipher] [-i file] [-o file] [-V iv] [input [output]]
Cipher for block encryption/decryption
Take input from 'file'
Output operation to 'file'
Use 'iv' (in hex) as the initialisation vector
Conventional file decryption |
Example 6. Example decryptfile
$ hose decryptfile -3 idea-cbc -i maru.ciphertext -V 0xadeadfedbabecafe -o maru.out Passphrase: |
dekeyaspect [-a aspect] [-R path]
Use aspect number 'aspect'
Rendezvous with hosed AF_UNIX socket at 'path'
Dekey aspect |
detachextent [-R path]
Rendezvous with hosed AF_UNIX socket at 'path'
Detach previously attached extent |
encryptaspect [-B] [-a aspect] [-i file] [-s blocks] [keymap [extent [input]]]
Disable pro-active block reallocation (bmap)
Use aspect number 'aspect'
Take input from 'file'
Size in 'blocks'
Encrypt from input to Aspect |
Example 9. Example encryptaspect
$ hose encryptaspect -a 0 -i maru.plaintext maru.keymap Agitating master key with cast-cbc key generator over 123562 iterations... Aspect 1 passphrase ("." to end): Aspect 2 passphrase ("." to end): Aspect 3 passphrase ("." to end): Aspect 4 passphrase ("." to end): Aspect 5 passphrase ("." to end): encrypted 32 blocks from maru.plaintext to maru.extent |
encryptfile [-3 cipher] [-i file] [-o file] [-V iv] [input [output]]
Cipher for block encryption/decryption
Take input from 'file'
Output operation to 'file'
Use 'iv' (in hex) as the initialisation vector
Conventional file encryption |
Example 10. Example encryptfile
$ hose encryptfile -3 idea-cbc -i maru.plaintext -o maru.ciphertext Passphrase: |
Example 11. Example example
$ hose example newaspect Example: ../hose/hose newaspect -2 cast-cbc -3 idea-cbc -a 0 -s 64 -t 1 maru.keymap |
help [-S] [commands | options | command]
SGML output
General help or help on a particular command |
Example 12. Example help
$ hose help newkeymap Usage: ../hose/hose [-EfLqQTW] [-d level] [-P level] newkeymap [-1 cipher] [-A aspects] [-b bytes] [-c blocks] [-D depth] [-r remap] [-s blocks] [keymap] Description: Create new keymap file Local options: -1 cipher Cipher for encryption/decryption of keys -A aspects Max number of usable aspects -b bytes Block size in bytes -c blocks Largest aspect size in blocks -D depth Depth of block key lattice -r remap Use remap type 'remap' -s blocks Size in 'blocks' Global options: -E Disable wait for entropy (useful for batch tests) -f Force through errors where possible -L Disable memory locking -q Quiet -Q Quick and quiet, enable -d0, -ELQTW and -P0 options -T Disable reseting file time stamps to epoch -W Disable memory wiping (useful for batch tests) -d level Set debug level to 'level' -P level Set self-psychoanalysis rigour to 'level' Example: ../hose/hose newkeymap -1 cast-cbc -A 6 -b 8192 -c 32 -r bmap -s 128 maru.keymap |
info [-l seconds] [-I seconds] [-x msec] [keymap [extent [device]]]
Autodetach after 'seconds' of idleness
Autodetach after 'seconds' since attach
Use 'msec' miliseconds between cipher state xors
Display configuration |
Example 13. Example info
$ hose info maru.keymap Major Version: 2 Minor Version: 1 Key Cipher: name cast-cbc cipher_num 1 key_size 128 bits block_size 64 bits state/ksch 132 bytes Key Iterations: 123562 Blocks: 128 Block Size: 8192 Lattice Depth: 32 (4194304k addressable bytes) Aspects: 6 Remap Type: bmap Checksum: 0xabf0bfb5 Maru device: /dev/maru0 Maru extents: maru.extent Maru IV/SALT: maru.keymap Life time: 28800 (seconds) Idle time: 1800 (seconds) XOR cycle: 500 (mili seconds) |
keyaspect [-R] [-a aspect]
Rendezvous with hosed AF_UNIX socket at 'path'
Use aspect number 'aspect'
Key aspect (needs an attached extent) |
list [-m] [ciphers | commands | remaps]
Minimal output
List available ciphers, commands or remaps |
Example 15. Example list
$ hose list ciphers name xor cipher_num 16 key_size 256 bits block_size 0 bits (stream cipher) state/ksch 4 bytes name bcopy cipher_num 17 key_size 256 bits block_size 0 bits (stream cipher) state/ksch 4 bytes name idea-cbc cipher_num 2 key_size 128 bits block_size 64 bits state/ksch 432 bytes name cast-cbc cipher_num 1 key_size 128 bits block_size 64 bits state/ksch 132 bytes name ssl-blowfish-cbc cipher_num 6 key_size 448 bits block_size 64 bits state/ksch 8196 bytes name ssl-rc2-cbc cipher_num 12 key_size 128 bits block_size 64 bits state/ksch 8196 bytes name ssl-rc4 cipher_num 13 key_size 256 bits block_size 0 bits (stream cipher) state/ksch 8196 bytes name ssl-rc5-cbc cipher_num 15 key_size 128 bits block_size 64 bits state/ksch 8196 bytes name ssl-idea-cbc cipher_num 11 key_size 128 bits block_size 64 bits state/ksch 8196 bytes name ssl-des-cbc cipher_num 7 key_size 64 bits (56 bits real) block_size 64 bits state/ksch 8196 bytes name ssl-des-ede-cbc cipher_num 8 key_size 128 bits (112 bits real) block_size 64 bits state/ksch 8196 bytes name ssl-des-ede3-cbc cipher_num 9 key_size 192 bits (168 bits real) block_size 64 bits state/ksch 8196 bytes name ssl-desx-cbc cipher_num 10 key_size 192 bits (168 bits real) block_size 64 bits state/ksch 8196 bytes name ssl-cast-cbc cipher_num 14 key_size 128 bits block_size 64 bits state/ksch 8196 bytes name rc16 cipher_num 4 key_size 256 bits block_size 0 bits (stream cipher) state/ksch 131080 bytes |
newaspect [-2 cipher] [-3 cipher] [-a aspect] [-O block] [-s blocks] [-t time] [keymap]
Cipher for generation of block keys
Cipher for block encryption/decryption
Use aspect number 'aspect'
Start block range at offset 'block'
Size in 'blocks'
Use 'time' seconds of key cycle agitation
Create new aspect for keymap |
Example 16. Example newaspect
$ hose newaspect -2 cast-cbc -3 idea-cbc -a 0 -s 64 -t 1 maru.keymap Generating 11128 pseudo-cryptographically random bytes for aspect 0 erasure ........................................ Generating 32 pseudo-cryptographically random bytes for aspect 0 key salt ........................................ Generating 104 pseudo-cryptographically random bytes for aspect 0 cycle ........................................ Generating 32 cryptographically random bytes for aspect 0 master key ........................................ Generating 32 cryptographically random bytes for aspect 0 info key ........................................ Generating 32 cryptographically random bytes for aspect 0 remap master key ........................................ Generating 104 pseudo-cryptographically random bytes for cycle salt ........................................ Agitating cast-cbc key generator state for 1 second... 123562 cast-cbc agitations (123562 per second) Generating 4 pseudo-cryptographically random bytes for aspect information salt ........................................ Generating 64 pseudo-cryptographically random bytes for primary lattice key salts ........................................ Generating 2048 pseudo-cryptographically random bytes for subkey lattice IVs ........................................ Generating 8192 pseudo-cryptographically random bytes for block whitener ........................................ Clearing key artifacts |
newextent [-1 cipher] [-w rounds] [-s blocks] [-b bytes] [keymap] [extent]
Cipher for encryption/decryption of keys
Block size in bytes
Size in 'blocks'
Apply 'rounds' worth of wiping
Create new extent |
Example 17. Example newextent
$ hose newextent -1 cast-cbc -w 0 -s 128 -b 8192 hose: Warning: creating extent using Unix file holes. Such extents are *not* crypto-deniable. Extent creation complete (1048576 bytes) |
newkeymap [-1 cipher] [-A aspects] [-b bytes] [-c blocks] [-D depth] [-r remap] [-s blocks] [keymap]
Cipher for encryption/decryption of keys
Max number of usable aspects
Block size in bytes
Largest aspect size in blocks
Depth of block key lattice
Use remap type 'remap'
Size in 'blocks'
Create new keymap file |
Example 18. Example newkeymap
$ hose newkeymap -1 cast-cbc -A 6 -b 8192 -c 32 -r bmap -s 128 maru.keymap Generating 64496 pseudo-cryptographically random bytes for keymap erasure ........................................ Maru keymap generation complete. Saving Maru Keymap as "maru.keymap" * MAKE AT LEAST TWO BACKUPS of this file. If a single bit sells out to the dark forces of entropy, your entire maru ciphertext extent will follow suit! |
Example 19. Example psycho
$ hose -d 9 -P 9 psycho hose: psychoanalysis: checking that all command options have help... hose: psychoanalysis: checking that all options have commands that use them... hose: psychoanalysis: sizeof (m_u64) == 8... passed hose: psychoanalysis: sizeof (m_u32) == 4... passed hose: psychoanalysis: sizeof (m_u16) == 2... passed hose: psychoanalysis: sizeof (m_u8) == 1... passed hose: psychoanalysis: sizeof (int) >= 4... passed hose: psychoanalysis: hton8(0x12) == 0x12... passed hose: psychoanalysis: hton16(0x1234) == 0x3412... passed hose: psychoanalysis: hton32(0x12345678) == 0x78563412... passed hose: psychoanalysis: hton64(0x1122334455667788) == 0x8877665544332211... passed hose: psychoanalysis: MAX_PASSPHRASE >= MIN_PASSPHRASE... passed hose: psychoanalysis: MAX_IV == MAX_CIPHER_BLOCK... passed hose: psychoanalysis: MAX_CIPHER_BLOCK == 8... passed hose: psychoanalysis: sizeof (maruPass) == MAX_PASSPHRASE... passed hose: psychoanalysis: sizeof (maruKey) == MAX_KEY... passed hose: psychoanalysis: sizeof (maruIV) == MAX_IV... passed hose: psychoanalysis: sizeof (maruBlock) == MAX_CIPHER_BLOCK... passed hose: psychoanalysis: blockAligned(maruCycle)... passed hose: psychoanalysis: blockAligned(maruAspectInfo)... passed hose: psychoanalysis: examining "/home/proff"... passed hose: psychoanalysis: examining "/etc/mtab"... passed hose: psychoanalysis: xor auto test vector in == out, ply = 1... passed hose: psychoanalysis: xor auto test vector in != out, ply = 1... passed hose: psychoanalysis: bcopy auto test vector in == out, ply = 1... passed hose: psychoanalysis: bcopy auto test vector in != out, ply = 1... passed hose: psychoanalysis: idea-cbc auto test vector in == out, ply = 1... passed hose: psychoanalysis: idea-cbc auto test vector in != out, ply = 1... passed hose: psychoanalysis: cast-cbc auto test vector in == out, ply = 1... passed hose: psychoanalysis: cast-cbc auto test vector in != out, ply = 1... passed hose: psychoanalysis: ssl-blowfish-cbc auto test vector in == out, ply = 1... passed hose: psychoanalysis: ssl-blowfish-cbc auto test vector in != out, ply = 1... passed hose: psychoanalysis: ssl-rc2-cbc auto test vector in == out, ply = 1... passed hose: psychoanalysis: ssl-rc2-cbc auto test vector in != out, ply = 1... passed hose: psychoanalysis: ssl-rc4 auto test vector in == out, ply = 1... passed hose: psychoanalysis: ssl-rc4 auto test vector in != out, ply = 1... passed hose: psychoanalysis: ssl-rc5-cbc auto test vector in == out, ply = 1... passed hose: psychoanalysis: ssl-rc5-cbc auto test vector in != out, ply = 1... passed hose: psychoanalysis: ssl-idea-cbc auto test vector in == out, ply = 1... passed hose: psychoanalysis: ssl-idea-cbc auto test vector in != out, ply = 1... passed hose: psychoanalysis: ssl-des-cbc auto test vector in == out, ply = 1... passed hose: psychoanalysis: ssl-des-cbc auto test vector in != out, ply = 1... passed hose: psychoanalysis: ssl-des-ede-cbc auto test vector in == out, ply = 1... passed hose: psychoanalysis: ssl-des-ede-cbc auto test vector in != out, ply = 1... passed hose: psychoanalysis: ssl-des-ede3-cbc auto test vector in == out, ply = 1... passed hose: psychoanalysis: ssl-des-ede3-cbc auto test vector in != out, ply = 1... passed hose: psychoanalysis: ssl-desx-cbc auto test vector in == out, ply = 1... passed hose: psychoanalysis: ssl-desx-cbc auto test vector in != out, ply = 1... passed hose: psychoanalysis: ssl-cast-cbc auto test vector in == out, ply = 1... passed hose: psychoanalysis: ssl-cast-cbc auto test vector in != out, ply = 1... passed hose: psychoanalysis: rc16 auto test vector in == out, ply = 1... passed hose: psychoanalysis: rc16 auto test vector in != out, ply = 1... passed Passed the maru DSM, level 9 |
Example 20. Example remapinfo
$ hose remapinfo maru.keymap Agitating master key with cast-cbc key generator over 123562 iterations... Aspect 1 passphrase ("." to end): Aspect 2 passphrase ("." to end): Aspect 3 passphrase ("." to end): Aspect 4 passphrase ("." to end): Aspect 5 passphrase ("." to end): Remap type: bmap Dynamically distribute blocks to aspects Block -> Aspect ownership map (* = collision): 0 ...................................................................... 46 .......................................................... |
speeds [-eS] [-a aspect] [keymap [extent]]
Use entire maru encryption path for speed calculations
SGML output
Use aspect number 'aspect'
Test cipher speeds |
Example 21. Example speeds
$ hose speeds Cipher | setkey/s | 512k/s | 1024k/s | 2048k/s | 4096k/s | 8192k/s =================+==========+=========+=========+=========+=========+======== xor | 28395307 | 688120 | 735121 | 756022 | 769100 | 766624 -----------------+----------+---------+---------+---------+---------+-------- bcopy | 28817071 | 453326 | 587886 | 685740 | 746232 | 779120 -----------------+----------+---------+---------+---------+---------+-------- idea-cbc | 1801295 | 4339 | 4193 | 4166 | 4196 | 4224 -----------------+----------+---------+---------+---------+---------+-------- idea-cbc-D | 31245 | 4272 | 4150 | 4136 | 4188 | 4168 -----------------+----------+---------+---------+---------+---------+-------- cast-cbc | 462943 | 12883 | 13008 | 12980 | 13120 | 12888 -----------------+----------+---------+---------+---------+---------+-------- ssl-blowfish-cbc | 4048 | 14312 | 14369 | 14462 | 14444 | 14240 -----------------+----------+---------+---------+---------+---------+-------- ssl-rc2-cbc | 124204 | 4211 | 4200 | 4226 | 4248 | 4248 -----------------+----------+---------+---------+---------+---------+-------- ssl-rc4 | 117164 | 23569 | 29444 | 32970 | 35716 | 36976 -----------------+----------+---------+---------+---------+---------+-------- ssl-rc5-cbc | 294663 | 10822 | 10803 | 10914 | 10812 | 10800 -----------------+----------+---------+---------+---------+---------+-------- ssl-rc5-cbc-D | 294667 | 18364 | 18599 | 18600 | 18472 | 18592 -----------------+----------+---------+---------+---------+---------+-------- ssl-idea-cbc | 1332064 | 5902 | 6203 | 6282 | 6324 | 6408 -----------------+----------+---------+---------+---------+---------+-------- ssl-idea-cbc-D | 31311 | 5863 | 6317 | 6390 | 6280 | 6216 -----------------+----------+---------+---------+---------+---------+-------- ssl-des-cbc | 455926 | 5507 | 5512 | 5536 | 5524 | 5504 -----------------+----------+---------+---------+---------+---------+-------- ssl-des-ede-cbc | 222911 | 1962 | 1954 | 1964 | 1956 | 1968 -----------------+----------+---------+---------+---------+---------+-------- ssl-des-ede3-cbc | 163273 | 1959 | 1948 | 1958 | 1928 | 1960 -----------------+----------+---------+---------+---------+---------+-------- ssl-desx-cbc | 456771 | 5508 | 5384 | 5420 | 5424 | 5400 -----------------+----------+---------+---------+---------+---------+-------- ssl-cast-cbc | 340860 | 9570 | 9515 | 9530 | 9624 | 9536 -----------------+----------+---------+---------+---------+---------+-------- rc16 | 424 | 30795 | 30680 | 30936 | 30864 | 30912 -----------------+----------+---------+---------+---------+---------+-------- |
sync [-R path]
Rendezvous with hosed AF_UNIX socket at 'path'
Sync hose daemon pending writes to disk |
terminate [-R path]
Rendezvous with hosed AF_UNIX socket at 'path'
Terminate hose daemon |
unbindaspect [-a aspect] [-R path]
Use aspect number 'aspect'
Rendezvous with hosed AF_UNIX socket at 'path'
Unbind aspect from device |
wipe [-1 cipher] [-b bytes] [extent]
Cipher for encryption/decryption of keys
Block size in bytes
Wipe file or extent |
Example 25. Example wipe
$ hose wipe -1 rc16 maru.extent Generating 32 cryptographically random bytes for rc16 erasure key ........................................ Erasing maru.extent (and mirrors) with rc16(/dev/random): pass 1 192512/1048576 Erasing maru.extent (and mirrors) with rc16(/dev/random): pass 1 522240/1048576 Erasing maru.extent (and mirrors) with rc16(/dev/random): pass 1 843776/1048576 Erasing maru.extent (and mirrors) with rc16(/dev/random): pass 1 1048576/1048576 |