• Skip navigation
  • Skip to navigation
  • Skip to the bottom
Simulate organization breadcrumb open Simulate organization breadcrumb close
Friedrich-Alexander-Universität IT Security Infrastructures Lab
  • FAUTo the central FAU website
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik
Suche öffnen
  • Campo
  • StudOn
  • FAUdir
  • Jobs
  • Map
  • Help
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik
Friedrich-Alexander-Universität IT Security Infrastructures Lab
Navigation Navigation close
  • Research
    • Forensic Computing Group
    • Human Factors in Security and Privacy Group
    • Multimedia Security
    • Security Education Development Group
    • System Security Group
    • Information Security Group
    • Archive
    • Funded Projects
    • Publications
    Portal Research
  • Lab
    • Staff & Research Groups
    • Alumni
    • Partners
    • FAU i1 Webshop
    Portal Lab
  • Teaching
    • Courses
    • General Information regarding Teaching/Courses
    • Notes on Examinations
    • eTeaching
    • Theses
    • Writing a Thesis at Informatik 1
    Portal Teaching
  • How to reach us
  1. Home
  2. Research
  3. System Security Group
  4. Soteria: Offline Software Protection within Low-cost Embedded Devices

Soteria: Offline Software Protection within Low-cost Embedded Devices

In page navigation: Research
  • Forensic Computing Group
  • Human Factors in Security and Privacy Group
  • Information Security Group
  • Multimedia Security
  • Security Education Development Group
  • System Security Group
    • AppAuth: On App-based Matrix Code Authentication in Online Banking
    • AppTAN (In)Security: (In)Security of App-based TAN Methods in Online Banking
    • AVX Crypto: AVX Instructions to Accelerate Crypto Primitives
    • Bispe: A Bytecode Interpreter for Secure Program Execution in Untrusted Main Memory
    • Centroid
    • CPU-bound Encryption (TRESOR, TreVisor, ARMORED)
    • FROST: Forensic Recovery Of Scrambled Telephones
    • How Android’s UI Security is Undermined by Accessibility
    • HyperCrypt: Hypervisor-based Encryption of Kernel and User Space
    • N26
    • Nomorp
    • On the Prevalence and Usage of TEE-based Features on Android
    • One Key to Rule Them All: Recovering the Master Key from RAM to break Android's File-Based Encryption
    • RamCrypt: Kernel-based Address Space Encryption for User-mode Processes
    • ReFuzz — Structure Aware Fuzzing of the Resilient File System (ReFS)
    • RISCoT - Security Analysis of Trusted Execution Environments on RISC-V
    • SED (In)Security: Hardware-based Full Disk Encryption (In)Security
    • SGX-Kernel: Isolating Operating System Components with Intel SGX
    • SGX-Timing: Cache Attacks on Intel SGX
    • SoK: The Evolution of Trusted UI on Mobile
    • Soteria: Offline Software Protection within Low-cost Embedded Devices
    • STARK / MARK: Tamperproof/Mutual Authentication to Resist Keylogging
    • TEEshift: Protecting Code Confidentiality by Selectively Shifting Functions into TEEs
    • VMAttack: Deobfuscating Virtualization-Based Packed Binaries
  • Archive
  • Funded Projects
  • Publications

Soteria: Offline Software Protection within Low-cost Embedded Devices

Soteria: Offline Software Protection within Low-cost Embedded Devices

Abstract

Protecting the intellectual property of software that is distributed to third-party devices which are not under full control of the software author is difficult to achieve on commodity hardware today. Modern techniques of reverse engineering such as static and dynamic program analysis with system privileges are increasingly powerful, and despite possibilities of encryption, software eventually needs to be processed in clear by the CPU. To anyhow be able to protect software on these devices, a small part of the hardware must be considered trusted. In the past, general purpose trusted computing bases added to desktop computers resulted in costly and rather heavyweight solutions. In contrast, we present Soteria, a lightweight solution for low-cost embedded systems. At its heart, Soteria is a program-counter based memory access control extension for the TI MSP430 microprocessor. Based on our open implementation of Soteria as an openMSP430 extension, and our FPGA-based evaluation, we show that the proposed solution has a minimal performance, size and cost overhead while effectively protecting the confidentiality and integrity of an application’s code against all kinds of software attacks including attacks from the system level.

Paper: Soteria (by Johannes Götzfried, Tilo Müller, Ruan de Clercq, Pieter Maene, Felix Freiling, and Ingrid Verbauwhede)
Slides: Soteria Slides (presented at ACSAC’15, Los Angeles, California, USA)

Installation

Soteria builds on top of Sancus and therefore installation and usage is very similar to Sancus as well. To install Soteria proceed as described on the Sancus installation page but instead of using the sancus-core and sancus-compiler sources from the Sancus installation page use our patched and extended sources below. Note that you need to build everything from source and we currently do not provide ready-to-use packages for your distribution. The patched version of LLVM can simply be installed by following the instructions on the Sancus installation page with the original patches provided there. For a first start, it is safe to skip all FPGA-related stuff!

Usage

Toolchain

In addition to the tools that are installed by plain Sancus and described in detail on the Sancus documentation page, Soteria installs a tool for code encryption sancus-crypt:
usage: sancus-crypt [-h] [--verbose] [--debug] [--loader SPM] [--cryptkey SPM] --key key [-o file] [file]
The tool expects the vendor key to be given as key and operates in one of two modes: If cryptkey and the name of an SPM is specified, sancus-crypt derives the loader key and calculates the encryption key for the target module by the name of the module specified with cryptkey. If cryptkey is not given, sancus-crypt derives the loader key and transparently encrypts all SMs that are found within an image by first deriving the encryption key from their name. SMs that need to be encrypted are identified by starting with crypt_. If the name of the loader module is not specified by the loader argument, the default name sm_loader is assumed.

FPGA: Xilinx Virtex6 ML605

Our design has been successfully tested on a Xilinx Virtex6 ML605 FPGA evaluation board. We provide the working implementation for this board in $SOURCE_ROOT/fpga/xilinx_virtex6_ml605_spm. The implementation supports UART, GPIO and Debugging. We use the default user clock with 60Mhz, but the openMSP430 is running at 20Mhz and therefore the coregen files to provide the correct clock frequency but also block RAM are included. The USB UART interface is used for debugging and serial I/O and DIP switch 8 can be used to switch between debugging mode and usual operation. The south switch of the 4-way joystick-like switches has been used as reset button and should be triggered after switching with DIP switch 8. DIP switch 1 – 3 can be used for GPIO.

Example Applications

We provide an example application that demonstrates the proposed software protection functionality in simulation and on the FPGA. The application loads an encrypted software module which contains a secret string and calls routines of the encrypted module from unprotected code and a second software module. The second software module also generates a signature for this secret string. The software module can only be loaded and outputs the secret string, if there was no manipulation of the loader module or the encrypted module. Furthermore, software in unprotected memory tries to access code of the encrypted module after it has been loaded and fails such that finally a reset is triggered and all confidential code is wiped from memory.

The applications are shipped with Makefiles that demonstrate how the whole toolchain works together. Please check also the documentation of the original Sancus toolchain and our paper for more information!

Get the Code

Implementation:
soteria-core.tar.bz2: Patched openMSP430 processor implementation in Verilog (FPGA implementation included)
soteria-compiler.tar.bz2: Host toolchain for building and encrypting software modules
soteria-test.tar.bz2: Test applications to demonstrate software protection functionality (Simulation and FPGA)

 

Lehrstuhl für Informatik 1
Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU)

Martensstrasse 3
91058 Erlangen
  • Impressum
  • Datenschutz
  • Barrierefreiheit
  • Facebook
  • RSS Feed
  • Twitter
  • Xing
Up