Future proof your certificate with a 2048 bit key

It was time to renew a couple of certs and it turned out that the CSR I had originally used was generated with a 512 bit key. Dynadot, who, by the way, offers a pretty sweet $15/year price on single root RapidSSL certs, suggested that I regenerate with a minimum of 1024 bits.

Indeed, it looks like 1024 bit key length is the minimum currently recommended. In fact, depending on whom you ask, it may already be insufficient.

NIST guidelines are comparatively optimistic, but even according to their 2007 Recommendation for Key Management, time for 1024 bit keys is passing quick.

Algorithm security lifetimes Symmetric key algorithms
(Encryption & MAC)
FFC
(e.g., DSA, D-H)
IFC
(e.g., RSA)
ECC
(e.g., ECDSA)
Through 2010
(min. of 80 bits of strength)
2TDEA
3TDEA
AES-128
AES-192
AES-256
Minimum:
L = 1024;
N =160
Minimum:
k=1024
Minimum:
f=160
Through 2030
(min. of 112 bits of strength)
3TDEA
AES-128
AES-192
AES-256
Minimum:
L = 2048
N = 224
Minimum:
k=2048
Minimum:
f=224
Beyond 2030
(min. of 128 bits of strength)
AES-128
AES-192
AES-256
Minimum:
L = 3072
N = 256
Minimum:
k=3072
Minimum:
f=256

The trade off with longer key length is of course speed, decryption speed in particular, as that's what the server will be doing. The penalty is significant. According to a study titled "Performance Analysis of Secure Web Server Based on SSL", doubling of the key length resulted in nearly 8x performance penalty:

RSA Key Size Performance
512 bit 11 ms
1024 bit 68 ms
2048 bit 481 ms

In my case, I'm working with low volume applications, 2048 bit key length should be fine:

openssl genrsa -rand /dev/urandom -out your.name.key 2048
openssl req -new -nodes -key your.name.key -out your.name.csr

Leave a comment

NOTE: Enclose quotes in <blockquote></blockquote>. Enclose code in <pre lang="LANG"></pre> (where LANG is one of these).