1. Overview

Authors
Responsive image

1.1. Introduction

The Secure Block Device Library is a C software library that applies cryptographic confidentiality and integrity protection, including data freshness, to arbitrary block device like storage mechanisms. To take advantage of the Secure Block Device Library you need the ability to securely store a cryptographic key and a root hash value.

The Secure Block Device Library API allows reading, and writing arbitrary sized byte buffers, at arbitrary offsets, to and from a data store wrapped by the Secure Block Device Library. The Secure Block Device Library applies a protection mechanisms based on a selectable Authenticating Encryption scheme, the CMAC message authentication code, and a Merkle-Tree (SHA-256) to achieve confidentiality and integrity. The Secure Block Device Library requires its user to protect a master key and an integrity value between using the Secure Block Device Library. The Secure Block Device Library derives two internal keys form the master key at Secure Block Device Library creation, using the SIV S2V pseudo random function construction. These keys are the Authenticating Encryption key and the MAC key, and they are stored in the Secure Block Device Library header encrypted under the master key, when at rest. The Secure Block Device Library splits incoming read and write requests into data blocks of a fixed size (Secure Block Device block size is a compile time parameter) to allow scalable random access.

The Secure Block Device Library was intially desigend for ANDIX OS, as a way of protecting sensitive information processed by Trusted Applications while at rest. The idea is that a Trusted Application that requires a secure storage uses ANDIX's key management to obtain a cryptographic key and use that for cryptographic protection of its data by way of the Secure Block Device Library.

Features

  • Security The Secure Block Device Library uses authenticating encryption, the CMAC message authentication code, and a Merkle tree (hash tree) to protect data confidentiality and integrity while retaining fast random access to the underlying storage. In other words, no one but the holder of the cryptographic key should be able to read the protected data. Furthermore, no one, but the holder of the cryptographic key and root hash should be able to change the data.
  • EfficiencyThe Secure Block Device Library has three efficiency mechanisms. First, it protects data integrity using a Merkle tree (hash tree, allowing for random data access. Second, it has an integrated cache that holds unencrypted data in memory, because data encryption accounts for approximately 90% of the computation time spent by the Secure Block Device Library. Third, it allows selecting which authenticating encryption scheme to use. Currently, the Secure Block Device Library supports the use of the AES OCB and AES SIV authenticating encryption schemes. In agreement with the license of the AES SIV implementation we use: This product includes software written by Dan Harkins (dharkins at lounge dot org).
  • ExtensibilityThe Secure Block Device Library allows adding support for new authenticating encryption schemes via its Cryptography Abstraction Layer, as well as adding support for new kinds of back end stores through its Block Device Abstraction Layer.

1.2. A Word of Caution

Development of SBD is still not complete. It currently is regarded as experimental software targeted at research and educational environments. Use the software at your own risk!

1.3. License

Copyright (c) IAIK, Graz University of Technology, 2015. All rights reserved.

SBD is released under a dual licensing model:

The source code is dual licensed. A GPLv2 license is intended to be used by other researchers (note that all derived work must be open source as well). A commercial (non-GPL) license is available upon request (please contact jce-sales@iaik.tugraz.at).

2. Download

The source code is hosted at github. A zip file containing the current github content can be downloaded here.