Forum: Mikrocontroller und Digitale Elektronik Vollständige verschlüsselung und selektives booten


von derrene (Gast)


Lesenswert?

Hallo,

Kann man ein komplettes Embedded Linux für Arm Maschinen (mit boot und 
root partition) erschlüsseln? und dafür sorgen, dass das system nur für 
den einen ARM (z.b. durch eindeutiges erkennunsgmerkmal) bootbar machen?

von Matthias K. (rino1)


Lesenswert?

mach bar ist das schon.
deine Partionen sind verschlüsselt mit was auch immer.

die vorgehnsweise ist ja, dein Prozessor ließ einen Bootloader  von z.B. 
Flash-IC ein, welcher die Hardware initialisiert und das Image vom 
Linuxkernel in den Ram schiebt.

jetzt musst eben deinen Bootloader beibringen, das er diese Image /File,
im Ram entschlüsseln soll damit dein Kernel richtig entpackt wird und 
dein
System hochfährt.

Das ist das Schema bzw. meine Idee, die Umsetzung ist wieder eine ganz 
andere Sache.

Gruß,
Matthias K.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Ja, so etwas geht grundsätzlich. Man muss nur einen Prozessor auswählen, 
der einen internen Schlüsselspeicher besitzt. Im Rahmen der Fertigung 
werden dann die Schlüssel initialisiert und anschließend der Prozessor 
"abgesperrt". Anschließend kann nur ein Prozessor, der die Schlüssel 
besitzt, von dem externen Speicher booten.

Für ein Embedded-Linux-System benötigt man aber fast immer externes RAM. 
In diesem befindet sich zumindest das entpackte, in der Ausführung 
befindliche Linux-System. Dieses könnte ein Angreifer auslesen bzw. den 
Schreibvorgang beim Entschlüsseln mitlauschen. Noch schlimmer wäre es, 
wenn der Angreifer dann Schadcode in das RAM einbringt, der den internen 
Schlüsselspeicher ausliest und dessen Inhalt extern zugänglich macht.

Die Lösung, um letzteres Problem zu umgehen, besteht darin, einen 
Prozessor mit entsprechenden Schutzmechanismen einzusetzen, z.B. mit 
TrustZone-Erweiterung. Dann kann man durch eine geeignete TEE-Umgebung 
das Auslesen des Schlüsselspeichers und anderer kritischer Programmteile 
und Daten verhindern. Solch ein System aufzusetzen ist aber absolut 
keine triviale Angelegenheit, sondern erfordert ein sehr ausgeprägtes 
Verständnis der Prozessorarchitektur und der Implementierung auf dem 
Chip.

Sofern es nicht um ein kleines Bastelprojekt geht, sondern um ein 
entsprechend sicherheitskritisches System, kann ich Dich/Euch da gerne 
beraten. Das ist aber keine Sache von ein paar Minuten oder Stunden, 
sondern beginnt mit einer Anforderungsanalyse, beinhaltet die Definition 
des sog. Security Target und daraus abgeleitet die technischen und 
organisatorischen Maßnahmen.

von derrene (Gast)


Lesenswert?

Oh Verzeihung das ich mich erst jetzt melde.

Ehm es ist mehr ein ein Bastelprojekt :) Ich sehe gerade das mein 
controller einen solchen Entschlüsselungsspeicher nicht besitzt. Ich 
verwende den  AT91SAM9G25 von Atmel.

Ehm nun grundsätzlich gelten folgende anforderungen:
1. Ich möchte das auslesen der auf den SD-karten enthaltenen Daten 
verhindern
2. Die Sd-Karte soll nur auf dem "EINEN" Bord mit bestimmten eindeutigen 
nicht modifizierbaren Merkmalen wie Seriennummer im Prozessor etc 
Bootbar sein.

Also zu erstens möchte ich noch dazu sagen, das nicht inbedingt alles 
auf der SD Karte verschlüsselt sein muss, mir geht es da im speziellen 
um Konfigurationsfiles und die eigene Software die ich entwickelt habe.

von Εrnst B. (ernst)


Lesenswert?

Simple Lösung, die zumindest "Gelegenheits-Hacker" abwehrt:

SD-Card partitionieren, wichtigen Teil verschlüsseln, "dm-crypt", 
"Luks", ...
Entschlüsseln per initrd/Bootloader mit CPU-Seriennnummer.

mit Luks können auch mehrere Schlüssel zugriff haben, kannst z.B. einen 
Developer-Masterkey mit vorsehen.

Aber: Jemand der in die Initrd reinkommt, kann dort auch rausfinden, 
woher du deinen Schlüssel bekommst, und den auch auslesen...

von Postix (Gast)


Lesenswert?

Andreas Schweigstill schrieb:
> Man muss nur einen Prozessor auswählen,
> der einen internen Schlüsselspeicher besitzt.

Was unterscheidet denn "Schluesselspeicher" vom ueblicherweise 
integrierten SRAM oder EEPROM?

von derrene (Gast)


Lesenswert?

Εrnst B✶ schrieb:
> Aber: Jemand der in die Initrd reinkommt, kann dort auch rausfinden,
> woher du deinen Schlüssel bekommst, und den auch auslesen...

Das Dateisystem Initrd ist doch nur während des Bootvorganges im RAM 
aktiv? Bei dem Board was ich habe, ist der RAM in einem FBGA-Gehäuse ich 
denke das sollte das mitschneiden erschweren :)
Was ist wenn, ich z.b. jemand anderes zum entwickeln nen SSH zugriff auf 
das Linuxsystem bereitstelle? Kann die Person das Initrd 
wiederherstellen? Oder das Dateisystem entschlüsseln? Den schlüssel oder 
sonstiges herausfinden?

von Stefan (Gast)


Lesenswert?

Die initrd kann auch nach dem Booten verwendet werden, wenn man will.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.