Encrypting data files and email
Encrypting your harddrive
Sources of random data
Hiding data on your harddrive
Several encryption programs are also available to encrypt your data, some at the file level (PGP, GnuPG, etc.) and some at the drive level (Cryptographic File System for example). These systems are very appropriate for the storage of secure data, and to some degree for the transmission of secure data. However both ends will require the correct software, compatible versions, and an exchange of public keys will somehow have to take place, which is unfortunately, an onerous task for most people. In addition to this you have no easy way of trusting someone's public key unless you receive it directly from them (such as at a key signing party), or unless it is signed by someone else you trust (but how do you get the trusted signer's key securely?). Systems for drive encryption such as CFS (Cryptographic FileSystem) are typically easy to implement, and only require the user to provide a password or key of some form to access their files. There is a really good article on choosing key sizes at http://www.cryptosavvy.com/ which raises some issues you probably hadn't considered. I would recomend reading it.
The granddaddy of public encryption, this is by far one of the most popular programs as it is supported under Unix, Windows and Macintosh. Unfortunately it has now been commercialized, which has resulted in a loss of quality for users. I personally believe any software used to encrypt or otherwise secure data MUST be open source or how else can you be sure it is secure. PGP is now sold by Network Associates and I cannot in good faith recommend it as a security mechanism for the secure storage and transmission of files. PGP is available for download from ftp://ftp.zedz.net/, http://www.pgp.com/, and http://www.pgpi.org/.
The alternative to PGP, GnuPG (GPG) is a direct replacement that is fully opensource and GNU licensed (as if the name didn't give it away). This tool is available at: http://www.gnupg.org/, as source code or precompiled binaries for windows, and RPM's. There is also an article here on GnuPG that I wrote.
pgp4pine is a PGP shell for pine that allows easy usage of PGP/GnuPG from within pine. Signing / encrypting and so on is made easier. You can get it from: http://www.rhrk.uni-kl.de/~lamm/pgp4pine/.
HardEncrypt is a one time pad generator and a set of tools to use it. In theory one time pads are an almost unbreakable form of encryption. Using a set of random, cryptographically secure data you completely mangle your private data, to decrypt it you need the one time pad. This form of encryption is ideal for communication of sensitive data with one catch, you must first transfer the one time pad to the other party. You can download HardEncrypt from: http://www.csuglab.cornell.edu/Info/People/jcr13/HardenedCriminal/main.html.
secret-share allows you to break a file up into as many pieces as you want, all of which are needed to successfully rebuild the file. All but one of the pieces are random data that is encrypted, obfuscating it somewhat. You can download it from: http://www.mindrot.org/code/secret-share.php3.
CFS allows you to keep data on your harddrive in an encrypted format, and is significantly easier to use then a file encryption program (such as PGP) if you have many files and directories you want to keep away from curious people. The official distribution site is at: http://www.cryptography.org/, and RPM's are available at: ftp://ftp.zedz.net/pub/replay/linux/redhat/, and Debian binaries are at: http://www.debian.org/Packages/unstable/non-us/cfs.html.
TCFS is a kernel level data encryption utility, similar to CFS. It however has several advantages over CFS; as it is implemented at the kernel level it is significantly faster. It is tightly integrated with NFS meaning you can server data securely on a local machine, or across the network. It decrypts data on the client machine, so when used over a network the password/etc is never passed over the network. The only catch is that it hasnt yet been ported to the 2.2 kernel series. You can get TCFS from: http://tcfs.dia.unisa.it/.
PPDD allows you create a disk partition that is encrypted, it
can either be an actual partition, or a loopback device (which
resides in a file, but is mounted as a filesystem). It uses the
blowfish algorithm which is relatively fast and proven. You can
get PPDD from:
Encrypted Home Directory works similarly to CFS, however it is aimed at providing a single encrypted directory. Essentially it creates a file of size X in /crypt/ with your UID, and mounts it on a loopback device so you can access it. The trick is the data is encrypted and decrypted on the fly as you access it (just like CFS). The only catch is that the software is still in development, so backup any important data. You can download it from: http://members.home.net/id-est/.
BestCrypt is a commercial product, with source code, available for Windows and Linux. You can get it here: http://www.jetico.com/.
IPSec is covered in it's own section.
There are a number of sources for information on SSL. Generally where SSL is applicable it is in the individual resource (i.e. WWW). For a good FAQ go here: http://www2.psy.uq.edu.au/~ftp/Crypto/. OpenSSL is an OpenSource implementation of the SSL libraries that is available form: http://www.openssl.org/.
In order for encryption to be effective, especially on a large scale such as IPSec across many hosts, good sources of random, cryptographically secure data are needed. In Linux we have /dev/random and /dev/urandom which are good but not always great. Part of the equation is measuring 'random' events, manipulating that data and then making it available (via (u)random). These random events include: keyboard and mouse input, interrupts, drive reads, etc.
However, as many servers have no keyboard/mouse, and new "blackbox" products often contain no harddrive, sources of random data become harder to find. Some sources, like network activity, are not entirely appropriate because the attacks may be able to measure it as well (granted this would be a very exotic attack, but enough to worry people nonetheless). There are several sources of random data that can be used (or at least they appear random), radioactive decay and radio frequency manipulations are two popular ones. Unfortunately the idea of sticking a radioactive device in a computer makes most people nervous. And using manipulated radio frequencies is prone to error, and the possibility of outside manipulation. For most of us, this isnt a real concern, however for IPSec gateway servers handling many connections it can be a problem. One potential solution is the PIII, which has a built in random number generator that measures thermal variance in the CPU, I think as we progress, solutions like this will become more common.
One issue many people forget that is the very act of encrypting data can draw attention. For example if a corporate administrator scanned workstations for files ending in .pgp, and you were the only one with files such as that....
StegHide hides data in files such as sound and picture files where not all of the bits in a byte are used. Since the data is encrypted it will appear random, and proving that the data is actually there is difficult. The only downside is to store a one megabyte file you need a sound/picture file of several megabytes, which can be cumbersome (but hard drives and high speed access are becoming cheap so it's a moot point). You can get StegHide at: http://www.stego.com/.
Steganographic File System actually hides data on your harddrive, making it difficult to prove that it even exists. This can be very useful as the attacker first has to find the data, let alone break the strong encryption used to protect it. You can get StegFS from: http://ban.joh.cam.ac.uk/~adm36/StegFS/.
OutGuess hides data in image files, meaning you can send files in a way that won't attract to much attention (and can't really be prooved either). You can get it from: http://www.outguess.org/.
Written by Kurt Seifried