aboutsummaryrefslogtreecommitdiffstats
path: root/doc/gph/c1.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/gph/c1.sgml')
-rw-r--r--doc/gph/c1.sgml627
1 files changed, 627 insertions, 0 deletions
diff --git a/doc/gph/c1.sgml b/doc/gph/c1.sgml
new file mode 100644
index 000000000..2839f7c62
--- /dev/null
+++ b/doc/gph/c1.sgml
@@ -0,0 +1,627 @@
+<chapter id="intro" xreflabel="1">
+<docinfo>
+<date>
+$Id$
+</date>
+</docinfo>
+<title>
+Getting Started
+</title>
+
+<para>
+&Gnupg; is a tool for secure communication.
+This chapter is a quick-start guide that covers the core functionality
+of &gnupg;.
+This includes keypair creation, exchanging and verifying keys, encrypting
+and decrypting documents, and making and verifying signatures.
+It does not explain in detail the concepts behind public-key cryptography,
+encryption, and digital signatures.
+This is covered in Chapter <xref linkend="concepts">.
+It also does not explain how to use &gnupg; wisely.
+This is covered in Chapters <xref linkend="management"> and
+<xref linkend="wise">.
+</para>
+
+<para>
+&Gnupg; uses public-key cryptography so that users may communicate securely.
+In a public-key system, each user has a public/private keypair.
+A user's private key is kept secret; it need never be revealed.
+The public key may be given to anyone with whom the user wants to
+communicate.
+&Gnupg; uses a somewhat more sophisticated scheme in which a user has
+a primary keypair and then zero or more additional subordinate keypairs.
+The primary and subordinate keypairs are bundled to facilitate key
+management and the bundle can often be considered simply as one keypair.
+</para>
+
+<sect1>
+<title>
+Generating a new keypair
+</title>
+
+<para>
+The command-line option <link linkend="gen-key"><option>--gen-key</option></link>
+is used to create a new primary keypair.
+
+<screen width="80">
+<prompt>alice%</prompt> <userinput>gpg --gen-key</userinput>
+gpg (GnuPG) 0.9.4; Copyright (C) 1999 Free Software Foundation, Inc.
+This program comes with ABSOLUTELY NO WARRANTY.
+This is free software, and you are welcome to redistribute it
+under certain conditions. See the file COPYING for details.
+
+Please select what kind of key you want:
+ (1) DSA and ElGamal (default)
+ (2) DSA (sign only)
+ (4) ElGamal (sign and encrypt)
+Your selection?
+</screen>
+
+<!--
+REWRITE
+From Thomas Zander ([email protected]):
+In GPG you can create 3 type of keypairs. A keypair is the combination
+of a publ ic key and a private key, see chapter X. A DSA keypair can
+only be used to sign a message. A ElGamal subordinate keypair can be
+used for encryption as well as s igning, but is not as compatible with
+former standards.
+
+Option 1 creates 2 keypairs; a DSA (signing) and a ElGamal (Encryption).
+Option 2 creates a DSA keypair (Signing)
+Option 4 creates a ElGemal keypair (Signing & Encryption).
+
+note: option 3 xxxx
+
+This doesn't quite work, but I agree the following paragraph is rough.
+-->
+
+&Gnupg; is able to create several different types of keypairs, but a primary
+key must be capable of making signatures.
+There are therefore only three options.
+Option 1 actually creates two keypairs.
+A DSA keypair is the primary keypair usable only for making signatures.
+An ElGamal subordinate keypair is also created for encryption.
+Option 2 is similar but creates only a DSA keypair.
+Option 4<footnote><para>Option 3 is to generate an ElGamal keypair that is
+not usable for making signatures.</para></footnote> creates a single ElGamal
+keypair usable for both making signatures and performing encryption.
+In all cases it is possible to later add additional subkeys for encryption
+and signing.
+For most users the default option is fine.
+</para>
+
+<para>
+You must also choose a key size.
+The size of a DSA key must be between 512 and 1024 bits, and an ElGamal
+key may be of any size.
+&Gnupg;, however, requires that keys be no smaller than 768 bits.
+Therefore, if Option 1 was chosen and you choose a keysize larger than
+1024 bits, the ElGamal key will have the requested size, but the DSA
+key will be 1024 bits.
+
+<screen width="80">
+About to generate a new ELG-E keypair.
+ minimum keysize is 768 bits
+ default keysize is 1024 bits
+ highest suggested keysize is 2048 bits
+What keysize do you want? (1024)
+</screen>
+
+The longer the key the more secure it is against brute-force attacks,
+but for almost all purposes the default keysize is adequate since
+it would be cheaper to circumvent the encryption than try to break it.
+Also, encryption and decryption will be slower as the
+key size is increased, and a larger keysize may affect signature length.
+Once selected, the keysize can never be changed.
+</para>
+
+<para>
+Finally, you must choose an expiration date.
+If Option 1 was chosen, the expiration date will be used for both the
+ElGamal and DSA keypairs.
+
+<screen width="80">
+Please specify how long the key should be valid.
+ 0 = key does not expire
+ &lt;n> = key expires in n days
+ &lt;n>w = key expires in n weeks
+ &lt;n>m = key expires in n months
+ &lt;n>y = key expires in n years
+Key is valid for? (0)
+</screen>
+
+For most users a key that does not expire is adequate.
+The expiration time should be chosen with care, however,
+since although it is possible to change the expiration date after the key
+is created, it may be difficult to communicate a change
+to users who have your public key.
+</para>
+
+<para>
+You must provide a user ID in addition to the key parameters.
+The user ID is used to associate the key being created with a real
+person.
+
+<screen width="80">
+You need a User-ID to identify your key; the software constructs the user id
+from Real Name, Comment and Email Address in this form:
+ "Heinrich Heine (Der Dichter) &lt;[email protected]>"
+
+Real name:
+</screen>
+
+Only one user ID is created when a key is created, but it is possible
+to create additional user IDs if you want to use the key in two or
+more contexts, &eg;, as an employee at work and a political activist
+on the side.
+A user ID should be created carefully since it cannot be edited after
+it is created.
+</para>
+
+<para>
+&Gnupg; needs a passphrase to protect the primary and subordinate
+private keys that you keep in your possession.
+
+<screen width="80">
+You need a Passphrase to protect your private key.
+
+Enter passphrase:
+</screen>
+
+There is no limit on the length of a passphrase, and it should be
+carefully chosen.
+From the perspective of security, the passphrase to unlock the private
+key is one of the weakest points in &gnupg; (and other public-key
+encryption systems as well) since it is the only protection you
+have if another individual gets your private key.
+Ideally, the passphrase should not use words from a dictionary and
+should mix the case of alphabetic characters as well as use
+non-alphabetic characters.
+A good passphrase is crucial to the secure use of &gnupg;.
+</para>
+
+<sect2 id="revocation">
+<title>
+Generating a revocation certificate
+</title>
+
+<para>
+After your keypair is created you should immediately generate a revocation
+certificate for the primary public key using the option
+<link linkend="gen-revoke"><option>--gen-revoke</option></link>.
+If you forget your passphrase or if your private key is compromised
+or lost, this revocation certificate may be published to notify others
+that the public key should no longer be used.
+A revoked public key can still be used to verify signatures made
+by you in the past, but it cannot be used to encrypt future messages
+to you.
+It also does not affect your ability to decrypt messages sent to
+you in the past if you still do have access to the private key.
+
+<screen width="80">
+<prompt>alice%</prompt> <userinput>gpg --output revoke.asc --gen-revoke mykey</userinput>
+[...]
+</screen>
+
+The argument <userinput>mykey</userinput> must be a <emphasis>key
+specifier</emphasis>,
+either the key ID of your primary keypair or any part of a user ID
+that identifies your keypair.
+The generated certificate will be left in the file
+<parameter>revoke.asc</parameter>.
+If the <link linkend="output"><option>--output</option></link> option is
+omitted, the result will be placed on standard output.
+Since the certificate is short, you may wish to print a hardcopy of
+the certificate to store somewhere safe such as your safe deposit box.
+The certificate should not be stored where others can access it since
+anybody can publish the revocation certificate and render the
+corresponding public key useless.
+</para>
+</sect2>
+</sect1>
+
+<sect1>
+<title>
+Exchanging keys
+</title>
+
+<para>
+To communicate with others you must exchange public keys.
+To list the keys on your public keyring use the command-line
+option <link linkend="list-keys"><option>--list-keys</option></link>.
+</para>
+
+<screen width="80">
+<prompt>alice%</prompt> <userinput>gpg --list-keys</userinput>
+/users/alice/.gnupg/pubring.gpg
+---------------------------------------
+pub 1024D/BB7576AC 1999-06-04 Alice (Judge) &lt;[email protected]>
+sub 1024g/78E9A8FA 1999-06-04
+</screen>
+
+<sect2>
+<title>
+Exporting a public key
+</title>
+
+<para>
+To send your public key to a correspondent you must first export it.
+The command-line option <link linkend="export"><option>--export</option></link>
+is used to do this.
+It takes an additional argument identifying the public key to export.
+As with the <option>--gen-revoke</option> option, either the key ID or any part of
+the user ID may be used to identify the key to export.
+</para>
+
+<screen width="80">
+<prompt>alice%</prompt> <userinput>gpg --output alice.gpg --export [email protected]</userinput>
+</screen>
+
+<para>
+The key is exported in a binary format, but this can be inconvenient
+when the key is to be sent though email or published on a web page.
+&Gnupg; therefore supports a command-line option
+<link linkend="armor"><option>--armor</option></link><footnote>
+<para>Many
+command-line options that are frequently used can also be set in a
+<link linkend="optionsfile">configuration file</link>.
+</para>
+</footnote>
+that that
+causes output to be generated in an ASCII-armored format similar to
+uuencoded documents.
+In general, any output from &gnupg;, &eg;, keys, encrypted documents, and
+signatures, can be ASCII-armored by adding the <option>--armor</option> option.
+</para>
+
+<screen width="80">
+<prompt>alice%</prompt> <userinput>gpg --armor --export [email protected]</userinput>
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v0.9.7 (GNU/Linux)
+Comment: For info see http://www.gnupg.org
+
+[...]
+-----END PGP PUBLIC KEY BLOCK-----
+</screen>
+</sect2>
+
+<sect2>
+<title>
+Importing a public key
+</title>
+
+<para>
+A public key may be added to your public keyring with the
+<link linkend="import"><option>--import</option></link> option.
+</para>
+
+<screen width="80">
+<prompt>alice%</prompt> <userinput>gpg --import blake.gpg</userinput>
+gpg: key 9E98BC16: public key imported
+gpg: Total number processed: 1
+gpg: imported: 1
+<prompt>alice%</prompt> <userinput>gpg --list-keys</userinput>
+/users/alice/.gnupg/pubring.gpg
+---------------------------------------
+pub 1024D/BB7576AC 1999-06-04 Alice (Judge) &lt;[email protected]>
+sub 1024g/78E9A8FA 1999-06-04
+
+pub 1024D/9E98BC16 1999-06-04 Blake (Executioner) &lt;[email protected]>
+sub 1024g/5C8CBD41 1999-06-04
+</screen>
+
+<para>
+Once a key is imported it should be validated.
+&Gnupg; uses a powerful and flexible trust model that does not require
+you to personally validate each key you import.
+Some keys may need to be personally validated, however.
+A key is validated by verifying the key's fingerprint and then signing
+the key to certify it as a valid key.
+A key's fingerprint can be quickly viewed with the
+<link linkend="fingerprint"><option>--fingerprint</option></link>
+command-line option, but in order to certify the key you must edit it.
+
+<screen width="80">
+<prompt>alice%</prompt> <userinput>gpg --edit-key [email protected]</userinput>
+
+pub 1024D/9E98BC16 created: 1999-06-04 expires: never trust: -/q
+sub 1024g/5C8CBD41 created: 1999-06-04 expires: never
+(1) Blake (Executioner) &lt;[email protected]>
+
+<prompt>Command></prompt> <userinput>fpr</userinput>
+pub 1024D/9E98BC16 1999-06-04 Blake (Executioner) &lt;[email protected]>
+ Fingerprint: 268F 448F CCD7 AF34 183E 52D8 9BDE 1A08 9E98 BC16
+</screen>
+
+Key verification is a weak point in public-key cryptography, so you
+must be sure that the fingerprint is correct.
+The fingerprint displayed should be checked with the key's owner.
+This may be done in person or over the phone or through any other means
+as long as you can guarantee that you are communicating with the key's
+true owner.
+Once verified you may sign the key to validate it.
+</para>
+
+<screen width="80">
+<prompt>Command></prompt> <userinput>sign</userinput>
+
+pub 1024D/9E98BC16 created: 1999-06-04 expires: never trust: -/q
+ Fingerprint: 268F 448F CCD7 AF34 183E 52D8 9BDE 1A08 9E98 BC16
+
+ Blake (Executioner) &lt;[email protected]>
+
+Are you really sure that you want to sign this key
+with your key: "Alice (Judge) &lt;[email protected]>"
+
+Really sign?
+</screen>
+
+<para>
+Once signed you can check the key to list the signatures on it and
+see the signature that you have added.
+Every user ID on the key will have one or more self-signatures as well
+as a signature for each user that has validated the key.
+</para>
+
+<screen width="80">
+<prompt>Command></prompt> <userinput>check</userinput>
+uid Blake (Executioner) &lt;[email protected]>
+sig! 9E98BC16 1999-06-04 [self-signature]
+sig! BB7576AC 1999-06-04 Alice (Judge) &lt;[email protected]>
+</screen>
+</sect2>
+</sect1>
+
+<sect1>
+<title>
+Encrypting and decrypting documents
+</title>
+
+<para>
+To encrypt a document the option
+<link linkend="encrypt"><option>--encrypt</option></link> is used.
+You must have the public keys of the intended recipients.
+The software expects the name of the document to encrypt as input or, if
+omitted, on standard input.
+The encrypted result is placed on standard output or as specified using
+the option <option>--output</option>.
+The document is compressed for additional security in addition to
+encrypting it.
+
+<screen width="80">
+<prompt>alice%</prompt> <userinput>gpg --output doc.gpg --encrypt --recipient [email protected] doc</userinput>
+</screen>
+
+The <link linkend="recipient"><option>--recipient</option></link> option
+is used once for each recipient and takes an extra argument specifying
+the public key to which the document should be encrypted.
+The encrypted document can only be decrypted by someone with a private
+key that complements one of the recipients' public keys.
+In particular, you cannot decrypt a document encrypted by you unless
+you included your own public key in the recipient list.
+</para>
+
+<para>
+To decrypt a message the option
+<link linkend="decrypt"><option>--decrypt</option></link> is used.
+You need the private key to which the message was encrypted.
+Similar to the encryption process, the document to decrypt is
+input, and the decrypted result is output.
+</para>
+
+<screen width="80">
+<prompt>blake%</prompt> <userinput>gpg --output doc --decrypt doc.gpg</userinput>
+
+You need a passphrase to unlock the secret key for
+user: "Blake (Executioner) &lt;[email protected]>"
+1024-bit ELG-E key, ID 5C8CBD41, created 1999-06-04 (main key ID 9E98BC16)
+
+Enter passphrase:
+</screen>
+
+<para>
+Documents may also be encrypted without using public-key cryptography.
+Instead, only a symmetric cipher is used to encrypt the document.
+The key used to drive the symmetric cipher is derived from a passphrase
+supplied when the document is encrypted, and for good security, it
+should not be the same passphrase that you use to protect your private key.
+Symmetric encryption is useful for securing documents when the
+passphrase does not need to be communicated to others.
+A document can be encrypted with a symmetric cipher by using the
+<link linkend="symmetric"><option>--symmetric</option></link> option.
+</para>
+
+<screen width="80">
+<prompt>alice%</prompt> <userinput>gpg --output doc.gpg --symmetric doc</userinput>
+Enter passphrase:
+</screen>
+</sect1>
+
+<sect1>
+<title>
+Making and verifying signatures
+</title>
+
+<para>
+A digital signature certifies and timestamps a document.
+If the document is subsequently modified in any way, a verification
+of the signature will fail.
+A digital signature can serve the same purpose as a hand-written signature
+with the additional benefit of being tamper-resistant.
+The &gnupg; source distribution, for example, is signed so that users can
+verify that the source code has not been modified since it was packaged.
+</para>
+
+<para>
+Creating and verifying signatures uses the public/private keypair
+in an operation different from encryption and decryption.
+A signature is created using the private key of the signer.
+The signature is verified using the corresponding public key.
+A consequence is that it is difficult to deny that you made a digital
+signature since that would imply your private key had been compromised.
+</para>
+
+<para>
+The command-line option <link linkend="sign"><option>--sign</option></link> is
+used to make a digital signature.
+The document to sign is input, and the signed document is output.
+
+<screen width="80">
+<prompt>alice%</prompt> <userinput>gpg --output doc.sig --sign doc</userinput>
+
+You need a passphrase to unlock the private key for
+user: "Alice (Judge) &lt;[email protected]>"
+1024-bit DSA key, ID BB7576AC, created 1999-06-04
+
+Enter passphrase:
+</screen>
+
+The document is compressed before signed, and the output is in binary
+format.
+</para>
+
+<para>
+Given a signed document, you can either check the signature or
+check the signature and recover the original document.
+To check the signature use the
+<link linkend="verify"><option>--verify</option></link> option.
+To verify the signature and extract the document use the
+<option>--decrypt</option>
+option.
+The signed document to verify and recover is input and the recovered
+document is output.
+</para>
+
+<screen width="80">
+<prompt>blake%</prompt> <userinput>gpg --output doc --decrypt doc.sig</userinput>
+gpg: Signature made Fri Jun 4 12:02:38 1999 CDT using DSA key ID BB7576AC
+gpg: Good signature from "Alice (Judge) &lt;[email protected]>"
+</screen>
+
+<sect2>
+<title>
+Clearsigned documents
+</title>
+
+<para>
+A common use of digital signatures is to sign usenet postings or
+email messages.
+In such situations it is undesirable to compress the document while
+signing it.
+The option
+<link linkend="clearsign"><option>--clearsign</option></link>
+causes the document to be wrapped in an ASCII-armored signature but
+otherwise does not modify the document.
+</para>
+
+<screen width="80">
+<prompt>alice%</prompt> <userinput>gpg --clearsign doc</userinput>
+
+You need a passphrase to unlock the secret key for
+user: "Alice (Judge) &lt;[email protected]>"
+1024-bit DSA key, ID BB7576AC, created 1999-06-04
+
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+[...]
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v0.9.7 (GNU/Linux)
+Comment: For info see http://www.gnupg.org
+
+iEYEARECAAYFAjdYCQoACgkQJ9S6ULt1dqz6IwCfQ7wP6i/i8HhbcOSKF4ELyQB1
+oCoAoOuqpRqEzr4kOkQqHRLE/b8/Rw2k
+=y6kj
+-----END PGP SIGNATURE-----
+</screen>
+</sect2>
+
+<sect2>
+<title>
+Detached signatures
+</title>
+
+<para>
+A signed document has limited usefulness.
+Other users must recover the original document from the signed
+version, and even with clearsigned documents, the signed document
+must be edited to recover the original.
+Therefore, there is a third method for signing a document that
+creates a detached signature.
+A detached signature is created using the
+<link linkend="detach-sig"><option>--detach-sig</option></link>
+option.
+</para>
+
+<screen width="80">
+<prompt>alice%</prompt> <userinput>gpg --output doc.sig --detach-sig doc</userinput>
+
+You need a passphrase to unlock the secret key for
+user: "Alice (Judge) &lt;[email protected]>"
+1024-bit DSA key, ID BB7576AC, created 1999-06-04
+
+Enter passphrase:
+</screen>
+
+<para>
+Both the document and detached signature are needed to verify
+the signature.
+The <option>--verify</option> option can be to check the
+signature.
+</para>
+
+<screen width="80">
+<prompt>blake%</prompt> <userinput>gpg --verify doc.sig doc</userinput>
+gpg: Signature made Fri Jun 4 12:38:46 1999 CDT using DSA key ID BB7576AC
+gpg: Good signature from "Alice (Judge) &lt;[email protected]>"
+</screen>
+</sect2>
+</sect1>
+</chapter>
+
+<!--
+In the "Getting Started" chapter, it would be interesting to provide
+a checklist of assumptions that the reader can consult to determine
+whether or not she fits the "most users" profile. Perhaps put this
+at the end of the chapter (perhaps w/ forward pointer?). You could
+include cross references for each item on the list. For example:
+
+ 23. Your use of public key encryption has property X with attribute Y.
+ (see Section 3.4.1 for a more detailed discussion of other
+ attributes of property X)
+
+What prompted this was wondering, as I read through the generating keypair
+section, "under what circumstances would these defaults be inappropriate?"
+
+The notion of using the same key with different user IDs "as an employee at
+work and a political activist on the side" is interesting. Knowing one,
+could you be traced to the other? (Are they separate numeric ids, and is
+that enough?) (seems someone could just match the public keys)
+
+It's a very nice touch that you don't cover every single prompt that the
+system throws at you, but instead treat them functionally. For example,
+I can imagine other books going through the "Comment:" and "Email Address:"
+prompts.
+-->
+
+<!--
+"Key verification is a weak point in public-key cryptography ..."
+Saying "weak point" makes it sound like a slam on public key stuff.
+Although we've talked about weaknesses of the trust model, I'm guessing
+the point here is that communication is only secure if you verify the
+identity of the key's owner.
+
+Key verification can be done through any means "as long as you can
+guarantee that you are communicating with the key's true owner".
+I suspect we'd also like to prevent leaking information that an
+interceptor could use to pose as us in a key verification step with
+another party. I suppose the notion of bootstrapping may not be widely
+appreciated as an analogy.
+
+I'm almost inclined to want to see a section in the Getting Started
+guide called "Why you should read the rest of this book". Failing
+that, or perhaps better yet, maybe it would work to have some margin
+notes that point to other sections of the book for more information
+("a discussion of trust models begins on p. 95").
+-->
+