X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/e5b0d077dd2623867702f2e76afb776856eb77b4..9954aaa37368a233dc614d610ca68c2ce5a7e8cd:/doc/pubkey.but diff --git a/doc/pubkey.but b/doc/pubkey.but index 937ca27b..871dfb81 100644 --- a/doc/pubkey.but +++ b/doc/pubkey.but @@ -1,12 +1,97 @@ +\versionid $Id: pubkey.but,v 1.3 2001/06/15 19:31:10 simon Exp $ + +\# FIXME: passphrases, examples (e.g what does a key for pasting into +\# authorized_keys look like?), index entries, links. + \C{pubkey} Using public keys for SSH authentication -\# Explain the basic principles of public key authentication. Many -\# people don't have the faintest idea what it is or why it's good. +\H{pubkey-intro} Public key authentication - an introduction + +Public key authentication is an alternative means of identifying +yourself to a login server, instead of typing a password. It is more +secure and more flexible, but more difficult to set up. + +In conventional password authentication, you prove you are who you +claim to be by proving that you know the correct password. The only +way to prove you know the password is to tell the server what you +think the password is. This means that if the server has been +hacked, or \e{spoofed} (see \k{gs-hostkey}), an attacker can learn +your password. + +Public key authentication solves this problem. You generate a \e{key +pair}, consisting of a public key (which everybody is allowed to +know) and a private key (which you keep secret and do not give to +anybody). The private key is able to generate \e{signatures}. +A signature created using your private key cannot be forged by +anybody who does not have that key; but anybody who has your public +key can verify that a particular signature is genuine. + +So you generate a key pair on your own computer, and you copy the +public key to the server. Then, when the server asks you to prove +who you are, PuTTY can generate a signature using your private key. +The server can verify that signature (since it has your public key) +and allow you to log in. Now if the server is hacked or spoofed, the +attacker does not gain your private key or password; they only gain +one signature. And signatures cannot be re-used, so they have gained +nothing. + +There is a problem with this: if your private key is stored +unprotected on your own computer, then anybody who gains access to +\e{that} will be able to generate signatures as if they were you. So +they will be able to log in to your server under your account. For +this reason, your private key is usually \e{encrypted} when it is +stored on your local machine, using a passphrase of your choice. In +order to generate a signature, PuTTY must decrypt the key, so you +have to type your passphrase. + +This can make public-key authentication less convenient than +password authentication: every time you log in to the server, +instead of typing a short password, you have to type a longer +passphrase. One solution to this is to use an \e{authentication +agent}, a separate program which holds decrypted private keys and +generates signatures on request. PuTTY's authentication agent is +called Pageant. When you begin a Windows session, you start Pageant +and load your public key into it (typing your passphrase once). For +the rest of your session, you can start PuTTY any number of times +and Pageant will automatically generate signatures without you +having to do anything. When you close your Windows session, Pageant +shuts down, without ever having stored your decrypted private key on +disk. Many people feel this is a good compromise between security +and convenience. See \k{pageant} for further details. + +\H{pubkey-puttygen} PuTTYgen: RSA key generator for PuTTY + +PuTTYgen is a key generator. It generates pairs of public and private +keys to be used with PuTTY, PSCP, and Plink, as well as the PuTTY +authentication agent, Pageant (see \k{pageant}). PuTTYgen generates +RSA keys. + +When you run PuTTYgen you will see a window where you have two +choices: \e{Generate} new public/private key pair or \e{Load} an +existing private key. -\# Explain the dangers of leaving an unprotected private key around. -\# Explain passphrases, and urge that people NEVER store -\# unpassphrased keys unless they really need to or they can be sure -\# the machine is secure. +\S{pubkey-puttygen-generate} Generate a new key + +Before generating a new key you have to choose the strength of the +encryption. With \e{Parameters} you define the strength of the key. The +default of 1024 should be OK for most users. + +Pressing the \e{Generate} button starts the process of generating a +new key pair. You then have to move the mouse over the blank area in +order to generate random data for the algorithm. Continue until the +progress bar is complete. + +As soon as enough random data is available the key is generated. This +may take a little while, especially on slow machines. Once the key is +generated, its details appear in the \e{Key} part of the PuTTYgen +window. + +Now you can change the \e{Key comment} to something more meaningful +than the default (which is based on the current date). e.g. add the +name of the host you will use it for. When using multiple keys a +meaningful comment may help you remember which passphrase to use! You +should always enter a \e{Key passphrase} and \e{Confirm passphrase} to +protect your keys. \# Mention a good length for a passphrase. (I think Schneier \# said something about this on counterpane.com once.) @@ -14,3 +99,33 @@ \# In case people don't like the idea of exchanging a short password \# typed every time for a longer passphrase typed every time, link \# to the Pageant chapter. + +Finally save the key by pressing the \e{Save} button. Do not close the +window but proceed with step \k{pubkey-gettingready}, otherwise you +will have to \e{Load} the private key again as described below. + +\S{pubkey-puttygen-load} Load and modify a key + +PuTTYgen does not store the public key in a file by default. If you +have to distribute the public key you can press the \e{Load} button, +select the private key file, and PuTTYgen will give you the public key +again. You can also change the comment and passphrase for your +private key this way. Just modify the values and \e{Save} the key. + +\S{pubkey-gettingready} Getting ready for public key authentication + +Connect to your SSH server using PuTTY with the SSH protocol. When the +connection succeeds you will be prompted for your user name and +password to login. Once logged in change into the \c{.ssh} directory +and open the file \c{authorized_keys} with your favorite editor (you +may have to create this file if this is the first key to add). + +Switch to the PuTTYgen window and select all of the content below +\e{Public key for pasting into authorized_keys file}, copy it to the +clipboard (\c{Ctrl+C}). Then, switch back to the PuTTY window and +insert the data into the open file. Save the file. + +From now on you can use the private key for authentication to this +host. Either select the private key in PuTTY's \e{Connection}, +\e{SSH} panel: \e{Private key file for authentication} dialog or use +it with Pageant as described in \k{pageant}.