Zum Inhalt springen

Verschlüsselung der Swap-Partition unter openSuse 10.2

    Daten wie zum Beispiel Passwoerter, die zuvor von einer entschluesselten Festplatte gelesen wurden, koennen trotz anschliessender Verschluesselung innerhalb der Swap-Partition unverschluesselt im Klartext ausgelagert werden. Das gilt auch fuer Daten, die manuell eingegeben wurden. Eine Auslagerung kann auch stattfinden, obwohl der zur Verfuegung stehende RAM-Speicher nicht ausgeschoepft wurde. Daher hat ein Angreifer ueber eine nicht verschluesselte Swap-Partition die Moeglichkeit, Inhalte, die durch den Arbeitsspeicher ausgelagert wurden auszulesen. Das folgende Shell Script (boot.swap) erzeugt bei jedem Start zunaechst ein loopback device und ein AES-Schluessel. Anschliessend wird eine verschluesselte Swap-Partition (AES256 verschluesselt) innerhalb der loopback device erstellt. Beim Ausschalten des Rechners wird der loopback device entfernt. Die ausgelagerten Daten sind nicht mehr wiederherstellbar, da der zufaellig erzeugte Schluessel verloren geht. Beim naechste Start wird ein neuer Schluessel, loopback device und swap-Partion erstellt usw. Fuer die Nutzung des Shell Scripts muessen Kernel-Module geladen werden.

    Yast -> Editor fuer /etc/sysconfig-Dateien -> System -> Kernel -> MODULES_LOADED_ON_BOOT aes sha256 sha1 cryptoloop

    Liste der verfuegbaren Kernelmodule
    modprobe -l

    Haendig koennen Module mit dem folgenden Befehlt eingetragen werden:
    modprobe aes sha256 sha1 cryptoloop

    Die geladenen Module kann man sich mit dem folgenden Befehl anzeigen lassen
    cat /proc/crypto

    Belegte loopback devices kann man sich mit dem folgenden Befehlt anzeigen lassen
    cat /proc/partitions

    Vor dem Einsatz des Shell Scripts muss die Swap-Partition aus /etc/fstab entfernt werden.
    Das Script muss an die mit einem Fragezeigen markierten Stellen angepasst werden
    ....
    /bin/dd if=/dev/urandom bs=1b count=999 | /sbin/losetup -e aes256 -p 0 /dev/loop? /dev/hdj? &> /dev/null
    /sbin/mkswap /dev/loop? &> /dev/null
    swapon /dev/loop? &> /dev/null
    ...
    /sbin/losetup -d /dev/loop? &> /dev/null
    mkswap /dev/hdj? & > /dev/null
    ...

    Das Script ueberschreibt /etc/init.d/boot.swap