Skip to content

Commit

Permalink
Add top-level folders, quick proofread
Browse files Browse the repository at this point in the history
Signed-off-by: Jenni Nikolaenko <evgeniia.nikolaenko@unikie.com>
  • Loading branch information
jenninikko committed Dec 30, 2022
1 parent 0a6ca3f commit 5df284e
Show file tree
Hide file tree
Showing 15 changed files with 80 additions and 68 deletions.
6 changes: 3 additions & 3 deletions src/overview.md → src/about/overview.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Overview
# About Ghaf

Secure Tech-project studies secure technologies in the context of embedded virtualization. This documentation-project, named after Ghaf tree, provides a landing site to our work. Our applied software research supports [Secure Systems Research Center](https://www.tii.ae/secure-systems) focus areas.

## Embedded Virtualization

Embedded virtualization builds on cloud technologies in the development of end-to-end security. With hardware support for virtualization, we provide hardened system of small trusted computing base (TCB) - thin host - that enables isolation of use cases and their resources. Use cases are protected in guest virtual machines. Embedded targets small devices - personal or headless - instead of high performance cloud servers. Our scope is illustrated in the following diagram.

![Scope!](img/overview.png "")
![Scope!](img/overview.png "Embedded Virtualization Scope")

## Reference Implementation

//Our work in progress reference implementation on NXP i.MX8 is available [here](https://github.com/tiiuae/spectrum-config-imx8).
Our work in progress reference implementation on NXP i.MX8 is available [here](https://github.com/tiiuae/spectrum-config-imx8).
2 changes: 0 additions & 2 deletions src/architecture/adr.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# Architecture Decision Record

## Overview

[Architecture decision records (ADR)](https://adr.github.io) are used to constitute the Ghaf platform decision log.

## Contributions
Expand Down
28 changes: 28 additions & 0 deletions src/build_config/build_configurations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Build Configurations

Our hardened operating system (OS) targets are build configurations based on NixOS. The canonical URL for the upstream git repository is: [https://github.com/NixOS](https://github.com/NixOS).

Build configurations define our dependencies and configuration changes to packages and build mechanisms of NixOS. If you want to try and check the details, see the [build-configurations](https://github.com/tiiuae/build-configurations/) repository.

## Approach

A build configuration is a target to build our hardened OS for a particular hardware device. The supported development target devices are listed in [build-configurations](https://github.com/tiiuae/build-configurations/). The packages used in a build configuration come from [nixpkgs - NixOS Packages collection](https://github.com/NixOS/nixpkgs).

The upstream first approach means we aim the fix issues by contributing to nixpkgs. At the same time, we get the maintenance support of NixOS community and the benefits of the Nix language on how to build packages and track the origins of packages in the software supply chain security. For more information, see [Supply Chain Security](scs/scs.md).

NixOS, a Linux OS distribution packaged with Nix, provides us with:
- generic hardware architecture support (``x86-64`` and ``AArch64``);
- declarative and modular mechanism to describe the system;
- Nix packaging language mechanisms:
- to extend and change packages with [overlays](https://nixos.wiki/wiki/Overlays),
- to [override](https://nixos.org/guides/nix-pills/override-design-pattern.html) packages.

Even when unmodified upstream is often preferred, even ideal, to ensure timely security updates from upstream — customizations are sometimes required.

### Example

To support a reference board without a vendor board support package (BSP) — bootloader, kernel, device drivers — is often not feasible. With this approach, we can overlay the generic NixOS Linux kernel with the vendor kernel and add a vendor bootloader to build a target image.

Often the vendor BSPs are also open source but sometimes contain unfree binary blobs from the vendor's hardware. Those are handled by allowing ``unfree`` - if the user agrees with the end-user license agreement (EULA). If not, ``unfree`` support can be dropped along with that part of the BSP support.

The same goes with the architectural variants as headless devices or end-user devices differ in terms what kind of virtual machines (VM) they contain. The user needs graphics architecture and VM support for the user interface (UI) whereas a headless device is more like a small server without the UI.
20 changes: 0 additions & 20 deletions src/build_configurations.md

This file was deleted.

3 changes: 0 additions & 3 deletions src/faq.md

This file was deleted.

Binary file modified src/img/autopatching.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 0 additions & 1 deletion src/img/diagrams/threat_processing.drawio

This file was deleted.

Binary file added src/img/threat_processing.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/img/threat_processing.png
Binary file not shown.
Loading

0 comments on commit 5df284e

Please sign in to comment.