Project

General

Profile

Speed Comparison of Public Key Algorithms » History » Version 29

Andreas Steffen, 11.06.2009 06:56
removed second footnote

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