# Software

## Constraint programming to search for PLL-TRNG parameters

Repository

This program uses constraint programming to find the M, N and C coefficients of the two PLLs used in a PLL-TRNG (true random number generator based on phase-locked loops).

## Fast and incremental Correlation Power Analysis

Repository

Python script performing a first or second-order CPA. Intermediate correlation values can be obtained to plot the successive rank values for the correct key hypothesis.

## Pre-processing of side-channel traces

Repository

Set of scripts that maniulate/process traces obtained by side-channel measurements. The Numpy .npy format is used.

## AIS-31 statistical tests

Repository

Python implementation of AIS-31 statistical tests T0 to T8. These tests are used for offline evaluation of true random number generators.

## Logic masking with centrality indicators

Repository

Implementation of a method based on centrality indicators to select the nodes to modify by logic masking. Logic masking inserts XOR/XNOR gates to controllably alter the outputs of an IP core.

## CASCADE key reconciliation protocol

Repository

Python implementation of the CASCADE key reconciliation protocol.

## Combinational netlists parsing

Repository

In order to modify the combinational netlists, Théo Basty did an internship in our team to develop several parsers. The final result is an igraph graph object. So far it handles the following netlist formats:

- bench: ISCAS’85 and ITC’99 netlists format
- BLIF: Berkeley Logic Interchange Format
- SLIF: Stanford Logic Interchange Format
- EDIF: Electronic Design Interchange Format
- VHDL (dataflow and structural)
- Verilog (dataflow and structural)
- Xilinx EDIF: Netlist mapped to Xilinx LUTs

## Combinational logic locking

Repository

Implementation of the logic locking method which inserts AND/OR gates to controllably lock the outputs of an IP core.

Built with Pandoc, hosted on Netlify, last modified: 09/2023