Project

General

Profile

Speed Comparison of Public Key Algorithms » History » Version 19

Andreas Steffen, 10.06.2009 18:58
added TOC

1 19 Andreas Steffen
{{>toc}}
2 1 Martin Willi
3 19 Andreas Steffen
h1. Speed Comparison of Public Key Algorithms
4 1 Martin Willi
5 19 Andreas Steffen
h2. 32 bit, native on a Core2Duo T9400 (one core)
6 19 Andreas Steffen
7 13 Martin Willi
h3. Public Key Signature
8 13 Martin Willi
9 16 Andreas Steffen
|_.Key type|_.Strength*|_.Operations/s|_.gmp   |_.gcrypt|_.openssl|
10 16 Andreas Steffen
|RSA 512   |>.50 bits  |sign (e=3)    |>.3'708 |>.1'814 |>.2'286  |
11 16 Andreas Steffen
|RSA 512   |>.50 bits  |sign (e=f4)   |>.3'946 |>.1'780 |>.2'150  |
12 16 Andreas Steffen
|RSA 768   |>.62 bits  |sign (e=3)    |>.1'483 |>.625   |>.521    |
13 16 Andreas Steffen
|RSA 768   |>.62 bits  |sign (e=f4)   |>.1'486 |>.626   |>.783    |
14 16 Andreas Steffen
|RSA 1024  |>.73 bits  |sign (e=3)    |>.724   |>.301   |>.488    |
15 16 Andreas Steffen
|RSA 1024  |>.73 bits  |sign (e=f4)   |>.722   |>.285   |>.475    |
16 16 Andreas Steffen
|RSA 1536  |>.89 bits  |sign (e=3)    |>.242   |>.99    |>.117    |
17 16 Andreas Steffen
|RSA 1536  |>.89 bits  |sign (e=f4)   |>.243   |>.98    |>.111    |
18 16 Andreas Steffen
|RSA 2048  |>.103 bits |sign (e=3)    |>.110   |>.30    |>.80     |
19 16 Andreas Steffen
|RSA 2048  |>.103 bits |sign (e=f4)   |>.109   |>.28    |>.89     |
20 16 Andreas Steffen
|RSA 3072  |>.125 bits |sign (e=3)    |>.35    |>.9     |>.33     |
21 16 Andreas Steffen
|RSA 3072  |>.125 bits |sign (e=f4)   |>.35    |>.15    |>.32     |
22 16 Andreas Steffen
|RSA 4096  |>.142 bits |sign (e=3)    |>.15    |>.6     |>.9      |
23 16 Andreas Steffen
|RSA 4096  |>.142 bits |sign (e=f4)   |>.15    |>.6     |>.9      |
24 16 Andreas Steffen
|RSA 6144  |>.171 bits |sign (e=3)    |>.4     |>.2     |>.3      |
25 16 Andreas Steffen
|RSA 6144  |>.171 bits |sign (e=f4)   |>.4     |>.2     |>.3      |
26 16 Andreas Steffen
|RSA 8192  |>.193 bits |sign (e=3 )   |>.2     |>.1     |>.2      |
27 16 Andreas Steffen
|RSA 8192  |>.193 bits |sign (e=f4)   |>.2     |>.1     |>.1      |
28 16 Andreas Steffen
|ECDSA 256 |>.128 bits |sign          |=._N/A_ |=._N/A_ |>.546    |
29 16 Andreas Steffen
|ECDSA 384 |>.192 bits |sign          |=._N/A_ |=._N/A_ |>.233    |
30 16 Andreas Steffen
|ECDSA 521 |>.260 bits |sign          |=._N/A_ |=._N/A_ |>.113    |
31 16 Andreas Steffen
|RSA 512   |>.50 bits  |verify (e=3)  |>.76'683|>.36'626|>.55'685 |
32 16 Andreas Steffen
|RSA 512   |>.50 bits  |verify (e=f4) |>.32'577|>.15'860|>.25'086 |
33 16 Andreas Steffen
|RSA 768   |>.62 bits  |verify (e=3)  |>.52'707|>.31'167|>.37'112 |
34 16 Andreas Steffen
|RSA 768   |>.62 bits  |verify (e=f4) |>.17'375|>.10'054|>.15'034 |
35 16 Andreas Steffen
|RSA 1024  |>.73 bits  |verify (e=3)  |>.37'826|>.25'688|>.28'879 |
36 16 Andreas Steffen
|RSA 1024  |>.73 bits  |verify (e=f4) |>.11'402|>.6'640 |>.10'380 |
37 16 Andreas Steffen
|RSA 1536  |>.89 bits  |verify (e=3)  |>.22'143|>.18'505|>.10'393 |
38 16 Andreas Steffen
|RSA 1536  |>.89 bits  |verify (e=f4) |>.5'892 |>.3'770 |>.3'686  |
39 16 Andreas Steffen
|RSA 2048  |>.103 bits |verify (e=3)  |>.14'175|>.8'307 |>.11'625 |
40 16 Andreas Steffen
|RSA 2048  |>.103 bits |verify (e=f4) |>.3'481 |>.1'423 |>.3'535  |
41 16 Andreas Steffen
|RSA 3072  |>.125 bits |verify (e=3)  |>.7'207 |>.4'930 |>.5'654  |
42 16 Andreas Steffen
|RSA 3072  |>.125 bits |verify (e=f4) |>.1'729 |>.1'150 |>.1'857  |
43 16 Andreas Steffen
|RSA 4096  |>.142 bits |verify (e=3)  |>.5'887 |>.4'960 |>.2'263  |
44 16 Andreas Steffen
|RSA 4096  |>.142 bits |verify (e=f4) |>.1'049 |>.684   |>.672    |
45 16 Andreas Steffen
|RSA 6144  |>.171 bits |verify (e=3)  |>.3'171 |>.2630  |>.977    |
46 16 Andreas Steffen
|RSA 6144  |>.171 bits |verify (e=f4) |>.544   |>.335   |>.324    |
47 16 Andreas Steffen
|RSA 8192  |>.193 bits |verify (e=3)  |>.2'015 |>.1638  |>.839    |
48 16 Andreas Steffen
|RSA 8192  |>.193 bits |verify (e=f4) |>.334   |>.194   |>.181    |
49 16 Andreas Steffen
|ECDSA 256 |>.128 bits |verify        |=._N/A_ |=._N/A_ |>.459    |
50 16 Andreas Steffen
|ECDSA 384 |>.192 bits |verify        |=._N/A_ |=._N/A_ |>.196    |
51 16 Andreas Steffen
|ECDSA 521 |>.260 bits |verify        |=._N/A_ |=._N/A_ |>.94     |
52 13 Martin Willi
53 13 Martin Willi
_* = cryptographic strength estimates according to_ "RFC 3766":http://tools.ietf.org/html/rfc3766 _using_ "www.keylength.com":http://www.keylength.com
54 13 Martin Willi
55 11 Martin Willi
h3. Diffie-Hellman Key Exchange
56 11 Martin Willi
57 15 Martin Willi
|_.DH group|_.Strength|_.Operations/s|_.gmp  |_.gcrypt|_.openssl |_.gmp* |_.gcrypt*|_.openssl*|
58 15 Martin Willi
|MODP 768  |>.62 bits |A=g^a mod p   |>.468  |>.293   |>.371     |>.1'271|>.866    |>.1'060   |
59 15 Martin Willi
|MODP 1024 |>.73 bits |A=g^a mod p   |>.216  |>.136   |>.192     |>.792  |>.540    |>.706     |
60 15 Martin Willi
|MODP 1536 |>.89 bits |A=g^a mod p   |>.71   |>.46    |>.70      |>.395  |>.279    |>.379     |
61 15 Martin Willi
|MODP 2048 |>.103 bits|A=g^a mod p   |>.31   |>.20    |>.31      |>.161  |>.112    |>.155     |
62 15 Martin Willi
|MODP 3072 |>.125 bits|A=g^a mod p   |>.10   |>.6     |>.11      |>.77   |>.55     |>.81      |
63 15 Martin Willi
|MODP 4096 |>.142 bits|A=g^a mod p   |>.4    |>.3     |>.4       |>.34   |>.24     |>.35      |
64 15 Martin Willi
|MODP 6144 |>.171 bits|A=g^a mod p   |>.1    |>.1     |>.1       |>.17   |>.11     |>.17      |
65 15 Martin Willi
|MODP 8096 |>.193 bits|A=g^a mod p   |>.1    |>.1     |>.0       |>.11   |>.7      |>.10      |
66 15 Martin Willi
|ECP 192   |>.96 bits |A=g^a mod p   |=._N/A_|=._N/A_ |>.961     |=.-    |=.-      |=.-       |
67 15 Martin Willi
|ECP 224   |>.112 bits|A=g^a mod p   |=._N/A_|=._N/A_ |>.724     |=.-    |=.-      |=.-       |
68 15 Martin Willi
|ECP 256   |>.128 bits|A=g^a mod p   |=._N/A_|=._N/A_ |>.577     |=.-    |=.-      |=.-       |
69 15 Martin Willi
|ECP 384   |>.192 bits|A=g^a mod p   |=._N/A_|=._N/A_ |>.243     |=.-    |=.-      |=.-       |
70 15 Martin Willi
|ECP 521   |>.260 bits|A=g^a mod p   |=._N/A_|=._N/A_ |>.117     |=.-    |=.-      |=.-       |
71 15 Martin Willi
|MODP 768  |>.62 bits |S=B^a mod p   |>.489  |>.205   |>.393     |>.1'418|>.618    |>.1'101   |
72 15 Martin Willi
|MODP 1024 |>.73 bits |S=B^a mod p   |>.222  |>.92    |>.195     |>.845  |>.372    |>.728     |
73 15 Martin Willi
|MODP 1536 |>.89 bits |S=B^a mod p   |>.71   |>.31    |>.71      |>.409  |>.188    |>.382     |
74 15 Martin Willi
|MODP 2048 |>.103 bits|S=B^a mod p   |>.31   |>.14    |>.31      |>.163  |>.74     |>.156     |
75 15 Martin Willi
|MODP 3072 |>.125 bits|S=B^a mod p   |>.10   |>.4     |>.11      |>.77   |>.36     |>.80      |
76 15 Martin Willi
|MODP 4096 |>.142 bits|S=B^a mod p   |>.4    |>.2     |>.4       |>.34   |>.16     |>.35      |
77 15 Martin Willi
|MODP 6144 |>.171 bits|S=B^a mod p   |>.1    |>.0     |>.1       |>.17   |>.7      |>.17      |
78 15 Martin Willi
|MODP 8096 |>.193 bits|S=B^a mod p   |>.1    |>.0     |>.1       |>.11   |>.4      |>.10      |
79 15 Martin Willi
|ECP 192   |>.96 bits |S=B^a mod p   |=._N/A_|=._N/A_ |>.950     |=.-    |=.-      |=.-       |
80 15 Martin Willi
|ECP 224   |>.112 bits|S=B^a mod p   |=._N/A_|=._N/A_ |>.716     |=.-    |=.-      |=.-       |
81 15 Martin Willi
|ECP 256   |>.128 bits|S=B^a mod p   |=._N/A_|=._N/A_ |>.564     |=.-    |=.-      |=.-       |
82 15 Martin Willi
|ECP 384   |>.192 bits|S=B^a mod p   |=._N/A_|=._N/A_ |>.239     |=.-    |=.-      |=.-       |
83 11 Martin Willi
|ECP 521   |>.260 bits|S=B^a mod p   |=._N/A_|=._N/A_ |>.116     |=.-    |=.-      |=.-       |
84 1 Martin Willi
85 11 Martin Willi
_* = using reduced exponent size (libstrongswan.dh_exponent_ansi_x9_42 = no) as recommended by_ "RFC3526":http://tools.ietf.org/html/rfc3526#section-8
86 11 Martin Willi
87 19 Andreas Steffen
h2. 64 bit, under VirtualBox, Core2Duo T9400 (one core):
88 4 Martin Willi
89 7 Andreas Steffen
h3. Public Key Signature
90 5 Andreas Steffen
91 18 Andreas Steffen
|_.Key type|_.Strength*|_.Operations/s|_.gmp    |_.gcrypt|_.openssl|
92 18 Andreas Steffen
|RSA 512   |>.50 bits  |sign (e=3)    |>.12'715 |>.3474  |>.7'405  |
93 18 Andreas Steffen
|RSA 512   |>.50 bits  |sign (e=f4)   |>.12'453 |>.3463  |>.4'471  |
94 18 Andreas Steffen
|RSA 768   |>.62 bits  |sign (e=3)    |>.5'414  |>.1234  |>.2'371  |
95 18 Andreas Steffen
|RSA 768   |>.62 bits  |sign (e=f4)   |>.5'617  |>.1142  |>.2'974  |
96 18 Andreas Steffen
|RSA 1024  |>.73 bits  |sign (e=3)    |>.2'756  |>.769   |>.1'565  |
97 18 Andreas Steffen
|RSA 1024  |>.73 bits  |sign (e=f4)   |>.2'765  |>.516   |>.1'523  |
98 18 Andreas Steffen
|RSA 1536  |>.89 bits  |sign (e=3)    |>.980    |>.181   |>.548    |
99 18 Andreas Steffen
|RSA 1536  |>.89 bits  |sign (e=f4)   |>.978    |>.279   |>.525    |
100 18 Andreas Steffen
|RSA 2048  |>.103 bits |sign (e=3)    |>.447    |>.126   |>.160    |
101 18 Andreas Steffen
|RSA 2048  |>.103 bits |sign (e=f4)   |>.453    |>.122   |>.147    |
102 18 Andreas Steffen
|RSA 3072  |>.125 bits |sign (e=3)    |>.140    |>.45    |>.51     |
103 18 Andreas Steffen
|RSA 3072  |>.125 bits |sign (e=f4)   |>.146    |>.44    |>.46     |
104 18 Andreas Steffen
|RSA 4096  |>.142 bits |sign (e=3)    |>.71     |>.19    |>.36     |
105 18 Andreas Steffen
|RSA 4096  |>.142 bits |sign (e=f4)   |>.62     |>.11    |>.34     |
106 18 Andreas Steffen
|RSA 6144  |>.171 bits |sign (e=3)    |>.19     |>.7     |>.11     |
107 18 Andreas Steffen
|RSA 6144  |>.171 bits |sign (e=f4)   |>.20     |>.6     |>.10     |
108 18 Andreas Steffen
|RSA 8192  |>.193 bits |sign (e=3)    |>.7      |>.3     |>.4      |
109 18 Andreas Steffen
|RSA 8192  |>.193 bits |sign (e=f4)   |>.8      |>.3     |>.4      |
110 18 Andreas Steffen
|ECDSA 256 |>.128 bits |sign          |=._N/A_  |=._N/A_ |>.1'204  |
111 18 Andreas Steffen
|ECDSA 384 |>.192 bits |sign          |=._N/A_  |=._N/A_ |>.551    |
112 18 Andreas Steffen
|ECDSA 521 |>.260 bits |sign          |=._N/A_  |=._N/A_ |>.280    |
113 18 Andreas Steffen
|RSA 512   |>.50 bits  |verify (e=3)  |>.131'663|>.50'944|>.86'962 |
114 18 Andreas Steffen
|RSA 512   |>.50 bits  |verify (e=f4) |>.85'975 |>.25'927|>.34'702 |
115 18 Andreas Steffen
|RSA 768   |>.62 bits  |verify (e=3)  |>.114'546|>.47'151|>.67'016 |
116 18 Andreas Steffen
|RSA 768   |>.62 bits  |verify (e=f4) |>.51'425 |>.23'467|>.36'163 |
117 18 Andreas Steffen
|RSA 1024  |>.73 bits  |verify (e=3)  |>.89'899 |>.41'223|>.57'059 |
118 18 Andreas Steffen
|RSA 1024  |>.73 bits  |verify (e=f4) |>.40'736 |>.9'569 |>.26'082 |
119 18 Andreas Steffen
|RSA 1536  |>.89 bits  |verify (e=3)  |>.59'941 |>.33'632|>.33'338 |
120 18 Andreas Steffen
|RSA 1536  |>.89 bits  |verify (e=f4) |>.20'979 |>.9'520 |>.12'731 |
121 18 Andreas Steffen
|RSA 2048  |>.103 bits |verify (e=3)  |>.35'728 |>.22'385|>.16'076 |
122 18 Andreas Steffen
|RSA 2048  |>.103 bits |verify (e=f4) |>.12'313 |>.5'140 |>.4'630  |
123 18 Andreas Steffen
|RSA 3072  |>.125 bits |verify (e=3)  |>.16'474 |>.21'272|>.12'929 |
124 18 Andreas Steffen
|RSA 3072  |>.125 bits |verify (e=f4) |>.6'318  |>.3'377 |>.2'305  |
125 18 Andreas Steffen
|RSA 4096  |>.142 bits |verify (e=3)  |>.9'081  |>.4'894 |>.4'643  |
126 18 Andreas Steffen
|RSA 4096  |>.142 bits |verify (e=f4) |>.2'975  |>.919   |>.2'128  |
127 18 Andreas Steffen
|RSA 6144  |>.171 bits |verify (e=3)  |>.3'758  |>.6'793 |>.2'666  |
128 18 Andreas Steffen
|RSA 6144  |>.171 bits |verify (e=f4) |>.1'540  |>.1'047 |>.894    |
129 18 Andreas Steffen
|RSA 8192  |>.193 bits |verify (e=3)  |>.3'039  |>.3'871 |>.1'204  |
130 18 Andreas Steffen
|RSA 8192  |>.193 bits |verify (e=f4) |>.1'643  |>.579   |>.462    |
131 18 Andreas Steffen
|ECDSA 256 |>.128 bits |verify        |=._N/A_  |=._N/A_ |>.1'098  |
132 18 Andreas Steffen
|ECDSA 384 |>.192 bits |verify        |=._N/A_  |=._N/A_ |>.484    |
133 18 Andreas Steffen
|ECDSA 521 |>.260 bits |verify        |=._N/A_  |=._N/A_ |>.239    |
134 7 Andreas Steffen
135 7 Andreas Steffen
_* = cryptographic strength estimates according to_ "RFC 3766":http://tools.ietf.org/html/rfc3766 _using_ "www.keylength.com":http://www.keylength.com
136 7 Andreas Steffen
137 7 Andreas Steffen
h3. Diffie-Hellman Key Exchange
138 7 Andreas Steffen
139 17 Martin Willi
140 17 Martin Willi
|_.DH group|_.Strength|_.Operations/s|_.gmp  |_.gcrypt|_.openssl|_.gmp* |_.gcrypt*|_.openssl*|
141 17 Martin Willi
|MODP 768  |>.62 bits |A=g^a mod p   |>.1'631|>.756   |>.1'040  |>.3'847|>.2'121  |>.2'786   |
142 17 Martin Willi
|MODP 1024 |>.73 bits |A=g^a mod p   |>.805  |>.342   |>.484    |>.2'722|>.1'381  |>.1'764   |
143 17 Martin Willi
|MODP 1536 |>.89 bits |A=g^a mod p   |>.268  |>.130   |>.99     |>.1'340|>.783    |>.873     |
144 17 Martin Willi
|MODP 2048 |>.103 bits|A=g^a mod p   |>.121  |>.56    |>.70     |>.592  |>.320    |>.343     |
145 17 Martin Willi
|MODP 3072 |>.125 bits|A=g^a mod p   |>.38   |>.20    |>.21     |>.282  |>.172    |>.159     |
146 17 Martin Willi
|MODP 4096 |>.142 bits|A=g^a mod p   |>.16   |>.6     |>.8      |>.125  |>.75     |>.70      |
147 17 Martin Willi
|MODP 6144 |>.171 bits|A=g^a mod p   |>.5    |>.2     |>.3      |>.59   |>.38     |>.31      |
148 17 Martin Willi
|MODP 8096 |>.193 bits|A=g^a mod p   |>.2    |>.1     |>.0      |>.34   |>.22     |>.17      |
149 17 Martin Willi
|ECP 192   |>.96 bits |A=g^a mod p   |=._N/A_|=._N/A_ |>.988    |=.-    |=.-      |=.-       |
150 17 Martin Willi
|ECP 224   |>.112 bits|A=g^a mod p   |=._N/A_|=._N/A_ |>.873    |=.-    |=.-      |=.-       |
151 17 Martin Willi
|ECP 256   |>.128 bits|A=g^a mod p   |=._N/A_|=._N/A_ |>.823    |=.-    |=.-      |=.-       |
152 17 Martin Willi
|ECP 384   |>.192 bits|A=g^a mod p   |=._N/A_|=._N/A_ |>.360    |=.-    |=.-      |=.-       |
153 17 Martin Willi
|ECP 521   |>.260 bits|A=g^a mod p   |=._N/A_|=._N/A_ |>.180    |=.-    |=.-      |=.-       |
154 17 Martin Willi
|MODP 768  |>.62 bits |S=B^a mod p   |>.1'931|>.565   |>.1'119  |>.5'474|>.1792   |>.3'300   |
155 17 Martin Willi
|MODP 1024 |>.73 bits |S=B^a mod p   |>.866  |>.232   |>.382    |>.3'271|>.1037   |>.1'993   |
156 17 Martin Willi
|MODP 1536 |>.89 bits |S=B^a mod p   |>.279  |>.88    |>.135    |>.1'590|>.574    |>.920     |
157 17 Martin Willi
|MODP 2048 |>.103 bits|S=B^a mod p   |>.123  |>.38    |>.50     |>.634  |>.216    |>.366     |
158 17 Martin Willi
|MODP 3072 |>.125 bits|S=B^a mod p   |>.38   |>.13    |>.14     |>.289  |>.118    |>.165     |
159 17 Martin Willi
|MODP 4096 |>.142 bits|S=B^a mod p   |>.16   |>.4     |>.9      |>.126  |>.49     |>.67      |
160 17 Martin Willi
|MODP 6144 |>.171 bits|S=B^a mod p   |>.5    |>.1     |>.1      |>.61   |>.25     |>.31      |
161 17 Martin Willi
|MODP 8096 |>.193 bits|S=B^a mod p   |>.2    |>.0     |>.1      |>.39   |>.14     |>.18      |
162 17 Martin Willi
|ECP 192   |>.96 bits |S=B^a mod p   |=._N/A_|=._N/A_ |>.1'058  |=.-    |=.-      |=.-       |
163 17 Martin Willi
|ECP 224   |>.112 bits|S=B^a mod p   |=._N/A_|=._N/A_ |>.963    |=.-    |=.-      |=.-       |
164 17 Martin Willi
|ECP 256   |>.128 bits|S=B^a mod p   |=._N/A_|=._N/A_ |>.851    |=.-    |=.-      |=.-       |
165 17 Martin Willi
|ECP 384   |>.192 bits|S=B^a mod p   |=._N/A_|=._N/A_ |>.364    |=.-    |=.-      |=.-       |
166 17 Martin Willi
|ECP 521   |>.260 bits|S=B^a mod p   |=._N/A_|=._N/A_ |>.210    |=.-    |=.-      |=.-       |
167 1 Martin Willi
168 1 Martin Willi
_* = using reduced exponent size (libstrongswan.dh_exponent_ansi_x9_42 = no) as recommended by_ "RFC3526":http://tools.ietf.org/html/rfc3526#section-8