comparison libtomcrypt/notes/tech0003.txt @ 391:00fcf5045160

propagate from branch 'au.asn.ucc.matt.ltc.dropbear' (head c1db4398d56c56c6d06ae1e20c1e0d04dbb598ed) to branch 'au.asn.ucc.matt.dropbear' (head d26d5eb2837f46b56a33fb0e7573aa0201abd4d5)
author Matt Johnston <matt@ucc.asn.au>
date Thu, 11 Jan 2007 04:29:08 +0000
parents 1b9e69c058d2
children 6dba84798cd5
comparison
equal deleted inserted replaced
390:d8e44bef7917 391:00fcf5045160
1 Tech Note 0003
2 Minimizing Memory Usage
3 Tom St Denis
4
5 Introduction
6 ------------
7
8 For the most part the library can get by with around 20KB of stack and about 32KB of heap even if you use the
9 public key functions. If all you plan on using are the hashes and ciphers than only about 1KB of stack is required
10 and no heap.
11
12 To save space all of the symmetric key scheduled keys are stored in a union called "symmetric_key". This means the
13 size of a symmetric_key is the size of the largest scheduled key. By removing the ciphers you don't use from
14 the build you can minimize the size of this structure. For instance, by removing both Twofish and Blowfish the
15 size reduces to 768 bytes from the 4,256 bytes it would have been (on a 32-bit platform). Or if you remove
16 Blowfish and use Twofish with TWOFISH_SMALL defined its still 768 bytes. Even at its largest the structure is only
17 4KB which is normally not a problem for any platform.
18
19
20 Cipher Name | Size of scheduled key (bytes) |
21 ------------+-------------------------------|
22 Twofish | 4,256 |
23 Blowfish | 4,168 |
24 3DES | 768 |
25 SAFER+ | 532 |
26 Serpent | 528 |
27 Rijndael | 516 |
28 XTEA | 256 |
29 RC2 | 256 |
30 DES | 256 |
31 SAFER [#] | 217 |
32 RC5 | 204 |
33 Twofish [*] | 193 |
34 RC6 | 176 |
35 CAST5 | 132 |
36 Noekeon | 32 |
37 Skipjack | 10 |
38 ------------+-------------------------------/
39 Memory used per cipher on a 32-bit platform.
40
41 [*] For Twofish with TWOFISH_SMALL defined
42 [#] For all 64-bit SAFER ciphers.
43
44 Noekeon is a fairly fast cipher and uses very little memory. Ideally in low-ram platforms all other ciphers should be
45 left undefined and Noekeon should remain. While Noekeon is generally considered a secure block cipher (it is insecure
46 as a hash) CAST5 is perhaps a "runner-up" choice. CAST5 has been around longer (it is also known as CAST-128) and is
47 fairly fast as well.
48
49 You can easily accomplish this via the "config.pl" script. Simply answer "n" to all of the ciphers except the one you want
50 and then rebuild the library. [or you can hand edit mycrypt_custom.h]
51
52