PGP aus allen Rohren

Inhalt

Ich habe schon eini­ge Ver­su­che mit eMail-Ver­schlüs­se­lung hin­ter mir, die alle mit Frus­tra­ti­on und schließ­lich Auf­ga­be ende­ten. Das mag auch mit man­geln­dem Ver­ständ­nis mei­ner­seits zu tun haben, lag aber auch immer an schlech­ter Bedien­bar­keit, feh­len­der Unter­stüt­zung man­cher Platt­for­men und intrans­pa­ren­ter Soft­ware, die dem Nut­zer ver­meint­lich all­zu schwie­ri­ge Ent­schei­dun­gen mit nicht immer sinn­vol­len Vor­ga­ben abnahm.

Vor kur­zem kam dann die Nach­richt, dass Thun­der­bird mit Ver­si­on 78 ab Som­mer 2020 die im Moment im Add-on Enig­mail ste­cken­den PGP-Funk­tio­nen in das Mail-Pro­gramm sel­ber inte­grie­ren wird. Das war Anlass genug für mich, PGP noch ein­mal eine Chan­ce zu geben.

Ziel von PGP

Mit PGP kann man Nach­rich­ten unter­schrei­ben (signie­ren) und ver­schlüs­seln. Bei­des ist optio­nal, so dass man Nach­rich­ten wei­ter­hin völ­lig offen, nur signiert, nur ver­schlüs­selt oder ver­schlüs­selt und signiert ver­sen­den kann. Das Signie­ren von Nach­rich­ten hat meh­re­re Ziele:

  • Authen­ti­zi­tät
    Mit der Unter­schrift ist belegt, dass die Nach­richt wirk­lich von der Per­son gesen­det wur­de, für die im Besitz des Schlüs­sels ist, und dass die Adres­sen von Absen­der und Unter­zeich­ner übereinstimmen.
  • Inte­gri­tät
    Die Prüf­sum­me der Nach­richt wird in der Unter­schrift mit ver­schlüs­selt, so dass jede Ände­rung am Nach­rich­ten­in­halt sofort zur Ungül­tig­keit der Unter­schrift füh­ren wür­de. Somit kann man sicher sein, dass die Nach­richt nach der Unter­zeich­nung nicht ver­än­dert wurde

Die Ver­schlüs­se­lung sorgt zusätz­lich für Ver­trau­lich­keit. Die Nach­richt kann nur ent­schlüs­selt wer­den, wenn man den pri­va­ten Teil des Schlüs­sel besitzt, der zu dem öffent­li­chen Schlüs­sel passt, der zur Ver­schlüs­se­lung benutzt wurde.

Ziel mei­ner Akti­on ist vor allem, eMails signie­ren und die Signa­tu­ren emp­fan­ge­ner Mail prü­fen zu kön­nen. So kann man dem Teil sei­ner Kor­re­spon­denz, der signiert oder ver­schlüs­selt ist, fast blind ver­trau­en und muss nur beim Rest miss­trau­isch sein. Mei­ne Hoff­nung ist, dass der Anteil ver­trau­ens­wür­di­ger Mails über die Zeit zuneh­men wird.

Die Mög­lich­keit der Ver­schlüs­se­lung ist für mich ein Neben­ef­fekt, den ich ger­ne mit­neh­me, aber wohl eher sel­ten nut­zen werde.

Die Platt­for­men

Erstaun­lich, wie vie­le ver­schie­de­ne Platt­for­men doch immer noch nicht nur beim EDV-affi­nen Tech­ni­ker her­um­schwir­ren. Da ist zunächst Linux in Form von Debi­an Bus­ter als mein PC-Sys­tem. Mein Lap­top arbei­tet wie der PC mei­ner Frau mit Win­dows 10, und unse­re Smart­phones und Tablets mit Android 8, 9 oder Line­age­OS 15. Von MacOS und Black­ber­ry sind wir glück­li­cher­wei­se bis­her ver­schont geblie­ben, und die Palms und Sym­bi­an-Tele­fo­ne sind schon lan­ge den Weg alles irdi­schen gegangen.

Die gewohn­ten Mail-Pro­gram­me sol­len mög­lichst nicht geän­dert wer­den. Davon benut­zen wir zur Zeit vier: Evo­lu­ti­on für Linux, Thun­der­bird oder Out­look für Win­dows und K9 für Android.

Den Anfang macht Linux

Hier erwar­te­te ich die wenigs­ten Pro­ble­me, da PGP schließ­lich ursprüng­lich dafür ent­wi­ckelt wurde.

Grund­la­ge bil­det hier gpg (GnuPG oder Gnu Pri­va­cy Guard), das alle Funk­tio­nen der Signa­tur, Ver­schlüs­se­lung und Schlüs­sel­ver­wal­tung im Hin­ter­grund erle­digt. Das Paket ist nor­ma­ler­wei­se schon in Debi­an Bus­ter vor­in­stal­liert. Soll­te es feh­len. lässt es sich ganz ein­fach mit

sudo apt-get install gnupg

nach­in­stal­lie­ren.

Eine gra­fi­sche Ober­flä­che für eini­ge Funk­tio­nen von gpg bie­tet gpa, der Gnu Pri­va­ce Assistant, an. Hier soll­te man aller­dings Vor­sicht wal­ten las­sen, denn der Funk­ti­ons­um­fang ist ein­ge­schränkt und es wer­den eini­ge manch­mal etwas frag­wür­di­ge Vor­ga­ben gemacht.

Instal­liert ist gpa genau so ein­fach wie gpg selbst mit

sudo apt-get install gpa

Der ers­te Schlüssel

Etwas blau­äu­gig habe ich den ers­ten Schlüs­sel ohne wei­te­re Über­le­gun­gen von GPA erzeu­gen las­sen. Der Menü­punkt Schlüs­sel Neu­er Schlüs­sel öff­net einen Assis­ten­ten, der ledig­lich nach Name, eMail-Adres­se und Pass­wort fragt und die Erzeu­gung einer Sicher­heits­ko­pie anbie­tet. Vor unan­ge­neh­men, aber wich­ti­gen Ein­zel­hei­ten wie z.B. die Schlüs­sel­län­ge ver­sucht er den User zu bewahren.

Wenn man danach die Eigen­schaf­ten des Schlüs­sels ansieht, bemerkt man, dass er zwar wie gefor­dert auf RSA basiert, die Län­ge ledig­lich 2048 bit ist, wäh­rend all­ge­mein heu­te min­des­tens 4096 emp­foh­len werden.

Mehr Ein­fluss auf die Schlüs­sel­ei­gen­schaf­ten hat man mit dem Kom­man­do­zei­len­werk­zeug gpg. Um einen neu­en Schlüs­sel zu erzeu­gen, nutzt man

gpg --full-generate-key

Im fol­gen­den Dia­log kann man Ver­schlüs­se­lungs­ver­fah­ren, Schlüs­sel­län­ge, Gül­tig­keits­dau­er, Nut­zer­be­zeich­nung und Pass­wort ange­ben. Emp­foh­len wird ein RSA-Schlüs­sel mit min­des­tens 4096 bit Län­ge, der vol­le Name und die eMail-Adres­se als Nut­zer-ID und ein siche­res Passwort.

Stan­dard­vor­ga­be ist eine unbe­grenz­te Gül­tig­keit, was ich aller­dings nicht emp­feh­le, weil man ein­mal ver­öf­fent­lich­te Keys nicht mehr löschen kann. Unbe­grenzt gül­ti­ge Schlüs­sel blei­ben so ewig im Netz, wäh­rend begrenzt gül­ti­ge wenigs­tens nach Ablauf der Frist gelöscht wer­den. Will man den Schlüs­sel län­ger als ursprüng­lich geplant benut­zen, kann man die Gül­tig­keit pro­blem­los verlängern.

Mit

gpg --list-secret-keys

kann man sich danach ver­ge­wis­sern, dass der Schlüs­sel erzeugt und dem Schlüs­sel­ring bei­gefügt wurde.

Zwei Aktio­nen sind nach der Erzeu­gung eines Schlüs­sels wichtig:

  1. Eine Sicher­heits­ko­pie zu erzeu­gen und sicher auf einem sepa­ra­ten Spei­cher­me­di­um (z.B. USB-Stick) auf­zu­be­wah­ren. Das geht zum Bei­spiel ganz ein­fach mit gpa und Schlüs­selSicher­heits­ko­pie anlegen.
  2. Ein Rück­ruf-Zer­ti­fi­kat zu erzeu­gen und eben­so sicher abzu­le­gen. Nur mit einem sol­chen Zer­ti­fi­kat ist es spä­ter mög­lich, den Schlüs­sel zu wider­ru­fen, wenn er unsi­cher gewor­den sein soll­te oder nicht mehr zugäng­lich ist. Das wird lei­der von gpa nicht ange­bo­ten, son­dern geht nur über die Kom­man­do­zei­le und
gpg --gen-revoke <Identität>

Den Schlüs­sel signie­ren (las­sen)

Eine Grund­idee von PGP ist das soge­nann­te Web of Trust. Durch das gegen­sei­ti­ge Unter­zeich­nen der Schlüs­sel wird nach und nach ein Netz des wech­sel­sei­ti­gen Ver­trau­ens auf­ge­baut. Die öffent­li­chen Schlüs­sel selbst wer­den ent­we­der direkt unter den Kom­mu­ni­ka­ti­ons­part­nern aus­ge­tauscht oder von Key-Ser­vern bezogen.

Nach der Erzeu­gung ist der Schlüs­sel zunächst nur vom Erzeu­ger unter­schrie­ben (self-signed) und nicht durch eine ande­re Instanz geprüft. Ein Adres­sat hat so kei­ner­lei Sicher­heit, dass der Schlüs­sel auch wirk­lich den ver­meint­li­chen Absen­der reprä­sen­tiert. Er könn­te genau so gut von einer belie­bi­gen ande­ren Per­son erzeugt wor­den sein, um eine ande­re Iden­ti­tät vorzutäuschen. 

Um die Glaub­wür­dig­keit des Schlüs­sels zu erhö­hen, lässt man ihn von ande­ren Per­so­nen unter­schrei­ben, die den Besit­zer per­sön­lich ken­nen oder sei­ne Iden­ti­tät anhand von Per­so­nal­do­ku­men­ten über­prüft haben. Letz­te­res funk­tio­niert nur, wenn sich bei­de Par­tei­en per­sön­lich tref­fen, meist auf eigens dafür ein­ge­rich­te­ten Key-Sig­ning-Par­ties. Ohne sol­che Unterschrift(en) soll­te man kei­nem Key vertrauen.

Üblich ist, dass sich bei­de Par­tei­en die Keys gegen­sei­tig unter­schrei­ben. Dafür über­gibt der Besit­zer dem Unter­zeich­ner einen Aus­druck des Key-Fin­ger­prints, der zum Bei­spiel mit

gpg --fingerprint <Identität>

erzeugt wird, wobei man als Iden­ti­tät sei­nen Namen oder die eMail-Adres­se ver­wen­det. Der Unter­zeich­ner lädt den Key nach Über­prü­fung der Iden­ti­tät anhand der vor­ge­leg­ten Doku­men­te in ihren Key­ring. Am ein­fachs­ten geht das über das Kommando

gpg --search-keys <Identität>

Das Pro­gramm lis­tet alle pas­sen­den Keys auf, und man impor­tiert den pas­sen­den Key mit Anga­be der Zei­len­num­mer. Theo­re­tisch soll­te das auch mit gpa über das Menü Ser­verSchlüs­sel erhal­ten mög­lich sein, es ist mir aber dort nicht gelungen.

Nun ver­gleicht man den Fin­ger­print mit dem, den man vom Eigen­tü­mer als Aus­druck erhal­ten hat. Stimmt er über­ein, kann man den Key unter­zeich­nen, zum Bei­spiel in gpa über das Menü Schlüs­sel Schlüs­sel Signie­ren oder per gpa Kommando

gpg --sign-key <Identität>

Den unter­schrie­be­nen Schlüs­sel expor­tiert man in gpa mit Schlüs­sel Schlüs­sel Expor­tie­ren und sen­det ihn als ver­schlüs­sel­te Mail an den Besit­zer zurück. So stellt man sicher, dass der Besit­zer auch Zugriff auf das eMail-Kon­to und den pas­sen­den pri­va­ten Schlüs­sel hat.

Er kann den Schlüs­sel dann impor­tie­ren, zum Bei­spiel in gpa mit Schlüs­sel Schlüs­sel Impor­tie­ren. Die Unter­schrif­ten kann er dann mit

gpa --list-sigs <Identität>

anzei­gen las­sen. Ist alles nach Wunsch, kann er den Schlüs­sel mit gpa und Ser­ver Schlüs­sel Sen­den oder mit 

gpg --send-key <Identität>

an den Key-Ser­ver schi­cken, wo er dann inklu­si­ve Unter­schrif­ten öffent­lich ver­füg­bar gemacht wird.

Zusätz­liche Identität

Ein Schlüs­sel kann für mehr als eine Mail­adres­se oder Per­son benutzt wer­den. Zu einem exis­tie­ren­den Schlüs­sel las­sen sich wei­te­re Iden­ti­tä­ten mit

gpg --edit-key <Identität>

hin­zu­fü­gen. Die Iden­ti­tät ist ein belie­bi­ger Teil des Namens oder der eMail-Adres­se des Keys. Ist sie nicht ein­deu­tig, lis­tet gpg die Tref­fer in einer nume­rier­ten Lis­te, aus der man den ent­spre­chen­den Key mit sei­ner Num­mer auswählt.

Das Kom­man­do adduid fügt eine wei­te­re Nut­zer­ken­nung zum aus­ge­wähl­ten Key hin­zu. Das Pro­gramm fragt nach Name, Mail-Adres­se und Kom­men­tar. Mit F been­det man das Edi­tie­ren und mit Q ver­lässt man das Pro­gramm, wobei man das Ändern des Keys noch­mals bestä­ti­gen muss.

Win­dows mit Gpg4win

Für Win­dows ist das Paket Gpg4win für die PGP-Infra­struk­tur zustän­dig. Es besteht unter ande­rem aus den por­tier­ten GnuPG-Tools gpg und gpa und den Plug­ins GpgOL für Out­look und GpgEX zur Datei­ver­schlüs­se­lung im Win­dows Explo­rer.

Seit Ende 2019 ist Gpg4win sogar vom BSI für den Ein­satz zum Schutz von Ver­schlussa­chen bis VS-NfD frei­ge­ge­ben und ersetzt das in die Tage gekom­me­ne und seit 2014 nicht mehr wei­ter­ent­wi­ckel­te Chi­as­mus.

Nach der Instal­la­ti­on kann man mit gpa den pri­va­ten Schlüs­sel vom USB-Stick impor­tie­ren. Nicht ver­ges­sen, das Schlüs­sel-Ver­trau­en für den eige­nen Key auf „Abso­lut” zu set­zen, sonst beschwert sich Thun­der­bird spä­ter über nicht ver­trau­ens­wür­di­ge pri­va­te Schlüssel.

Thun­der­bird

Instal­liert man dann die Enig­mail-Erwei­te­rung in Thun­der­bird, fin­det die­se den pri­va­ten Schlüs­sel und ver­wen­det ihn für die pas­sen­den Kon­ten. Über das Menü Enig­mail → Ein­stel­lun­gen Sen­den kann man die Vor­ga­ben, wann Mails ver­schlüs­selt und/oder Signiert wer­den sol­len ändern, falls die Vor­ga­ben nicht passen.

Bei jeder neu­en Mail hat man dann zwei zusätz­li­cher Knöp­fe in der Kopf­zei­le, mit denen man Signie­ren und Ver­schlüs­seln kann; letz­te­res natür­lich nur, wenn man für den Emp­fän­ger einen pas­sen­den öffent­li­chen Schlüs­sel impor­tiert hat.

Enig­mail-Menü und Knöp­fe für Ver­schlüs­se­lung (aus) und Signa­tur (an)

Im Som­mer 2020 wird sich mit Thun­der­bird 78 vor­ausscht­lich das Vor­ge­hen ändern, da dann die Enig­mal-Funk­tio­nen direkt in Thun­der­bird wan­dern sollen.

Da PGP Pro­ble­me beim Signie­ren und Ver­schlüs­seln von HTML-Mails hat, soll­te man deren Erstel­lung in den Kon­to­ei­gen­schaf­ten des Absen­ders unter „Ver­fas­sen und Adres­sie­ren” → „Nach­rich­ten im HTML-For­mat ver­fas­sen” abstel­len.

Out­look

Für Out­look instal­liert gpg4win das Plug­in GpgOL. Es erzeugt in den Rib­bons den Ein­trag Absi­chern, über den man eine neue Nach­richt signie­ren und ver­schlüs­seln kann.

Das GpgOL-Plug­in fügt ein gpg-Rib­bon hinzu

Das Plug­in selek­tiert den pas­sen­den Schlüs­sel auto­ma­tisch. Beim Emp­fang wer­den ver­schlüs­sel­te Mails nach Ein­ga­be der Key-Pass­phra­se eben­so pro­blem­los entschlüsselt.

Im Rib­bon des Haupt­fens­ters befin­det sich der Zugang zu den sehr aus­führ­li­chen GpgOL-Einstellungen.

GpgOL-Ein­stel­lun­gen

Android

Für Android bie­tet sich eine Kom­bi­na­ti­on aus Open­Key­chain als Key-Infra­struk­tur und K9 als Mail-Cli­ent an. Bei­des lässt sich sowohl aus dem Play­s­to­re als auch aus F-Droid installieren.

K9 rich­tet man wie gewohnt ein, ohne zunächst auf PGP ach­ten zu müs­sen. In Open­Key­chain muss nach der Instal­la­ti­on zunächst der pri­va­te Schlüs­sel instal­liert wer­den. Dafür steht der Punkt Mei­ne Schlüs­sel ver­wal­ten aus dem Opti­ons­me­nü oben rechts. Wenn man kei­nen neu­en Schlüs­sel erzeu­gen will, kann man einen bestehen­den - also zum Bei­spiel den eben auf Linux erzeug­ten - importieren.

Der Import klappt mit einem Secu­ri­ty-Token (Fido-Key), per Datei oder direk­te Wifi-Über­tra­gung. Letz­te­res funk­tio­niert nur, wenn bei­de Sei­ten Open­Key­chain benutzen.

Da man ohne­hin immer eine Sicher­heits­ko­pie des eige­nen Schlüs­sels auf einem USB-Stick anle­gen soll­te, kann man ihn auch gleich zur Über­tra­gung nut­zen. Prak­tisch dafür ist ein Stick, der sowohl USB-A (für den PC) als auch Mikro-USB oder USB-C (für das Android-Gerät) besitzt. Ansons­ten hilft ein USB-OTG-Kabel.

In K9 muss jetzt noch Open­Key­chain als OpenPGP-App aus­ge­wählt wer­den. Dafür öff­net man die glo­ba­len Ein­stel­lun­gen und selek­tiert unter Kryp­to­gra­phie den ent­spre­chen­den Eintrag.

Will man Schlüs­sel zum Signie­ren und Ver­schlüs­seln für Kon­ten in K9 ver­wen­den, muss zuvor für jedes Kon­to der zu ver­wen­den­de Schlüs­sel aus­ge­wählt wer­den. Das erle­digt man in den Kon­to­ein­stel­lun­gen (in der Kon­ten­lis­te lan­ge auf das Kon­to drü­cken) unter Kryp­to­gra­phieMein Schlüs­sel.

Letz­ter Tipp: bevor man Signa­tur und Ver­schlüs­se­lung für einen Emp­fän­ger akti­vie­ren kann, muss sein öffent­li­cher Schlüs­sel impor­tiert wer­den. Sind PGP-Funk­tio­nen mög­lich, erscheint beim Ver­fas­sen der Mail oben rechts ein zusätz­li­ches Schloss­sym­bol zum Ein­schal­ten der Sicherheitsfeatures. 

Es ist mir aller­dings noch nicht gelun­gen, in K9 Signie­ren ohne Ver­schlüs­seln aus­zu­wäh­len. In Sachen PGP scheint dort aber auch noch eini­ges in Bewe­gung zu sein.

Schlüs­sel­aus­tausch über Key-Server

Key­ser­ver sind ein wei­te­res Grund­kon­zept von PGP. Appli­ka­tio­nen kön­nen sich von ihnen die öffent­li­chen Schlüs­sel der Nach­rich­ten­quel­le holen und mit ihnen und dem pri­va­ten Schlüs­sel des Emp­fän­gers die Signa­tur der Nach­richt prü­fen oder die Inhal­te ent­schlüs­seln. Dafür muss die Schlüs­sel­ver­wal­tung des Absen­ders natür­lich vor­her die Keys an den Schlüs­sel­ser­ver senden.

Lei­der benut­zen gpg und Open­Key­chain in der Stan­dard­kon­fi­gu­ra­ti­on nicht die glei­chen Key­ser­ver. Wäh­rend in gpg der Ser­ver keys.gnupg.net defi­niert ist, benutzt Open­Key­chain eine Lis­te von 3 Key-Ser­vern, unter denen sich aber nicht der gnupg-Ser­ver befin­det. So wer­den gnupg-Keys nicht in Open­Key­chain gefun­den und umgekehrt.

Es las­sen sich aber auf bei­den Sei­ten die Ser­ver ändern oder wei­te­re Ser­ver hin­zu­fü­gen. In gnupg geschieht das durch ändern der Datei ~/.gnupg/gpg.conf . Die Stan­dard-Kon­fi­gu­ra­ti­on ist

keyserver hkp://keys.gnupg.net

Das Ver­hal­ten von gnupg bei mehr als einem Key­ser­ver ist aller­dings nicht doku­men­tiert. Die Mei­nun­gen dar­über, ob an alle defi­nier­ten Ser­ver gesen­det wird oder nur an einen, und wenn an wel­chen, gehen in den Dis­kus­sio­nen aus­ein­an­der, und die Imple­men­tie­rung scheint in die­ser Hin­sicht auch noch nicht fix zu sein. Ich emp­feh­le daher, sich auf einen Key­ser­ver zu beschränken.

In Open­Key­chain kann der gnupg-Key­ser­ver zu der bestehen­den Lis­te hin­zu­ge­fügt wer­den. Das geschieht über Ein­stel­lun­genSchlüs­sel­su­che im Piz­zamenü links oben. Unter „OpenPGP Schlüs­sel­ser­ver ver­wal­ten” fin­det man die Ser­ver-Lis­te, die sich mit dem Plus-Sym­bol rechts oben erwei­tern oder durch Klick auf einen Ein­trag ändern lässt. 

Aller­dings sen­det und emp­fängt Open­Key­chain auch immer nur über einen Ser­ver, und zwar an den ers­ten der Lis­te. Nur wenn die­ser nicht reagiert, wer­den wei­te­re ver­sucht. Die Rei­hen­fol­ge der Ein­trä­ge lässt sich durch zie­hen am Piz­zamenü rechts neben dem Ein­trag ändern.

Bei einem der 5 getes­te­ten Android-Gerä­te (Moto-X mit Android 9) ist es mir nicht gelun­gen, gnupg als Key-Ser­ver ein­zu­tra­gen. Bei der Über­prü­fung des Ser­vers erhält man kei­nen Kon­takt, obwohl die URL kor­rekt ein­ge­tra­gen wur­de und das Netz­werk funk­tio­niert. Die Ursa­che ist bis­her unklar.

Ist der Schlüs­sel­ser­ver kor­rekt ein­ge­rich­tet, fin­det man offent­li­che Schlüs­sel über das Plus-Zei­chen (unten rechts in der Schlüs­sel­lis­te) und Schlüs­sel­su­che. Dort sieht man auch die bei­den ande­ren Mög­lich­kei­ten zum Schlüs­sel­im­port: „QR-Code ein­scan­nen” und „Aus Datei impor­tie­ren”.

Fazit

Die PGP-Soft­ware ist in den letz­ten Jah­ren gereift. Sie ist auf allen rele­van­ten Platt­for­men ver­füg­bar, leicht zu instal­lie­ren und kon­fi­gu­rie­ren und funk­tio­niert bis auf weni­ge Aus­nah­men problemlos.

Es gibt kaum noch einen Grund, PGP nicht für sei­ne Kor­re­spon­denz ein­zu­set­zen. Es macht Mails siche­rer, kann Fäl­schun­gen sicher ent­lar­ven und bei Bedarf Inhal­te ver­trau­lich übermitteln.

Das Sys­tem funk­tio­niert um so bes­ser, je mehr Teil­neh­mer es hat und je grö­ßer der Anteil signier­ter und/oder ver­schlüs­sel­ter Kor­re­spon­denz ist. Grund genug, genau jetzt damit anzufangen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

zwei + 20 =