International Association for Cryptologic Research

International Association
for Cryptologic Research

Transactions on Cryptographic Hardware and Embedded Systems, Volume 2022

SoC Root Canal!:

Root Cause Analysis of Power Side-Channel Leakage in System-on-Chip Designs


README

RootCanal Artifact

This folder contains the artifact submission for RootCanal at CHES 2022.

Organization

Each example folder has the following structure:
- rtl/ folder contains the hardware design files
- synth/ folder contains the post-synthesis gate-level netlist and the gate to RTL mapping files
- sim/ folder contains the software source code, assembly file, binary file, testbench, test vectors, and the log of the program counter for each pipeline stage
- power/ folder has the mean power trace for the experiment
- aca/ folder contains the output result of the non-specific ACA for the experiment
- nga/ folder contains the scripts and outputs of netlist graph analysis

Steps

Step 1: Finding Leaky Time-Gate Tuples

The first step of RootCanal, will find the leaky time-gate tuples. This step includes synthesizing the design to generate the gate-level netlist, running gate-level simulation on the design, and simulating power consumption traces. ACA (https://arxiv.org/abs/2204.11972) is then used to find the leaky time-gate tuples.
This step of RootCanal is not open source.

Steps 2, 3: Finding Leaky Units and Instructions

nga/nga.py finds the leaky units and instructions.

Prerequisites:
To run the RootCanal on your design, the following files are required:

Setup:
To run NGA on your design, first the following scripts should be adjusted according to the design.
- nga/generate_graph.py: In the current form, this code can generate the graph from a gate-level netlist synthesized for SkyWater 130nm standard cell library and is used by nga/nga.py. Set the variable MAIN_MODULE to the name of the top-level module.

Run:
After setting the variables, on Ubuntu, run the following commands to install the required packages and run NGA:

sudo apt-get install python3 
pip3 install argparse networkx pyyaml tqdm 
python3 nga.py