[Assignmnt-7] rename directory
This commit is contained in:
parent
f9b49a2119
commit
d2f1a1e04b
36 changed files with 0 additions and 0 deletions
131
Assignment 7 - SGX Hands-on/doc/abgabe.typ
Normal file
131
Assignment 7 - SGX Hands-on/doc/abgabe.typ
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
#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
|
||||
BIN
Assignment 7 - SGX Hands-on/doc/correct-signature.png
Normal file
BIN
Assignment 7 - SGX Hands-on/doc/correct-signature.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 84 KiB |
BIN
Assignment 7 - SGX Hands-on/doc/unknown-signature.png
Normal file
BIN
Assignment 7 - SGX Hands-on/doc/unknown-signature.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 67 KiB |
Loading…
Add table
Add a link
Reference in a new issue