From d768d965d55d2bca2492be3490c53517d5832a7e Mon Sep 17 00:00:00 2001 From: chronal Date: Sun, 7 Jul 2024 17:07:46 +0200 Subject: [PATCH] Assignment 7 sgximpl: uncomplete project description --- 7-SGX_Hands-on/doc/abgabe.pdf | Bin 0 -> 43220 bytes 7-SGX_Hands-on/doc/abgabe.typ | 111 ++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 7-SGX_Hands-on/doc/abgabe.pdf create mode 100644 7-SGX_Hands-on/doc/abgabe.typ diff --git a/7-SGX_Hands-on/doc/abgabe.pdf b/7-SGX_Hands-on/doc/abgabe.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1b14bb1b572a20f798545f2ca1944d8418550f28 GIT binary patch literal 43220 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 KTie>z=Kla)ImCbf literal 0 HcmV?d00001 diff --git a/7-SGX_Hands-on/doc/abgabe.typ b/7-SGX_Hands-on/doc/abgabe.typ new file mode 100644 index 0000000..0f3e23f --- /dev/null +++ b/7-SGX_Hands-on/doc/abgabe.typ @@ -0,0 +1,111 @@ +#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