Here are the results from my testing of the 75op/sec nFast device on
a Sun Ultra 2 (2x167Mhz, 500MB memory). What you see is the time to
generate 10 1024 bit keys, followed by the time to do 1000
encrypt-decrypt-compare operations on random plaintext. The compare
ensures we got the same thing we sent in, of course. The set of keys
used was rotated every pass, modulo 10, to eliminate possible cacheing
or skewed results based on the particular characteristics of one set of
keys.
Note that included in the times for the encrypt-decrypt-compare
operations is a call to Crypto_PRNG to generate 128 random bytes, each
iteration. Thus we can be fairly sure the numbers aren't skewed by the
particular characteristics of one plaintext block.
Average performance of the nFast was 27.27 encrypt-decrypt-compares
per second.
Average performance of SSLeay was 1.36 encrypt-decrypt-compares per
second.
The speed of key generation should vary widely, and did. The nFast was
obviously faster, but only by an average factor of 3.28.
Software RSA (no nFast, SSLeay):
Trial 1:
10 keys took 332 seconds.
1000 encrypt/decrypts took 730 seconds.
Trial 2:
10 keys took 236 seconds.
1000 encrypt/decrypts took 740 seconds.
Trial 3:
10 keys took 444 seconds.
1000 encrypt/decrypts took 735 seconds.
nFast RSA:
Trial 1:
10 keys took 81 seconds.
1000 encrypt/decrypts took 37 seconds.
Trial 2:
10 keys took 134 seconds.
1000 encrypt/decrypts took 36 seconds.
Trial 3:
10 keys took 94 seconds.
1000 encrypt/decrypts took 37 seconds.
Some data on simple nFast ops... all of these are 1024-bit keys,
random plaintext, with a 0 first bit, except the signatures. The
signatures are PKCS signatures (private encrypts) of a 20-byte
value. This obviously had no effect on the device, it was quite
consistent.
10000 encrypts took 64 seconds.
10000 decrypts took 307 seconds.
10000 signatures took 307 seconds.
i.e. 156.25 public ops/sec, and 32.57 private ops/sec.