summaryrefslogtreecommitdiffhomepage
path: root/libtomcrypt/notes/tech0003.txt
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2006-03-21 16:20:59 +0000
committerMatt Johnston <matt@ucc.asn.au>2006-03-21 16:20:59 +0000
commitf7caf6f5c640cb1756c01184898f176438a3a0c2 (patch)
tree4d32de11b18d5f6296207961b5f25d0949af80c0 /libtomcrypt/notes/tech0003.txt
parente444f0cfe67c71d3f38854f27cefae9aea6c4cd9 (diff)
parent3f49fc5f2ca0ec4adb5cac081f502cbb86702efa (diff)
propagate from branch 'au.asn.ucc.matt.dropbear' (head 0501e6f661b5415eb76f3b312d183c3adfbfb712)
to branch 'au.asn.ucc.matt.dropbear.cli-agent' (head 01038174ec27245b51bd43a66c01ad930880f67b) --HG-- branch : agent-client extra : convert_revision : 12b2f59db65e7339d340e95ac67d6d9ddb193c2b
Diffstat (limited to 'libtomcrypt/notes/tech0003.txt')
-rw-r--r--libtomcrypt/notes/tech0003.txt52
1 files changed, 52 insertions, 0 deletions
diff --git a/libtomcrypt/notes/tech0003.txt b/libtomcrypt/notes/tech0003.txt
new file mode 100644
index 0000000..1a21867
--- /dev/null
+++ b/libtomcrypt/notes/tech0003.txt
@@ -0,0 +1,52 @@
+Tech Note 0003
+Minimizing Memory Usage
+Tom St Denis
+
+Introduction
+------------
+
+For the most part the library can get by with around 20KB of stack and about 32KB of heap even if you use the
+public key functions. If all you plan on using are the hashes and ciphers than only about 1KB of stack is required
+and no heap.
+
+To save space all of the symmetric key scheduled keys are stored in a union called "symmetric_key". This means the
+size of a symmetric_key is the size of the largest scheduled key. By removing the ciphers you don't use from
+the build you can minimize the size of this structure. For instance, by removing both Twofish and Blowfish the
+size reduces to 768 bytes from the 4,256 bytes it would have been (on a 32-bit platform). Or if you remove
+Blowfish and use Twofish with TWOFISH_SMALL defined its still 768 bytes. Even at its largest the structure is only
+4KB which is normally not a problem for any platform.
+
+
+Cipher Name | Size of scheduled key (bytes) |
+------------+-------------------------------|
+Twofish | 4,256 |
+Blowfish | 4,168 |
+3DES | 768 |
+SAFER+ | 532 |
+Serpent | 528 |
+Rijndael | 516 |
+XTEA | 256 |
+RC2 | 256 |
+DES | 256 |
+SAFER [#] | 217 |
+RC5 | 204 |
+Twofish [*] | 193 |
+RC6 | 176 |
+CAST5 | 132 |
+Noekeon | 32 |
+Skipjack | 10 |
+------------+-------------------------------/
+Memory used per cipher on a 32-bit platform.
+
+[*] For Twofish with TWOFISH_SMALL defined
+[#] For all 64-bit SAFER ciphers.
+
+Noekeon is a fairly fast cipher and uses very little memory. Ideally in low-ram platforms all other ciphers should be
+left undefined and Noekeon should remain. While Noekeon is generally considered a secure block cipher (it is insecure
+as a hash) CAST5 is perhaps a "runner-up" choice. CAST5 has been around longer (it is also known as CAST-128) and is
+fairly fast as well.
+
+You can easily accomplish this via the "config.pl" script. Simply answer "n" to all of the ciphers except the one you want
+and then rebuild the library. [or you can hand edit mycrypt_custom.h]
+
+