Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
public:gnupg:luks_gnupg_card [2015/03/31 12:22] jankow@datenkollektiv.netpublic:gnupg:luks_gnupg_card [2019/06/14 17:31] (aktuell) jankow@datenkollektiv.net
Zeile 1: Zeile 1:
 ====== Luks mit Gnupg-Card ====== ====== Luks mit Gnupg-Card ======
 +
 +<WRAP center round info 60%>
 +**UPDATE**
 +
 +Für das aktuelle Debian Stretch mit gnupg2 gibt es eine aktualisierte Anleitung: [[public:gnupg:luks_gnupg_card_stretch|Luks mit Gnupg-Card unter Debian Stretch]]
 +</WRAP>
  
  
Zeile 20: Zeile 26:
   * Funktionierendes [[gnupg-card-howto|Setup der Gnupg Card]]   * Funktionierendes [[gnupg-card-howto|Setup der Gnupg Card]]
  
 +**Debian Jessie**:
 +
 +Das Vorgehen ist auch für Debian Jessie getestet. Damit es funktioniert muss in der initramdisk das Verzeichnis /var/run erstellt werden, weil der pcscd nicht mehr startet, wenn er kein PID schreiben kann.
 ===== Ansatz ===== ===== Ansatz =====
  
Zeile 51: Zeile 60:
  
   mkdir -m 700 /etc/keys   mkdir -m 700 /etc/keys
-  dd if=/dev/random bs=1 count=256 | gpg -o /etc/keys/cryptkey.gpg -r Gnupg-ID -ec+  dd if=/dev/random bs=1 count=256 | gpg -e -o /etc/keys/cryptkey.gpg -r Gnupg-ID -ec
   cd /root   cd /root
   mkfifo -m 700 keyfifo   mkfifo -m 700 keyfifo
Zeile 86: Zeile 95:
   md1_crypt UUID=46ace282-0706-4fa3-9cb1-bd6f9aaba29d /etc/keys/cryptkey.gpg luks,keyscript=decrypt_gnupg_sc   md1_crypt UUID=46ace282-0706-4fa3-9cb1-bd6f9aaba29d /etc/keys/cryptkey.gpg luks,keyscript=decrypt_gnupg_sc
  
-===== Für Cardreader ohne Pinpad  =====+===== Anpassung der Initramdisk =====
  
-==== Anpassung der Initramdisk ====+Folgende Dateien sind nötig und müssen an die vorgesehenen Stellen kopiert werden: 
 +  * /lib/cryptsetup/scripts/decrypt_gnupg_sc 
 +  * /etc/initramfs-tools/hooks/cryptgnupg_sc
  
-Folgende Dateien sind nötig und müssen an die vorgesehenen Stellen kopiert werden. +Für Cardreader ohne Pinpad, bei denen die PIN über die normale Tastatur eingegeben wird, sind weniger Binaries im initramfs erforderlich. Das Skript für Cardreader mit Pinpad funktioniert auch mit Cardreadern ohne Pinpad - allerdings darf der USB-Cardreader erst eingesteckt werden, wenn bereits nach dem Passwort gefragt wird. 
 + 
 +FIXME: wir bräuchten eine Möglichkeit, Cardreader ohne Pinpad von solchen mit Pinpad zu unterscheiden. 
 + 
 +Wird der Schlüssel "cryptkey.gpg" zusätzlich zu den gpg-Ids auch noch mit einer symmetrischen Passphrase verschlüsselt (siehe oben), dann funktioniert die Freischaltung mit beiden Skripten auch mit der Eingabe der Passphrase über die Tastatur.
  
 Das Skript ''decrypt_gnupg_sc'' wird später innerhalb der Initramdisk gestartet, startet dort den pcscd und fragt nach der PIN-Nummer der Karte bzw. nach einem Passwort für die zusätzlich vergebene symmetrische Verschlüsselung der gpg-Datei. Das Skript ''decrypt_gnupg_sc'' wird später innerhalb der Initramdisk gestartet, startet dort den pcscd und fragt nach der PIN-Nummer der Karte bzw. nach einem Passwort für die zusätzlich vergebene symmetrische Verschlüsselung der gpg-Datei.
Zeile 97: Zeile 112:
 Die folgenden Skripte sind für Lesegeräte gedacht, die nicht vom internen ccid-Treiber des gnupg-Binaries unterstützt werden sondern einen laufenden pcsc Daemon benötigen. Falls der Kartenleser vom internen ccid unterstützt wird, können und müssen die entsprechenden Zeilen ausgelassen werden. Ob mit laufendem pcscd auch Kartenleser unterstützt werden, die diesen normalerweise nicht benötigen, habe ich noch nicht getestet. Die folgenden Skripte sind für Lesegeräte gedacht, die nicht vom internen ccid-Treiber des gnupg-Binaries unterstützt werden sondern einen laufenden pcsc Daemon benötigen. Falls der Kartenleser vom internen ccid unterstützt wird, können und müssen die entsprechenden Zeilen ausgelassen werden. Ob mit laufendem pcscd auch Kartenleser unterstützt werden, die diesen normalerweise nicht benötigen, habe ich noch nicht getestet.
 </WRAP> </WRAP>
 +
 +
 +==== Für Cardreader ohne Pinpad  ====
 +
 +<WRAP center round important 60%>
 +Unter Stretch funktionieren die folgenden Skripte für Cardreader ohne Pinpad nicht mehr. Ein funktionierender Ansatz ist hier beschrieben: https://wiki.majic.rs/Openpgp/protecting_luks_decryption_key_in_debian_jessie_us/
 +</WRAP>
 +
  
  
Zeile 104: Zeile 127:
 # quick hack for starting pcscd # quick hack for starting pcscd
 # nur für Kartenleser benötigkt, die nicht von dem gnupg-internen ccid unterstützt werden # nur für Kartenleser benötigkt, die nicht von dem gnupg-internen ccid unterstützt werden
 +mkdir -p /var/run
 pcscd & pcscd &
  
Zeile 228: Zeile 252:
   chmod 755 /etc/initramfs-tools/hooks/cryptgnupg_sc   chmod 755 /etc/initramfs-tools/hooks/cryptgnupg_sc
  
-===== Cardreader mit Pinpad =====+==== Cardreader mit Pinpad ====
  
-FIXME+Für Kartenleser mit Pinpad benötigen wir gnupg2. Das Initramfs wird dadurch auch entsprechend größer: ~ 20 MB.
  
-<file /lib/cryptsetup/scripts/decrypt_gnupg_sc>+<WRAP center round tip> 
 +Achtung: Die gnupg2-Versionen aus Debian Wheezy sind zu alt. Die version 2.0.25 aus wheezy-backports funktioniert aber. 
 +</WRAP> 
 + 
 +Am Anfang des Skripts wird eine kleine Abfrage gemacht, ob ein Kartenleser existiert. Wenn nicht, fragt das Skript nach der Passphrase. Diese Unterscheidung ist nötig, weil "askpass" immer auf eine Eingabebestätigung wartet. 
 + 
 +Wir können diesen Umstand ausnutzen, um auch Kartenleser ohne Pinpad zu nutzen. Wenn der Kartenleser erst eingesteckt wird, wenn das Skript sich schon in der Schleife mit "askpass" befindet, sollte es auch mit der Karte und der Eingabe der PIN über die Tastatur funktionieren. 
 + 
 +<file bash /lib/cryptsetup/scripts/decrypt_gnupg_sc>
 #!/bin/sh #!/bin/sh
  
 # quick hack for starting pcscd # quick hack for starting pcscd
 +mkdir -p /var/run
 pcscd & pcscd &