r939 - trunk

tushar at linuxfromscratch.org tushar at linuxfromscratch.org
Sun Mar 6 11:26:47 PST 2005

Author: tushar
Date: 2005-03-06 12:26:47 -0700 (Sun, 06 Mar 2005)
New Revision: 939

Added Hint: eswap

Added: trunk/eswap.txt
--- trunk/eswap.txt	2005-02-25 06:36:29 UTC (rev 938)
+++ trunk/eswap.txt	2005-03-06 19:26:47 UTC (rev 939)
@@ -0,0 +1,166 @@
+AUTHOR: Jerome Pinot <ngc891 at gmail.com>
+DATE: 2005-02-13
+LICENSE: GNU Free Documentation License Version 1.2
+SYNOPSIS: Encrypting swap partition
+Here is a way to enable disk encryption on HLFS system. Aim is to provide native
+swap encryption and possibility to encrypt the root partition later, with
+third-part software.
+* http://www.linuxfromscratch.org/patches/util-linux/util-linux-2.12q-loop_AES-3.0b.patch 
+* http://www.linuxfromscratch.org/patches/linux/linux-2.6.10-loop_AES-3.0b.patch
+* http://www.linuxfromscratch.org/patches/gnupg/gnupg-1.4.0-loop_AES-3.0b.patch
+This hint is written for HLFS but can be easily applied to LFS. You should
+have some basic knowledge about devices and using swap.
+I. About encrypting disk
+A Linux system already provides some basic security environment including
+users and groups, passwords, permissions, and now access control via SELinux
+However, this could be not enough in some cases like 
+attackers with physical
+access. If someone can physically access your hard drive and mount it in an
+other computer, he overpasses the system and can read whatever he wants.
+The problem is the same with the swap partition. It stores short lifetime
+data including most of the things you have just done with the computer and
+that didn't fit in the RAM. The system continously overwrite this partition
+and there is no easy structure inside but an attacker could seek in for passwords
+and other data you just typed.
+One protection against this kind of attack is swap encryption. It means
+cipher your data with an algorithm, so you need a passphrase and/or a key to
+access clearly to it. Even, some ciphers like AES provide you a "plausible
+deniability". It means there is no way to know that the partition is actually
+encrypted because it looks just like trash, like an empty partition.
+So, there is no problem for the system being overpassed by physical access.
+Encrypting your partitions could increase drastically your data
+ security.
+II. How to do?
+There is several ways to encrypt disk on Linux, including cryptoloop, dm-crypt,
+loop-AES and StegFS.
+StegFS is a special encrypted file system. It's sounds really great but is
+still under development and needs big modifications of the base system.
+Cryptoloop was a special loop device included in the kernel that provides
+access to encrypted device by loopback. Everybody was happy to have such an
+easy way to access encrypted device, but unfortunately, it was found that
+cryptoloop has a nasty flaw and cannot be trust. If you can find cryptoloop in
+some linux distribution, it was actually removed from the official Linux
+kernel source code [1].
+dm-crypt is an encrypted device mapper created to replace cryptoloop [2]. You can
+find it in the official source, under the device mapper sub-section. It is
+supposed to avoid the flaw of cryptoloop, but actually, it fails. You can find 
+on the web more informations about that [3]. So even if it's available natively in 
+the kerne
+l it should be avoid for more security.
+So there is loop-AES. It is stable and modular and needs few modifications to
+the base system. It consists of patches to apply to the kernel (2.4 and 2.6) and 
+some utilities. Using multi-key with loop-AES avoids the flaw of cryptoloop
+and dm-crypt. It uses the AES algorithm which is known to be one of the
+strongest available. Moreover, there is already an LFS hint for encrypting
+root partition using loop-AES [4].
+You can find loop-AES here:
+[1] http://lwn.net/Articles/67216/ 
+[2] http://kerneltrap.org/node/2433 
+[3] http://mareichelt.de/pub/texts.cryptoloop.php 
+[4] http://linuxfromscratch.org/~devine/erfs-howto.html 
+III. Encrypting swap
+It's a matter of applying 2 patches and changing a little the /etc/fstab file.
+Using multi-key needs GnuPG and special bootscripts.
+1. First you need to apply the util-linux-2.12q-loop_AES-3.0b.patch to the
+util-linux before building it during chapter 6.
+ $ patch -
+Np1 -i ../util-linux-2.12q-loop_AES-3.0b.patch
+2. You need to change the line about swap file in the /etc/fstab (chapter 7)
+	/dev/hdb2	swap	swap	pri=1	0	0
+	/dev/hdb2	swap	swap	sw,loop=/dev/loop7,encryption=AES128,pri=1	0	0
+This will activate your swap partition at boot by a multi-keys encrypted loop device.
+3. Finally, you must patch your kernel source before "make menuconfig" in
+chapter 7:
+ patch -Np1 -i ../linux-2.6.10-loop_AES-3.0b.patch
+Then, during "make menuconfig", you MUST select loop-AES under loop item of the
+block sub-section or your swap partition may not be available.
+IV. Setting up third-part software
+1. GnuPG 1.4.0
+ patch -Np1 -i ../gnupg-1.4.0-loop_AES-3.0b.patch
+ sed -e 's/^CFLAGS .*$/& -pie -fpie/' -i `find . -name Makefile.in`
+ ./configure --prefix=/usr --enable-static-rnd=linux \
+ --libexecdir=/usr/lib &&
+ make && make install
+2. Sharutils 4.3.78
+We need sharutils for uuencode to convert randon binary data from /dev/urandom
+to r
+andom ascii data for keys generation.
+ sed -e 's/^CFLAGS .*$/& -pie -fpie/' -i `find . -name Makefile.in` &&
+ ./configure --prefix=/usr &&
+ make && make install
+3. Aespipe 2.3a
+Add some flags and build aespipe:
+ sed -e 's/^LINK .*$/& -nointl/' -i Makefile.in
+ sed -e '10,0s/^/CFLAGS+=-pie -fpie\n&/' -i Makefile.in &&
+ ./configure --prefix=/usr &&
+ make && make install
+  * Added Sharutils and aespipe.
+  * Some fixes.
+  * Added GnuPG compilation guide.
+  * Few fixes.
+  * Initial version.

More information about the hints mailing list