22
Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit Systemsicherheit 9: OpenPGP Jörg Schwenk Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit Das TCP/IP-Schichtenmodell Anwendungsschicht (FTP, HTTP, SMTP, ...) Transportschicht (TCP, UDP) Internetschicht (IP) Netzwerkschicht (z.B. Ethernet, TokenRing, ...) PGP

Systemsicherheit 9: OpenPGP - Ruhr-Universität · PDF file§1997-2002: McAfee und PGP werden zu Network Associates Inc. (NAI) Session 2 / 4 Jörg Schwenk ... Version: PGP for Business

Embed Size (px)

Citation preview

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 )