diff --git a/doc/crypto.dox b/doc/crypto.dox index a95d2375..ccc5fb27 100644 --- a/doc/crypto.dox +++ b/doc/crypto.dox @@ -34,6 +34,8 @@ All cryptographic algorithms have been optimized for 8-bit Arduino platforms like the Uno. Memory usage is also reduced, particularly for SHA1 and SHA256 which save 256 and 192 bytes respectively over traditional implementations. +For other algorithms, static sbox tables and the like are placed into +program memory to further reduce data memory usage. ChaCha with 20 rounds and 256-bit keys is the recommended symmetric encryption algorithm because it is twice as fast as AES128, @@ -51,15 +53,15 @@ All figures are for the Arduino Uno running at 16 MHz:
Algorithm | Encryption / Hashing (per byte) | Decryption (per byte) | Key Setup | State Size (bytes) |
AES128 (ECB mode) | 32.27us | 65.85us | 158.74us | 208 |
AES192 (ECB mode) | 43.44us | 79.59us | 165.53us | 240 |
AES256 (ECB mode) | 50.62us | 92.34us | 225.58us | 272 |
AES128 (ECB mode) | 36.90us | 66.48us | 160.00us | 208 |
AES192 (ECB mode) | 44.20us | 80.35us | 166.54us | 240 |
AES256 (ECB mode) | 51.50us | 94.22us | 227.97us | 272 |
Arcfour | 2.98us | 2.98us | 601.34us | 258 |
ChaCha (20 rounds) | 14.87us | 14.88us | 39.88us | 130 |
ChaCha (12 rounds) | 10.38us | 10.38us | 39.88us | 130 |
ChaCha (8 rounds) | 8.13us | 8.14us | 39.88us | 130 |
ChaCha (20 rounds) | 14.87us | 14.88us | 43.74us | 130 |
ChaCha (12 rounds) | 10.38us | 10.38us | 43.74us | 130 |
ChaCha (8 rounds) | 8.13us | 8.14us | 43.74us | 130 |
SHA1 | 21.90us | 94 | ||
SHA256 | 42.89us | 106 | ||
SHA256 | 43.85us | 106 |