ssh-keygen defaults to creating RSA keys, but gpg --gen-key prefers DSA/ElGamal.
Which one - RSA or DSA - is better for GPG?
|
Which one - RSA or DSA - is better for GPG? |
|||||
|
|
The GPG maintainers are thinking of changing the default to RSA (source: Dealing with weakness in SHA-1 [LWN.net]). So, it seems they think RSA is currently the better option (and they should know more about it than you or me). |
|||
|
|
|
RSA and DSA - misconceptions and useful information
In 2003, RSA vs DSA Signatures - The Winner is... -- RSA.
Recent IETF Draft: DSA with SHA-2 for DNSSEC, Expiring Jan 7, 2010.
But, this is only a draft at the moment. Everyone loves the verification speed of RSA(!). |
||||
|
|
|
RSA. There were some weaknesses discovered in SHA-1, which is the hash used by DSA. Debian are migrating all their keys from DSA to RSA. |
|||
|
|
|
Quoting a forum discussion:
I think that if you're using it in a standard way (i.e. you don't encrypt a huge amount of data) they'll both do well. I would personally choose RSA because I've learned the algorithm, and it's one of the most beautiful algorithms I've ever seen. |
||||
|
|
|
Also the use of SHA-2 algorithms is possible and allowed since current revision of DSS; but I was unable to find out which revision GPG follows. Concerning to the current DSS specification (FIPS-186-3, p. i) any hash function specified in the SHS (FIPS-180-3, p. iv) may be used: DSS:
SHS:
To the question: Both algorithms are based on mathematical problems which are not proven to be secure (RSA uses the problem of factorizing numbers and DSA uses the discrete logarithm problem), you cannot say one is more secure than the other, because not the one problem nor the other has ever been solved. But by using DSA with SHA-1 you may have a security problem, as already said by pgs. |
|||
|
|
|
The fact is it probably doesn't matter much to you :) As part of preparing to generate a key-pair and as part of maintaining existing key-pairs - regardless of what asymmetric crypto you choose you should be : 1) checking current recommended key lengths 2) chose a base/modulo to optimize for signing, or verification - depending on what will be doen more often (keys to be used in issuing TLS/SSL server certificates should be optimized for verification since every web browser will check the signature... keys used to be used in signing software should be similarly optimized) 3) make sure you age your keys - been using the same key for ssh-auth for a few years, might be time to regen even if you chose a key size that is still reasonable for the application today. Both RSA and DSA have been substantially evaluated; if you are using a realiable code base (RSAREF, RSA commercial, Mozilla/Netscape, Microsoft, OpenSSL, ...) then you probably don't care which cryptosystem you use so long as you use it correctly and utilize current best practices |
|||
|
|