aboutsummaryrefslogtreecommitdiffstats
path: root/doc/gph/c4.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/gph/c4.sgml')
-rw-r--r--doc/gph/c4.sgml433
1 files changed, 433 insertions, 0 deletions
diff --git a/doc/gph/c4.sgml b/doc/gph/c4.sgml
new file mode 100644
index 000000000..1932da7ae
--- /dev/null
+++ b/doc/gph/c4.sgml
@@ -0,0 +1,433 @@
+<chapter id="wise" xreflabel="4">
+<docinfo>
+<date>
+$Id$
+</date>
+</docinfo>
+<title>
+Daily use of &Gnupg;
+</title>
+
+<para>
+&Gnupg; is a complex tool with technical, social, and legal issues
+surrounding it.
+Technically, it has been designed to be used in situations having
+drastically different security needs.
+This complicates key management.
+Socially, using &gnupg; is not strictly a personal decision.
+To use &gnupg effectively both parties communicating must use it.
+Finally, as of 1999, laws regarding digital encryption, and in particular
+whether or not using &gnupg; is legal, vary from country to country and
+is currently being debated by many national governments.
+</para>
+
+<para>
+This chapter addresses these issues.
+It gives practical advice on how to use &gnupg; to meet your security needs.
+It also suggests ways to promote the use of &gnupg; for secure
+communication between yourself and your colleagues when your colleagues
+are not currently using &gnupg;.
+Finally, the legal status of &gnupg; is outlined given the current status
+of encryption laws in the world.
+</para>
+
+<sect1>
+<title>
+Defining your security needs
+</title>
+
+<para>
+&Gnupg; is a tool you use to protect your privacy.
+Your privacy is protected if you can correspond with others without
+eavesdroppers reading those messages.
+</para>
+
+<para>
+How you should use &gnupg; depends on the determination and resourcefulness
+of those who might want to read your encrypted messages.
+An eavesdropper may be an unscrupulous system administrator casually
+scanning your mail, it might be an industrial spy trying to collect
+your company's secrets, or it might be a law enforcement agency trying
+to prosecute you.
+Using &gnupg; to protect against casual eavesdropping is going to be
+different than using &gnupg; to protect against a determined adversary.
+Your goal, ultimately, is to make it more expensive to recover the
+unencrypted data than that data is worth.
+</para>
+
+<para>
+Customizing your use of &gnupg; revolves around three issues:
+<itemizedlist spacing="compact">
+<listitem>
+<para>
+the key size of your public/private keypair,
+</para>
+</listitem>
+
+<listitem>
+<para>
+protecting your private key, and
+</para>
+</listitem>
+
+<listitem>
+<para>
+managing your web of trust.
+</para>
+</listitem>
+</itemizedlist>
+
+A well-chosen key size protects you against brute-force attacks on
+encrypted messages.
+Protecting your private key prevents an attacker from simply using your
+private key to decrypt encrypted messages and sign messages in your name.
+Correctly managing your web of trust prevents attackers from masquarading
+as people with whom you communicate.
+Ultimately, addressing these issues with respect to your own security
+needs is how you balance the extra work required to use &gnupg; with
+the privacy it gives you.
+</para>
+
+<sect2>
+<title>
+Choosing a key size
+</title>
+
+<para>
+Selecting a key size depends on the key.
+In OpenPGP, a public/private keypair usually has multiple keys.
+At the least it has a master signing key, and it probably has one or
+more additional subkeys for encryption.
+Using default key generation parameters with &gnupg;, the master
+key will be a DSA key, and the subkeys will be ElGamal keys.
+</para>
+
+<para>
+DSA allows a key size up to 1024 bits.
+This is not especially good given today's factoring technology, but
+that is what the standard specifies.
+Without question, you should use 1024 bit DSA keys.
+</para>
+
+<para>
+ElGamal keys, on the other hand, may be of any size.
+Since &gnupg; is a hybrid public-key system, the public key is used
+to encrypt a 128-bit session key, and the private key is used to
+decrypt it.
+Key size nevertheless affects encryption and decryption speed
+since the cost of these algorithms is exponential in the size of
+the key.
+Larger keys also take more time to generate and take more space
+to store.
+Ultimately, there are diminishing returns on the extra security
+a large key provides you.
+After all, if the key is large enough to resist a brute-force
+attack, an eavesdropper will merely switch to some other method for
+obtaining your plaintext data.
+Examples of other methods include robbing your home or office
+and mugging you.
+1024 bits is thus the recommended key size.
+If you genuinely need a larger key size then you probably already
+know this and should be consulting an expert in data security.
+</para>
+</sect2>
+
+<sect2>
+<title>
+Protecting your private key
+</title>
+
+<para>
+Protecting your private key is the most important job you have to
+use &gnupg; correctly.
+If someone obtains your private key, then all data encrypted to
+the private key can be decrypted and signatures can be made in your name.
+If you lose your private key, then you will no longer be able to
+decrypt documents encrypted to you in the future or in the past,
+and you will not be able to make signatures.
+Losing sole possession of your private key is catastrophic.
+</para>
+
+<para>
+Regardless of how you use &gnupg; you should store the public
+key's <link linkend="revocation">revocation certificate</link>
+and a backup of your private key on write-protected media in a safe place.
+For example, you could burn them on a CD-ROM and store them in your
+safe deposit box at the bank in a sealed envelope.
+Alternatively, you could store them on a floppy and hide it in your
+house.
+Whatever you do, they should be put on media that is safe to store
+for as long as you expect to keep the key, and you should store
+them more carefully than the copy of your private key you use daily.
+</para>
+
+<para>
+To help safeguard your key, &Gnupg; does not store your raw
+private key on disk.
+Instead it encrypts it using a symmetric encryption algorithm.
+That is why you need a passphrase to access the key.
+Thus there are two barriers an attacker must cross to access your private
+key: (1) he must actually acquire the key, and (2) he must get past
+the encryption.
+</para>
+
+<para>
+Safely storing your private key is important, but there is a cost.
+Ideally, you would keep the private key on a removable, write-protected disk
+such as a floppy disk, and you would use it on a single-user machine
+not connected to a network.
+This may be inconvenient or impossible for you to do.
+For example, you may not own your own machine and must use a computer
+at work or school, or it may mean you have to physically disconnect
+your computer from your cable modem every time you want to use &gnupg;
+</para>
+
+<para>
+This does not mean you cannot or should not use &gnupg;.
+It means only that you have decided that the data you are protecting is
+important enough to encrypt but not so important as to take extra
+steps to make the first barrier stronger.
+It is your choice.
+</para>
+
+<para>
+A good passphrase is absolutely critical when using &gnupg;.
+Any attacker who gains access to your private key must bypass the
+encryption on the private key.
+Instead of brute-force guessing the key, an attacker will almost
+certainly instead try to guess the passphrase.
+</para>
+
+<para>
+The motivation for trying passphrases is that most people choose
+a passphrase that is easier to guess than a random 128-bit key.
+If the passphrase is a word, it is much cheaper to try all the
+words in the dictionaries of the world's languages.
+Even if the word is permuted, &eg, k3wldood, it is still easier
+to try dictionary words with a catalog of permutations.
+The same problem applies to quotations.
+In general, passphrases based on natural-language utterances
+are poor passphrases since there is little randomness and lots
+of redundancy in natural language.
+You should avoid natural language passphrases if you can.
+</para>
+
+<para>
+A good passphrase is one that you can remember but is hard for
+someone to guess.
+It should include characters from the whole range of printable characters
+on your keyboard.
+This includes uppercase alphabetics characters, numbers, and special
+characters such as <literal>}</literal> and <literal>|</literal>.
+Be creative and spend a little time considering your passphrase; a
+good choice is important to ensure your privacy.
+</para>
+</sect2>
+
+<!--
+<sect2>
+<title>
+Reacting to a compromised private key
+</title>
+
+<para>
+Despite your precautions you may lose sole access to your private key.
+For example, you may forget the passphrase, or someone who you think
+can bypass the encryption gets access to it.
+In that case then you need to spread the word that your key is no
+longer valid.
+To do that you use the key revocation certificate you should have generated
+when you created the key.
+Importing it onto your public keyring will revoke the public key
+of the keypair you no longer wish to use.
+It is then up to you to distribute the revoked public key to all
+those who may encrypt documents to you.
+</para>
+
+<para>
+A revoked public key only prevents future use of the private key.
+Others will neither be able to encrypt documents to the key nor will
+they be able to check signatures made with the private key.
+Documents signed in the past can still be checked, however, and
+documents encrypted in the past can still be decrypted.
+</para>
+
+<para>
+It is important that you protect the revocation certificate carefully.
+Anybody can add the certificate to your public key and distribute it,
+and there is no way to revoke a revocation certificate.
+Therefore, you should store the revocation certificate in a safe
+place such as with the backup of your private key.
+</para>
+</sect2>
+-->
+
+<sect2>
+<title>
+Managing your web of trust
+</title>
+
+<para>
+As with protecting your private key, managing your web of trust is
+another aspect of using &gnupg; that requires balancing security against
+ease of use.
+If you are using &gnupg; to protect against casual eavesdropping and
+forgeries then you can afford to be relatively trusting of other
+people's signatures.
+On the other hand, if you are concerned that there may be a determined
+attacker interested in invading your privacy, then
+you should be much less trusting of other signatures and spend more time
+personally verifying signatures.
+</para>
+
+<para>
+Regardless of your own security needs, through, you should
+<emphasis>always be careful</emphasis> when signing other keys.
+It is selfish to sign a key with just enough confidence in the key's
+validity to satisfy your own security needs.
+Others, with more stringent security needs, may want to depend on
+your signature.
+If they cannot depend on you then that weakens the web of trust
+and makes it more difficult for all &gnupg; users to communicate.
+Use the same care in signing keys that you would like others to use when
+you depend on their signatures.
+</para>
+
+<para>
+In practice, managing your web of trust reduces to assigning trust to
+others and tuning the options
+<link linkend="marginals-needed"><option>--marginals-needed</option></link>
+and
+<link linkend="completes-needed"><option>--completes-needed</option></link>.
+Any key you personally sign will be considered valid, but except for small
+groups, it will not be practical to personally sign the key of every person
+with whom you communicate.
+You will therefore have to assign trust to others.
+</para>
+
+<para>
+It is probably wise to be accurate when assigning trust and then
+use the options to tune how careful &gnupg; is with key validation.
+As a concrete example, you may fully trust a few close friends that
+you know are careful with key signing and then marginally
+trust all others on your keyring.
+From there, you may set <option>--completes-needed</option> to
+<literal>1</literal> and <option>--marginals-needed</option> to
+<literal>2</literal>.
+If you are more concerned with security you might choose values of
+<literal>1</literal> and <literal>3</literal> or <literal>2</literal>
+and <literal>3</literal> respectively.
+If you are less concerned with privacy attacks and just want some
+reasonable confidence about validity, set the values to <literal>1</literal>
+and <literal>1</literal>.
+In general, higher numbers for these options imply that more people
+would be needed to conspire against you in order to have a key validated
+that does not actually belong to the person whom you think it does.
+</para>
+</sect2>
+</sect1>
+
+<sect1>
+<title>
+Building your web of trust
+</title>
+
+<para>
+Wanting to use &gnupg; yourself is not enough.
+In order to use to communicate securely with others you must have
+a web of trust.
+At first glance, however, building a web of trust is a daunting task.
+The people with whom you communicate need to use
+&gnupg;<footnote><para>In this section, &gnupg; refers to the
+&gnupg; implementation of OpenPGP as well as other implementations
+such as NAI's PGP product.</para></footnote>, and there needs to be enough
+key signing so that keys can be considered valid.
+These are not technical problems; they are social problems.
+Nevertheless, you must overcome these problems if you want to
+use &gnupg;.
+</para>
+
+<para>
+When getting started using &gnupg; it is important to realize that you
+need not securely communicate with every one of your correspondents.
+Start with a small circle of people, perhaps just yourself and
+one or two others who also want to exercise their right
+to privacy.
+Generate your keys and sign each other's public keys.
+This is your initial web of trust.
+By doing this you will appreciate the value of a small, robust
+web of trust and will be more cautious as you grow your web
+in the future.
+</para>
+
+<para>
+In addition to those in your initial web of trust, you may want to
+communicate securely with others who are also using &gnupg;.
+Doing so, however, can be awkward for two reasons:
+(1) you do not always know when someone uses or is willing to use
+&gnupg;, and (2) if you do know of someone who uses it, you may still have
+trouble validating their key.
+The first reason occurs because people do not always advertise that
+they use &gnupg;.
+The way to change this behavior is to set the example and advertise
+that you use &gnupg;.
+There are at least three ways to do this: you can sign messages you mail
+to others or post to message boards, you can put your public key on your
+web page, or, if you put your key on a keyserver, you can put your key
+ID in your email signature.
+If you advertise your key then you make it that much more acceptable
+for others to advertise their keys.
+Furthermore, you make it easier for others to start communicating
+with you securely since you have taken the initiative and made it clear
+that you use &gnupg;.
+</para>
+
+<para>
+Key validation is more difficult.
+If you do not personally know the person whose key you want to sign,
+then it is not possible to sign the key yourself.
+You must rely on the signatures of others and hope to find a chain
+of signatures leading from the key in question back to your own.
+To have any chance of finding a chain, you must take the intitive
+and get your key signed by others outside of your intitial web of trust.
+An effective way to accomplish this is to participate in key
+signing parties.
+If you are going to a conference look ahead of time for a key
+signing party, and if you do not see one being held, offer to
+<ulink url="http://www.herrons.com/kb2nsx/keysign.html">hold one</ulink>.
+You can also be more passive and carry your fingerprint with you
+for impromptu key exchanges.
+In such a situation the person to whom you gave the fingerprint
+would verify it and sign your public key once he returned home.
+</para>
+
+<para>
+Keep in mind, though, that this is optional.
+You have no obligation to either publically advertise your key or
+sign other people's keys.
+The power of &gnupg; is that it is flexible enough to adapt to your
+security needs whatever they may be.
+The social reality, however, is that you will need to take the initiative
+if you want to grow your web of trust and use &gnupg; for as much of
+your communication as possible.
+</para>
+</sect1>
+
+<sect1>
+<title>
+Using &Gnupg; legally
+</title>
+
+<para>
+The legal status of encryption software varies from country to country,
+and law regarding encryption software is rapidly evolving.
+<ulink url="http://cwis.kub.nl/~frw/people/koops/bertjaap.htm">Bert-Japp
+Koops</ulink> has an excellent
+<ulink url="http://cwis.kub.nl/~frw/people/koops/lawsurvy.htm">Crypto
+Law Survey</ulink> to which you should refer for the legal status of
+encryption software in your country.
+</para>
+
+</sect1>
+</chapter>
+