Annotation of pgp/doc/pgpdoc1.txt, revision 1.1.1.7

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.