tupipa / hdfi

Hardware-assisted Data-flow Isolation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hardware-assisted Data-flow Isolation

Hardware-assisted data-flow isolation (HDFI) is a new fine-grained data isolation mechanism that is broadly applicable and very efficient. HDFI enforces isolation at the machine word granularity by virtually extending each memory unit with an additional tag that is defined by data-flow. This capability allows HDFI to enforce a variety of security models such as the Biba Integrity Model and the Bell–LaPadula Model. The current HDFI prototype is based the RISC-V instruction set architecture (ISA).

This repo contains five parts of the projects:

  • chip: the modified rocket-chip
  • emulator: the modified emulator (based on spike)
  • toolchain: modified GCC, glibc, and llvm
  • linux: the modified kernel
  • tests: various tests, mostly for security tests

More details

Getting started

A test drive with c++ simulator generated from the implementaion in Chisel.

$ make gcc-build-elf
$ make fesvr-build
$ export RISCV=`pwd`/install/
$ export PATH=$PATH:`pwd`/install/bin/
$ cd chip/riscv-tools
$ ./build-tests.sh
$ cd ../emulator
$ make all
$ make run-bmark-tests

Building Linux kernel

$ make gcc-build-linux
$ make linux-build

For further detail, please follow the RISC-V tutorials:

Contributors

Reference

@inproceedings{song:hdfi,
  title        = {{HDFI: Hardware-Assisted Data-Fow Isolation}},
  author       = {Chengyu Song and Hyungon Moon and Monjur Alam and Insu Yun and Byoungyoung Lee and Taesoo Kim and Wenke Lee and Yunheung Paek},
  booktitle    = {Proceedings of the 37th IEEE Symposium on Security and Privacy (Oakland)},
  month        = may,
  year         = 2016,
  address      = {San Jose, CA},
}

About

Hardware-assisted Data-flow Isolation


Languages

Language:C 80.1%Language:C++ 11.8%Language:Assembly 2.6%Language:LLVM 2.4%Language:Objective-C 1.1%Language:Makefile 0.3%Language:Scala 0.2%Language:Perl 6 0.2%Language:Verilog 0.2%Language:Perl 0.2%Language:Python 0.2%Language:Shell 0.1%Language:TeX 0.1%Language:HTML 0.1%Language:Objective-C++ 0.1%Language:Prolog 0.1%Language:OCaml 0.1%Language:CMake 0.0%Language:M4 0.0%Language:DIGITAL Command Language 0.0%Language:Yacc 0.0%Language:GCC Machine Description 0.0%Language:Roff 0.0%Language:Batchfile 0.0%Language:Tcl 0.0%Language:Lex 0.0%Language:CSS 0.0%Language:MATLAB 0.0%Language:Emacs Lisp 0.0%Language:JavaScript 0.0%Language:Scilab 0.0%Language:Awk 0.0%Language:GDB 0.0%Language:Vim Script 0.0%Language:UnrealScript 0.0%Language:SystemVerilog 0.0%Language:Cuda 0.0%Language:XS 0.0%Language:eC 0.0%Language:Scheme 0.0%Language:Mathematica 0.0%Language:AppleScript 0.0%Language:Mercury 0.0%Language:PHP 0.0%Language:M 0.0%Language:Clojure 0.0%