In GnuPG, there is the option of making keys which are "normal" (encrypt and sign) and sign-only keys . But what sense does that make in regards of DSA? Correct me if I am wrong, but I think DSA keys can only sign anyway. So what is the difference between sign-only and normal keys?
Actually there are even more possible options if you use the
--expert flag in GnuPG:
$ gpg --expert --gen-key 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) (7) DSA (set your own capabilities) (8) RSA (set your own capabilities)
As you can see, you can decide to have DSA sign only, but also RSA sign only keys. What's more, DSA keys can also be used as "authentication" subkeys, so you can set your own capabilities for those as well as for the RSA keys (which can also serve for encryption, whereas DSA subkeys cannot)
Now, the difference between a "sign" subkey and an "authentication" one is simply in their respective goals, to allow strong segmentation between signing and authentication processes. The primitive used in both case are the same...
You'll typically use an authentication subkeys for SSH auth (this mainly allows to have your SSH key on a smartcard) and you'll use the signing subkey to sign data. (In the auth case you'll be signing only challenges.)