GithubHelp home page GithubHelp logo

newaetech / chipwhisperer-lint Goto Github PK

View Code? Open in Web Editor NEW
17.0 5.0 7.0 4.5 MB

ChipWhisperer-Lint is an open source implementation of our automated leakage detection tool.

Python 99.28% Shell 0.72%

chipwhisperer-lint's Introduction

Overview

This project is designed to help users perform automated testing of embedded hardware. This requires users to have certain hardware (ChipWhisperer) which is used to record example power traces.

With these traces we can perform analysis to determine how vulnerable a target device (normally - an AES crypto hardware core) is to side channel power analysis.

Examples

For more details on this tool and results see the White Paper. This was presented at Black Hat 2018.

See the following for examples and results:

Usage

Let's get this thing working.

Setup

Setting up requires running the backend server "somewhere". Basically it's supposed to run on EC2 server because they are a cheap way to get a bunch of cores and memory. You can do this locally as well, but it's fairly computationally intensive.

While there will be a hosted version, right now that is not available with a general interface. Thus it's easier if you run your own EC2 server.

Using

The user has a number of power analysis traces, they were captured with a random plaintext and random fixed key. This random-random capture is done to reduce the chance one specific key is accidentally "picked off".

Briefly, it works like this:

  1. Zips together a bunch of power traces.
  2. Uploads files to server - by default the server.ini assumes they are in /var/cwlint/traces, so put them there and unzip.

Now call the server setup. Right now that looks like this:

python client.py run --cwproject="xmega-aes-small.cwp" --config="aes128_sbox.cfg"

This returns and tells you the project ID. The system then runs the check. You can then check for status of the request:

python client.py status 8

Finally making a HTML report.

python client.py result --html example_result.html 8

The report generation is currently a simple script -- this will be fixed eventually, but for the PoC has worked well enough (oops). It will likely happen on the backend since it will become much faster to download.

chipwhisperer-lint's People

Contributors

colinoflynn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

chipwhisperer-lint's Issues

invalid value encountered in divide

Hi Colin,

First - thanks for the tool!

It seems that some tests result in the following error.

/opt/cwlint/cwlint_git/server-backend/server/analysis.py:164: RuntimeWarning: invalid value encountered in divide
  beta = (n*S_xy - S_x*S_y) / (n*S_xx - S_x**2)

Some things to note about my environment, in case any of it is useful to you:

  • I'm running this on a fresh ubuntu on EC2
  • I had to downgrade numpy to numpy-1.16.2 to avoid a pickle=False error
  • I had to upgrade gevent to latest (gevent-1.4.0) to avoid a TypeError: child watchers are only available on the default loop error
  • I get warnings about QT but it's not in the requirements so I'm ignoring it

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.