/tdbus

A Trusted Message Bus Built on Top of D-Bus

Primary LanguageCGNU General Public License v3.0GPL-3.0

tdbus Prototype

A Trusted Message Bus Built on Top of D-Bus

Source code of the prototype presented in the paper A Trusted Message Bus Built on Top of D-Bus, presented at 20th Brazilian Symposium on Information and Computational Systems Security (SBSeg 2020).

Table of Contents

Abstract

A wide range of applications use Inter-Process Communication (IPC) mechanisms to communicate between each other or between their components running in different processes. A well-known IPC mechanism in UNIX-like systems is D-Bus, which allows processes to communicate by receiving and routing messages. Despite being widely used, such system lacks mechanisms to provide end-to-end data confidentiality. In this paper we propose the use of Intel Software Guard Extensions (SGX) to provide a trusted communication channel between local applications over the D-Bus message bus system. We obtained stronger security guarantees in message confidentiality and integrity while keeping a small Trusted Computing Base (TCB) and compatibility with the reference D-Bus system.

@INPROCEEDINGS{Will2020tdbus,
    author = {Newton Carlos Will and Tiago Heinrich and Amanda Benites Viescinski and Carlos Alberto Maziero},
    title = {A Trusted Message Bus Built on Top of D-Bus},
    booktitle = {Proceedings of the 20th Brazilian Symposium on Information and Computational Systems Security},
    year = {2020},
    address = {Petrópolis, RJ, Brazil},
    publisher = {SBC}
}

Install

The system require D-Bus Daemon 1.12.2 and SGX SDK 2.9.101.2.

Setup

After the requirements being install, for the server just run:

./test_server <trusted>

And, for the client:

./run_test.sh <trusted> <messages> <repeats> <datatype>

Where <trusted> is 0 or 1. The <messages> is the amount of messages you are going to send. The <repeats> is the number of tests that will run, and <datatype> is the type of data to be sent: 1 = 1 byte; 2 = 2 bytes; 3 = 4 bytes; 4 = 8 bytes; 5 = string; and 6 = array.

Contribution guidelines

License

Licenced under the GPL-3.0 License. If you make any use of this code for academic purpose, you must cite the paper.