Memory encryption-decryption in embedded systems - Tan, Xuan Yi (2019)
Memory authentication is becoming more important in embedded systems as off chip memories are prone to security attacks. To maintain integrity of data in external memories, the data are hashed to provide a checksum, and memory integrity tree techniques are employed to verify the authenticity of the data. However, any changes made to the data inside a frequently accessed bank would require another round of memory authentication. The number of hashing required is related to the height of the tree which is (log2 N) + 1, where N is the number of nodes excluding the leaves nodes inside the tree. In embedded systems, this could result in large memory access overhead. This is undesirable as embedded systems often have tight performance constraints. In this project, Merkle tree will be implemented to obtain a single hash checksum and Secure Hashing Algorithm 3 that uses the concept of sponge construction with fixed length output of 256bits will be used to generate the hashing result. The proposed method exploits hardware-software co-design and is implemented on the DE2-115 Field Programmable Gate Array (FPGA) board with a NIOS II processor. The Keccak sponge construction and permutation is implemented as a hardware accelerator.