Generating a key
First of all you will need to log onto a Linux machine e.g. noric, then generate the pair,see below. (After entropy. I hit several spaces and returns to help entropy, however 30 mins later it had not appeared to finish), then it said it was generating the key again, I hit lots more characters and a few minutes later it finished (see below).
[cottrell@pinger ~]$ gpg --gen-key gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gpg: keyring `/u/sf/cottrell/.gnupg/secring.gpg' created gpg: keyring `/u/sf/cottrell/.gnupg/pubring.gpg' created Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) Requested keysize is 2048 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct? (y/N) y GnuPG needs to construct a user ID to identify your key. Real name: Roger Cottrell Email address: rlacottrell@gmail.com Comment: Les You selected this USER-ID: "Roger Cottrell (Les) <rlacottrell@gmail.com>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. can't connect to `/u/sf/cottrell/.gnupg/S.gpg-agent': No such file or directory gpg-agent[6645]: directory `/u/sf/cottrell/.gnupg/private-keys-v1.d' created We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. ^[[C^[[C^[[C^[[C^[[C^[[C^[[C^[[C^[[C^[[B gjhgjhfhfuiuiouomnmmnnbb /u/sf/cottrell/.gnupg/trustdb.gpg: trustdb created gpg: key 271CF0E9 marked as ultimately trusted public and secret key created and signed. gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u pub 2048R/271CF0E9 2013-09-11 Key fingerprint = 0B4F EC8A D1D0 568A 654C BD99 B058 14A9 271C F0E9 uid Roger Cottrell (Les) <rlacottrell@gmail.com> sub 2048R/87C7DB76 2013-09-11 [cottrell@pinger ~]$ [cottrell@pinger ~]$ ls -la .gnupg/ total 62 drwx------ 3 cottrell sf 2048 Sep 10 22:35 ./ drwxr-xr-x 108 cottrell sf 49152 Sep 10 21:50 ../ drwx------ 2 cottrell sf 2048 Sep 10 22:06 private-keys-v1.d/ -rw------- 1 cottrell sf 1203 Sep 10 22:35 pubring.gpg -rw------- 1 cottrell sf 1203 Sep 10 22:35 pubring.gpg~ -rw------- 1 cottrell sf 600 Sep 10 22:35 random_seed -rw------- 1 cottrell sf 2581 Sep 10 22:35 secring.gpg -rw------- 1 cottrell sf 1280 Sep 10 22:35 trustdb.gpg
Set up privileges for .gnupg directory
Initially after generating the key, you will get a .gnupg directory with something like:
rajaasad@noric37 $ fs la .gnupg Access list for .gnupg is Normal rights: system:slac rl system:administrators rlidwka system:authuser rl rajaasad rlidwka
But you need to get rid of the first and the third entry by executing:
fs sa system:slac none system:authuser none
Now you will have the following privileges:
rajaasad@noric37 $ fs la .gnupg Access list for .gnupg is Normal rights: system:administrators rlidwka rajaasad rlidwka
Exporting the key
208cottrell@pinger:~$gpg --export -a "Roger Cottrell" > public_key 209cottrell@pinger:~$cat public_key -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.14 (GNU/Linux) mQENBFIv+r4BCADn5msooKvPE3S2fuOgB1wCvbqh4JySYrVWJrADn58miEn6a593 6JbnUv22CJsks1EOtPVmgEFIxZiNxYChMLMYJ3/fQDhoTKeITUrcmXVHRQw4zu21 3E11TASuBRKXT4DOj10LgTTDGEcCpwf/LI1+Z1STNm1V976mBK+e/i4L0NVre+u2 vDlpiML8NumNShL6O1JVPDY6ULlooUHgGS4v/cFvn1Z8xrfwRdJIar8vyR+qZcOm 4I2ZGOklKXUILtpvhsq99JASJR9BEz4oec+UPbGv5Ux6GrPt6VF0tEGDGAGlqvMf gxFrJE1R/HC9AwdjLIayZQEp+Kz8l9QcsY7JABEBAAG0LFJvZ2VyIENvdHRyZWxs IChMZXMpIDxybGFjb3R0cmVsbEBnbWFpbC5jb20+iQE4BBMBAgAiBQJSL/q+AhsD BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCwWBSpJxzw6S1vCADf7cucsnDR rvdtLZ+GpQlEdqvQ3rW6D6fMShzay0DzLkBpLzNr56Rkxx5ngziWevmGYuBZ7ktT zGGicbhPtU2Zf3X1KfuJC2fOQGcWlUGApxhU39EXgvXN05LfTAFyv/wZaGSMfmVe erHVbjm2MhHd56NSp2XW2gRRu/NPLeX3G+2qch6XfaK4K4ZashWIe07IxB9G6auc RUkSMT/JzPSEdnNbX6/5lMQlSet5YYmUM9fxN4ToQwK1+DtuSqNXm+nqLJHE2K5c 2jt+OFE5+HVpHN7ICGI4YFOHtYp+0NogSFUkpflUWdNDlCl9r5T7F1bx9wj44ovK Gdau4OXSXywYuQENBFIv+r4BCACaGbe4j2G1EyHCLCEmZX+s5BE8oEHFrwjcYwfG ks3y6fZG+5hrxsWMBs1ZsQip4XlJbywzrI+XDuopxVpxKJDJTGSh48bDw0NggKCT unuVwNB6pK22PQqu0JitvNCWaIyi3OwGd5RroeHYq59AHzAgL+N2mfuDGF33Thbk fgR13owzau7yQPPfvyhzpnZ4Bk/k1qRDeklA5YTANn9iI5V/uqfBQMt6gOB+A7JE yfD7GtaaOwqR9RVvtihCt5U2Mi7s++PgRBTzMdPxQG6DUei5MS+Xfz9Lu2BW69Hj cdQANMsLY7hpY+LozHpr7NiO4IPqYFtR5XRYbCrgT9T4/4ONABEBAAGJAR8EGAEC AAkFAlIv+r4CGwwACgkQsFgUqScc8On4IAgAkhsGXjsP+s/SJv+VM0Tljm6e6brO DZ0l/YlhotuMTegwDW4P2EdeNi3zML9n9CB9ZkomjrSrotuJ+VwNA2hTXndnuDjf 7ppXGt/HIHh00nS5olgkqi3jWc6xGsYXJmldK+l7UDXeCvYv6yM8mObxCA72FvER fBbNxLfnreLOCvbgjYrOM2nXY03sXDcXlBgaMmUM242lnYAklnBRn5LesibzY4N3 DXh5QYYLqENMUvzXwaEpH3Uhl+EuMnyUA3pdMoIY9lTn2WMUVmZmNXaS02XetVRm k9EwkXpVyxHSI+9PSsqrWYwaXKk4jUTfek/RyVTp0ChVZSScweruYklzBg== =ryhi -----END PGP PUBLIC KEY BLOCK-----
Make the key publicly available
We use ftp to do this so the key will show up at:
ftp://ftp.slac.stanford.edu/pgp/cottrell/cottrell.publickey
This is done by moving the public_key generated above to the ftp space;
217cottrell@pinger:$mv ~cottrell/public_key /afs/slac.stanford.edu/public/pgp/cottrell/cottrell.publickey
Adding someone else's public key to your keyring
Get the other person's public key (they may email it to you or put it in a publicly accessible place). Assuming you have put it in your home directory at public.key, then
gpg --import public.key
You will then need to sign the key. Before you do this you may want a list of keys in your keyring:
113cottrell@pinger:~$gpg --list-keys /u/sf/cottrell/.gnupg/pubring.gpg --------------------------------- pub 2048R/271CF0E9 2013-09-11 uid Roger Cottrell (Les) <rlacottrell@gmail.com> sub 2048R/87C7DB76 2013-09-11 pub 2048R/0C0D6DCB 2013-09-08 uid Martin Emmerson <emmerson@telemage.com> sub 2048R/9993A460 2013-09-08
To sign the key you can proceed as follows:
114cottrell@pinger:~$gpg --sign-key 'Martin Emmerson' pub 2048R/0C0D6DCB created: 2013-09-08 expires: never usage: SC trust: unknown validity: unknown sub 2048R/9993A460 created: 2013-09-08 expires: never usage: E [ unknown] (1). Martin Emmerson <emmerson@telemage.com> pub 2048R/0C0D6DCB created: 2013-09-08 expires: never usage: SC trust: unknown validity: unknown Primary key fingerprint: F61E 0D6F F7E8 16E1 C776 01C0 8470 9956 0C0D 6DCB Martin Emmerson <emmerson@telemage.com> Are you sure that you want to sign this key with your key "Roger Cottrell (Les) <rlacottrell@gmail.com>" (271CF0E9) Really sign? (y/N) y You need a passphrase to unlock the secret key for user: "Roger Cottrell (Les) <rlacottrell@gmail.com>" 2048-bit RSA key, ID 271CF0E9, created 2013-09-11 can't connect to `/u/sf/cottrell/.gnupg/S.gpg-agent': No such file or directory
I don't think you need to worry about the "can't connect to `/u/sf/cottrell/.gnupg/S.gpg-agent': No such file or directory" it is probably out of sync STDERR outout from when it found out you needed to sign the key.
The --sign-key option is a short cut for --edit-key found in http://www.gnupg.org/gph/en/manual.html.
Reading an encrypted message from somebody
Assume you got the message (e.g. as an email enclosure) and you copied it to your home directory as:
203cottrell@wanmon:~$gpg -d msg-from-martin.asc >! junk You need a passphrase to unlock the secret key for user: "Roger Cottrell (Les) <rlacottrell@gmail.com>" 2048-bit RSA key, ID 87C7DB76, created 2013-09-11 (main key ID 271CF0E9) gpg: encrypted with 2048-bit RSA key, ID 87C7DB76, created 2013-09-11 "Roger Cottrell (Les) <rlacottrell@gmail.com>" gpg: Signature made Thu 12 Sep 2013 10:28:38 AM PDT using RSA key ID 0C0D6DCB gpg: Good signature from "Martin Emmerson <emmerson@telemage.com>" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: F61E 0D6F F7E8 16E1 C776 01C0 8470 9956 0C0D 6DCB 113
The decrypted output is written to STDOUT, here redirected to junk.
The WARNING (if it appears) means you have not signed the key yet (see above for how to sign).