adjoining-gate
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.5%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: twojtal
- License: other
- Language: C
- Default Branch: main
- Size: 46.9 MB
Statistics
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
Adjoining Gate System:
The Adjoining Gate system is an open-source set of functions for implementing an optical side-channel attack prevention measure as an extention to logic locking. Leakage scanning functions rely on the open-source EOFM-based attack created by Zuzak et al. from "A Combined Logical and Physical Attack on Logic Obfuscation". A detailed overview of Adjoining Gate development, implementation, and functionality can be found in the paper titled:
Adjoining Gates: Mitigating Optical Side-Channel Attacks on Integrated Circuits through Security-Aware Placement Author: Thomas Wojtal
This code is built on the Berkely ABC tool, which can be found at (https://people.eecs.berkeley.edu/~alanmi/abc/).
Compiling:
To compile, clone this repo and then type make.
Compiling as C or C++
The current version of ABC can be compiled with C compiler or C++ compiler.
- To compile as C code (default): make sure that
CC=gccandABC_NAMESPACEis not defined. - To compile as C++ code without namespaces: make sure that
CC=g++andABC_NAMESPACEis not defined. - To compile as C++ code with namespaces: make sure that
CC=g++andABC_NAMESPACEis set to the name of the requested namespace. For example, add-DABC_NAMESPACE=xxxto OPTFLAGS.
Running the Program:
The program is run within the ABC synthesis tool. After successfully compiling abc, Adjoining Gate functions can be run from the abc command line. To do so:
- Launch the abc command line tool
./abc
- Read in an obfuscated benchmark circuit. Several have been provided in the probing_benchmarks directory of this repo.
read_bench <BENCHMARK_NAME>
- Group the circuit into Adjacency Tags.
abc 01> bfs -g <group_size>
- Launch the leakage scan on this benchmark. The usage notes for the command is shown below:
abc 01> scan -g -a
usage: scan [-apgkclovrh]
The physical portion of the CLAP attack in ABC.
-a : list nodes in adjacency tag order
-p : prints only the leakage of the network
-g : scan the groups based on adjacency tag (network must first be BFS grouped)
-k <key> : input the correct oracle key value for EOFM probing simulation
-c <int> : maximum number of key inputs for a node to be considered for EOFM probing [default = 7]
-l <float> : minimum portion of keyspace that must be eliminated for a multi-node probe to be run [default = 0.006125]
-o <str> : set name of SAT solver output file from physical portion of CLAP attack [default = \"physical_clap_out.bench\"]
-v : toggle printing verbose information [default = %s]
-r <int> : set the probe resolution size [default = 1]
-h : print the command usage
- Use the run command to apply Adjoining Gates to all leaking nodes.
abc 01> run
Adjoining Gate Example Runs
Automated Run
$ ./autoRun.sh
Manual Run
$ ./abc UC Berkeley, ABC 1.01 (compiled Jan 29 2024 23:04:40) abc 01> readbench ./probingbenchmarks/c1908/SLL/c1908_SLL.bench abc 02> bfs abc 02> scan -g -a abc 02> run abc 02> scan -g -a
Benchmarks
All benchmarks from the ICCAD'22 manuscript can be found in the probing_benchmarks directory. The correct key value for each of these benchmarks is contained in the probing_benchmarks/iccad_benchmark_keys.txt.
b14: readbench ./probingbenchmarks/b14/AntiSAT/b14BA16gatelevelfinal.v.bench readbench ./probingbenchmarks/b14/Full-Lock/b14locked4040gatelevelfinal.v.bench readbench ./probingbenchmarks/b14/SFLL/b14SFLL277gatelevelfinal.v.benchfix readbench ./probingbenchmarks/b14/SLL/b14SLL.bench
c1908: readbench ./probingbenchmarks/c1908/AntiSAT/c1908BA16.bench readbench ./probingbenchmarks/c1908/Full-Lock/c1908locked3232gatelevelfinal.v.bench readbench ./probingbenchmarks/c1908/SFLL/c190833gatelevelfinal.v.bench readbench ./probingbenchmarks/c1908/SLL/c1908SLL.bench
c5315: readbench ./probingbenchmarks/c5315/AntiSAT/c5315BA16gatelevelfinal.v.bench readbench ./probingbenchmarks/c5315/Full-Lock/c5315locked4040gatelevelfinal.v.bench readbench ./probingbenchmarks/c5315/SFLL/c5315SFLL178gatelevelfinal.v.bench readbench ./probingbenchmarks/c5315/SLL/c5315SLL.bench
des: readbench ./probingbenchmarks/des/AntiSAT/desBA16gatelevelfinal.v.bench readbench ./probingbenchmarks/des/Full-Lock/deslocked4040gatelevelfinal.v.bench readbench ./probingbenchmarks/des/SFLL/desSFLL256gatelevelfinal.v.benchfix readbench ./probingbenchmarks/des/SLL/desSLL.bench
Final remarks:
For questions, please reach out to:
Thomas Wojtal tsw4235@rit.edu or Michael Zuzak mjzeec@rit.edu Department of Computer Engineering Rochester Institute of Technology (RIT)
Acknowledgements:
A special thanks to the NSF for supporting this work under Grant 2245573.
Owner
- Login: twojtal
- Kind: user
- Repositories: 1
- Profile: https://github.com/twojtal
Citation (CITATION.cff)
cff-version: 1.2.0
authors:
- family-names: Wojtal
given-names: Thomas
title: "Adjoining Gate"
date-released: 2024-06-20
url: "https://github.com/twojtal/Adjoining-Gate/"