|
DDZN

Due of growing demand for security on small embedded devices DoréDevelopment has developed a platform-independent security math module.
A number of functions in the minimal math module, called DDZn, can be used in security applications. DDZn offers calculations in Z/Zn to support a wide range of asynchronous encryption methods.
At a theoretical level, a number requirement have been prominent and indirectly resulted in a better design of the developed algorithms. The requirements have a background in the main goal that DDZn is to work effectively on a wide range of platforms and "almost" ANSI-C compilers. Generally, the following four requirements have been essential for DDZn:
- Endian independent design and implementation
- Flexible, but deterministic, memory allocation
- Processor architecture setup for 8, 16 and 32 bit
- Platform dependent additions and extensions to DDZn
The above requirements result in the following subsequent restrictions on the design and development of DDZn:
- Memory management - a series of small platforms and compilers are not born with a memory management module, hence dynamic memory allocation is not used in DDZn. This is also consistent with the fact that it is often decided to allocate all memory at boot time on small platforms, and therefore memory for DDZn is preallokeret on an overall level.
- Point to point - is unfortunately excluded a small number of compilers and therefore point to point is avoided in DDZn. Pointer to structures with pointer is used as it is normally supported by most basic ANSI-C compilers.
- Basic calculation types - are interchangeable, as 8-bit, 16-bit and 32-bit platforms are working most effectively on integers of specific bit length. Eg. work in 32-bit integers on a 8-bit platform contains a large calculation overhead in relation to work directly on 8-bit integers.
- Memory limitation - small platforms, like smartcards, have limited RAM and all algorithms are developed with as limited use of provisional Z/Zn integers as possible. Therefore, the reuse of memory is very important and is considered more important than calculation speed in DDZn. (Extensive use of memory is more often a show-stopping than computation speed.)
DDZn are tested and used on a variety of platforms, from AVR over ARM to Pentim based systems. Eg. a POS-terminal is running 2048-bit RSA public and private key calculations on ARM7 with a total memory consumption below 12K bytes for both code and data, whereof data incl. stack uses less than 5K bytes.
|