GPG mit dem USB-Stick

So, jetzt läuft es endlich so wie ich will. Sobald der USB-Stick angestöpselt wird, kann ich GPG benutzen, ist er ab, geht es natürlich nicht. Eine etwas technische Anleitung für den Linux-Automounter:

Das Paket autofs sollte installiert sein. In der Datei /etc/auto.master trängt man die zu überwachenden Verzeichnisse ein:

/media/autofs /etc/auto.media

Das heisst, alle Verzeichnisse unter /media/autofs werden vom Automounter überwacht, die Konfiguration dafür findet sich in /etc/auto.media, die folgendermassen aussieht:

usbstick -fstype=auto,sync :/dev/sda1

Das Verzeichnis /media/autofs/usbstick wird dem Gerät /dev/sda1 zugeordnet (der Doppelpunkt davor ist wichtig!). Sobald ein Programm auf dieses Verzeichnis zugreift, wird das Gerät automatisch gemountet. Welches Gerät dem USB-Gerät zugeordnet wird, kann man in der Datei /var/log/messages ablesen, wenn man den USB-Stick einsteckt:

hub.c: USB new device connect on bus1/2, assigned device number 10
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 10
sd_init_onedisk (0,0), sda 08:00
SCSI device sda: 128000 512-byte hdwr sectors (66 MB)
sda: Write Protect is on
sda: sda1

Bei mir ist es das Gerät /dev/sda1.

Um GPG mit dem Stick einzurichten, wird der Public- und Private Key darauf kopiert, bei mir z.B. in das Unterverzeichnis .gnupg. Dann können die Keys im /home/user/.gnupg/ gelöscht werden (ggf. vorher ein Backup auf CD-R brennen) und statt dessen ein symbolischer Link angelegt werden:

melle@susi:~> ln -s /media/autofs/usbstick/.gnupg/pubring.gpg .
melle@susi:~> ln -s /media/autofs/usbstick/.gnupg/secring.gpg .

Jetzt wird der Stick automatisch gemountet, sobald gpg gestartet wird. Natürlich muss er vorher physikalisch eingesteckt werden 😉 Für’s komfortable Mails-Verschlüsseln benutze ich Enigmail, was sich nahtlos in den Mozilla Mail-Client integriert.

Falls man als normaler User nicht auf das Verzeichnis /media/autofs/usbstick zugreifen darf, sollte man noch die folgenden Optionen in /etc/auto.media zufügen:

users,gid=users,umask=000,nls=iso8859-15

Der Automounter funktioniert natürlich auch für alle anderen Geräte wie CD-ROMs und Brenner, dieser Artikel in der Support Datenbank von SuSE erklärt wie es funktioniert 🙂

Wenn man den Stick überall dabei hat, möchte man auch Unterwegs entschlüsseln. Es genügt die gpg-Executable in das .gnupg Verzeichnis auf dem Stick zu kopieren und sich eine minimale gpg.conf anzulegen. Meine enthält lediglich

comment „“
default-key 0x5A299531

Will man schnell unterwegs seine Post entschlüsseln, genügt diese Batch-Datei den meisten Ansprüchen:

@echo off
gpg –homedir .\ –decrypt
pause

Einfach die verschlüsselte Nachricht in das Fenster kopieren, Passphrase Eingeben (+Enter) und danach CTRL-Z drücken – Windows bekommt sonst das Ende der Eingabe nicht mit 😉

Natürlich geht es komfortabler, etwa mit WinPT – der geneigte Leser sei ermutigt selbst zu experimentieren …

3 Antworten auf „GPG mit dem USB-Stick“

  1. Hallo,

    ich hab bei mir auch die gnupg Keys auf den USB Stick verbannt. Damit die Sicherheit nicht ganz auf der Stecke bleibt hab ich umask=077 und UID / GID auf den User mit dem ich immer arbeite. Lesen der Keys geht auch wunderbar. Aber ich wollte gerade einen oeffentlichen Schluessel importieren und da meinte gpg was von

    blackm@ibook:~$ gpg –import pgpkey_hdr.asc
    gpg: lock not made: link() failed: Operation not permitted
    gpg: can’t lock `/home/blackm/.gnupg/pubring.gpg‘
    gpg: lock not made: link() failed: Operation not permitted
    gpg: can’t lock `/home/blackm/.gnupg/secring.gpg‘
    gpg: error writing keyring `/home/blackm/.gnupg/pubring.gpg‘: general error
    gpg: key AA9C9470: public key „[User id not found]“ imported
    gpg: error reading `pgpkey_hdr.asc‘: general error
    gpg: import from `pgpkey_hdr.asc‘ failed: general error
    gpg: Total number processed: 0
    gpg: imported: 1

    Aber importiert ist der Schluessel nicht. Hast du ne Ahnung warum da die ‚Operation not permitted‘ ist? Filesystem auf dem Stick ist vfat damit ich es auch noch unter OS X und Wintendo lesen kann.

    by, Martin

  2. > ich hab bei mir auch die gnupg Keys auf den USB Stick verbannt.
    > Damit die Sicherheit nicht ganz auf der Stecke bleibt hab ich
    > umask=077 und UID / GID auf den User mit dem ich immer arbeite.
    wenn Du vfat auf dem Stick verwendest, sollte das eigentlich nicht möglich
    sein 😉

    > blackm@ibook:~$ gpg –import pgpkey_hdr.asc
    > […]
    > Aber importiert ist der Schluessel nicht. Hast du ne Ahnung
    > warum da die ‚Operation not permitted‘ ist? Filesystem auf
    > dem Stick ist vfat damit ich es auch noch unter OS X und
    > Wintendo lesen kann.
    kannst Du als normaler User auf den Stick schreiben ? Also bei
    mir klappt das importieren ohne Probleme, die erwähnten Optionen
    users,gid=users,umask=000,nls=iso8859-15
    sind aber wichtig. Meine /etc/auto.media sieht dann so aus:

    usbstick -fstype=auto,sync,users,gid=users,umask=000,nls=iso8859-15 :/dev/sda1

    Mehr als die Schreibrechte und autofs-Optionen zu prüfen fällt mir dazu
    nicht ein 🙁 Prüfe ggf. nochmal die Rechte der mount-Verzeichnisse.

  3. Erstmal dankeschoen fuer diese tolle Anleitung!

    Ich hatte das selbe gpg problem (lock not made: link() failed…). Scheint daran zu liegen, dass diverse low-level Dateisystem-Befehle auf (v)FAT nicht richtig funktionieren. Als einfache Lösung partitioniert man seinen USB Stick einfach um. Ich habe z.B. eine 125MB FAT partition am Anfang (fuer alle „oeffentlichen“) Sachen und eine 5MB ext2 Partition dahinter (fuer private Sachen wie gnupg/ssh/…).
    Da es eh nicht besonders sinnvoll ist, auf fremden (Windows-)Rechnern seinen Private-Key zu nutzen/entschluesseln, sehe ich es auch nicht als Nachteil an, dass ich die ext2 partition nur zu Hause nutzen kann.

    Meine auto.misc:
    #usb stick. one small ext2 partition for file permissions support (gnupg…) and one vfat for the rest
    usbstick_public -fstype=vfat,uid=root,gid=root,umask=0177,sync :/dev/usbstick1
    usbstick_private -fstype=ext2,sync :/dev/usbstick2

    Dazu noch ein Verzeichnis /mnt/usbstick, in dem sich folgende links befinden:

    private -> /mnt/auto/usbstick_private
    public -> /mnt/auto/usbstick_public

    /mnt/usbstick ist per SMB auf meinem Windows-Client verfügbar. So kann ich problemlos auf beide Partitionen zugreifen.

    Scheint mir eine praktikable Loesung zu sein 🙂

    BTW: Anmerkung foer autofs-Neulinge (wie mich): Das Dateisystem wird erst gemountet, wenn man auf das entsprechende Unterverzeichnis im zu überwachenden Verzeichnis zugreift. Dieses Unterverzeichnis wird aber erst erstellt, wenn das Dateisystem gemountet ist! Anscheinend ein Teufelskreis, der aber einfach umgangen werden kann: Man erstellt einen Symlink (ln -s) auf das entsprechende (vorerst nicht existente) Unterverzeichnis. Sobald man auf den Symlink zugreift, mountet autofs das Dateisystem und das Verzeichnis ist verfügbar!

    BTW2: Fuer einen USB Stick halte ich ein autofs Timeout von 5 Sekunden fuer sinnvoll. Dann kann man relativ sicher sein, dass das Dateisystem auch ge’umount’et ist, wenn man den Stick rauszieht.

    Schoene Gruesse!
    -Thomas

Kommentare sind geschlossen.