Systemsicherheit/7-SGX_Hands-on/doc/abgabe.typ

112 lines
4 KiB
Text
Raw Normal View History

#let conf(
title: none,
assignmentno: none,
authors: (),
doc
) = {
set page(
paper: "a4",
header: [
#set text(size: 9pt)
#grid(
columns: 3,
gutter: 1fr,
rows: 1,
align(left + horizon, smallcaps(title)),
align(center + horizon, "Assignment-" + assignmentno),
grid(
align: right,
columns: 1,
rows: authors.len(),
row-gutter: 3pt,
..authors.map(author => [
#author
])
)
)
#line(length: 100%)
],
footer: context [
#line(length: 100%)
#set align(center)
#counter(page).display(
"1 / 1",
both: true
)
],
)
set text(
size: 11pt,
font: "DejaVu Serif"
)
doc
}
#show: doc => conf(
title: "System Security",
assignmentno: "7",
authors: (
"Benjamin Haschka",
"Sascha Tommasone",
"Paul Zinselmeyer"
),
doc
)
= Firmware Signatur-Relay in einer TEE
Das Program hat den Zweck, Signaturen die von einzelnen Nutzern über eine Firmware gemacht werden, mit einem permanenten Produktions-Key zu maskieren, ohne, dass der Nutzer diesen kennt.
Dabei wird eine Encalve als Signatur-Relay verwendet.
Die Enclave kann Signaturen über Daten mit einem festen Satz an öffentlichen Schlüsseln, die vertrauenswürdig sind, verifizieren.
Wenn die Signatur gültig ist, entfernt die Enclave die Signatur und erzeugt eine eigene Signatur mit dem Produktions-Key.
Diese Signatur kann dann mit dem öffentlichen Schlüssel der Enclave, der von außen angefragt werden kann, überprüft werden.
Damit kann der Nutzer seine eigene Signatur mit der Signatur der Enclave maskieren.
Der Schlüssel ist dabei den Nutzern nie bekannt.
Sie haben den Schlüssel nur versiegelt und können ihn der Enclave geben, die den Schlüssel dann entsiegeln und in der vertrauenswürdigen Umgebung verwenden kann.
// Image here:
== Szenario
In diesem Szenario wird ein Unternehmen betrachtet, das Embedded Geräte produziert.
Für die Geräte sollen regelmäßig Updates für die Firmware veröffentlicht werden.
Diese Firmware muss mit einem permanenten Key signiert werden, der in der Produktion fest gesetzt wird.
Ist die Signatur nicht vorhanden, lädt keines der Geräte das Update.
Mitarbeitende, die die Firmware hochladen wollen, müssen also die implementierte Firmware mit dem Produktions-Key signieren.
Wenn sie den Produktions-Key besitzen, bringt das gewissen risiken, z.B.:
- Mitarbeitende können (absichtilich oder nicht) den Schlüssel veröffentlichen
- Mitarbeitende, die nicht mehr in dem Unternehmen arbeiten, können den Key für schlechte Zwecke missbrauchen
Es ist also sinnvoll, wenn die Mitarbeitende den Key nicht kennen. Dazu kann das beschriebene Signatur-Relay verwendet werden.
Die Mitarbeitenden signieren die Firmware vorerst mit ihrem eigenen Key.
Diese Keys sind in das Relay als trusted Keys eingebunden.
Anschließend kann der Mitarbeitende die selbst-signierte Firmware an das Signatur-Relay senden.
Das Relay prüft dann die Gültigkeit der Signatur und schickt, falls gültig, eine eigene Signatur über die Firmware zurück.
Damit kann dann der Mitarbeitende die Firmware an die Embedded Geräte senden, bei Gültigkeit die neue Firmware laden können.
Falls ein Mitarbeitender den eigenen Schlüssel verlieren oder veröffentlichen sollte, besteht in dem Fall auch nicht das Problem, dass der Produktionsschlüssel ungültig wird.
Es kann einfach der Schlüssel des Mitarbeitenden von der Liste der trusted Keys zurückgezogen werden.
Zudem ist es wichtig, dass keine bösartigen Programme auf den Systemen der Mitarbeitenden den Signaturprozess mitbekommen oder gar verändern können.
Aus diesen Gründen ist es in diesem Szenario wichtig, dass das Relay mit all seinen Funktionen besonders geschützt ist.
Dementsprechend sollte es in einer Enclave laufen.
== Details
== Vorteile
Dieses Programm bietet einige Vorteile, unter anderem:
- Nutzern unbekannter Hauptschlüssel
- Vereinfacht das Zurückziehen der Schlüssel
- Sicherheit der Gültigkeit der Firmware