Randomization with GIMLI
GIMLI is a cross-platform method which produces a 384-bit permutation state with high levels of security. and has excellent performance across a range of 8-bit, 16-bit, 32-bit and 64-bit platforms [paper]. It has 24 rounds and uses simple EX-OR, AND, OR, and Cyclic shift operations. In the following we will generate a seed value, and which is used to create an initial state for GIMLI.
GIMLI is focused on producing a relatively large state size (384 bits) and is efficient for energy consumption and processor requirements. It is free from side channel attacks and has protection against short messages. A few other methods for permuations includes:
- Keccak provides a 1,600-bit permutation and is energy-efficient and has 24 rounds.
- Chaskey provides a 128-bit permutation for a 128-bit key and runs well on microcontrollers [link].
- Salsa20 and ChaCha20 provide a 512-bit permutation and is efficient on embedded systems.
A state in GIMLI is defined as 3×4 matrix of 32-bit words. A column j is defined with 96 bits, and row i by 128 bits. The algorithm used is: