The following examples are chosen to show typical performances
for systems built using the CPKtec Toolkit, and have no additional
optimisation. Timings for the first five examples are given for a
700 MHz Pentium III. Timings for Example 6 are given for
a 80 MHz ARM7TDMI.
Examples 1, 2 and 3 include exactly the same functionality.
Example 1 is a small system optimised primarily for code size,
Example 3 is optimised
for performance, and Example 2 is a compromise between the two.
These systems are T3, T4 and T5 systems, using the T-number notation
of the Design Philosophy
page.
Example 4 is a T4 system including more functionality.
Example 5 gives ECC timings on a Pentium III for a variety
of Elliptic Curves. Example 6 gives timings on an ARM7TDMI for systems
performing RSA in a number of different performance/memory
trade-offs.
Example 1
Size-optimised system including RSA key generation,
RSA, Diffie-Hellman key exchange, DSA, AES, SHA-1, and random number
generator (RNG).
Sizes: Code size: 28.6 Kb,
Maximum stack usage: < 700 bytes,
Maximum heap usage: < 1800 bytes
|
|
|   |
| RSA-1024 key gen |
430 ms |
| RSA-1024 encrypt |
0.35 ms |
| RSA-1024 decrypt |
16.8 ms |
| DH-512 key exchange |
5.1 ms |
|
| DSA-512 sign |
3.0 ms |
| DSA-512 verify |
3.9 ms |
| AES-128 encrypt |
5.0 Mbyte/sec |
| AES-128 decrypt |
3.4 Mbyte/sec |
|
Example 2
Medium-sized system including
RSA key generation, RSA, Diffie-Hellman key exchange, DSA, AES,
SHA-1, and RNG.
Sizes: Code size: 31.7 Kb,
Maximum stack usage: < 700 bytes,
Maximum heap usage: < 1800 bytes
|
|
|   |
| RSA-1024 key gen |
380 ms |
| RSA-1024 encrypt |
0.32 ms |
| RSA-1024 decrypt |
12.2 ms |
| DH-512 key exchange |
3.2 ms |
|
| DSA-512 sign |
1.6 ms |
| DSA-512 verify |
3.6 ms |
| AES-128 encrypt |
6.5 Mbyte/sec |
| AES-128 decrypt |
4.5 Mbyte/sec |
|
Example 3
Performance-optimised system including
RSA key generation, RSA, Diffie-Hellman key exchange, DSA, AES,
SHA-1, and RNG.
Sizes: Code size: 47.6 Kb,
Maximum stack usage: < 700 bytes,
Maximum heap usage: < 2400 bytes
|
|
|   |
| RSA-1024 key gen |
255 ms |
| RSA-1024 encrypt |
0.12 ms |
| RSA-1024 decrypt |
6.8 ms |
| DH-512 key exchange |
1.6 ms |
|
| DSA-512 sign |
0.94 ms |
| DSA-512 verify |
1.9 ms |
| AES-128 encrypt |
9.1 Mbyte/sec |
| AES-128 decrypt |
7.5 Mbyte/sec |
|
A 2048-bit RSA decryption takes 40.6 ms on this system, with the
maximum heap usage increased to 6536 bytes.
Example 4
Medium-sized system including
RSA key generation, RSA, Diffie-Hellman key exchange, DSA,
ECDSA, ECDH,
AES, DES, 3DES, SHA-1, and RNG.
Sizes: Code size: 48.1 Kb,
Maximum stack usage: < 700 bytes,
Maximum heap usage: < 1800 bytes
|
|
|   |
| ECDSA-192 sign |
3.1 ms |
| ECDSA-192 verify |
8.6 ms |
| ECDSA-163 sign |
3.1 ms |
| ECDSA-163 verify |
7.0 ms |
|
| ECDH-192 key exchange |
3.8 ms |
| ECDH-163 key exchange |
6.0 ms |
| 3DES encrypt |
3.1 Mbyte/sec |
| 3DES decrypt |
2.9 Mbyte/sec |
|
Example 5
Timings for a speed-optimised system to perform ECC operations.
Timings are given for one private key operation (an
ECDSA verification) and for a range of Elliptic Curves.
|
|
|   |
| 192-bit char p |
4.9 ms |
| 224-bit char p |
6.2 ms |
| 256-bit char p |
9.5 ms |
| 384-bit char p |
19.0 ms |
| 521-bit char p |
27.1 ms |
|
| 163-bit char 2 |
5.9 ms |
| 233-bit char 2 |
11.6 ms |
| 283-bit char 2 |
18.7 ms |
| 409-bit char 2 |
41.0 ms |
| 571-bit char 2 |
96.1 ms |
|
Example 6
Examples of times for systems performing RSA on an 80MHz ARM7TDMI for a
variety of different trade-offs between performance and memory usage.
Timngs are for one 1024-bit RSA private key operation (RSA decryption).
|
|
|   |
|
|
| timing |
| 106 ms |
| 164 ms |
| 254 ms |
|