Forum: FPGA, VHDL & Co. Virtex5 AES Schlüsselspeicherung


von bs (Gast)


Lesenswert?

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.

von Thosch (Gast)


Lesenswert?

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

von bs (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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.

von bs (Gast)


Lesenswert?

Danke Christian R.

Werde wohl den Schlüssel in einer Init-Variable speichern.

Gruß
bs

von Christian R. (supachris)


Lesenswert?

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.

von bs (Gast)


Lesenswert?

Danke für den Hinweis

von Cyblord -. (cyblord)


Lesenswert?

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
Noch kein Account? Hier anmelden.