wie man eine architektur in einem fpga ic für immer richtig speichert
8
In Anbetracht dessen, dass ich eine Architektur erstellt habe, um eine bestimmte Sache zu tun, schrieb ich zum Beispiel in vhdl.
Kann ich es für immer in einem FPGA-Chip "brennen"? Oder wie soll ich vorgehen, um das geistige Eigentum zu schützen und zu wissen, dass es aus dem seriellen Flash-Speicher gelesen werden kann?
Xilinx Spartan 3AN FPGAs verfügen über einen internen Flash, der sie nichtflüchtig macht. Ihre Frage besteht eigentlich aus mehreren Fragen.
1) Sind FPGAs flüchtig oder nicht flüchtig? Die meisten sind flüchtig und erfordern, dass der Konfigurationsbitstrom bei jedem Einschalten von einem externen nichtflüchtigen Speichergerät in das FPGA eingelesen wird. Es gibt einige, die nichtflüchtig sind. Wie der Xilinx S3AN erwähne ich.
2) Wie schützen Sie den Konfigurationsbitstream? Auf diese Frage gibt es mehrere Antworten.
Sie können den Bitstrom verschlüsseln. Dies bedeutet, dass der Bitstrom, der auf dem oben diskutierten nichtflüchtigen Speichergerät gespeichert ist, ein eindeutiger Chiffretext ist, der nur von der einzelnen fpga mit dem entsprechenden Schlüssel entschlüsselt werden kann. Dies schützt die Funktionalität des Bitstreams davor, durch Reverse Engineering entdeckt zu werden. Das heißt, selbst wenn der verschlüsselte Bitstrom in der Lage ist, aus der nichtflüchtigen Speichervorrichtung entweder vor Ort oder auf destruktivere Weise extrahiert zu werden, kann aus der extrahierten Datei kein Sinn gemacht werden, da er verschlüsselt ist.
Sie können auch festlegen, dass der Bitstrom nicht zurückgelesen werden darf. Die JTAG-Schnittstelle, die zum Programmieren eines FPGA zur Debug-Zeit verwendet wird, kann im Allgemeinen verwendet werden, um den Konfigurationsbitstrom aus dem fpga zurückzulesen. Das Setzen der Option NO_READBACK verhindert dies.
Wie kann das FPGA selbst den verschlüsselten Bitstrom lesen, wenn es nicht möglich ist, ihn zu entschlüsseln? Die Antwort ist natürlich , dass es ist möglich , den Bitstrom zu entschlüsseln. Es ist nur ein bisschen schwieriger, weil es verschleiert ist.
Ntoskrnl
Huh? Der Klartext-Bitstrom (nennen Sie es Bpt) wird durch eine Verschlüsselungsfunktion Ek () verschlüsselt, die den Klartext und einen geheimen Schlüssel (nennen Sie es Schlüssel) verwendet, um einen Chiffretext-Bitstrom (nennen Sie es Bct) zu erstellen, also Bct = Ek (Bpt, Schlüssel) . Dies wird gespeichert und beim Booten an das FPGA gestreamt, das den geheimen Schlüssel kennt, sodass er ihn entschlüsseln kann, Bpt = Ek (Bct, Key). Ohne den Schlüssel kann ein Dritter den Entschlüsselungsvorgang nicht ausführen. Angesichts der Verarbeitungszeit und anderer kryptoanalytischer Tools könnte der Dritte möglicherweise den Klartext herausfinden, jedoch nicht durch den beabsichtigten Entschlüsselungsprozess.
Jotorious
Der Angreifer könnte auch einfach den Schlüssel herausfinden und den Klartext entschlüsseln. Ich denke, es kann ziemlich schwierig sein, den Schlüssel von Hardware (z. B. Smartcard) wiederherzustellen, aber wenn er in einem normalen Speicher gespeichert ist, sollte es nicht schwieriger sein, als den Chiffretext wiederherzustellen.
Ntoskrnl
1
Richtig, die Verschlüsselung ist nur so sicher wie der Schlüssel sicher ist. Ich kann nicht mit Nicht-Xilinx-FPGAs sprechen, aber auf Xilinx-FPGAs kann der Schlüssel nicht durch nicht-invasive / zerstörungsfreie Maßnahmen wiederhergestellt werden.
Es ist möglich, FPGAs mit einem integrierten nichtflüchtigen Programmspeicher zu finden. Beispielsweise ist Microsemi (ehemals Actel) auf diesen Gerätetyp spezialisiert.
Andere Anbieter bieten die Möglichkeit, ein FPGA maskiert zu programmieren. Beispielsweise nennt Xilinx seine maskenprogrammierten Geräte " EasyPath " -F FPGAs. Soweit ich weiß, ist hierfür eine NRE-Zahlung erforderlich. Daher ist dies nicht für Situationen geeignet, in denen Sie möglicherweise Ihr Design aktualisieren müssen. (Hutspitze an alex.forencich zur Korrektur)
EasyPath-FPGAs sind nicht maskenprogrammiert, sondern werden nur für Ihren Bitstream speziell getestet, wodurch die Testkosten gesenkt und die Ausbeute erhöht werden (sie können Fehler in Komponenten tolerieren, die Ihr Design nicht verwendet). Das FPGA benötigt weiterhin einen Konfigurations-Flash mit Ihrem Design, damit es funktioniert. Wenn es tatsächlich maskenprogrammiert wäre, wäre das NRE enorm.
Alex. Forencich
6
Ich kann zumindest für Altera sprechen, ich gehe davon aus, dass Xilinx etwas Ähnliches haben wird. Sie haben die Möglichkeit, die Datei zu verschlüsseln, die Sie in externes Flash oder EEPROM gestellt haben. Anschließend laden Sie den Entschlüsselungsschlüssel mithilfe des nichtflüchtigen oder batteriegepufferten Schlüsselspeichers in das Altera-Teil.
Da Sie den Schlüssel nicht vorlesen können, schützt er Ihre IP. Sie haben Design-Gewinne an Asics verloren, weil sie das geistige Eigentum der Menschen nicht schützen konnten. Dies ist also eine ziemlich häufige Funktion.
Die einzige Möglichkeit, dies zu erreichen, besteht darin, ein separates Flash-Modul zu kaufen (falls Sie noch keines auf dem PGA haben) und Ihren Code in den RAM zu laden. Dies wird jedoch nicht für alle Probleme empfohlen. Kaufen Sie einfach so etwas wie eine CPLD, wenn Sie dies tun Planen Sie eine spätere Neuprogrammierung oder einen ASIC ein, wenn Sie nicht beabsichtigen, ihn erneut zu programmieren.
Es ist möglich, FPGAs mit einem integrierten nichtflüchtigen Programmspeicher zu finden. Beispielsweise ist Microsemi (ehemals Actel) auf diesen Gerätetyp spezialisiert.
Andere Anbieter bieten die Möglichkeit, ein FPGA maskiert zu programmieren. Beispielsweise nennt Xilinx seine maskenprogrammierten Geräte " EasyPath " -F FPGAs. Soweit ich weiß, ist hierfür eine NRE-Zahlung erforderlich. Daher ist dies nicht für Situationen geeignet, in denen Sie möglicherweise Ihr Design aktualisieren müssen.(Hutspitze an alex.forencich zur Korrektur)quelle
Ich kann zumindest für Altera sprechen, ich gehe davon aus, dass Xilinx etwas Ähnliches haben wird. Sie haben die Möglichkeit, die Datei zu verschlüsseln, die Sie in externes Flash oder EEPROM gestellt haben. Anschließend laden Sie den Entschlüsselungsschlüssel mithilfe des nichtflüchtigen oder batteriegepufferten Schlüsselspeichers in das Altera-Teil.
Da Sie den Schlüssel nicht vorlesen können, schützt er Ihre IP. Sie haben Design-Gewinne an Asics verloren, weil sie das geistige Eigentum der Menschen nicht schützen konnten. Dies ist also eine ziemlich häufige Funktion.
http://www.altera.com/devices/fpga/stratix-fpgas/about/security/stx-design-security.html
quelle
Die einzige Möglichkeit, dies zu erreichen, besteht darin, ein separates Flash-Modul zu kaufen (falls Sie noch keines auf dem PGA haben) und Ihren Code in den RAM zu laden. Dies wird jedoch nicht für alle Probleme empfohlen. Kaufen Sie einfach so etwas wie eine CPLD, wenn Sie dies tun Planen Sie eine spätere Neuprogrammierung oder einen ASIC ein, wenn Sie nicht beabsichtigen, ihn erneut zu programmieren.
quelle