Reverse engineering of Integrated Circuits (IC's) is a complex process that involves multiple disciplines and skills. The input to the process is usually a physical device, and the output is a human-readable specification. At the first phase, the IC passes tear down to obtain a gate-level netlist description. In the second phase, a specification is extracted. The second stage is non-trivial and involves various learning algorithms and heuristics. The purpose of this project is evaluation of and adoption of HAL- a Hardware Analyzer by performing a reverse engineering project of an AES engine.

Background: Reverse engineering of Integrated Circuits (IC’s) is a complex process that involves multiple disciplines and skills. The input to the process is usually a physical device, and the output is a human-readable specification. At the first phase, the IC passes tear down to obtain a gate-level netlist description. In the second phase, a specification is extracted. The second stage is non-trivial and involves various learning algorithms and heuristics. A few tools that assist this process have been developed. One of them comes from Ruhr-Bochum University and University of Massachusetts and is called Hardware Analyzer (HAL). The purpose of this project is evaluation of and adoption of HAL by performing a series of reverse engineering projects.
Project Description: In this project, the students will install HAL and perform two tutorial projects that come with the tool. After getting familiar with the tool, the students will get to the next task, reverse engineering of an AES engine. The engine will be based on an open source AES implementation. The students will synthesize the source code and map it to a library. Next, the students will add a description of the library they used to HAL. Finally, the synthesized netlist will be reverse engineered using HAL. During the project, the students will learn chip design implementation tools, will acquire experience in coding in Python (HAL interface language) and will get familiar with the hardware reverse engineering tools and practices.
Prerequisites : Digital Systems and Computer Structure – 044252 , Lab 1, Basic acquaintance with Python