Coder Social home page Coder Social logo

dfx-nyuad / ccs17 Goto Github PK

View Code? Open in Web Editor NEW
7.0 4.0 3.0 86.56 MB

This is a platform for launching SAT (and similar) attacks on our SFLL netlists.

License: Other

Makefile 2.08% C 53.83% Shell 8.75% C++ 17.99% Roff 0.27% HTML 16.91% CSS 0.01% Lex 0.01% Yacc 0.03% Python 0.12%

ccs17's Introduction

SFLL Attack Framework

This is a logic decryption tool developed as a wrapper code around the SAT attack tool that was originally developed by Pramod Subramanyan et al. We developed this platform to enable you to attack and decrypt our latest logic locking solution (SFLL-HD). SFLL refers to "Stripped functionality logic locking" and HD refers to "Hamming distance". SFLL-HD is a logic locking technique that thwarts all known variants of the SAT and removal attacks. For further details, refer to our CCS'17 paper, titled "Provably Secure Logic Locking: From Theory to Practice.”

The initial version SAT attack tool developed by Subramanyan required two inputs: 1. a locked (encrypted) netlitst and 2. an original netlist. The original netlist was used as an oracle to generate correct I/O patterns. Our version also requires a locked netlist, same as its predecessor. We provide you with a locked netlist "dfx_sfll_k256_h32.bench" in benchmarks/sfll_hd directory. This is an SFLL-HD netlist with 256-bit key (k) and the Hamming distance (h) set to 32. Unfortunately, we could not publicly share the original bench file (because of IP concerns). As such, we have replaced the original netlist with an executable (named DfX; see example.txt for usage) that can generate the desired I/O patterns. In a nutshell, we have modified only the interface to the decryption tool wrt to Subramanyan’s version; the rest of the tool is, more or less, identical.

To launch the attack on the SFLL-HD netlist, please use the following command in /source/src directory:

./sld ../../benchmarks/sfll_hd/dfx_sfll_k256_h32.bench ../../benchmarks/original/empty.bench

Here empty.bench is an empty (or dummy) file with only one comment line. This file serves to keep the attack interface intact for users already familiar with the SAT attack framework.

Installation

To install the SAT attack tool, follow the instructions provided in source/README.md. We have provided attack executables (names starting with sld) in /bin directory for 64-bit (default) and 32-bit Ubuntu 17.04 .

The 32-bit DfX (oracle) executable is by default placed in /source/src directory. Executables compiled for Ubuntu and RedHat linux platforms are also placed in /bin directory. The DfX executable(s) has(have) been generated using Verilator tool from Veripool. For correct execution of DfX executable, you also need to install the tool available at: http://www.veripool.org/wiki/verilator

Minor Modifications:

We have made the following changes to the initial code.

  1. In solver.cpp, we no longer use "simckt". Instead a new function "queryOracle()" is used for simulating the oracle.
  2. In sld.cpp and sim.cpp, a empty simckt constructor is used. Note that simckt is no more used during the attack.
  3. The modified tool does not support partial attacks, as we have removed the parts of the code that require IBM CPLEX.
  4. We have removed all previous benchmarks. The updated benchmark folder only contains SFLL-HD netlist.

Update:

SFLL-HD has been broken using structural analysis attacks. For further details, refer to: https://ieeexplore.ieee.org/document/8666809

You may try your luck on the new logic locking technique, referred to as SFLL-fault, available at: https://github.com/micky960/SFLL_fault.

ccs17's People

Contributors

jknechtel avatar yasinnyu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ccs17's Issues

install of cudd

CCS17/source/readme file
For the install of cudd, it includes "makecd obj/"
however, it seems that makecd does not exist.

It is actually
cd obj/
make?

I.m reading 'libobj.a' is up to date.

However, it seems not correct.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.