Speed Comparison of Public Key Algorithms¶
These numbers were determined with the dh_speed and pubkey_speed utilities provided in source:scripts.
64 bit on Intel Xeon E5-2630v3 2.4 GHz (one core):¶
Public Key Signature - Generation¶
Key type |
Strength* |
Operations/s |
gmp |
gcrypt |
openssl |
RSA 512 |
50 bits |
sign (e=3) |
19'352 |
5'075 |
15'571 |
sign (e=f4) |
18'921 |
5'668 |
13'324 |
RSA 768 |
62 bits |
sign (e=3) |
7'779 |
2'776 |
7'020 |
sign (e=f4) |
9'675 |
2'794 |
8'202 |
RSA 1024 |
73 bits |
sign (e=3) |
4'264 |
1'333 |
4'694 |
sign (e=f4) |
3'775 |
1'147 |
4'826 |
RSA 1536 |
89 bits |
sign (e=3) |
1'201 |
490 |
1'236 |
sign (e=f4) |
1'183 |
574 |
1'248 |
RSA 2048 |
103 bits |
sign (e=3) |
471 |
274 |
822 |
sign (e=f4) |
548 |
230 |
800 |
RSA 3072 |
125 bits |
sign (e=3) |
116 |
64 |
152 |
sign (e=f4) |
112 |
64 |
157 |
RSA 4096 |
142 bits |
sign (e=3) |
52 |
30 |
74 |
sign (e=f4) |
51 |
31 |
72 |
RSA 6144 |
171 bits |
sign (e=3) |
17 |
11 |
29 |
sign (e=f4) |
17 |
11 |
28 |
RSA 8192 |
193 bits |
sign (e=3) |
8 |
5 |
13 |
sign (e=f4) |
8 |
5 |
13 |
ECDSA 256 |
128 bits |
sign |
N/A |
N/A |
11'934 |
ECDSA 384 |
192 bits |
sign |
N/A |
N/A |
1049 |
ECDSA 521 |
260 bits |
sign |
N/A |
N/A |
1731 |
* = cryptographic strength estimates according to RFC 3766 using www.keylength.com
Public Key Signature - Verification¶
Key type |
Strength |
Operations/s |
gmp |
gcrypt |
openssl |
RSA 512 |
50 bits |
verify (e=3) |
50'736 |
88'586 |
208'418 |
verify (e=f4) |
50'739 |
55'714 |
127'066 |
RSA 768 |
62 bits |
verify (e=3) |
27'278 |
81'614 |
171'022 |
verify (e=f4) |
34'774 |
40'800 |
128'251 |
RSA 1024 |
73 bits |
verify (e=3) |
18'577 |
74'595 |
116'195 |
verify (e=f4) |
18'579 |
30'782 |
64'122 |
RSA 1536 |
89 bits |
verify (e=3) |
7'496 |
64'670 |
81'471 |
verify (e=f4) |
7'486 |
19'712 |
36'715 |
RSA 2048 |
103 bits |
verify (e=3) |
4'328 |
54'602 |
51'670 |
verify (e=f4) |
4'330 |
12'047 |
21'686 |
RSA 3072 |
125 bits |
verify (e=3) |
1'590 |
28'473 |
22'716 |
verify (e=f4) |
1'511 |
5'603 |
8'787 |
RSA 4096 |
142 bits |
verify (e=3) |
962 |
20'399 |
14'725 |
verify (e=f4) |
953 |
3'562 |
5'326 |
RSA 6144 |
171 bits |
verify (e=3) |
460 |
13'786 |
7'756 |
verify (e=f4) |
454 |
1'813 |
2'902 |
RSA 8192 |
193 bits |
verify (e=3) |
270 |
7'269 |
3'894 |
verify (e=f4) |
271 |
1'105 |
1'833 |
ECDSA 256 |
128 bits |
verify |
N/A |
N/A |
6'370 |
ECDSA 384 |
192 bits |
verify |
N/A |
N/A |
1155 |
ECDSA 521 |
260 bits |
verify |
N/A |
N/A |
1052 |
Diffie-Hellman Key Exchange¶
DH group |
Strength |
Operations/s |
gmp |
gcrypt |
openssl |
gmp* |
gcrypt* |
openssl* |
MODP 768 |
62 bits |
A=g^a mod p |
2'339 |
1'346 |
2'761 |
5'637 |
2'928 |
6'990 |
S=B^a mod p |
3'492 |
1'270 |
3'816 |
7'633 |
3'671 |
7'784 |
MODP 1024 |
73 bits |
A=g^a mod p |
1'498 |
674 |
2'075 |
3'772 |
2'691 |
4'707 |
S=B^a mod p |
1'597 |
626 |
3'408 |
4'567 |
2'393 |
5'154 |
MODP 1536 |
89 bits |
A=g^a mod p |
485 |
255 |
673 |
2'559 |
1'568 |
3'088 |
S=B^a mod p |
493 |
232 |
679 |
2'800 |
1'318 |
3'405 |
MODP 2048 |
103 bits |
A=g^a mod p |
212 |
124 |
294 |
1'047 |
675 |
1'456 |
S=B^a mod p |
214 |
111 |
295 |
1'085 |
574 |
1'486 |
MODP 3072 |
125 bits |
A=g^a mod p |
63 |
43 |
81 |
372 |
265 |
505 |
S=B^a mod p |
67 |
38 |
91 |
449 |
294 |
513 |
MODP 4096 |
142 bits |
A=g^a mod p |
29 |
20 |
39 |
217 |
165 |
291 |
S=B^a mod p |
29 |
18 |
39 |
218 |
137 |
297 |
MODP 6144 |
171 bits |
A=g^a mod p |
9 |
6 |
9 |
62 |
56 |
132 |
S=B^a mod p |
9 |
6 |
11 |
74 |
52 |
134 |
MODP 8192 |
193 bits |
A=g^a mod p |
4 |
3 |
5 |
42 |
38 |
74 |
S=B^a mod p |
4 |
3 |
5 |
42 |
34 |
75 |
ECP 192 |
96 bits |
A=g^a mod p |
N/A |
N/A |
1'415 |
- |
S=B^a mod p |
N/A |
N/A |
4'778 |
ECP 224 |
112 bits |
A=g^a mod p |
N/A |
N/A |
3'965 |
S=B^a mod p |
N/A |
N/A |
11'094 |
ECP 256 |
128 bits |
A=g^a mod p |
N/A |
N/A |
5'192 |
S=B^a mod p |
N/A |
N/A |
13'102 |
ECP 384 |
192 bits |
A=g^a mod p |
N/A |
N/A |
444 |
S=B^a mod p |
N/A |
N/A |
1'455 |
ECP 521 |
260 bits |
A=g^a mod p |
N/A |
N/A |
743 |
S=B^a mod p |
N/A |
N/A |
2'060 |
* = using reduced exponent size (libstrongswan.dh_exponent_ansi_x9_42 = no) as recommended by RFC3526
32 bit, native on a Core2Duo T9400 (one core)¶
Public Key Signature - Generation¶
Key type |
Strength* |
Operations/s |
gmp |
gcrypt |
openssl |
RSA 512 |
50 bits |
sign (e=3) |
3'708 |
1'814 |
2'286 |
sign (e=f4) |
3'946 |
1'780 |
2'150 |
RSA 768 |
62 bits |
sign (e=3) |
1'483 |
625 |
521 |
sign (e=f4) |
1'486 |
626 |
783 |
RSA 1024 |
73 bits |
sign (e=3) |
724 |
301 |
488 |
sign (e=f4) |
722 |
285 |
475 |
RSA 1536 |
89 bits |
sign (e=3) |
242 |
99 |
117 |
sign (e=f4) |
243 |
98 |
111 |
RSA 2048 |
103 bits |
sign (e=3) |
110 |
30 |
80 |
sign (e=f4) |
109 |
28 |
89 |
RSA 3072 |
125 bits |
sign (e=3) |
35 |
9 |
33 |
sign (e=f4) |
35 |
15 |
32 |
RSA 4096 |
142 bits |
sign (e=3) |
15 |
6 |
9 |
sign (e=f4) |
15 |
6 |
9 |
RSA 6144 |
171 bits |
sign (e=3) |
4 |
2 |
3 |
sign (e=f4) |
4 |
2 |
3 |
RSA 8192 |
193 bits |
sign (e=3 ) |
2 |
1 |
2 |
sign (e=f4) |
2 |
1 |
1 |
ECDSA 256 |
128 bits |
sign |
N/A |
N/A |
546 |
ECDSA 384 |
192 bits |
sign |
N/A |
N/A |
233 |
ECDSA 521 |
260 bits |
sign |
N/A |
N/A |
113 |
* = cryptographic strength estimates according to RFC 3766 using www.keylength.com
Public Key Signature - Verification¶
Key type |
Strength |
Operations/s |
gmp |
gcrypt |
openssl |
RSA 512 |
50 bits |
verify (e=3) |
76'683 |
36'626 |
55'685 |
verify (e=f4) |
32'577 |
15'860 |
25'086 |
RSA 768 |
62 bits |
verify (e=3) |
52'707 |
31'167 |
37'112 |
verify (e=f4) |
17'375 |
10'054 |
15'034 |
RSA 1024 |
73 bits |
verify (e=3) |
37'826 |
25'688 |
28'879 |
verify (e=f4) |
11'402 |
6'640 |
10'380 |
RSA 1536 |
89 bits |
verify (e=3) |
22'143 |
18'505 |
10'393 |
verify (e=f4) |
5'892 |
3'770 |
3'686 |
RSA 2048 |
103 bits |
verify (e=3) |
14'175 |
8'307 |
11'625 |
verify (e=f4) |
3'481 |
1'423 |
3'535 |
RSA 3072 |
125 bits |
verify (e=3) |
7'207 |
4'930 |
5'654 |
verify (e=f4) |
1'729 |
1'150 |
1'857 |
RSA 4096 |
142 bits |
verify (e=3) |
5'887 |
4'960 |
2'263 |
verify (e=f4) |
1'049 |
684 |
672 |
RSA 6144 |
171 bits |
verify (e=3) |
3'171 |
2630 |
977 |
verify (e=f4) |
544 |
335 |
324 |
RSA 8192 |
193 bits |
verify (e=3) |
2'015 |
1638 |
839 |
verify (e=f4) |
334 |
194 |
181 |
ECDSA 256 |
128 bits |
verify |
N/A |
N/A |
459 |
ECDSA 384 |
192 bits |
verify |
N/A |
N/A |
196 |
ECDSA 521 |
260 bits |
verify |
N/A |
N/A |
94 |
Diffie-Hellman Key Exchange¶
DH group |
Strength |
Operations/s |
gmp |
gcrypt |
openssl |
gmp* |
gcrypt* |
openssl* |
MODP 768 |
62 bits |
A=g^a mod p |
468 |
293 |
371 |
1'271 |
866 |
1'060 |
S=B^a mod p |
489 |
205 |
393 |
1'418 |
618 |
1'101 |
MODP 1024 |
73 bits |
A=g^a mod p |
216 |
136 |
192 |
792 |
540 |
706 |
S=B^a mod p |
222 |
92 |
195 |
845 |
372 |
728 |
MODP 1536 |
89 bits |
A=g^a mod p |
71 |
46 |
70 |
395 |
279 |
379 |
S=B^a mod p |
71 |
31 |
71 |
409 |
188 |
382 |
MODP 2048 |
103 bits |
A=g^a mod p |
31 |
20 |
31 |
161 |
112 |
155 |
S=B^a mod p |
31 |
14 |
31 |
163 |
74 |
156 |
MODP 3072 |
125 bits |
A=g^a mod p |
10 |
6 |
11 |
77 |
55 |
81 |
S=B^a mod p |
10 |
4 |
11 |
77 |
36 |
80 |
MODP 4096 |
142 bits |
A=g^a mod p |
4 |
3 |
4 |
34 |
24 |
35 |
S=B^a mod p |
4 |
2 |
4 |
34 |
16 |
35 |
MODP 6144 |
171 bits |
A=g^a mod p |
1 |
1 |
1 |
17 |
11 |
17 |
S=B^a mod p |
1 |
0 |
1 |
17 |
7 |
17 |
MODP 8192 |
193 bits |
A=g^a mod p |
1 |
1 |
0 |
11 |
7 |
10 |
S=B^a mod p |
1 |
0 |
1 |
11 |
4 |
10 |
ECP 192 |
96 bits |
A=g^a mod p |
N/A |
N/A |
961 |
- |
S=B^a mod p |
N/A |
N/A |
950 |
ECP 224 |
112 bits |
A=g^a mod p |
N/A |
N/A |
724 |
S=B^a mod p |
N/A |
N/A |
716 |
ECP 256 |
128 bits |
A=g^a mod p |
N/A |
N/A |
577 |
S=B^a mod p |
N/A |
N/A |
564 |
ECP 384 |
192 bits |
A=g^a mod p |
N/A |
N/A |
243 |
S=B^a mod p |
N/A |
N/A |
239 |
ECP 521 |
260 bits |
A=g^a mod p |
N/A |
N/A |
117 |
S=B^a mod p |
N/A |
N/A |
116 |
* = using reduced exponent size (libstrongswan.dh_exponent_ansi_x9_42 = no) as recommended by RFC3526
64 bit, under VirtualBox, Core2Duo T9400 (one core):¶
Public Key Signature - Generation¶
Key type |
Strength* |
Operations/s |
gmp |
gcrypt |
openssl |
RSA 512 |
50 bits |
sign (e=3) |
12'715 |
3474 |
7'405 |
sign (e=f4) |
12'453 |
3463 |
4'471 |
RSA 768 |
62 bits |
sign (e=3) |
5'414 |
1234 |
2'371 |
sign (e=f4) |
5'617 |
1142 |
2'974 |
RSA 1024 |
73 bits |
sign (e=3) |
2'756 |
769 |
1'565 |
sign (e=f4) |
2'765 |
516 |
1'523 |
RSA 1536 |
89 bits |
sign (e=3) |
980 |
181 |
548 |
sign (e=f4) |
978 |
279 |
525 |
RSA 2048 |
103 bits |
sign (e=3) |
447 |
126 |
160 |
sign (e=f4) |
453 |
122 |
147 |
RSA 3072 |
125 bits |
sign (e=3) |
140 |
45 |
51 |
sign (e=f4) |
146 |
44 |
46 |
RSA 4096 |
142 bits |
sign (e=3) |
71 |
19 |
36 |
sign (e=f4) |
62 |
11 |
34 |
RSA 6144 |
171 bits |
sign (e=3) |
19 |
7 |
11 |
sign (e=f4) |
20 |
6 |
10 |
RSA 8192 |
193 bits |
sign (e=3) |
7 |
3 |
4 |
sign (e=f4) |
8 |
3 |
4 |
ECDSA 256 |
128 bits |
sign |
N/A |
N/A |
1'204 |
ECDSA 384 |
192 bits |
sign |
N/A |
N/A |
551 |
ECDSA 521 |
260 bits |
sign |
N/A |
N/A |
280 |
* = cryptographic strength estimates according to RFC 3766 using www.keylength.com
Public Key Signature - Verification¶
Key type |
Strength |
Operations/s |
gmp |
gcrypt |
openssl |
RSA 512 |
50 bits |
verify (e=3) |
131'663 |
50'944 |
86'962 |
verify (e=f4) |
85'975 |
25'927 |
34'702 |
RSA 768 |
62 bits |
verify (e=3) |
114'546 |
47'151 |
67'016 |
verify (e=f4) |
51'425 |
23'467 |
36'163 |
RSA 1024 |
73 bits |
verify (e=3) |
89'899 |
41'223 |
57'059 |
verify (e=f4) |
40'736 |
9'569 |
26'082 |
RSA 1536 |
89 bits |
verify (e=3) |
59'941 |
33'632 |
33'338 |
verify (e=f4) |
20'979 |
9'520 |
12'731 |
RSA 2048 |
103 bits |
verify (e=3) |
35'728 |
22'385 |
16'076 |
verify (e=f4) |
12'313 |
5'140 |
4'630 |
RSA 3072 |
125 bits |
verify (e=3) |
16'474 |
21'272 |
12'929 |
verify (e=f4) |
6'318 |
3'377 |
2'305 |
RSA 4096 |
142 bits |
verify (e=3) |
9'081 |
4'894 |
4'643 |
verify (e=f4) |
2'975 |
919 |
2'128 |
RSA 6144 |
171 bits |
verify (e=3) |
3'758 |
6'793 |
2'666 |
verify (e=f4) |
1'540 |
1'047 |
894 |
RSA 8192 |
193 bits |
verify (e=3) |
3'039 |
3'871 |
1'204 |
verify (e=f4) |
1'643 |
579 |
462 |
ECDSA 256 |
128 bits |
verify |
N/A |
N/A |
1'098 |
ECDSA 384 |
192 bits |
verify |
N/A |
N/A |
484 |
ECDSA 521 |
260 bits |
verify |
N/A |
N/A |
239 |
Diffie-Hellman Key Exchange¶
DH group |
Strength |
Operations/s |
gmp |
gcrypt |
openssl |
gmp* |
gcrypt* |
openssl* |
MODP 768 |
62 bits |
A=g^a mod p |
1'631 |
756 |
1'040 |
3'847 |
2'121 |
2'786 |
S=B^a mod p |
1'931 |
565 |
1'119 |
5'474 |
1792 |
3'300 |
MODP 1024 |
73 bits |
A=g^a mod p |
805 |
342 |
484 |
2'722 |
1'381 |
1'764 |
S=B^a mod p |
866 |
232 |
382 |
3'271 |
1037 |
1'993 |
MODP 1536 |
89 bits |
A=g^a mod p |
268 |
130 |
99 |
1'340 |
783 |
873 |
S=B^a mod p |
279 |
88 |
135 |
1'590 |
574 |
920 |
MODP 2048 |
103 bits |
A=g^a mod p |
121 |
56 |
70 |
592 |
320 |
343 |
S=B^a mod p |
123 |
38 |
50 |
634 |
216 |
366 |
MODP 3072 |
125 bits |
A=g^a mod p |
38 |
20 |
21 |
282 |
172 |
159 |
S=B^a mod p |
38 |
13 |
14 |
289 |
118 |
165 |
MODP 4096 |
142 bits |
A=g^a mod p |
16 |
6 |
8 |
125 |
75 |
70 |
S=B^a mod p |
16 |
4 |
9 |
126 |
49 |
67 |
MODP 6144 |
171 bits |
A=g^a mod p |
5 |
2 |
3 |
59 |
38 |
31 |
S=B^a mod p |
5 |
1 |
1 |
61 |
25 |
31 |
MODP 8192 |
193 bits |
A=g^a mod p |
2 |
1 |
0 |
34 |
22 |
17 |
S=B^a mod p |
2 |
0 |
1 |
39 |
14 |
18 |
ECP 192 |
96 bits |
A=g^a mod p |
N/A |
N/A |
988 |
- |
S=B^a mod p |
N/A |
N/A |
1'058 |
ECP 224 |
112 bits |
A=g^a mod p |
N/A |
N/A |
873 |
S=B^a mod p |
N/A |
N/A |
963 |
ECP 256 |
128 bits |
A=g^a mod p |
N/A |
N/A |
823 |
S=B^a mod p |
N/A |
N/A |
851 |
ECP 384 |
192 bits |
A=g^a mod p |
N/A |
N/A |
360 |
S=B^a mod p |
N/A |
N/A |
364 |
ECP 521 |
260 bits |
A=g^a mod p |
N/A |
N/A |
180 |
S=B^a mod p |
N/A |
N/A |
210 |
* = using reduced exponent size (libstrongswan.dh_exponent_ansi_x9_42 = no) as recommended by RFC3526