|
|
1.1 root 1: Phil's Pretty Good Software
2: Presents
3:
4: ===
5: PGP
6: ===
7:
8: Pretty Good Privacy
9: Public Key Encryption for the Masses
10:
11:
12: --------------------------
13: PGP User's Guide
14: Volume I: Essential Topics
15: --------------------------
16: by Philip Zimmermann
17: Revised 6 Mar 93
18:
19:
20: PGP Version 2.2 - 6 Mar 93
21: Software by
22: Philip Zimmermann
23: with
24: Branko Lankester, Hal Finney, and Peter Gutmann
25:
26:
27:
28:
29: Synopsis: PGP uses public-key encryption to protect E-mail and data
30: files. Communicate securely with people you've never met, with no
31: secure channels needed for prior exchange of keys. PGP is well
32: featured and fast, with sophisticated key management, digital
33: signatures, data compression, and good ergonomic design.
34:
35:
36: Software and documentation (c) Copyright 1990-1992 Philip Zimmermann.
37: For information on PGP licensing, distribution, copyrights, patents,
38: trademarks, liability limitations, and export controls, see the
39: "Legal Issues" section in the "PGP User's Guide, Volume II: Special
40: Topics".
41:
42:
43: Contents
44: ========
45:
46: Quick Overview
47: Why Do You Need PGP?
48: How it Works
49: Installing PGP
50: How to Use PGP
51: To See a Usage Summary
52: Encrypting a Message
53: Encrypting a Message to Multiple Recipients
54: Signing a Message
55: Signing and then Encrypting
56: Using Just Conventional Encryption
57: Decrypting and Checking Signatures
58: Managing Keys
59: RSA Key Generation
60: Adding a Key to Your Key Ring
61: Removing a Key or User ID from Your Key Ring
62: Extracting (copying) a Key from Your Key Ring
63: Viewing the Contents of Your Key Ring
64: How to Protect Public Keys from Tampering
65: How Does PGP Keep Track of Which Keys are Valid?
66: How to Protect Secret Keys from Disclosure
67: Revoking a Public Key
68: What If You Lose Your Secret Key?
69: Advanced Topics
70: Sending Ciphertext Through E-mail Channels: Radix-64 Format
71: Environmental Variable for Path Name
72: Setting Configuration Parameters: CONFIG.TXT
73: Vulnerabilities
74: Beware of Snake Oil
75: PGP Quick Reference
76: Legal Issues
77: Acknowledgments
78: About the Author
79:
80:
81: Quick Overview
82: =============
83:
84: Pretty Good(tm) Privacy (PGP), from Phil's Pretty Good Software, is a
85: high security cryptographic software application for MSDOS, Unix,
86: VAX/VMS, and other computers. PGP allows people to exchange files or
87: messages with privacy, authentication, and convenience. Privacy
88: means that only those intended to receive a message can read it.
89: Authentication means that messages that appear to be from a
90: particular person can only have originated from that person.
91: Convenience means that privacy and authentication are provided
92: without the hassles of managing keys associated with conventional
93: cryptographic software. No secure channels are needed to exchange
94: keys between users, which makes PGP much easier to use. This is
95: because PGP is based on a powerful new technology called "public key"
96: cryptography.
97:
98: PGP combines the convenience of the Rivest-Shamir-Adleman (RSA)
99: public key cryptosystem with the speed of conventional cryptography,
100: message digests for digital signatures, data compression before
101: encryption, good ergonomic design, and sophisticated key management.
102: And PGP performs the public-key functions faster than most other
103: software implementations. PGP is public key cryptography for the
104: masses.
105:
106: PGP does not provide any built-in modem communications capability.
107: You must use a separate software product for that.
108:
109: This document, "Volume I: Essential Topics", only explains the
110: essential concepts for using PGP, and should be read by all PGP
111: users. "Volume II: Special Topics" covers the advanced features of
112: PGP and other special topics, and may be read by more serious PGP
113: users. Neither volume explains the underlying technology details of
114: cryptographic algorithms and data structures.
115:
116:
117: Why Do You Need PGP?
118: ====================
119:
120: It's personal. It's private. And it's no one's business but yours.
121: You may be planning a political campaign, discussing your taxes, or
122: having an illicit affair. Or you may be doing something that you
123: feel shouldn't be illegal, but is. Whatever it is, you don't want
124: your private electronic mail (E-mail) or confidential documents read
125: by anyone else. There's nothing wrong with asserting your privacy.
126: Privacy is as apple-pie as the Constitution.
127:
128: Perhaps you think your E-mail is legitimate enough that encryption is
129: unwarranted. If you really are a law-abiding citizen with nothing to
130: hide, then why don't you always send your paper mail on postcards?
131: Why not submit to drug testing on demand? Why require a warrant for
132: police searches of your house? Are you trying to hide something?
133: You must be a subversive or a drug dealer if you hide your mail
134: inside envelopes. Or maybe a paranoid nut. Do law-abiding citizens
135: have any need to encrypt their E-mail?
136:
137: What if everyone believed that law-abiding citizens should use
138: postcards for their mail? If some brave soul tried to assert his
139: privacy by using an envelope for his mail, it would draw suspicion.
140: Perhaps the authorities would open his mail to see what he's hiding.
141: Fortunately, we don't live in that kind of world, because everyone
142: protects most of their mail with envelopes. So no one draws suspicion
143: by asserting their privacy with an envelope. There's safety in
144: numbers. Analogously, it would be nice if everyone routinely used
145: encryption for all their E-mail, innocent or not, so that no one drew
146: suspicion by asserting their E-mail privacy with encryption. Think
147: of it as a form of solidarity.
148:
149: Today, if the Government wants to violate the privacy of ordinary
150: citizens, it has to expend a certain amount of expense and labor to
151: intercept and steam open and read paper mail, and listen to and
152: possibly transcribe spoken telephone conversation. This kind of
153: labor-intensive monitoring is not practical on a large scale. This
154: is only done in important cases when it seems worthwhile.
155:
156: More and more of our private communications are being routed through
157: electronic channels. Electronic mail will gradually replace
158: conventional paper mail. E-mail messages are just too easy to
159: intercept and scan for interesting keywords. This can be done
160: easily, routinely, automatically, and undetectably on a grand scale.
161: International cablegrams are already scanned this way on a large
162: scale by the NSA.
163:
164: We are moving toward a future when the nation will be crisscrossed
165: with high capacity fiber optic data networks linking together all our
166: increasingly ubiquitous personal computers. E-mail will be the norm
167: for everyone, not the novelty it is today. Perhaps the Government
168: will protect our E-mail with Government-designed encryption
169: protocols. Probably most people will trust that. But perhaps some
170: people will prefer their own protective measures.
171:
172: Senate Bill 266, a 1991 omnibus anti-crime bill, had an unsettling
173: measure buried in it. If this non binding resolution had become real
174: law, it would have forced manufacturers of secure communications
175: equipment to insert special "trap doors" in their products, so that
176: the Government can read anyone's encrypted messages. It reads: "It
177: is the sense of Congress that providers of electronic communications
178: services and manufacturers of electronic communications service
179: equipment shall insure that communications systems permit the
180: Government to obtain the plain text contents of voice, data, and
181: other communications when appropriately authorized by law." This
182: measure was defeated after rigorous protest from civil libertarians
183: and industry groups. But the Government has since introduced other
184: disturbing legislation to work toward similar objectives.
185:
186: If privacy is outlawed, only outlaws will have privacy. Intelligence
187: agencies have access to good cryptographic technology. So do the big
188: arms and drug traffickers. So do defense contractors, oil companies,
189: and other corporate giants. But ordinary people and grassroots
190: political organizations mostly have not had access to affordable
191: "military grade" public-key cryptographic technology. Until now.
192:
193: PGP empowers people to take their privacy into their own hands.
194: There's a growing social need for it. That's why I wrote it.
195:
196:
197: How it Works
198: ============
199:
200: It would help if you were already familiar with the concept of
201: cryptography in general and public key cryptography in particular.
202: Nonetheless, here are a few introductory remarks about public key
203: cryptography.
204:
205: First, some elementary terminology. Suppose I want to send you a
206: message, but I don't want anyone but you to be able to read it. I
207: can "encrypt", or "encipher" the message, which means I scramble it
208: up in a hopelessly complicated way, rendering it unreadable to anyone
209: except you, the intended recipient of the message. I supply a
210: cryptographic "key" to encrypt the message, and you have to use the
211: same key to decipher or "decrypt" it. At least that's how it works
212: in conventional "single-key" cryptosystems.
213:
214: In conventional cryptosystems, such as the US Federal Data Encryption
215: Standard (DES), a single key is used for both encryption and
216: decryption. This means that a key must be initially transmitted via
217: secure channels so that both parties can know it before encrypted
218: messages can be sent over insecure channels. This may be
219: inconvenient. If you have a secure channel for exchanging keys, then
220: why do you need cryptography in the first place?
221:
222: In public key cryptosystems, everyone has two related complementary
223: keys, a publicly revealed key and a secret key. Each key unlocks the
224: code that the other key makes. Knowing the public key does not help
225: you deduce the corresponding secret key. The public key can be
226: published and widely disseminated across a communications network.
227: This protocol provides privacy without the need for the same kind of
228: secure channels that a conventional cryptosystem requires.
229:
230: Anyone can use a recipient's public key to encrypt a message to that
231: person, and that recipient uses her own corresponding secret key to
232: decrypt that message. No one but the recipient can decrypt it,
233: because no one else has access to that secret key. Not even the
234: person who encrypted the message can decrypt it.
235:
236: Message authentication is also provided. The sender's own secret key
237: can be used to encrypt a message, thereby "signing" it. This creates
238: a digital signature of a message, which the recipient (or anyone
239: else) can check by using the sender's public key to decrypt it. This
240: proves that the sender was the true originator of the message, and
241: that the message has not been subsequently altered by anyone else,
242: because the sender alone possesses the secret key that made that
243: signature. Forgery of a signed message is infeasible, and the sender
244: cannot later disavow his signature.
245:
246: These two processes can be combined to provide both privacy and
247: authentication by first signing a message with your own secret key,
248: then encrypting the signed message with the recipient's public key.
249: The recipient reverses these steps by first decrypting the message
250: with her own secret key, then checking the enclosed signature with
251: your public key. These steps are done automatically by the
252: recipient's software.
253:
254: Because the public key encryption algorithm is much slower than
255: conventional single-key encryption, encryption is better accomplished
256: by using a high-quality fast conventional single-key encryption
257: algorithm to encipher the message. This original unenciphered
258: message is called "plaintext". In a process invisible to the user, a
259: temporary random key, created just for this one "session", is used to
260: conventionally encipher the plaintext file. Then the recipient's
261: public key is used to encipher this temporary random conventional
262: key. This public-key-enciphered conventional "session" key is sent
263: along with the enciphered text (called "ciphertext") to the
264: recipient. The recipient uses her own secret key to recover this
265: temporary session key, and then uses that key to run the fast
266: conventional single-key algorithm to decipher the large ciphertext
267: message.
268:
269: Public keys are kept in individual "key certificates" that include
270: the key owner's user ID (which is that person's name), a timestamp of
271: when the key pair was generated, and the actual key material. Public
272: key certificates contain the public key material, while secret key
273: certificates contain the secret key material. Each secret key is
274: also encrypted with its own password, in case it gets stolen. A key
275: file, or "key ring" contains one or more of these key certificates.
276: Public key rings contain public key certificates, and secret key
277: rings contain secret key certificates.
278:
279: The keys are also internally referenced by a "key ID", which is an
280: "abbreviation" of the public key (the least significant 64 bits of
281: the large public key). When this key ID is displayed, only the lower
282: 24 bits are shown for further brevity. While many keys may share the
283: same user ID, for all practical purposes no two keys share the same
284: key ID.
285:
286: PGP uses "message digests" to form signatures. A message digest is a
287: 128-bit cryptographically strong one-way hash function of the
288: message. It is somewhat analogous to a "checksum" or CRC error
289: checking code, in that it compactly "represents" the message and is
290: used to detect changes in the message. Unlike a CRC, however, it is
291: computationally infeasible for an attacker to devise a substitute
292: message that would produce an identical message digest. The message
293: digest gets encrypted by the secret key to form a signature.
294:
295: Documents are signed by prefixing them with signature certificates,
296: which contain the key ID of the key that was used to sign it, a
297: secret-key-signed message digest of the document, and a timestamp of
298: when the signature was made. The key ID is used by the receiver to
299: look up the sender's public key to check the signature. The
300: receiver's software automatically looks up the sender's public key
301: and user ID in the receiver's public key ring.
302:
303: Encrypted files are prefixed by the key ID of the public key used to
304: encrypt them. The receiver uses this key ID message prefix to look
305: up the secret key needed to decrypt the message. The receiver's
306: software automatically looks up the necessary secret decryption key
307: in the receiver's secret key ring.
308:
309: These two types of key rings are the principal method of storing and
310: managing public and secret keys. Rather than keep individual keys in
311: separate key files, they are collected in key rings to facilitate the
312: automatic lookup of keys either by key ID or by user ID. Each user
313: keeps his own pair of key rings. An individual public key is
314: temporarily kept in a separate file long enough to send to your
315: friend who will then add it to her key ring.
316:
317:
318:
319: Installing PGP
320: ==============
321:
322: The MSDOS PGP 2.2 release comes in a compressed archive file called
323: PGP22.ZIP (each new release will have a name in the form "PGPxy.ZIP"
324: for PGP version number x.y). The archive can be decompressed with
325: the MSDOS shareware decompression utility PKUNZIP, or the Unix
326: utility "unzip". The PGP release package contains a README.DOC file
327: that you should always read before installing PGP. This README.DOC
328: file contains late-breaking news on what's new in this release of
329: PGP, as well as information on what's in all the other files included
330: in the release.
331:
332: If you already have PGP version 1.0 for MSDOS, you should probably
333: delete it, because no one else uses it anymore. If you don't want to
334: delete it, rename the old executable file to pgp1.exe, to avoid name
335: conflicts with the new PGP.
336:
337: To install PGP on your MSDOS system, you just have to copy the
338: compressed archive PGPxx.ZIP file into a suitable directory on your
339: hard disk (like C:\PGP), and decompress it with PKUNZIP. For best
340: results, you will also modify your AUTOEXEC.BAT file, as described
341: elsewhere in this manual, but you can do that later, after you've
342: played with PGP a bit and read more of this manual. If you haven't
343: run PGP before, the first step after installation (and reading this
344: manual) is to run the PGP key generation command "pgp -kg".
345:
346: Installing on Unix and VAX/VMS is generally similar to installing on
347: MSDOS, but you may have to compile the source code first. A Unix
348: makefile is provided with the source release for this purpose.
349:
350: For further details on installation, see the separate PGP
351: Installation Guide, in the file SETUP.DOC included with this
352: release. It fully describes how to set up the PGP directory and your
353: AUTOEXEC.BAT file and how to use PKUNZIP to install it.
354:
355:
356:
357: How to Use PGP
358: ==============
359:
360:
361: To See a Usage Summary
362: ----------------------
363:
364: To see a quick command usage summary for PGP, just type:
365:
366: pgp -h
367:
368:
369:
370: Encrypting a Message
371: --------------------
372:
373: To encrypt a plaintext file with the recipient's public key, type:
374:
375: pgp -e textfile her_userid
376:
377: This command produces a ciphertext file called textfile.pgp. A
378: specific example is:
379:
380: pgp -e letter.txt Alice
381: or:
382: pgp -e letter.txt "Alice S"
383:
384: The first example searches your public key ring file "pubring.pgp"
385: for any public key certificates that contain the string "Alice"
386: anywhere in the user ID field. The second example would find any
387: user IDs that contain "Alice S". You can't use spaces in the string
388: on the command line unless you enclose the whole string in quotes.
389: The search is not case-sensitive. If it finds a matching public key,
390: it uses it to encrypt the plaintext file "letter.txt", producing a
391: ciphertext file called "letter.pgp".
392:
393: PGP attempts to compress the plaintext before encrypting it, thereby
394: greatly enhancing resistance to cryptanalysis. Thus the ciphertext
395: file will likely be smaller than the plaintext file.
396:
397: If you want to send this encrypted message through E-mail channels,
398: convert it into printable ASCII "radix-64" format by adding the -a
399: option, as described later.
400:
401:
402:
403: Encrypting a Message to Multiple Recipients
404: -------------------------------------------
405:
406: If you want to send the same message to more than one person, you may
407: specify encryption for several recipients, any of whom may decrypt the
408: same ciphertext file. To specify multiple recipients, just add more
409: user IDs to the command line, like so:
410:
411: pgp -e letter.txt Alice Bob Carol
412:
413: This would create a ciphertext file called letter.pgp that could be
414: decrypted by Alice or Bob or Carol. Any number of recipients may be
415: specified.
416:
417:
418:
419: Signing a Message
420: -----------------
421:
422: To sign a plaintext file with your secret key, type:
423:
424: pgp -s textfile [-u your_userid]
425:
426: Note that [brackets] denote an optional field, so don't actually type
427: real brackets.
428:
429: This command produces a signed file called textfile.pgp. A specific
430: example is:
431:
432: pgp -s letter.txt -u Bob
433:
434: This searches your secret key ring file "secring.pgp" for any secret
435: key certificates that contain the string "Bob" anywhere in the user
436: ID field. The search is not case-sensitive. If it finds a matching
437: secret key, it uses it to sign the plaintext file "letter.txt",
438: producing a signature file called "letter.pgp".
439:
440: If you leave off the user ID field, the first key on your secret
441: key ring is used as the default secret key for your signature.
442:
443:
444:
445: Signing and then Encrypting
446: ---------------------------
447:
448: To sign a plaintext file with your secret key, and then encrypt it
449: with the recipient's public key:
450:
451: pgp -es textfile her_userid [-u your_userid]
452:
453: Note that [brackets] denote an optional field, so don't actually type
454: real brackets.
455:
456: This example produces a nested ciphertext file called textfile.pgp.
457: Your secret key to create the signature is automatically looked up in
458: your secret key ring via your_userid. Her public encryption key is
459: automatically looked up in your public key ring via her_userid. If
460: you leave off her user ID field from the command line, you will be
461: prompted for it.
462:
463: If you leave off your own user ID field, the first key on your secret
464: key ring is be used as the default secret key for your signature.
465:
466: Note that PGP attempts to compress the plaintext before encrypting
467: it.
468:
469: If you want to send this encrypted message through E-mail channels,
470: convert it into printable ASCII "radix-64" format by adding the -a
471: option, as described later.
472:
473: Multiple recipients may be specified by adding more user IDs to the
474: command line.
475:
476:
477:
478: Using Just Conventional Encryption
479: ----------------------------------
480:
481: Sometimes you just need to encrypt a file the old-fashioned way, with
482: conventional single-key cryptography. This approach is useful for
483: protecting archive files that will be stored but will not be sent to
484: anyone else. Since the same person that encrypted the file will also
485: decrypt the file, public key cryptography is not really necessary.
486:
487: To encrypt a plaintext file with just conventional cryptography,
488: type:
489:
490: pgp -c textfile
491:
492: This example encrypts the plaintext file called textfile, producing a
493: ciphertext file called textfile.pgp, without using public key
494: cryptography, key rings, user IDs, or any of that stuff. It prompts
495: you for a pass phrase to use as a conventional key to encipher the
496: file. This pass phrase need not be (and, indeed, SHOULD not be) the
497: same pass phrase that you use to protect your own secret key. Note
498: that PGP attempts to compress the plaintext before encrypting it.
499:
500: PGP will not encrypt the same plaintext the same way twice, even if
501: you used the same pass phrase every time.
502:
503:
504:
505: Decrypting and Checking Signatures
506: ----------------------------------
507:
508: To decrypt an encrypted file, or to check the signature integrity of a
509: signed file:
510:
511: pgp ciphertextfile [-o plaintextfile]
512:
513: Note that [brackets] denote an optional field, so don't actually type
514: real brackets.
515:
516: The ciphertext file name is assumed to have a default extension of
517: ".pgp". The optional plaintext output file name specifies where to
518: put processed plaintext output. If no name is specified, the
519: ciphertext filename is used, with no extension. If a signature is
520: nested inside of an encrypted file, it is automatically decrypted and
521: the signature integrity is checked. The full user ID of the signer
522: is displayed.
523:
524: Note that the "unwrapping" of the ciphertext file is completely
525: automatic, regardless of whether the ciphertext file is just signed,
526: just encrypted, or both. PGP uses the key ID prefix in the
527: ciphertext file to automatically find the appropriate secret
528: decryption key on your secret key ring. If there is a nested
529: signature, PGP then uses the key ID prefix in the nested signature to
530: automatically find the appropriate public key on your public key ring
531: to check the signature. If all the right keys are already present on
532: your key rings, no user intervention is required, except that you
533: will be prompted for your password for your secret key if necessary.
534: If the ciphertext file was conventionally encrypted without public
535: key cryptography, PGP recognizes this and prompts you for the pass
536: phrase to conventionally decrypt it.
537:
538:
539: Managing Keys
540: =============
541:
542: Since the time of Julius Caesar, key management has always been the
543: hardest part of cryptography. One of the principal distinguishing
544: features of PGP is its sophisticated key management.
545:
546:
547:
548: RSA Key Generation
549: ------------------
550:
551: To generate your own unique public/secret key pair of a specified
552: size, type:
553:
554: pgp -kg
555:
556: PGP shows you a menu of recommended key sizes (casual grade,
557: commercial grade, or military grade) and prompts you for what size
558: key you want, up to around a thousand bits. The bigger the key, the
559: more security you get, but you pay a price in speed.
560:
561: It also asks for a user ID, which means your name. It's a good idea
562: to use your full name as your user ID, because then there is less
563: risk of other people using the wrong public key to encrypt messages
564: to you. Spaces and punctuation are allowed in the user ID. It would
565: help if you put your E-mail address in <angle brackets> after your
566: name, like so:
567:
568: Robert M. Smith <[email protected]>
569:
570: If you don't have an E-mail address, use your phone number or some
571: other unique information that would help ensure that your user ID is
572: unique.
573:
574: PGP also asks for a "pass phrase" to protect your secret key in case
575: it falls into the wrong hands. Nobody can use your secret key file
576: without this pass phrase. The pass phrase is like a password, except
577: that it can be a whole phrase or sentence with many words, spaces,
578: punctuation, or anything else you want in it. Don't lose this pass
579: phrase-- there's no way to recover it if you do lose it. This pass
580: phrase will be needed later every time you use your secret key. The
581: pass phrase is case-sensitive, and should not be too short or easy to
582: guess. It is never displayed on the screen. Don't leave it written
583: down anywhere where someone else can see it, and don't store it on
584: your computer. If you don't want a pass phrase (You fool!), just
585: press return (or enter) at the pass phrase prompt.
586:
587: The public/secret key pair is derived from large truly random numbers
588: derived from measuring the intervals between your keystrokes with a
589: fast timer.
590:
591: Note that RSA key generation is a VERY lengthy process. It may take
592: a few seconds for a small key on a fast processor, or quite a few
593: minutes for a large key on an old IBM PC/XT.
594:
595: The generated key pair will be placed on your public and secret key
596: rings. You can later use the -kx command option to extract (copy)
597: your new public key from your public key ring and place it in a
598: separate public key file suitable for distribution to your friends.
599: The public key file can be sent to your friends for inclusion in
600: their public key rings. Naturally, you keep your secret key file to
601: yourself, and you should include it on your secret key ring. Each
602: secret key on a key ring is individually protected with its own pass
603: phrase.
604:
605: Never give your secret key to anyone else. For the same reason, don't
606: make key pairs for your friends. Everyone should make their own key
607: pair. Always keep physical control of your secret key, and don't risk
608: exposing it by storing it on a remote timesharing computer. Keep it
609: on your own personal computer.
610:
611:
612:
613: Adding a Key to Your Key Ring
614: -----------------------------
615:
616: To add a public or secret key file's contents to your public or
617: secret key ring (note that [brackets] denote an optional field):
618:
619: pgp -ka keyfile [keyring]
620:
621: The keyfile extension defaults to ".pgp". The optional keyring file
622: name defaults to "pubring.pgp" or "secring.pgp", depending on whether
623: the keyfile contains a public or a secret key. You may specify a
624: different key ring file name, with the extension defaulting to
625: ".pgp".
626:
627: If the key is already on your key ring, PGP will not add it again.
628: All of the keys in the keyfile are added to the keyring, except for
629: duplicates. If the key being added has attached signatures
630: certifying it, the signatures are added with the key. If the key is
631: already on your key ring, PGP just merges in any new certifying
632: signatures for that key that you don't already have on your key ring.
633:
634:
635:
636: Removing a Key or User ID from Your Key Ring
637: --------------------------------------------
638:
639: To remove a key or a user ID from your public key ring:
640:
641: pgp -kr userid [keyring]
642:
643: This searches for the specified user ID in your key ring, and removes
644: it if it finds a match. Remember that any fragment of the user ID
645: will suffice for a match. The optional keyring file name is assumed
646: to be literally "pubring.pgp". It can be omitted, or you can specify
647: "secring.pgp" if you want to remove a secret key. You may specify a
648: different key ring file name. The default key ring extension is
649: ".pgp".
650:
651: If more than one user ID exists for this key, you will be asked if
652: you want to remove only the user ID you specified, while leaving the
653: key and its other user IDs intact.
654:
655:
656:
657: Extracting (copying) a Key from Your Key Ring
658: ---------------------------------------------
659:
660: To extract (copy) a key from your public or secret key ring:
661:
662: pgp -kx userid keyfile [keyring]
663:
664: This non-destructively copies the key specified by the user ID from
665: your public or secret key ring to the specified key file. This is
666: particularly useful if you want to give a copy of your public key to
667: someone else.
668:
669: If the key has any certifying signatures attached to it on your key
670: ring, they are copied off along with the key.
671:
672: If you want the extracted key represented in printable ASCII
673: characters suitable for email purposes, use the -kxa options.
674:
675:
676:
677: Viewing the Contents of Your Key Ring
678: -------------------------------------
679:
680: To view the contents of your public key ring:
681:
682: pgp -kv[v] [userid] [keyring]
683:
684: This lists any keys in the key ring that match the specified user ID
685: substring. If you omit the user ID, all of the keys in the key ring
686: are listed. The optional keyring file name is assumed to be
687: "pubring.pgp". It can be omitted, or you can specify "secring.pgp"
688: if you want to list secret keys. If you want to specify a different
689: key ring file name, you can. The default key ring extension is
690: ".pgp".
691:
692: To see all the certifying signatures attached to each key, use the
693: -kvv option:
694:
695: pgp -kvv [userid] [keyring]
696:
697: If you want to specify a particular key ring file name, but want to
698: see all the keys in it, try this alternative approach:
699:
700: pgp keyfile
701:
702: With no command options specified, PGP lists all the keys in
703: keyfile.pgp, and also attempts to add them to your key ring if they
704: are not already on your key ring.
705:
706:
707:
708: How to Protect Public Keys from Tampering
709: -----------------------------------------
710:
711: In a public key cryptosystem, you don't have to protect public keys
712: from exposure. In fact, it's better if they are widely disseminated.
713: But it is important to protect public keys from tampering, to make
714: sure that a public key really belongs to whom it appears to belong to.
715: This may be the most important vulnerability of a public-key
716: cryptosystem. Let's first look at a potential disaster, then at how
717: to safely avoid it with PGP.
718:
719: Suppose you wanted to send a private message to Alice. You download
720: Alice's public key certificate from an electronic bulletin board
721: system (BBS). You encrypt your letter to Alice with this public key
722: and send it to her through the BBS's E-mail facility.
723:
724: Unfortunately, unbeknownst to you or Alice, another user named
725: Charlie has infiltrated the BBS and generated a public key of his own
726: with Alice's user ID attached to it. He covertly substitutes his
727: bogus key in place of Alice's real public key. You unwittingly use
728: this bogus key belonging to Charlie instead of Alice's public key.
729: All looks normal because this bogus key has Alice's user ID. Now
730: Charlie can decipher the message intended for Alice because he has
731: the matching secret key. He may even re-encrypt the deciphered
732: message with Alice's real public key and send it on to her so that no
733: one suspects any wrongdoing. Furthermore, he can even make
734: apparently good signatures from Alice with this secret key because
735: everyone will use the bogus public key to check Alice's signatures.
736:
737: The only way to prevent this disaster is to prevent anyone from
738: tampering with public keys. If you got Alice's public key directly
739: from Alice, this is no problem. But that may be difficult if Alice
740: is a thousand miles away, or is currently unreachable.
741:
742: Perhaps you could get Alice's public key from a mutual trusted friend
743: David who knows he has a good copy of Alice's public key. David
744: could sign Alice's public key, vouching for the integrity of Alice's
745: public key. David would create this signature with his own secret
746: key.
747:
748: This would create a signed public key certificate, and would show
749: that Alice's key had not been tampered with. This requires you have a
750: known good copy of David's public key to check his signature. Perhaps
751: David could provide Alice with a signed copy of your public key also.
752: David is thus serving as an "introducer" between you and Alice.
753:
754: This signed public key certificate for Alice could be uploaded by
755: David or Alice to the BBS, and you could download it later. You
756: could then check the signature via David's public key and thus be
757: assured that this is really Alice's public key. No impostor can fool
758: you into accepting his own bogus key as Alice's because no one else
759: can forge signatures made by David.
760:
761: A widely trusted person could even specialize in providing this
762: service of "introducing" users to each other by providing signatures
763: for their public key certificates. This trusted person could be
764: regarded as a "key server", or as a "Certifying Authority". Any
765: public key certificates bearing the key server's signature could be
766: trusted as truly belonging to whom they appear to belong to. All
767: users who wanted to participate would need a known good copy of just
768: the key server's public key, so that the key server's signatures
769: could be verified.
770:
771: A trusted centralized key server or Certifying Authority is
772: especially appropriate for large impersonal centrally-controlled
773: corporate or government institutions. Some institutional
774: environments use hierarchies of Certifying Authorities.
775:
776: For more decentralized grassroots "guerrilla style" environments,
777: allowing all users to act as a trusted introducers for their friends
778: would probably work better than a centralized key server. PGP tends
779: to emphasize this organic decentralized non-institutional approach.
780: It better reflects the natural way humans interact on a personal
781: social level, and allows people to better choose who they can trust
782: for key management.
783:
784: This whole business of protecting public keys from tampering is the
785: single most difficult problem in practical public key applications.
786: It is the "Achilles heel" of public key cryptography, and a lot of
787: software complexity is tied up in solving this one problem.
788:
789: You should use a public key only after you are sure that it is a good
790: public key that has not been tampered with, and actually belongs to
791: the person it claims to. You can be sure of this if you got this
792: public key certificate directly from its owner, or if it bears the
793: signature of someone else that you trust, from whom you already have
794: a good public key. Also, the user ID should have the full name of
795: the key's owner, not just her first name.
796:
797: No matter how tempted you are-- and you will be tempted-- never,
798: NEVER give in to expediency and trust a public key you downloaded
799: from a bulletin board, unless it is signed by someone you trust.
800: That uncertified public key could have been tampered with by anyone,
801: maybe even by the system administrator of the bulletin board.
802:
803: If you are asked to sign someone else's public key certificate, make
804: certain that it really belongs to that person named in the user ID of
805: that public key certificate. This is because your signature on her
806: public key certificate is a promise by you that this public key
807: really belongs to her. Other people who trust you will accept her
808: public key because it bears your signature. It may be ill-advised to
809: rely on hearsay-- don't sign her public key unless you have
810: independent firsthand knowledge that it really belongs to her.
811: Preferably, you should sign it only if you got it directly from her.
812:
813: In order to sign a public key, you must be far more certain of that
814: key's ownership than if you merely want to use that key to encrypt a
815: message. To be convinced of a key's validity enough to use it,
816: certifying signatures from trusted introducers should suffice. But
817: to sign a key yourself, you should require your own independent
818: firsthand knowledge of who owns that key. Perhaps you could call the
819: key's owner on the phone and read the key file to her to get her to
820: confirm that the key you have really is her key-- and make sure you
821: really are talking to the right person. See the section called
822: "Verifying a Public Key Over the Phone" in the Special Topics volume
823: for further details.
824:
825: Bear in mind that your signature on a public key certificate does not
826: vouch for the integrity of that person, but only vouches for the
827: integrity (the ownership) of that person's public key. You aren't
828: risking your credibility by signing the public key of a sociopath, if
829: you were completely confident that the key really belonged to him.
830: Other people would accept that key as belonging to him because you
831: signed it (assuming they trust you), but they wouldn't trust that
832: key's owner. Trusting a key is not the same as trusting the key's
833: owner.
834:
835: Trust is not necessarily transferable; I have a friend who I trust
836: not to lie. He's a gullible person who trusts the President not to
837: lie. That doesn't mean I trust the President not to lie. This is
838: just common sense. If I trust Alice's signature on a key, and Alice
839: trusts Charlie's signature on a key, that does not imply that I have
840: to trust Charlie's signature on a key.
841:
842: It would be a good idea to keep your own public key on hand with a
843: collection of certifying signatures attached from a variety of
844: "introducers", in the hopes that most people will trust at least one
845: of the introducers who vouch for your own public key's validity.
846: You could post your key with its attached collection of certifying
847: signatures on various electronic bulletin boards. If you sign
848: someone else's public key, return it to them with your signature so
849: that they can add it to their own collection of credentials for their
850: own public key.
851:
852: PGP keeps track of which keys on your public key ring are properly
853: certified with signatures from introducers that you trust. All you
854: have to do is tell PGP which people you trust as introducers, and
855: certify their keys yourself with your own ultimately trusted key.
856: PGP can take it from there, automatically validating any other keys
857: that have been signed by your designated introducers. And of course
858: you may directly sign more keys yourself. More on this later.
859:
860: Make sure no one else can tamper with your own public key ring.
861: Checking a new signed public key certificate must ultimately depend
862: on the integrity of the trusted public keys that are already on your
863: own public key ring. Maintain physical control of your public key
864: ring, preferably on your own personal computer rather than on a
865: remote timesharing system, just as you would do for your secret key.
866: This is to protect it from tampering, not from disclosure. Keep a
867: trusted backup copy of your public key ring and your secret key ring
868: on write-protected media.
869:
870: Since your own trusted public key is used as a final authority to
871: directly or indirectly certify all the other keys on your key ring,
872: it is the most important key to protect from tampering. To detect
873: any tampering of your own ultimately-trusted public key, PGP can be
874: set up to automatically compare your public key against a backup copy
875: on write-protected media. For details, see the description of the
876: "-kc" key ring check command in the Special Topics volume.
877:
878: PGP generally assumes you will maintain physical security over your
879: system and your key rings, as well as your copy of PGP itself. If an
880: intruder can tamper with your disk, then in theory he can tamper with
881: PGP itself, rendering moot the safeguards PGP may have to detect
882: tampering with keys.
883:
884: One somewhat complicated way to protect your own whole public key ring
885: from tampering is to sign the whole ring with your own secret key.
886: You could do this by making a detached signature certificate of the
887: public key ring, by signing the ring with the "-sb" options (see the
888: section called "Separating Signatures from Messages" in the PGP
889: User's Guide, Special Topics volume). Unfortunately, you would still
890: have to keep a separate trusted copy of your own public key around to
891: check the signature you made. You couldn't rely on your own public
892: key stored on your public key ring to check the signature you made
893: for the whole ring, because that is part of what you're trying to
894: check.
895:
896:
897:
898: How Does PGP Keep Track of Which Keys are Valid?
899: ------------------------------------------------
900:
901: Before you read this section, be sure to read the above section on
902: "How to Protect Public Keys from Tampering".
903:
904: PGP keeps track of which keys on your public key ring are properly
905: certified with signatures from introducers that you trust. All you
906: have to do is tell PGP which people you trust as introducers, and
907: certify their keys yourself with your own ultimately trusted key.
908: PGP can take it from there, automatically validating any other keys
909: that have been signed by your designated introducers. And of course
910: you may directly sign more keys yourself.
911:
912: There are two entirely separate criteria PGP uses to judge a public
913: key's usefulness-- don't get them confused:
914:
915: 1) Does the key actually belong to whom it appears to belong?
916: In other words, has it been certified with a trusted signature?
917: 2) Does it belong to someone you can trust to certify other keys?
918:
919: PGP can calculate the answer to the first question. To answer the
920: second question, PGP must be explicitly told by you, the user. When
921: you supply the answer to question 2, PGP can then calculate the
922: answer to question 1 for other keys signed by the introducer you
923: designated as trusted.
924:
925: Keys that have been certified by a trusted introducer are deemed
926: valid by PGP. The keys belonging to trusted introducers must
927: themselves be certified either by you or by other trusted
928: introducers.
929:
930: PGP also allows for the possibility of you having several shades of
931: trust for people to act as introducers. Your trust for a key's owner
932: to act as an introducer does not just reflect your estimation of
933: their personal integrity-- it should also reflect how competent you
934: think they are at understanding key management and using good
935: judgment in signing keys. You can designate a person to PGP as
936: unknown, untrusted, marginally trusted, or completely trusted to
937: certify other public keys. This trust information is stored on your
938: key ring with their key, but when you tell PGP to copy a key off your
939: key ring, PGP will not copy the trust information along with the key,
940: because your private opinions on trust are regarded as confidential.
941:
942: When PGP is calculating the validity of a public key, it examines the
943: trust level of all the attached certifying signatures. It computes a
944: weighted score of validity-- two marginally trusted signatures are
945: deemed as credible as one fully trusted signature. PGP's skepticism
946: is adjustable-- for example, you may tune PGP to require two fully
947: trusted signatures or three marginally trusted signatures to judge a
948: key as valid.
949:
950: Your own key is "axiomatically" valid to PGP, needing no introducer's
951: signature to prove its validity. PGP knows which public keys are
952: yours, by looking for the corresponding secret keys on the secret
953: key ring. PGP also assumes you ultimately trust yourself to certify
954: other keys.
955:
956: As time goes on, you will accumulate keys from other people that you
957: may want to designate as trusted introducers. Everyone else will
958: each choose their own trusted introducers. And everyone will
959: gradually accumulate and distribute with their key a collection of
960: certifying signatures from other people, with the expectation that
961: anyone receiving it will trust at least one or two of the signatures.
962: This will cause the emergence of a decentralized fault-tolerant web
963: of confidence for all public keys.
964:
965: This unique grass-roots approach contrasts sharply with Government
966: standard public key management schemes, such as Internet Privacy
967: Enhanced Mail (PEM), which are based on centralized control and
968: mandatory centralized trust. The standard schemes rely on a
969: hierarchy of Certifying Authorities who dictate who you must trust.
970: PGP's decentralized probabilistic method for determining public key
971: legitimacy is the centerpiece of its key management architecture.
972: PGP lets you alone choose who you trust, putting you at the top of
973: your own private certification pyramid. PGP is for people who prefer
974: to pack their own parachutes.
975:
976:
977:
978: How to Protect Secret Keys from Disclosure
979: ------------------------------------------
980:
981: Protect your own secret key and your pass phrase carefully. Really,
982: really carefully. If your secret key is ever compromised, you'd
983: better get the word out quickly to all interested parties (good luck)
984: before someone else uses it to make signatures in your name. For
985: example, they could use it to sign bogus public key certificates,
986: which could create problems for many people, especially if your
987: signature is widely trusted. And of course, a compromise of your own
988: secret key could expose all messages sent to you.
989:
990: To protect your secret key, you can start by always keeping physical
991: control of your secret key. Keeping it on your personal computer at
992: home is OK, or keep it in your notebook computer that you can carry
993: with you. If you must use an office computer that you don't always
994: have physical control of, then keep your public and secret key rings
995: on a write-protected removable floppy disk, and don't leave it behind
996: when you leave the office. It wouldn't be a good idea to allow your
997: secret key to reside on a remote timesharing computer, such as a
998: remote dial-in Unix system. Someone could eavesdrop on your modem
999: line and capture your pass phrase, and then obtain your actual secret
1000: key from the remote system. You should only use your secret key on a
1001: machine that you have physical control over.
1002:
1003: Don't store your pass phrase anywhere on the computer that has your
1004: secret key file. Storing both the secret key and the pass phrase on
1005: the same computer is as dangerous as keeping your PIN in the same
1006: wallet as your Automatic Teller Machine bank card. You don't want
1007: somebody to get their hands on your disk containing both the pass
1008: phrase and the secret key file. It would be most secure if you just
1009: memorize your pass phrase and don't store it anywhere but your brain.
1010: If you feel you must write down your pass phrase, keep it well
1011: protected, perhaps even more well protected than the secret key file.
1012:
1013: And keep backup copies of your secret key ring-- remember, you have
1014: the only copy of your secret key, and losing it will render useless
1015: all the copies of your public key that you have spread throughout the
1016: world.
1017:
1018: The decentralized non-institutional approach PGP uses to manage
1019: public keys has its benefits, but unfortunately this also means we
1020: can't rely on a single centralized list of which keys have been
1021: compromised. This makes it a bit harder to contain the damage of a
1022: secret key compromise. You just have to spread the word and hope
1023: everyone hears about it.
1024:
1025: If the worst case happens-- your secret key and pass phrase are both
1026: compromised (hopefully you will find this out somehow)-- you will
1027: have to issue a "key compromise" certificate. This kind of
1028: certificate is used to warn other people to stop using your public
1029: key. You can use PGP to create such a certificate by using the "-kd"
1030: command. Then you must somehow send this compromise certificate to
1031: everyone else on the planet, or at least to all your friends and
1032: their friends, et cetera. Their own PGP software will install this
1033: key compromise certificate on their public key rings and will
1034: automatically prevent them from accidentally using your public key
1035: ever again. You can then generate a new secret/public key pair and
1036: publish the new public key. You could send out one package containing
1037: both your new public key and the key compromise certificate for your
1038: old key.
1039:
1040:
1041:
1042: Revoking a Public Key
1043: ---------------------
1044:
1045: Suppose your secret key and your pass phrase are somehow both
1046: compromised. You have to get the word out to the rest of the world,
1047: so that they will all stop using your public key. To do this, you
1048: will have to issue a "key compromise", or "key revocation" certificate
1049: to revoke your public key.
1050:
1051: To generate a certificate to revoke your own key, use the -kd
1052: command:
1053:
1054: pgp -kd your_userid
1055:
1056: This certificate bears your signature, made with the same key you are
1057: revoking. You should widely disseminate this key revocation
1058: certificate as soon as possible. Other people who receive it can add
1059: it to their public key rings, and their PGP software then
1060: automatically prevents them from accidentally using your old public
1061: key ever again. You can then generate a new secret/public key pair
1062: and publish the new public key.
1063:
1064: You may choose to revoke your key for some other reason than the
1065: compromise of a secret key. If so, you may still use the same
1066: mechanism to revoke it.
1067:
1068:
1069:
1070: What If You Lose Your Secret Key?
1071: ---------------------------------
1072:
1073: Normally, if you want to revoke your own secret key, you can use the
1074: "-kd" command to issue a revocation certificate, signed with your own
1075: secret key (see "Revoking a Public Key").
1076:
1077: But what can you do if you lose your secret key, or if your secret
1078: key is destroyed? You can't revoke it yourself, because you must use
1079: your own secret key to revoke it, and you don't have it anymore. A
1080: future version of PGP will offer a more secure means of revoking keys
1081: in these circumstances, allowing trusted introducers to certify that
1082: a public key has been revoked. But for now, you will have to get the
1083: word out through whatever informal means you can, asking users to
1084: "disable" your public key on their own individual public key rings.
1085:
1086: Other users may disable your public key on their own public key rings
1087: by using the "-kd" command. If a user ID is specified that does not
1088: correspond to a secret key on the secret key ring, the -kd command
1089: will look for that user ID on the public key ring, and mark that
1090: public key as disabled. A disabled key may not be used to encrypt
1091: any messages, and may not be extracted from the key ring with the -kx
1092: command. It can still be used to check signatures, but a warning is
1093: displayed. And if the user tries to add the same key again to his
1094: key ring, it will not work because the disabled key is already on the
1095: key ring. These combined features will help curtail the further
1096: spread of a disabled key.
1097:
1098: If the specified public key is already disabled, the -kd command will
1099: ask if you want the key reenabled.
1100:
1101:
1102: Advanced Topics
1103: ===============
1104:
1105: Most of the "Advanced Topics" are covered in the "PGP User's Guide,
1106: Volume II: Special Topics". But here are a few topics that bear
1107: mentioning here.
1108:
1109:
1110: Sending Ciphertext Through E-mail Channels: Radix-64 Format
1111: -----------------------------------------------------------
1112:
1113: Many electronic mail systems only allow messages made of ASCII text,
1114: not the 8-bit raw binary data that ciphertext is made of. To get
1115: around this problem, PGP supports ASCII radix-64 format for
1116: ciphertext messages, similar to the Internet Privacy-Enhanced Mail
1117: (PEM) format. This special format represents binary data by using
1118: only printable ASCII characters, so it is useful for transmitting
1119: binary encrypted data through 7-bit channels or for sending binary
1120: encrypted data as normal E-mail text. This format acts as a form of
1121: "transport armor", protecting it against corruption as it travels
1122: through intersystem gateways on Internet. It also appends a CRC to
1123: detect transmission errors.
1124:
1125: Radix-64 format converts the plaintext by expanding groups of 3
1126: binary 8-bit bytes into 4 printable ASCII characters, so the file
1127: grows by about 33%. But this expansion isn't so bad when you
1128: consider that the file probably was compressed more than that by PGP
1129: before it was encrypted.
1130:
1131: To produce a ciphertext file in ASCII radix-64 format, just add the
1132: "a" option when encrypting or signing a message, like so:
1133:
1134: pgp -esa message.txt her_userid
1135:
1136: This example produces a ciphertext file called "message.asc" that
1137: contains data in a PEM-like ASCII radix-64 format. This file can be
1138: easily uploaded into a text editor through 7-bit channels for
1139: transmission as normal E-mail on Internet or any other E-mail
1140: network.
1141:
1142: Decrypting the radix-64 transport-armored message is no different than
1143: a normal decrypt. For example:
1144:
1145: pgp message
1146:
1147: PGP automatically looks for the ASCII file "message.asc" before it
1148: looks for the binary file "message.pgp". It recognizes that the file
1149: is in radix-64 format and converts it back to binary before
1150: processing as it normally does, producing as a by-product a ".pgp"
1151: ciphertext file in binary form. The final output file is in normal
1152: plaintext form, just as it was in the original file "message.txt".
1153:
1154: Most Internet E-mail facilities prohibit sending messages that are
1155: more than 50000 bytes long. Longer messages must be broken into
1156: smaller chunks that can be mailed separately. If your encrypted
1157: message is very large, and you requested radix-64 format, PGP
1158: automatically breaks it up into chunks that are each small enough to
1159: send via E-mail. The chunks are put into files named with extensions
1160: ".as1", ".as2", ".as3", etc. The recipient must concatenate these
1161: separate files back together in their proper order into one big file
1162: before decrypting it. While decrypting, PGP ignores any extraneous
1163: text in mail headers that are not enclosed in the radix-64 message
1164: blocks.
1165:
1166: If you want to send a public key to someone else in radix-64 format,
1167: just add the -a option while extracting the key from your keyring.
1168:
1169: If you forgot to use the -a option when you made a ciphertext file or
1170: extracted a key, you may still directly convert the binary file into
1171: radix-64 format by simply using the -a option alone, without any
1172: encryption specified. PGP converts it to a ".asc" file.
1173:
1174: If you want to send through an E-mail channel a plaintext file that
1175: is signed but not encrypted, PGP will normally convert it all into
1176: radix-64 armor, rendering it unreadable to the casual human observer.
1177: If the original plaintext message is in text (not binary) form, there
1178: is a way to send it through an E-mail channel in such a way that the
1179: ASCII armor is applied only to the binary signature certificate, but
1180: not to the plaintext message. This makes it possible for the
1181: recipient to read the signed message with human eyes, without the aid
1182: of PGP. Of course, PGP is still needed to actually check the
1183: signature. For further information on this feature, see the
1184: explanation of the CLEARSIG parameter in the section "Setting
1185: Configuration Parameters: CONFIG.TXT" in the Special Topics volume.
1186:
1187:
1188: Environmental Variable for Path Name
1189: ------------------------------------
1190:
1191: PGP uses several special files for its purposes, such as your
1192: standard key ring files "pubring.pgp" and "secring.pgp", the random
1193: number seed file "randseed.bin", the PGP configuration file
1194: "config.txt", and the foreign language string translation file
1195: "language.txt". These special files can be kept in any directory, by
1196: setting the environmental variable "PGPPATH" to the desired pathname.
1197: For example, on MSDOS, the shell command:
1198:
1199: SET PGPPATH=C:\PGP
1200:
1201: makes PGP assume that your public key ring filename is
1202: "C:\PGP\pubring.pgp". Assuming, of course, that this directory
1203: exists. Use your favorite text editor to modify your MSDOS
1204: AUTOEXEC.BAT file to automatically set up this variable whenever you
1205: start up your system. If PGPPATH remains undefined, these special
1206: files are assumed to be in the current directory.
1207:
1208:
1209:
1210: Setting Configuration Parameters: CONFIG.TXT
1211: --------------------------------------------
1212:
1213: PGP has a number of user-settable parameters that can be defined in a
1214: special configuration text file called "config.txt", in the directory
1215: pointed to by the shell environmental variable PGPPATH. Having a
1216: configuration file enables the user to define various flags and
1217: parameters for PGP without the burden of having to always define
1218: these parameters in the PGP command line.
1219:
1220: With these configuration parameters, for example, you can control
1221: where PGP stores its temporary scratch files, or you can select what
1222: foreign language PGP will use to display its diagnostics messages and
1223: user prompts, or you can adjust PGP's level of skepticism in
1224: determining a key's validity based on the number of certifying
1225: signatures it has.
1226:
1227: For more details on setting these configuration parameters, see the
1228: appropriate section of the PGP User's Guide, Special Topics volume.
1229:
1230:
1231:
1232: Vulnerabilities
1233: ---------------
1234:
1235: No data security system is impenetrable. PGP can be circumvented in
1236: a variety of ways. Potential vulnerabilities you should be aware of
1237: include compromising your pass phrase or secret key, public key
1238: tampering, files that you deleted but are still somewhere on the
1239: disk, viruses and Trojan horses, breaches in your physical security,
1240: electromagnetic emissions, exposure on multi-user systems, traffic
1241: analysis, and perhaps even direct cryptanalysis.
1242:
1243: For a detailed discussion of these issues, see the "Vulnerabilities"
1244: section in the PGP User's Guide, Special Topics volume.
1245:
1246:
1247: Beware of Snake Oil
1248: ===================
1249:
1250: When examining a cryptographic software package, the question always
1251: remains, why should you trust this product? Even if you examined the
1252: source code yourself, not everyone has the cryptographic experience
1253: to judge the security. Even if you are an experienced cryptographer,
1254: subtle weaknesses in the algorithms could still elude you.
1255:
1256: When I was in college in the early seventies, I devised what I
1257: believed was a brilliant encryption scheme. A simple pseudorandom
1258: number stream was added to the plaintext stream to create
1259: ciphertext. This would seemingly thwart any frequency analysis of
1260: the ciphertext, and would be uncrackable even to the most resourceful
1261: Government intelligence agencies. I felt so smug about my
1262: achievement. So cock-sure.
1263:
1264: Years later, I discovered this same scheme in several introductory
1265: cryptography texts and tutorial papers. How nice. Other
1266: cryptographers had thought of the same scheme. Unfortunately, the
1267: scheme was presented as a simple homework assignment on how to use
1268: elementary cryptanalytic techniques to trivially crack it. So much
1269: for my brilliant scheme.
1270:
1271: From this humbling experience I learned how easy it is to fall into a
1272: false sense of security when devising an encryption algorithm. Most
1273: people don't realize how fiendishly difficult it is to devise an
1274: encryption algorithm that can withstand a prolonged and determined
1275: attack by a resourceful opponent. Many mainstream software engineers
1276: have developed equally naive encryption schemes (often even the very
1277: same encryption scheme), and some of them have been incorporated into
1278: commercial encryption software packages and sold for good money to
1279: thousands of unsuspecting users.
1280:
1281: This is like selling automotive seat belts that look good and feel
1282: good, but snap open in even the slowest crash test. Depending on
1283: them may be worse than not wearing seat belts at all. No one
1284: suspects they are bad until a real crash. Depending on weak
1285: cryptographic software may cause you to unknowingly place sensitive
1286: information at risk. You might not otherwise have done so if you had
1287: no cryptographic software at all. Perhaps you may never even
1288: discover your data has been compromised.
1289:
1290: Sometimes commercial packages use the Federal Data Encryption
1291: Standard (DES), a good conventional algorithm recommended by the
1292: Government for commercial use (but not for classified information,
1293: oddly enough-- hmmm). There are several "modes of operation" the
1294: DES can use, some of them better than others. The Government
1295: specifically recommends not using the weakest simplest mode for
1296: messages, the Electronic Codebook (ECB) mode. But they do recommend
1297: the stronger and more complex Cipher Feedback (CFB) or Cipher Block
1298: Chaining (CBC) modes.
1299:
1300: Unfortunately, most of the commercial encryption packages I've looked
1301: at use ECB mode. When I've talked to the authors of a number of
1302: these implementations, they say they've never heard of CBC or CFB
1303: modes, and didn't know anything about the weaknesses of ECB mode.
1304: The very fact that they haven't even learned enough cryptography to
1305: know these elementary concepts is not reassuring. These same
1306: software packages often include a second faster encryption algorithm
1307: that can be used instead of the slower DES. The author of the
1308: package often thinks his proprietary faster algorithm is as secure as
1309: the DES, but after questioning him I usually discover that it's just
1310: a variation of my own brilliant scheme from college days. Or maybe
1311: he won't even reveal how his proprietary encryption scheme works, but
1312: assures me it's a brilliant scheme and I should trust it. I'm sure
1313: he believes that his algorithm is brilliant, but how can I know that
1314: without seeing it?
1315:
1316: In all fairness I must point out that in most cases these products do
1317: not come from companies that specialize in cryptographic technology.
1318:
1319: There is a company called AccessData (87 East 600 South, Orem, Utah
1320: 84058, phone 1-800-658-5199) that sells a package for $185 that
1321: cracks the built-in encryption schemes used by WordPerfect, Lotus
1322: 1-2-3, MS Excel, Symphony, Quattro Pro, Paradox, and MS Word 2.0. It
1323: doesn't simply guess passwords-- it does real cryptanalysis. Some
1324: people buy it when they forget their password for their own files.
1325: Law enforcement agencies buy it too, so they can read files they
1326: seize. I talked to Eric Thompson, the author, and he said his
1327: program only takes a split second to crack them, but he put in some
1328: delay loops to slow it down so it doesn't look so easy to the
1329: customer. He also told me that the password encryption feature of
1330: PKZIP files can often be easily broken, and that his law enforcement
1331: customers already have that service regularly provided to them from
1332: another vendor.
1333:
1334: In some ways, cryptography is like pharmaceuticals. Its integrity
1335: may be absolutely crucial. Bad penicillin looks the same as good
1336: penicillin. You can tell if your spreadsheet software is wrong, but
1337: how do you tell if your cryptography package is weak? The ciphertext
1338: produced by a weak encryption algorithm looks as good as ciphertext
1339: produced by a strong encryption algorithm. There's a lot of snake
1340: oil out there. A lot of quack cures. Unlike the patent medicine
1341: hucksters of old, these software implementors usually don't even know
1342: their stuff is snake oil. They may be good software engineers, but
1343: they usually haven't even read any of the academic literature in
1344: cryptography. But they think they can write good cryptographic
1345: software. And why not? After all, it seems intuitively easy to do
1346: so. And their software seems to work okay.
1347:
1348: Anyone who thinks they have devised an unbreakable encryption scheme
1349: either is an incredibly rare genius or is naive and inexperienced.
1350:
1351: I remember a conversation with Brian Snow, a highly placed senior
1352: cryptographer with the NSA. He said he would never trust an
1353: encryption algorithm designed by someone who had not "earned their
1354: bones" by first spending a lot of time cracking codes. That did make
1355: a lot of sense. I observed that practically no one in the commercial
1356: world of cryptography qualified under this criterion. "Yes", he said
1357: with a self assured smile, "And that makes our job at NSA so much
1358: easier." A chilling thought. I didn't qualify either.
1359:
1360: The Government has peddled snake oil too. After World War II, the US
1361: sold German Enigma ciphering machines to third world governments.
1362: But they didn't tell them that the Allies cracked the Enigma code
1363: during the war, a fact that remained classified for many years. Even
1364: today many Unix systems worldwide use the Enigma cipher for file
1365: encryption, in part because the Government has created legal
1366: obstacles against using better algorithms. They even tried to
1367: prevent the initial publication of the RSA algorithm in 1977. And
1368: they have squashed essentially all commercial efforts to develop
1369: effective secure telephones for the general public.
1370:
1371: The principle job of the US Government's National Security Agency is
1372: to gather intelligence, principally by covertly tapping into people's
1373: private communications (see James Bamford's book, "The Puzzle
1374: Palace"). The NSA has amassed considerable skill and resources for
1375: cracking codes. When people can't get good cryptography to protect
1376: themselves, it makes NSA's job much easier. NSA also has the
1377: responsibility of approving and recommending encryption algorithms.
1378: Some critics charge that this is a conflict of interest, like putting
1379: the fox in charge of guarding the hen house. NSA has been pushing a
1380: conventional encryption algorithm that they designed, and they won't
1381: tell anybody how it works because that's classified. They want
1382: others to trust it and use it. But any cryptographer can tell you
1383: that a well-designed encryption algorithm does not have to be
1384: classified to remain secure. Only the keys should need protection.
1385: How does anyone else really know if NSA's classified algorithm is
1386: secure? It's not that hard for NSA to design an encryption algorithm
1387: that only they can crack, if no one else can review the algorithm.
1388: Are they deliberately selling snake oil?
1389:
1390: I'm not as certain about the security of PGP as I once was about my
1391: brilliant encryption software from college. If I were, that would be
1392: a bad sign. But I'm pretty sure that PGP does not contain any
1393: glaring weaknesses. The crypto algorithms were developed by people
1394: at high levels of civilian cryptographic academia, and have been
1395: individually subject to extensive peer review. Source code is
1396: available to facilitate peer review of PGP and to help dispel the
1397: fears of some users. It's reasonably well researched, and has been
1398: years in the making. And I don't work for the NSA. I hope it
1399: doesn't require too large a "leap of faith" to trust the security of
1400: PGP.
1401:
1402:
1403: PGP Quick Reference
1404: ===================
1405:
1406: Here's a quick summary of PGP commands.
1407:
1408:
1409: To encrypt a plaintext file with the recipient's public key:
1410: pgp -e textfile her_userid
1411:
1412: To sign a plaintext file with your secret key:
1413: pgp -s textfile [-u your_userid]
1414:
1415: To sign a plaintext file with your secret key, and then encrypt it
1416: with the recipient's public key:
1417: pgp -es textfile her_userid [-u your_userid]
1418:
1419: To encrypt a plaintext file with just conventional cryptography, type:
1420: pgp -c textfile
1421:
1422: To decrypt an encrypted file, or to check the signature integrity of a
1423: signed file:
1424: pgp ciphertextfile [-o plaintextfile]
1425:
1426: To encrypt a message for any number of multiple recipients:
1427: pgp -e textfile userid1 userid2 userid3
1428:
1429: --- Key management commands:
1430:
1431: To generate your own unique public/secret key pair:
1432: pgp -kg
1433:
1434: To add a public or secret key file's contents to your public or
1435: secret key ring:
1436: pgp -ka keyfile [keyring]
1437:
1438: To extract (copy) a key from your public or secret key ring:
1439: pgp -kx userid keyfile [keyring]
1440: or: pgp -kxa userid keyfile [keyring]
1441:
1442: To view the contents of your public key ring:
1443: pgp -kv[v] [userid] [keyring]
1444:
1445: To view the "fingerprint" of a public key, to help verify it over
1446: the telephone with its owner:
1447: pgp -kvc [userid] [keyring]
1448:
1449: To view the contents and check the certifying signatures of your
1450: public key ring:
1451: pgp -kc [userid] [keyring]
1452:
1453: To edit the userid or pass phrase for your secret key:
1454: pgp -ke userid [keyring]
1455:
1456: To edit the trust parameters for a public key:
1457: pgp -ke userid [keyring]
1458:
1459: To remove a key or just a userid from your public key ring:
1460: pgp -kr userid [keyring]
1461:
1462: To sign and certify someone else's public key on your public key ring:
1463: pgp -ks her_userid [-u your_userid] [keyring]
1464:
1465: To remove selected signatures from a userid on a keyring:
1466: pgp -krs userid [keyring]
1467:
1468: To permanently revoke your own key, issuing a key compromise
1469: certificate:
1470: pgp -kd your_userid
1471:
1472: To disable or reenable a public key on your own public key ring:
1473: pgp -kd userid
1474:
1475: --- Esoteric commands:
1476:
1477: To decrypt a message and leave the signature on it intact:
1478: pgp -d ciphertextfile
1479:
1480: To create a signature certificate that is detached from the document:
1481: pgp -sb textfile [-u your_userid]
1482:
1483: To detach a signature certificate from a signed message:
1484: pgp -b ciphertextfile
1485:
1486: --- Command options that can be used in combination with other
1487: command options (sometimes even spelling interesting words!):
1488:
1489: To produce a ciphertext file in ASCII radix-64 format, just add the
1490: -a option when encrypting or signing a message or extracting a key:
1491: pgp -sea textfile her_userid
1492: or: pgp -kxa userid keyfile [keyring]
1493:
1494: To wipe out the plaintext file after producing the ciphertext file,
1495: just add the -w (wipe) option when encrypting or signing a message:
1496: pgp -sew message.txt her_userid
1497:
1498: To specify that a plaintext file contains ASCII text, not binary, and
1499: should be converted to recipient's local text line conventions, add
1500: the -t (text) option to other options:
1501: pgp -seat message.txt her_userid
1502:
1503: To view the decrypted plaintext output on your screen (like the
1504: Unix-style "more" command), without writing it to a file, use
1505: the -m (more) option while decrypting:
1506: pgp -m ciphertextfile
1507:
1508: To specify that the recipient's decrypted plaintext will be shown
1509: ONLY on her screen and cannot be saved to disk, add the -m option:
1510: pgp -steam message.txt her_userid
1511:
1512: To recover the original plaintext filename while decrypting, add
1513: the -p option:
1514: pgp -p ciphertextfile
1515:
1516: To use a Unix-style filter mode, reading from standard input and
1517: writing to standard output, add the -f option:
1518: pgp -feast her_userid <inputfile >outputfile
1519:
1520:
1521:
1522: Legal Issues
1523: ============
1524:
1525: For detailed information on PGP licensing, distribution, copyrights,
1526: patents, trademarks, liability limitations, and export controls, see
1527: the "Legal Issues" section in the "PGP User's Guide, Volume II:
1528: Special Topics".
1529:
1530: PGP uses a public key algorithm claimed by U.S. patent #4,405,829.
1531: The exclusive rights to this patent are held by a California company
1532: called Public Key Partners, and you may be infringing this patent if
1533: you use PGP in the USA. This is explained in the Volume II manual.
1534:
1535: PGP is "guerrilla" freeware, and I don't mind if you distribute it
1536: widely. Just don't ask me to send you a copy. Instead, you can get
1537: it yourself from many BBS systems and a number of Internet FTP sites.
1538:
1539:
1540:
1541: Acknowledgments
1542: ================
1543:
1544: I'd like to thank the following people for their contributions to the
1545: creation of Pretty Good Privacy. Although I was the author of PGP
1546: version 1.0, major parts of later versions of PGP were implemented by
1547: an international collaborative effort involving a large number of
1548: contributors, under my design guidance.
1549:
1550: Branko Lankester, Hal Finney and Peter Gutmann all contributed a huge
1551: amount of time in adding features for PGP 2.0, and ported it to Unix
1552: variants. Hal and Branko made Herculean efforts in implementing my
1553: new key management protocols. Branko has spent more time on it than
1554: any other contributor to PGP.
1555:
1556: Hugh Kennedy ported it to VAX/VMS, Lutz Frank ported it to the Atari
1557: ST, and Cor Bosman and Colin Plumb ported it to the Commodore Amiga.
1558:
1559: Translation of PGP into foreign languages was done by Jean-loup
1560: Gailly in France, Armando Ramos in Spain, Felipe Rodriquez Svensson
1561: and Branko Lankester in The Netherlands, Miguel Angel Gallardo in
1562: Spain, Hugh Kennedy and Lutz Frank in Germany, David Vincenzetti in
1563: Italy, Harry Bush and Maris Gabalins in Latvia, Zygimantas Cepaitis
1564: in Lithuania, Peter Suchkow and Andrew Chernov in Russia, and
1565: Alexander Smishlajev in Esperantujo. Peter Gutmann offered to
1566: translate it into New Zealand English, but we finally decided PGP
1567: could get by with US English.
1568:
1569: Jean-loup Gailly, Mark Adler, and Richard B. Wales published the ZIP
1570: compression code, and granted permission for inclusion into PGP. The
1571: MD5 routines were developed and placed in the public domain by Ron
1572: Rivest. The IDEA(tm) cipher was developed by Xuejia Lai and James L.
1573: Massey at ETH in Zurich, and is used in PGP with permission from
1574: Ascom-Tech AG.
1575:
1576: Charlie Merritt originally taught me how to do decent multiprecision
1577: arithmetic for public key cryptography, and Jimmy Upton contributed a
1578: faster multiply/modulo algorithm. Thad Smith implemented an even
1579: faster modmult algorithm. Zhahai Stewart contributed a lot of useful
1580: ideas on PGP file formats and other stuff, including having more than
1581: one user ID for a key. I heard the idea of introducers from Whit
1582: Diffie. Kelly Goen did most of the work for the initial electronic
1583: publication of PGP 1.0.
1584:
1585: Various contributions of coding effort also came from Colin Plumb,
1586: Derek Atkins, and Castor Fu. Other contributions of effort, coding
1587: or otherwise, have come from Hugh Miller, Eric Hughes, Tim May,
1588: Stephan Neuhaus, and too many others for me to remember right now.
1589: Two Macintosh porting projects have been underway, headed by Zbigniew
1590: Fiedorwicz and Blair Weiss.
1591:
1592: Since the release of PGP 2.0, many other programmers have sent in
1593: patches and bug fixes and porting adjustments for other computers.
1594: There are too many to individually thank here.
1595:
1596: The development of PGP has turned into a remarkable social
1597: phenomenon, whose unique political appeal has inspired the collective
1598: efforts of an ever-growing number of volunteer programmers. Remember
1599: that children's story called "Stone Soup"? It is getting harder to
1600: peer through the thick soup to see the stone at the bottom of the pot
1601: that I dropped in to start it all off.
1602:
1603:
1604:
1605: About the Author
1606: ================
1607:
1608: Philip Zimmermann is a software engineer consultant with 18 years
1609: experience, specializing in embedded real-time systems, cryptography,
1610: authentication, and data communications. Experience includes design
1611: and implementation of authentication systems for financial
1612: information networks, network data security, key management
1613: protocols, embedded real-time multitasking executives, operating
1614: systems, and local area networks.
1615:
1616: Custom versions of cryptography and authentication products and
1617: public key implementations such as the NIST DSS are available from
1618: Zimmermann, as well as custom product development services. His
1619: consulting firm's address is:
1620:
1621: Boulder Software Engineering
1622: 3021 Eleventh Street
1623: Boulder, Colorado 80304 USA
1624: Phone 303-541-0140 (voice or FAX) (10:00am - 7:00pm Mountain Time)
1625: Internet: [email protected]
1626:
1627:
1628:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.