PHOTON-BEETLE is crypto method which has reached Round 2 of the NIST competition for light-weight cryptography. It uses a sponge authenticated encryption and sponge hash, and has a 256-bit permutation. It uses PHOTON256 at it core [article].
PHOTON-BEETLE (Light-weight hash) |
Outline
One of the great advantages of using a sponge method in cryptography is that you get the addition of hashing on top of encryption for very little overhead in the code size and the memory requirements. If we are using something like an 8-bit microcontroller, we might only have a few hundred bytes of ROM, and a similar space for RAM. The device on the left-hand side is an MC6811, and only has 8 KB of ROM and 256 bytes of on-chip RAM. We thus need efficient code for our encryption, as there needs to be space for the main application software, too.
One method which focuses on creating an extremely small footprint is the PHOTON-Beetle method. Overall it is a lightweight block cipher and was written by Zhenzhen Bao, Avik Chakraborti, Nilanjan Datta, Jian Guo, Mridul Nandi, Thomas Peyrin, and Kan Yasuda. It uses the sponge-based mode Beetle with the P256 for the permutation and supports both authenticated encryption (AE) and hashing. PHOTON-Beetle AEAD and PHOTON-Beetle hashing are finalists for NIST’s competition on lightweight cryptography.
The Beetle family of cryptography methods integrates a lightweight, sponge-based authenticated encryption. When this is linked with the PHOTON permutation (PHOTON_256), it achieves an extremely small footprint. In tests, a 64-bit security version of PHOTON-Beetle consumes less than 600 LUTs (LookUp Tables) on an FPGA, compared with 1,000 LUTs for COFB-AES (COmbined FeedBack-AES).
With PHOTON-Beetle can be optimized for either a low ROM environment (where the code needs to be compact) or is optimized speed. For PHOTON-Beetle AEAD, on 8-bit microcontrollers with low ROM sizes, the ROM code size is less than 2,200 bytes, and adding a hashing method on top of this, only adds another 300 bytes of ROM. The requirement for memory, too, is small and where it only requires 100 bytes of RAM. The average speed is around 8,200 cycles per byte for encryption. For the PHOTO-Beetle AEAD mode which focuses on speed, the ROM code size is less than 4,100 bytes, with hashing adding 300 bytes. The average speed is around 4,900 cycles per byte for encryption.
Coding
Sample test vectors are:
Msg = 00 MD = F165CCD18640B9703E96F1BD9A4A4EE32DD4031E4680A1B9890891DCC63468A7 Msg = 0001 MD = 2EF2D38F71E77928DF37FBA337872B639F7748556C1A081821B9B8460AC68FAC Msg = 000102 MD = F9A8C467209E7B5F32DB28BDE50D5210A81A9C6AA9C1686A05C3619CBF44061D Msg = 00010203 MD = EFAB98A1FFEB6F9E832DB6FA7FC6BFF670895F8A2ABE987CD962E93B0127EC3C