Lasst SHA-1 endlich sterben

Ein Jahresanfang ist immer eine gute Gelegenheit alte Zöpfe abzuschneiden und etwas Neues zu beginnen. Auch bei der Verwendung von OpenPGP/GnuPG ist dies nicht vollkommen anders. Schon vor geraumer Zeit wurde der häufig verwendete Prüfsummenalgorithmus SHA-1 auf langfristige Sicht hin als zu unsicher erkannt und deshalb nach einem Ersatz gesucht. Dieser fand sich in SHA-2 (RFC 4634), einer ganzen Familie von neuen Prüfsummenalgrorithmen, bestehend aus SHA224, SHA256, SHA384 und SHA512. Da es jedoch seine Zeit dauert bis Software ergänzt, Arbeitsabläufe umgestellt und die neuen Versionen von einer überwiegenden Anzahl der Benutzer neue Versionen aufgespielt wurden konnte nicht sofort von SHA-1 abgerückt werden.

Inzwischen sieht die Sache jedoch anders aus. Durch die neue Version von Enigmail verbreitet sich auch OpenPGP/GnuPG in der Version 2, aber auch die häufig eingsetzten Vorläuferversionen sind schon einige Jahre in der Lage mit SHA-2 zu arbeiten, so daß nur in Einzelfällen die Verwendung von SHA-2 zu Problemen führt und noch auf SHA-1 zurückgegriffen werden muss. Dazu gehören alle, die noch nicht mehr zeitgemäße 1024-Bit Schlüssel verwenden, da bei diesen der Einsatz von Prüsummenalgorithmen mit mehr als 160-Bit nicht möglich ist, selbst wenn die verwendete PGP-Version SHA-2 kann. Dennoch kommt bei allen Anderen in der überwiegenden Zahl der Fälle wie mir scheint immer noch SHA-1 als Algorithmus der ersten Wahl zum Einsatz.

Diesem Umstand kann schnell durch zwei Maßnahmen abgeholfen werden. Es müssen nur die Voreinstellungen von OpenPGP/GnuPG angepasst und diese am Besten auch über den öffentlichen Schlüssel bekannt gemacht werden. Eine Erzeugung neuer Schlüssel ist hierzu nicht notwendig, die Alten können weiter verwendet werden. Allerdings sollten diejenigen, die noch 1024er-Schlüssel verwenden die Gelegenheit nutzen und einen neuen 2048er, oder besser noch gleich einen 4096er-Schlüssel zu erstellen.

GnuPG-Voreinstellungen

Um die Voreinstellungen von OpenPGP für den Prüfsummenalgorithmus zu ändern, muß die .gupg/gpg.conf mit einem beliebigen Texteditor um drei Zeilen ergänzt werden.

personal-digest-preferences SHA256
cert-digest-algo SHA256
default-preference-list SHA256 SHA512 SHA384 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed

Berufsparanoiker können natürlich anstelle von SHA256 auch gleich SHA512 verwenden. Da SHA-1 überhaupt nicht mehr verwendet werden soll, braucht man ihn in der persönlichen Liste nicht mehr erwähnen. Ausgehende Mails werden nun ab sofort ohne weiteres Zutun immer unter Verwendung von SHA256 signiert und neue Schlüssel werden mit entsprechenden Einstellungen generiert. Mit SHA-1 signiert eingehende Mails und Dateien bleiben von den Änderungen unberührt.

Bekanntgabe

Die Voreinstellungen von OpenPGP auf dem eignen Rechner beeinflussen natürlich nicht, welche Algorithmen Dritte verwenden, die mit einem über PGP kommunizieren wollen. Daher ist es sinnvoll, die eignen Wünsche hierzu allgmein bekannt zu machen, in dem man sie über seinen öffentlichen Schlüssel auf dem Schlüsselserver hinterlegt.

Zunächst wird die Kennung des/der geheimen Schlüssel ermittelt, danach die Einstellung der Voreinstellungen für die ermittelte Schlüsselkennung angepasst:

Testnutzer@Testrechner:~>gpg --list-secret-keys
sec   4096R/0xB8CBB2DE8DE07550 2015-02-27 [verfällt: 2020-02-26]
  Schl.-Fingerabdruck = CEA4 0760 3857 2334 7737  D392 B8CB B2DE 8DE0 7550
uid                            Testnutzer <Testnutzer@Test.com>
ssb   4096R/0x26BE4D392D2D97AA 2015-02-27
Testnutzer@Testrechner:~>gpg --edit-key 0xB8CBB2DE8DE07550
gpg2
Geheimer Schlüssel ist vorhanden.

pub  4096R/0xB8CBB2DE8DE07550  erzeugt: 2013-06-29  verfällt: 2020-06-29  Aufruf: SC
                               Vertrauen: uneingeschränkt Gültigkeit: uneingeschränkt
sub  4096R/0x26BE4D392D2D97AA  erzeugt: 2013-06-29  verfällt: niemals     Aufruf: E
[ uneing.] (1). Testnutzer <Testnutzer@Test.com>

gpg> showpref
[ uneing.] (1). Testnutzer <Testnutzer@Test.com>
     Verschlü.: AES256, AES192, AES, CAST5, 3DES
     Digest: SHA1, SHA256, SHA224,
     Komprimierung: ZLIB, BZIP2, ZIP, nicht komprimiert
     Eigenschaften: MDC, Keyserver no-modify

gpg> setpref SHA256 SHA512 SHA384 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
Setze die Liste der Voreinstellungen auf:
     Verschlü.: AES256, AES192, AES, CAST5, 3DES
     Digest: SHA256, SHA512, SHA384, SHA224, SHA1
     Komprimierung: ZLIB, BZIP2, ZIP, nicht komprimiert
     Eigenschaften: MDC, Keyserver no-modify
Die Voreinstellungen wirklich ändern? (j/N) j

Sie benötigen eine Passphrase, um den geheimen Schlüssel zu entsperren.
Benutzer: "Testnutzer <Testnutzer@Test.com>"
4096-Bit RSA Schlüssel, ID 0x$Schlüssel-ID, erzeugt 2015-02-27


pub  4096R/0xB8CBB2DE8DE07550  erzeugt: 2013-06-29  verfällt: 2020-06-29  Aufruf: SC
                               Vertrauen: uneingeschränkt Gültigkeit: uneingeschränkt
sub  4096R/0x26BE4D392D2D97AA  erzeugt: 2013-06-29  verfällt: niemals     Aufruf: E
[ uneing.] (1). Testnutzer <Testnutzer@Test.com>

gpg> save
Testnutzer@Testrechner:~>

Der öffentliche Schlüssel ist nun angepasst und kann ggf. auf den Schlüsselserver hochgeladen werden.

Testnutzer@Testrechner:~>gpg --send-key 0xB8CBB2DE8DE07550

Wer möchte, kann auch schon wie vorher SHA256 überspringen und die Voreinstellungen mit setpref SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed gleich auf SHA512 setzen.

Schreibe einen Kommentar

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