Vollständige verschlüsselung und selektives booten

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.
(Firma: Schweigstill IT) Persönliche Seite
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.
Gast
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.
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...
Gast
Ε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?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.