"Please select what kind of key you want"

David Shaw dshaw at jabberwocky.com
Mon Feb 23 01:48:42 CET 2009

On Feb 22, 2009, at 6:54 PM, gerry_lowry (alliston ontario canada)  

> Preamble
> ----------
> Michael W. Lucas on page 73 in Chapter 4 of "PGP & GPG:  Email for  
> the Practical Paranoid",
> No Starch Press, (c) 2006, shows the following choices for
> "Please select what kind of key you want":
>   (1) DSA and Elgamal (default)
>   (2) DSA (sign only)
>   (5) RSA (sign only)
> Michael recommends choosing "5" which turns out to be a disadvantage
> that one might not discover until the first time that she/he  
> attempts to
> encrypt something.

He recommends a RSA signing key and later adding a subkey for  
encryption.  This is only a problem if someone does part 1 (the  
signing key) of his recommendation and skips part 2 (the encryption  

> AFAIK, other people can still encrypt for the user who has selected  
> "5"
> above.  And the user can decrypt whatever she/he receives.

This is not correct.  A sign only key means sign only.  It has no  
encryption capability.  That's why you need a subkey to handle the  

> I do not recall Michael discussing the solution to the problems
> caused by selecting just "(5) RSA (sign only)", although, since his
> book is written for a beginner audience, I do think he should
> have addressed this problem.  Nevertheless, I found his book
> still quite helpful.
> -----------------
> Especially because of my experience mentioned above, I tend to pay  
> attention
> to the text that follows  "Please select what kind of key you want".
> The Windows' version that I used matches Michael's text:
>> gpg --gen-key
>           gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software  
> Foundation, Inc.
>           Please select what kind of key you want:
>              (1) DSA and Elgamal (default)
>              (2) DSA (sign only)
>              (5) RSA (sign only)
>> From "gpg  --edit-key    ID    addkey",  I also get
>              (2) DSA (sign only)
>              (4) Elgamal (encrypt only)
>              (5) RSA (sign only)
>              (6) RSA (encrypt only)
>     ----------------------------------  where's (3)
>              (3) ??????????????
> Why is there no "(3)" in the above two lists [gen-key list, addkey  
> list]?

(3) and (7) are special cases for advanced users.  They do not show up  
in the menu unless the "--expert" flag is given.  They let you create  
a key with any features that you want (for example, you could create a  
RSA key that can sign and encrypt with a single key and not need  
subkeys at all).  This is for advanced use only.

> Why are choices "(4) Elgamal (encrypt only)" and "(6) RSA (encrypt  
> only)"
> not present in the "gen-key" list?

They are not meaningful there.  gen-key creates a primary key, and as  
per the OpenPGP standard, a primary key must be able to issue  
certification signatures.  An encrypt only key, by definition, cannot  
issue signatures.

> Why is choices "(1) DSA and Elgamal (default)" not present in the  
> "addkey" list?

Again, not meaningful there.  addkey creates subkeys.  DSA+Elgamal is  
not a subkey (it's a shortcut for specifying a DSA primary and an  
Elgamal subkey).

> ============  http://www.netbsd.org/developers/pgp.html   
> ==============
> shows different choices for "gpg --gen-key":
>   (1) DSA and ElGamal (default)
>   (2) DSA (sign only)
>   (4) ElGamal (sign and encrypt)
>   (5) RSA (sign only)
> Exploring further "Please select what kind of key you want" via  
> Google,
> I get the impression that there's potentially a standard that might  
> read something like:
>     position (1) should always be __________;
>     position (2) should always be __________;
>     position (3) should always be __________; et cetera
> and for any position, you can offer nothing, sign only, encrypt  
> only, or sign and encrypt together.
> Is that the case with regards to developer guidelines?

No.  The numbers have changed in the past, and may well change in the  

> Also, I'm guessing that although a developer might opt out of  
> creating a key of type X,
> regardless, the developer must presumably support a complete set of  
> encryption/decryption
> choices for the purpose of processing public and private keys  
> properly.  Is this the case?

Not really.  It is true that the developer can choose to not allow  
creating certain key types in their OpenPGP program.  It is also true,  
though, that the developer can choose to not support an algorithm at  
all.  The only algorithms that are required to be supported are DSA  
for signing, Elgamal for encryption, 3DES as a symmetric cipher, and  
SHA-1 as a hash.  Strictly speaking, everything else is optional.  Of  
course, most programs support a good chunk of the optional algorithms.


More information about the Gnupg-users mailing list