BSSSD: Trusted Computing for FreeBSD and OpenBSD


Please start reading here for an overview of Trusted Computing (TC) and the project’s goals.

Trusted Computing

Operating systems are complex structures consisting of code an data. One aspect is that they use mass storage for storing the operating system itself (the executable kernel), as well as loadable kernel modules.

On a general purpose computer, this mass storage is left writeable to allow for kernel updates. However, this entails the risk that a malicious user process could replace the kernel or its modules with its own version.

The issue remains how the kernel and user programs can check if they are running within an unmodified (trusted) environment. Trusted computing (TC) addresses this issue.

Trusted Computing Group

The Trusted Computing Group (TCG) is an industry consortium which specifies trusted computing. The result of this process is a set of specifications, as well as white papers and other guidance documents.

Trusted Platform Module

The TCG specification defines a separate hardware device, the Trusted Platform Module (TPM), as a trust anchor. This hardware device (a chip) is the component which e.g. roots the chain of trust.

The TPM implements two properties: protected capabilities and shielded locations.

It provides:

  • secure and CC-evaluated crypto implementation (RSA, SHA1)
  • CC-evaluated hardware random number generator
  • secure key and certificate store

Chain of Trust

The key component for building a chain of trust where each component relies on its predecessor, and to safely root the first chain link.

TCG Software Stack

The Trusted Platform Module (TPM) is basically a smart card bonded to the computing platform. This hardware component is accessed by each software component in the boot process to take measurement, building the chain of trust. This enables checking if this is a trusted platform.

The TCG Software Stack (TSS) is the interface for user space processes to access to the TPM.

Trusted GRUB

As part of a contiguous chain of trust, the boot loader also needs to measure the integrity of the kernel. OpenBSD and FreeBSD come with their own boot loader. This (native) boot loader has to be replaced by a boot loader that knows how to measure the next part of the chain of trust.

Trusted GRUB is a GRUB enhancement that can perform a TC measurement.

Secret Keystore

The application of a TPM is by far not limited by trusted boot. TPM also contains components for use as a secure keystore: a public/private key pair can be generated of which only the public key is readable. This can be used to implement a PKCS#11 token or an engine that can be used by OpenSSL.