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?
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.
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.
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...
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?
Ε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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.