Hi, ich bin am schreiben einer Arbeit und bin auf folgendes Problem gestoßen. Ich verwende einen Virtex5 mit ppc und will meine Daten gegen das Auslesen schützen. Hierfür verwende ich die Verschlüsselung mittels AES. Mein Problem ist, dass ich nicht weiß wo ich den Schlüssel abspeichern soll. Der Virtex besitzt meiner Meinung nach nur flüchtigen Speicher. Wenn ich den Schlüssel noch mit Hilfe eines XORs verändert in den externen Flashspeicher schreibe, so beruht die Sicherheit meiner Daten auf einem Algorithmus (der den Schlüssel verschlüsselt) und nicht auf dem Schlüssel selbst. Für Anregungen, oder externe Links wäre ich dankbar. Weiß jemand wie in anderen Applikationen, die symmetrische Kryptosysteme verwenden, der Schlüssel sicher gespeichert wird? P.s. Die vom Virtex zur verfügung gestellte "Bitstream Encryption" kann nicht verwendet werden, da man hier immer auf eine Versorgungsspannung angewiesen ist.
bs schrieb: > P.s. Die vom Virtex zur verfügung gestellte "Bitstream Encryption" kann > nicht verwendet werden, da man hier immer auf eine Versorgungsspannung > angewiesen ist. Das wird wohl nix. Entweder Du konfiguriertst das FPGA mit einem unverschlüsselten Bitstream, oder Du nutzt die Bitstream-Encryption von Xilinx, die den AES-Schlüssel zum Entschlüsseln des Bitstreams in batteriegepufferten SRAM-Zellen speichert. Auf andere Weise kannst Du keinen Schlüssel im FPGA speichern. Und ein FPGA ohne einen (nach dem Xilinx Bitstream Encryption Schema) geladenen Schlüssel "versteht" nur unverschlüsselte Bitstreams, die jeder mit einem LA mitschneiden könnte. Ein Kryptospeicher als externe Bitstreamquelle hilft also gar nix, der ließe sich zwar nicht über JTAG auslesen, muß aber den unverschlüsselten Bitstream ans FPGA schicken. Also entweder nach dem Xilinx-Schema Bitstream Encryption machen, mit Pufferbatterie am Virtex, oder unverschlüsselt arbeiten. Gruß, Thosch
Danke für die schnelle Antwort Thosch Das bitfile wird auf jeden Fall unverschlüsselt im fpga geladen. Jedoch besitzt meine Infrastruktur des FPGAs noch ein Filesystem und ein SRecord. Nur das SRecord und das Filesystem werden mit AES verschlüsselt. Der Bootloader entschlüsselt diese Daten. Im Bootloader muss jedoch der Schlüsel zur Entschlüsselung bekannt sein und muss daher von irgendwoher geladen werden. Gruß bs
Du kannst bei begrenzter Sicherheit den Schlüssel auch so im Bit-File ablegen, als Init-Variable für Register, dann ist der auch sehr schwer da raus zu extrahieren, da das Bit-File nicht offengelegt ist. Allerdings lässt sich die ganze Kiste samt Hardware dann kopieren und fertig ist. Also muss der Schlüssel in den Batteriegepufferten SRAM des Virtex und der Bitstream muss verschlüsselt werden.
Danke Christian R. Werde wohl den Schlüssel in einer Init-Variable speichern. Gruß bs
Musst nur aufpassen, dass das im eigentlichen Design ist, uns NICHT im BRAM. Denn der BRAM Inhalt steht an bestimmten Stellen im Bit-File, der lässt sich auch nachher noch mit data2mem reinschreiben. Das wäre dann also auch wieder sinnlos.
bs schrieb: > > Weiß jemand wie in anderen Applikationen, die symmetrische Kryptosysteme > verwenden, der Schlüssel sicher gespeichert wird? Unabhängig von deiner Anwendung, ist das verschlüsseln des Schlüssels (=Wrappen) eigentlich usus. Wenn man z.B. 1 TB Daten verschlüsseln möchte, dann generiert man einen AES Schlüssel zufällig, verschlüsselt damit die Daten und wrapped diesen mit einem Schlüssel welcher aus z.B. einem Userpasswort generiert wurde. Soll nun das Passwort geändert werden muss nur der Schlüssel ausgepackt und wieder neu verschlüsselt werden. Die eigentlichen Daten müssen nicht angefasst werden. Aus kryptografischer Sicht ist dieses Verfahren sicher, sofern korrekt implementiert. gruß cyblord
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.