133fb803f7
All checks were successful
Latex Build / build-latex (Assignment 4 - Protokollsicherheit (Praxis)) (push) Successful in 1m4s
Latex Build / build-latex (Assignment 5 - Software Security - Teil 1) (push) Successful in 1m3s
Latex Build / build-latex (Assignment 6 - Software Security - Teil 2) (push) Successful in 1m1s
Latex Build / build-latex (Assignment 4 - Protokollsicherheit (Praxis)) (pull_request) Successful in 33s
Latex Build / build-latex (Assignment 5 - Software Security - Teil 1) (pull_request) Successful in 9s
Latex Build / build-latex (Assignment 6 - Software Security - Teil 2) (pull_request) Successful in 9s
131 lines
4.6 KiB
Text
131 lines
4.6 KiB
Text
#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.
|
|
|
|
|
|
#grid(
|
|
columns: 2,
|
|
figure(
|
|
image("correct-signature.png"),
|
|
caption: "Valid Signature"
|
|
),
|
|
figure(
|
|
image("unknown-signature.png"),
|
|
caption: "Invalid Signature"
|
|
)
|
|
)
|
|
|
|
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.
|
|
|
|
|
|
|
|
== 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 der Geräte fest codiert 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
|
|
|
|
1. *Key Management*
|
|
|
|
Das Key Management wird mit der eingebauten `seal` Funktion der Encalve gemacht.
|
|
Dabei kann jeder Nutzer eine versiegelte Kopie des Schlüssels behalten, da er damit nichts anfangen kann.
|
|
Erst, wenn der Schlüssel in die Enclave kommt und entsiegelt wird, kann der Schlüssel verwendet werden.
|
|
|
|
2. *Signatur Erstellung*
|
|
|
|
Die Enclave bietet eine Schnittstelle für Signaturen mit ECDSA an.
|
|
Dabei wird die Kurve secp256k1 verwendet.
|
|
|
|
== 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
|