All Projects → UzL-ITS → Microwalk

UzL-ITS / Microwalk

Licence: mit
A microarchitectural leakage detection framework using dynamic instrumentation.

Labels

Projects that are alternatives of or similar to Microwalk

Iotex Core
Official implementation of IoTeX blockchain protocol in Go.
Stars: ✭ 505 (+2557.89%)
Mutual labels:  crypto
Cryptomator
Multi-platform transparent client-side encryption of your files in the cloud
Stars: ✭ 6,623 (+34757.89%)
Mutual labels:  crypto
Maskbook
The portal to the new, open internet. ([I:b])
Stars: ✭ 691 (+3536.84%)
Mutual labels:  crypto
Securefs
Filesystem in userspace (FUSE) with transparent authenticated encryption
Stars: ✭ 518 (+2626.32%)
Mutual labels:  crypto
Rate.sx
💰 curl cryptocurrencies exchange rates
Stars: ✭ 563 (+2863.16%)
Mutual labels:  crypto
Rando.js
The world's easiest, most powerful random function.
Stars: ✭ 659 (+3368.42%)
Mutual labels:  crypto
Securitydriven.inferno
✅ .NET crypto done right. Professionally audited.
Stars: ✭ 501 (+2536.84%)
Mutual labels:  crypto
Nodejs Learning Guide
Nodejs学习笔记以及经验总结,公众号"程序猿小卡"
Stars: ✭ 6,379 (+33473.68%)
Mutual labels:  crypto
Subzero
Square's Bitcoin Cold Storage solution.
Stars: ✭ 598 (+3047.37%)
Mutual labels:  crypto
Libsodium.js
libsodium compiled to Webassembly and pure JavaScript, with convenient wrappers.
Stars: ✭ 665 (+3400%)
Mutual labels:  crypto
Qtbitcointrader
Secure multi crypto exchange trading client
Stars: ✭ 520 (+2636.84%)
Mutual labels:  crypto
Diffie Hellman backdoor
How to backdoor Diffie-Hellman
Stars: ✭ 559 (+2842.11%)
Mutual labels:  crypto
Wallet Core
Cross-platform, cross-blockchain wallet library.
Stars: ✭ 657 (+3357.89%)
Mutual labels:  crypto
Libsodium Php
The PHP extension for libsodium.
Stars: ✭ 507 (+2568.42%)
Mutual labels:  crypto
Acra
Database security suite. Database proxy with field-level encryption, search through encrypted data, SQL injections prevention, intrusion detection, honeypots. Supports client-side and proxy-side ("transparent") encryption. SQL, NoSQL.
Stars: ✭ 726 (+3721.05%)
Mutual labels:  crypto
Crypto Hash
Tiny hashing module that uses the native crypto API in Node.js and the browser
Stars: ✭ 501 (+2536.84%)
Mutual labels:  crypto
Awesome Blockchain
Curated list of blockchain services and exchanges 🔥🏦🔥🏦🔥🏦🔥
Stars: ✭ 604 (+3078.95%)
Mutual labels:  crypto
Whorlwind
Makes fingerprint encryption a breeze.
Stars: ✭ 829 (+4263.16%)
Mutual labels:  crypto
Awesome Mpc
A curated list of multi party computation resources and links.
Stars: ✭ 749 (+3842.11%)
Mutual labels:  crypto
Certigo
A utility to examine and validate certificates in a variety of formats
Stars: ✭ 662 (+3384.21%)
Mutual labels:  crypto

Microwalk

Microwalk is a microarchitectural leakage detection framework, which combines dynamic instrumentation and statistical methods in order to identify and quantify side-channel leakages. For the scientific background, consult the corresponding paper.

Compiling

For Windows, it is recommended to install Visual Studio, as it brings almost all dependencies and compilers, as well as debugging support. The solution can then be built directly in the IDE.

The following guide is mostly for Linux systems and command line builds on Windows.

Main application

The main application is based on .NET Core 3.1, so the .NET Core 3.1 SDK is required for compiling.

Compile command:

cd Microwalk
dotnet build -c Release

Run command:

cd Microwalk
dotnet run <args>

The command line arguments <args> are documented in Section "Configuration"

Pin tool

Microwalk comes with a Pin tool for instrumenting and tracing x86 binaries. Building the Pin tool requires the full Pin kit, preferably the latest version. It is assumed that Pin's directory path is contained in the variable $pinDir.

When building through Visual Studio: Edit Settings.props to point to the Pin directory.

Compile command:

cd PinTracer
make PIN_ROOT="$pinDir" obj-intel64/PinTracer.so

Run command (assuming the pin executable is in the system's PATH):

pin -t PinTracer/obj-intel64/PinTracer.so -o /path/to/output/file -- /path/to/wrapper/executable

Note that the above run command is needed for testing/debugging only, since Microwalk calls the Pin tool itself.

Pin wrapper executable

In order to efficiently generate Pin-based trace data, Microwalk needs a special wrapper executable which interactively loads and executes test cases. The PinTracerWrapper project contains a skeleton program with further instructions ("/*** TODO ***/").

The wrapper skeleton is C++-compatible and needs to be linked against the target library. It works on both Windows and Linux (GCC).

Alternatively, it is also possible to use an own wrapper implementation, as long as it exports the Pin notification functions and correctly handles stdin.

Running Microwalk

The general steps for analyzing a library with Microwalk are:

  1. Copy and adjust the PinTracerWrapper program to load the investigated library, and read and execute test case files. It is advised to test the wrapper with a few dummy test cases, and use debug outputs to verify its correctness. Make to sure to remove these debug outputs afterwards, else they may clutter the I/O pipe which Microwalk uses for communication with the dynamic instrumentation framework, and lead to errors.

  2. Create a custom test case generator module, or check whether the built-in ones are able to yield the expected input formats. Guidelines for adding custom framework modules can be found in the section "Creating own framework modules".

  3. Compose a configuration file which describes the steps to be executed by Microwalk.

Configuration

Microwalk takes a single command line argument, which is the path to a YAML-based configuration file.

Creating own framework modules

Follow these steps to create a custom framework module:

  1. Create a new class in the respective Modules subfolder, which inherits from XyzStage and has a [FrameworkModule] attribute. XyzStage here corresponds to one of the framework's pipeline stages:

    • TestcaseStage (TestcaseGeneration directory): Produces a new testcase on each call.
    • TraceStage (TraceGeneration directory): Takes a testcases and generates raw trace data.
    • PreprocessorStage (TracePreprocessing directory): Takes raw trace data and preprocesses it.
    • AnalysisStage (Analysis directory): Takes preprocessed trace data and updates its internal state for each trace. Yields an analysis result once the finish function is called.
  2. Implement the module logic.

  3. Register the module, by calling the XyzStage.Register<> function in Main (Program.cs).

  4. Compile Microwalk.

Contributing

Contributions are appreciated! Feel free to submit issues and pull requests.

License

The entire system is licensed under the MIT license. For further information refer to the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].