Paper 2024/860
HAWKEYE – Recovering Symmetric Cryptography From Hardware Circuits
Abstract
We present the first comprehensive approach for detecting and analyzing symmetric cryptographic primitives in gate-level descriptions of hardware. To capture both ASICs and FPGAs, we model the hardware as a directed graph, where gates become nodes and wires become edges. For modern chips, those graphs can easily consist of hundreds of thousands of nodes. More abstractly, we find subgraphs corresponding to cryptographic primitives in a potentially huge graph, the sea-of-gates, describing an entire chip. As we are particularly interested in unknown cryptographic algorithms, we cannot rely on searching for known parts such as S-boxes or round constants. Instead, we are looking for parts of the chip that perform highly local computations. A major result of our work is that many symmetric algorithms can be reliably located and sometimes even identified by our approach, which we call HAWKEYE. Our findings are verified by extensive experimental results, which involve SPN, ARX, Feistel, and LFSR-based ciphers implemented for both FPGAs and ASICs. We demonstrate the real-world applicability of HAWKEYE by evaluating it on OpenTitan's Earl Grey chip, an open-source secure micro-controller design. HAWKEYE locates all major cryptographic primitives present in the netlist comprising 424341 gates in 44.3 seconds.
Metadata
- Available format(s)
- Category
- Implementation
- Publication info
- Published by the IACR in CRYPTO 2024
- Keywords
- Hardware Reverse EngineeringSymmetric Cryptography
- Contact author(s)
-
gregor leander @ rub de
christof paar @ mpi-sp org
julian speith @ mpi-sp org
lukas stennes @ rub de - History
- 2024-06-05: approved
- 2024-05-31: received
- See all versions
- Short URL
- https://ia.cr/2024/860
- License
-
CC BY
BibTeX
@misc{cryptoeprint:2024/860, author = {Gregor Leander and Christof Paar and Julian Speith and Lukas Stennes}, title = {{HAWKEYE} – Recovering Symmetric Cryptography From Hardware Circuits}, howpublished = {Cryptology {ePrint} Archive, Paper 2024/860}, year = {2024}, url = {https://eprint.iacr.org/2024/860} }