Session 2 / 1
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Systemsicherheit 9: OpenPGP
Jörg Schwenk
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Das TCP/IP-Schichtenmodell
Anwendungsschicht (FTP, HTTP, SMTP, ...)
Transportschicht (TCP, UDP)
Internetschicht (IP)
Netzwerkschicht (z.B. Ethernet, TokenRing, ...)
← PGP
Session 2 / 2
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Was ist PGP?§ Eine Crypto-Legende: Phil Zimmerman§ Ein Produkt (PGP Corporation, www.pgp.com,
www.pgpi.org)§ Dateien verschlüsseln und signieren§ Schlüssel verwalten: PGPKeys§ Festplattenverschlüsselung: PGPDisk§ Dateien sicher löschen: PGP Wipe§ PGPNet: Firewall und IPSec-Lösung
§ Ein Standard: OpenPGP (www.ietf.org/rfc/rfc2440.txt)
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Kurze Geschichte von PGP§ 1991 Phil Zimmerman : Erste frei verfügbare hybride
Verschlüsselungssoftware (PGP 1.0) § Abmahnung durch RSA Inc. wegen Patentverletzung
§ Öffentlicher RSA-Schlüssel kann von anderen Personen signiert werden (Web of Trust)
§ 1992: PGP verlässt die USA; § 1993: Anklageerhebung durch den US-Zoll
§ PGP 2.0: MD5, IDEA, RSA und Diffie-Hellman
§ 1994: Das MIT übernimmt die Weiterentwicklung der freien PGP-Version ab 2.5 mit RSARef von RSA Inc.
Session 2 / 3
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Kurze Geschichte von PGP§ 1995/96: Stale Schumacher aus Norwegen veröffentlicht
PGP 2.63i, das sich zum Standard entwickelt, mit eigener RSA-Implementierung
§ 1996: Einstellung des Verfahrens gegen Phil Zimmerman
§ 1997: Mehr als 12 verschiedene Freeware-Versionen von PGP 2.x
§ 1997: Export von PGP 5.0 in Buchform mit OCR-freundlichem Font; Basis für OpenPGP
§ OpenPGP (RFC 2440): Möglicher IETF-Standard(http://www.imc.org)
§ 2001: Sicherheitsprobleme mit dem Format zur Speicherung von Schlüsseln in OpenPGP
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Kurze Geschichte von PGP§ PGP für Business: § 1993-1996: Viacrypt
§ 1996-1997: PGP Inc.§ Juni 1997: PGP 5.0 (Windows 95, NT and Mac). § GUI § Einbindung von E-Mail-Software § längere Public Keys§ neue Signatur- und Zertifikatsformate§ neue Algorithmen: DSS Signaturen, ElGamal Public-Key-
Verschlüsselung, SHA-1, CAST-128, 3DES
§ Oktober 1997: optional Message Recovery mit ADKs
§ 1997-2002: McAfee und PGP werden zu Network Associates Inc. (NAI)
Session 2 / 4
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Kurze Geschichte von PGP§ PGP für Business: § 1998: PGPDisk
§ 1998: NAI tritt der „Key Recovery Alliance“ bei
§ 1999: Sicherheitsprobleme mit Zufallszahlengeneratoren und ADKs
§ 2000: PGP 7.0 mit persönlicher Firewall
§ 2001: Phil Zimmerman verlässt NAI
§ 2002-?: PGP Corporation
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Applikationsebene§ Einzelne Aktionen des Nutzers werden um
Sicherheitsdienste erweitert.§ Sicherheitseigenschaften von Objekten müssen
visualisiert werden.§ Oft Aktion des Nutzers (Passworteingabe) erforderlich§ Beispiele:§ Dateiverschlüsselung mit PGP (neue Dateiendung, neues Icon auf
dem Desktop)§ E-Mail-Verschlüsselung mit S/MIME (Icon zum Sicherheitsstatus
der E-Mail wird vom Programm angezeigt)
Session 2 / 5
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Applikationsebene: PGP§ Visualisierung der Sicherheitseigenschaften einer Datei
§ Visualisierung der Funktionen
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Hybride Verschlüsselung
§ Datei/Mail wird symmetrisch verschlüsselt (DES)§ Verwendeter Schlüssel wird asymmetrisch verschlüsselt (RSA)
Sender Empfänger
Session 2 / 6
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
PGP: Verschlüsselt und signiert
Pretty Good Privacy: Wie funktioniert es?
Und das Ganze als base64-MIME-Datentyp verpackt.
IDEAK(Nachricht)
RSAd_Sender(Hash(C))
RSAe_Empfänger2(K)RSAe_Empfänger1(K)
C
-----BEGIN PGP SIGNED MESSAGE-----
- -----BEGIN PGP MESSAGE-----Version: PGP for Business Security 5.5.3Comment: Licensed PGP for Deutsche Telekom Bereich FE3/IT-Sicherheit
hQCMA6OD/Q3yiYepAQQAo/pbKUh/CQJK7Pgnaj+NUPATwzNEXRbSys8mBB+IcS467auxZuPw16xpuMdh+P/9wc4CqBolOGXRF1euGrGqBSdJ1af7Z7FtTOKdFSHFcv2uCbL70XIzFX0nWgQKjSmYg8l3QF80WuoMgBUKattbBi6r1A17pmUEO8Bl9FKJKESkGqzfmlPC/Oyd8WQpxE3Ii1P9HyDZJvyVMkr1=Xz4y- -----END PGP MESSAGE-----
-----BEGIN PGP SIGNATURE-----Version: PGP for Business Security 5.5.3Comment: Licensed PGP for Deutsche Telekom Bereich FE3/IT-Sicherheit
iQCVAwUBNn9a7KOD/Q3yiYepAQFuPwP/akv0jqKr/+Rp8l9rqdWZJn0eHjN5esEvKMgBTLkTteWgtsqurAv6Ri4SYUFT/e3Ieo+kO4PGimuAaXZYCBNCEXzRhE5LdOaWfkUBgKxu5LdZPQ5xASRqMCypN9ZaSPXUIbxdrwpWbHNGNRNKurTINB8qRAcSonsc4IdEcn9mM90==Qz7y-----END PGP SIGNATURE-----
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
PGPKeys§ Verwaltung öffentlicher und privater Schlüssel§ pubring.pkr und secring.skr
Session 2 / 7
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
PGPDisk§ Nicht
Applikations-sondern Betriebssystem-ebene
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
PGPDisk – Message Recovery§ Verlust des Schlüssels → Daten verloren§ ADK wird nur im Notfall benutzt
Session 2 / 8
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
PGP Wipe§ Einfaches Löschen von Dateien belässt Daten
physikalisch auf der Festplatte§ PGP Wipe überschreibt Dateien mehrmals mit
Zufallsdaten
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
PGPNet§ Firewall-Funktionalität§ IPSec-Funktionalität§ Wird im entsprechenden Kapitel behandelt
Session 2 / 9
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
OpenPGP: TLV-Codierung§ TAG: Art des nachfolgenden Datensatzes§ Public-Key Encrypted Session Key Packets (Tag 1) § Signature Packet (Tag 2) § Symmetric-Key Encrypted Session-Key Packets (Tag 3) § One-Pass Signature Packets (Tag 4) § Key Material Packet (Tag 5-7, 14)§ Compressed Data Packet (Tag 8) § Symmetrically Encrypted Data Packet (Tag 9) § Marker Packet (Obsolete Literal Packet) (Tag 10) § Literal Data Packet (Tag 11) § Trust Packet (Tag 12) § User ID Packet (Tag 13)
§ LENGTH: Länge der nachfolgenden Daten§ VALUE: Die Daten selbst
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
OpenPGP§ Was ist OpenPGP? Erläuterung anhand eines Beispiels.§ Die Struktur der PGP-Daten wurde mit Hilfe von
PGPdump (www.pgpdump.net) dargestellt.
Hallo,
das ist eine Testnachricht, um das PGP-Datenformat zu erklären.
Jörg Schwenk
Session 2 / 10
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
OpenPGP – Beispiel 1-----BEGIN PGP MESSAGE-----Version: PGPfreeware 7.0.3 for non-commercial use <http://www.pgp.com>
qANQR1DBwU4D6UL4+Mn4IpkQCADVz8WDzJs2g58lJ8OHPuEsQDEQOm5HhL8Pfy37lB5PNc+39Scar9FoeqvV4+YI0WjrgE6MpNzTGYy6SUnsSmV95i33KCEn5f43OCyoMpIDv4o0tO3HSvMkfTd/kJrhY/tW38kQXvYrqtIeGlTgfp6kMj9CH5o0lscjdtOWQZ/uerYM01Vj5Ma3srwejH+TlmqS281lL9ay8IPXIaMQ1U7J4QZ8YFlgHmrnNCW4IgywGq19bl/wmV9RwBJjIBWdWlr3NDjyMvd1pEALWYuXrJyxuEahc7AYkJs7SVopji7zx2kLczEkMm6/d98w1OHLtoMwy3mHVzU/uKdrCcMYb61JCACdsnsTf0z2YKYu0cXJxdDJWObn+Iz27dcjtwKQHlhHmWDW89Ot2ve+kDlaffJdgzR1KceKAcwgLKiRmwhKXcDCan3t1jorr/ivYm9Vsot5tgmktZ/IVEgd8/84ob++1hQCQ8m9OIFuLID9QyjYLnNqqUuG2ssCdQ6uHgLsCn2jXtqrV8qOqK2oeQljxw1TWmYbjuUovZ65gX96GvTiiu4tsUStM6Kx13hlJHFGTqfLYjF0pMmsjzoSm4o0nc5uzEGCfGMthTUvo7MIQQdlNSi4mMjrbDzEEAbU0Lle5PZoYMGJSVV1QL4afBS8fdwINmU3Xlf7yPtdTBvNSb/ohHSRyWwbIKo9AvVf9RvopYQe9VK98YrktLYYoeUWlY89JDWXMxX3bbN0+zFaade7aMtGfMWjcyr5/C+higfGaYH86sxrzIGfIqDpQdFRAU/aqQNsA+R/7XZtLDwcNUk/MlPDRRuJB9T28p4QGfOAIs8==7VxS-----END PGP MESSAGE-----
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
OpenPGP
Session 2 / 11
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
OpenPGP – Beispiel 1Old: Marker Packet(tag 10)(3 bytes)
String - PGPNew: Public-Key Encrypted Session Key Packet(tag 1)(526 bytes)
New version(3)Key ID - e9 42 f8 f8 c9 f8 22 99 Pub alg - ElGamal Encrypt-Only(pub 16)ElGamal g^k mod p(2045 bits) –
1c 8f fd 96 d2 e3 4b 2e 99 1e 07 be db c2 17 59 1c 28 b2 76 b4 c6 8a ef 4d 85 90 f3 35 ea ad 17 1e 4f cb ... 40 a3 ce 25 cc 77 43 a8 d1 89 97 a9 9e 20 ef 95 ff 97 b7 90 ae 38 0f 01 48 6c 06 ff 86
ElGamal m * y^k mod p(2048 bits) –c2 b5 3b 4f fa 6a 69 a8 24 84 16 5a 0b e8 27 bf 1a 2f 1d 43 da 34 b7 0a 24 fa 47 76 27 fb 1b 4f d1 6e ... 87 eb e8 7b 50 30 25 56 e1 de 06 58 f6 de c1 9e c7 2a a9 37 f9 34 0f db e3 06 69 1d 47 40 -> m=sym alg(1 byte)+checksum(2 bytes)+PKCS-1 block type 02
New: Symmetrically Encrypted Data Packet(tag 9)(108 bytes)Encrypted data [sym alg is encrypted in the pub session key above]
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
OpenPGP – Beispiel 2-----BEGIN PGP SIGNATURE-----Version: PGPfreeware 7.0.3 for non-commercial use <http://www.pgp.com>
iQA/AwUBPI8YOePg7x5y4Er9EQJsPwCgqHDO3U7/Qo+yRZREmL7/mmBd3VUAoO7o2+JcZ9OoC0GN4vgZ2WaMt2Jy=owPg-----END PGP SIGNATURE-----
Session 2 / 12
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
OpenPGP – Beispiel 2Old: Signature Packet(tag 2)(63 bytes)
Ver 3 - oldHash material(5 bytes):
Sig type - Signature of a canonical text document(0x01).Creation time - Wed Mar 13 09:13:29 UTC 2002
Key ID - e3 e0 ef 1e 72 e0 4a fdPub alg - DSA Digital Signature Standard(pub 17)Hash alg - SHA1(hash 2)Hash left 2 bytes - 6c 3f DSA r(160 bits) –
a8 70 ce dd 4e ff 42 8f b2 45 94 44 98 be ff 9a 60 5d dd 55 DSA s(160 bits) –
ee e8 db e2 5c 67 d3 a8 0b 41 8d e2 f8 19 d9 66 8c b7 62 72 -> hash(160 bits)
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
OpenPGP
Session 2 / 13
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
OpenPGP
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 1: Öffentlicher Schlüssel§ Ralf Senderek, http://senderek.de/security/key-
experiments.html§ Schleust ADK des Angreifers in das Public Key-File ein§ Manipulation eines Public Key-Files auf einem PGP Keyserver§ Hat ein anderer Nutzer den manipulierten Public Key
heruntergeladen, so kann der Angreifer alle damit verschlüsselten Nachrichten mitlesen
Session 2 / 14
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 1: Struktur des Public Key
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 1: Struktur des Public Key
Session 2 / 15
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 1: Struktur einer Signatur§ Fehlerquelle: Non-hashed subpackets§ Änderungen haben keinen Einfluss auf die Signatur§ ADK kann hier eigefügt oder manipuliert werden
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 1: Struktur einer Signatur§ Implementierungsfehler! Funktioniert nur mit folgenden
PGP-Softwareversionen:§ PGP 5.5.3i und PGP 6.5.1i für Windows§ kleinere Fehler für andere PGP-Versionen§ Details: http://senderek.de/security/key-experiments.html
§ Lösungsmöglichkeiten:§ Klarere Spezifikation mit Schlüsselwörtern wie MUST, SHOULD,
MUST NOT§ Testdaten zur Überprüfung der korrekten Implementierung; hier
speziell: fehlerhafte Testdaten
Session 2 / 16
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 2: Privater Schlüssel
§ Vlastimil Klíma und Tomáš Rosa: Attack on Private Signature Keys of the OpenPGPformat, PGP TM programs and otherapplications compatible with OpenPGP, http://eprint.iacr.org/2002/076.pdf
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 2: Privater Schlüssel§ Beobachtung: § Öffentlicher und privater Schlüssel sind syntaktisch (d.h. in der
Datenstruktur) nicht verknüpft.
§ Angriff: § Ändere öffentlichen Schlüssel (mathematische Gruppe) so ab, dass
eine mathematische Kryptoanalyse möglich wird (bekannt).
§ Angriff auf die Datei sekring.skr§ Sicherheitsniveau von PGP reduziert sich auf das Sicherheitsniveau
des Betriebssystems§ Schlüssel in Datei sekring.skr werden nicht signiert!
Session 2 / 17
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 2: DSA§ Idee: Berechnung des Diskreten Logarithmus in einer
schwachen Gruppe§ DSA: § Rechnen in Untergruppe der Ordnung 2160 („mod q“)§ Einbettung in Gruppe der Ordnung 21024 („mod p“) ist nötig, damit
das DL-Problem schwer ist
§ Angrissidee:§ mache p so klein, dass der DL x aus y=gx berechnet werden
kann§ x ändert sich dadurch nicht, da die Berechnung in Untergruppe der
Ordnung q erfolgt
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 2: DSA – Eintrag in sekring.skr
2
20
2
(8-16)
(1+1+8+1)
(1)
1 Byte
2+128
2+128
2+20
2+128
1 Byte
4 Byte
1 Byte
checksum, arithmetic sum of 22 previous octets as plaintext, modulo65536 (in version 4 encrypted, in version 3 not encrypted).
x number (multiprecision integer, in version 3 and 4 encrypted) Private Key
prefix of the x number (version 4 encrypted, version 3 not encrypted)
Initialisation vector IV
0x03 (iterated and salted string-to-key identifier); identifier of the hash algorithm (for SHA-1 it is 0x02); salt (random data, which are hashed together with the user´spassphrase and diversifies thus derived symmetrical key); the number of hashedoctets of the data (the so-called "count").
Symmetrical algorithm
Param.
String-to-key-usage (0xFF)
Public Key y
Number g
Prime number q
Prime number p
Algorithm (DSA)
Creation time
Public Key
Version number
Session 2 / 18
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 2: DSA§ Vorbereitung: § Ersetze p durch 159-Bit-Primzahl p´, und g durch geeignetes
g´.§ Passe die Längenangaben an
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 2: DSA§ Durchführung: § Opfer berechnet mit p´ und g´ eine (falsche) Signatur (r´,s´)
einer beliebigen Nachricht m§ Angreifer berechnet aus
r´ = (g´k mod p´) mod q = g´k mod p´den DL k modulo p´ zur Basis g´.
§ Damit enthält die Gleichung s´= ( (k-1 mod q) (h(m)+xr´) ) mod q
nur noch einen unbekannten Wert, der durch Auflösen der Gleichung nach x ermittelt werden kann.
§ Nachbereitung:§ Die Datei sekring.skr muss wieder in den Ursprungszustand
zurückversetzt werden, damit das Opfer nicht merkt
Session 2 / 19
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 2: RSA
§ Beobachtung: § Öffentlicher und privater Schlüssel sind syntaktisch (d.h. in der
Datenstruktur) nicht verknüpft. § Der private Schlüssel ist nur durch eine einfache Prüfsumme
geschützt
§ Angriff: § Ändere Teil des privaten Schlüssels so ab, dass bei Anwendung
ein Fehler entsteht§ Differential Fault Analysis (bekannt)
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 2: RSA – Eintrag in sekring.skr
Prefix + pInv2+64
Prefix + prime q2+64
2
2+ 64
2+128
(8-16)
(1+1+8+1)
(1)
1 Byte
?
?
1 Byte
4 Byte
1 Byte
2 octets (HSum , LSum ) checksum, a sum of previous items (MPInumbers) in open form (mod 65536)
Prefix + prime p
Private Key
prefix + exponent d
Initialisation vector IV
0x03 (iterated and salted string-to-key identifier); identifier of the hash algorithm (forSHA-1 it is 0x02); salt (random data, which are hashed together with the user´spassphrase and diversifies thus derived symmetrical key); the number of hashedoctets of the data (the so-called "count").
Symmetrical algorithm
Param.
String-to-key-usage (0xFF)
Exponent e
Modulus n
Algorithm (RSA)
Creation timePublic Key
Version number
Session 2 / 20
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Angriff 2: RSA§ Vorbereitung: pInv wird abgeändert§ Da die Prüfsumme keine Hashfunktion ist, kann sie leicht
angepasst werden.§ Die Prüfsumme ist zwar verschlüsselt, aber im CFB-Modus: XOR
eines Wertes zum Chiffretext hat XOR des gleichen Wertes im Klartext zur Folge.
§ Fazit: pInv kann (syntaktisch) unbemerkt verändert und ein Fehler für DFA indiziert werden.§ Sematischer Work-Around: Passt pInv zu p?§ Syntaktische Lösung: Hashfunktion, CBC-Modus
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Differential Fault Attack für RSARSA mit dem Chinesischen Restsatz§ p und q sind teilerfremd, d.h. ggT(p,q)=1.§ Mit dem erweiterten Euklidischen Algorithmus kann man 1
= ap + bq berechnen.§ sp = md mod p = md mod p-1 mod p,
§ sq = md mod q
§ Dann ist md mod n = s = sqap + spbq mod n
§ Diese Art der Berechnung ist wesentlich schneller.
Session 2 / 21
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Differential Fault Attack für RSA (2)
Wir provozieren einen Fehler bei der Berechnung von sp. Der fehlerhafte Wert sei sp‘ .
§ s = sqap + spbq mod n
§ s‘ = sqap + sp‘bq mod n
§ ggT(s-s‘,n) = ggT((sp - sp‘)bq , pq) = q
§ Funktioniert auch, wenn man nur die fehlerhafte Signatur hat
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Veränderung der letzten 8 Byte im CFB-ModusCFB-Modus –Fundstücke aus dem Internet
Session 2 / 22
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Veränderung der letzten 8 Byte im CFB-ModusCFB-Modus: Angriff
§ Wähle CFB-verschlüsseltes Byte B = (b7, ..., b0) von pInvund niederwertigstes Byte C = (c7, ..., c0) der Prüfsumme
§ XORe beide Bytes mit (0,...,0,1,0,...,0) (eine 1 an der j-tenStelle); mit Wahrscheinlichkeit 1/2 merkt die Prüfsumme die veränderung nicht.
Jörg SchwenkLehrstuhl für Netz- und Datensicherheit
Weitere Angriffe
[20 Apr 2001] PGP 7.0.3 Hotfix 1 availableThis hotfix corrects a bug in the Windows version of PGP 7.0.3 which
made it possible for an attacker to create a .sig file containing a DLL and trick PGP into loading this DLL instead of the system DLL. Thishotfix will force the PGP component DLLs to always load from thedirectory they were installed in. Additionally, it will force a "Save As" dialog for any extracted files with a .dll, .sys, or .vxd extension.
(Quelle: www.pgpi.org )