Falcon — A Flexible Architecture For Accelerating Cryptography
Kevin Kiningham, Philip Levis, Mark Anderson, Dan Boneh, Mark Horowitz, and Maurice Shih
Published in Proceedings of the The 16th IEEE International Conference on Mobile Ad-Hoc and Smart Systems (MASS '19), November 2019.
Internet of Things (IoT) devices, once deployed, must remain secure for their entire lifetime, which can be as long as 20 years. Over this lifetime, devices must be able to update which ciphers they use to meet evolving security requirements. However, devices cannot rely on software updates for their cryptography because software implementations consume too much energy. At the same time, fixed function hardware accelerators such as an AES engine cannot support new ciphers. This paper presents Falcon, a hardware architecture for accelerating a broad range of cryptography on energy limited devices. Rather than accelerate a fixed set of current ciphers, Falcon provides a general execution engine that accelerates dominant and emerging ciphers, such as AES, Cha-Cha, SHA- 256, RSA, ECC with Curve25519, as well as post-quantum ciphers such as R-LWE. For cryptography, Falcon provides the flexibility of software while reducing the energy consumption of cryptography by 5-60x compared to software. This reduction makes it feasible for IoT applications to upgrade the ciphers they use after deployment, allowing them to keep up to date with security best practices without reducing their deployment lifetime or reducing the application workload. In an application monitoring the temperature of sensitive medical supplies in hospitals, Falcon doubles the deployment lifetime (2.2x).
Paper (368KB)
BibTeX entry
@inproceedings{kiningham19falcon, author = " Kevin Kiningham and Philip Levis and Mark Anderson and Dan Boneh and Mark Horowitz and Maurice Shih ", title = "{Falcon — A Flexible Architecture For Accelerating Cryptography}", booktitle = "{Proceedings of the The 16th IEEE International Conference on Mobile Ad-Hoc and Smart Systems (MASS '19)}", year = {2019}, month = {November} }