come salvare correttamente un'architettura in un fpga ic per sempre


8

Considerando che ho realizzato un'architettura per fare qualcosa di specifico, scritto in vhdl, per esempio.

Posso 'bruciarlo' in un chip FPGA, per sempre? O come dovrei farlo, proteggendo la proprietà intellettuale sapendo che può essere letta dalla memoria flash seriale?

Risposte:


12

Gli FPGA Xilinx Spartan 3AN hanno un flash interno che li rende non volatili. La tua domanda è in realtà più domande.

1) FPGA è volatile o non volatile? La maggior parte sono volatili e richiedono che il bitstream di configurazione sia letto nell'FPGA da un dispositivo di archiviazione esterno non volatile ad ogni accensione. Ci sono alcuni che non sono volatili. Come la Xilinx S3AN di cui parlo.

2) Come proteggete il bitstream di configurazione? Esistono più risposte a questa domanda.

È possibile crittografare il bitstream; il che significa che il bitstream che è memorizzato sul dispositivo di archiviazione non volatile sopra discusso è un testo cifrato univoco che può essere decodificato dal singolo fpga con la chiave appropriata. Ciò proteggerà la funzionalità del bitstream dall'essere scoperto dal reverse engineering. Ciò significa che anche se il bitstream crittografato è in grado di essere estratto dal dispositivo di archiviazione non volatile, sia in loco che in modo più distruttivo, sense non sarà in grado di essere creato dal file estratto poiché è crittografato.

Puoi anche impostare il bitstream in modo che non possa essere riletto. L'interfaccia JTAG che si utilizza per programmare un FPGA al momento del debug può generalmente essere utilizzata per leggere il flusso di configurazione di ritorno dall'FPGA. L'impostazione dell'opzione NO_READBACK lo proibisce.


1
Come può l'FPGA stesso leggere il bitstream crittografato se non è possibile decrittografarlo? La risposta è ovviamente che è possibile decrittografare il bitstream. È solo un po 'più difficile perché è offuscato.
ntoskrnl,

Eh? Il bitstream in testo normale (chiamalo Bpt) è crittografato da una funzione di crittografia Ek () che accetta il testo in chiaro e una chiave segreta (chiamalo Chiave) per creare un bitstream in testo cifrato (chiamalo Bct), quindi Bct = Ek (Bpt, Key) . Questo viene archiviato e in fase di avvio trasmesso in streaming all'FPGA, che conosce la chiave segreta, quindi è in grado di decrittografarlo, Bpt = Ek (Bct, Key). Senza la chiave, una terza parte non può eseguire l'operazione di decrittazione. Dati i tempi di elaborazione e altri strumenti crittografici, la terza parte potrebbe potenzialmente capire il testo in chiaro, ma non attraverso il processo di decodifica previsto.
Jotorious

L'attaccante potrebbe semplicemente scoprire anche la chiave e procedere alla decodifica del testo in chiaro. Immagino che la chiave possa essere resa piuttosto difficile da recuperare dall'hardware (ad es. Smart card), ma se è memorizzata in una sorta di memoria normale, non dovrebbe essere più difficile del recupero del testo cifrato.
ntoskrnl,

1
Bene, la crittografia è sicura tanto quanto la chiave è sicura. Non sono in grado di parlare con FPGA non Xilinx, ma su FPGA Xilinx la chiave non è recuperabile attraverso misure non invasive / non distruttive.
Jotorious


7

È possibile trovare FPGA con una memoria di programma non volatile integrata. Ad esempio, Microsemi (precedentemente Actel) è specializzato in questo tipo di dispositivo.

Altri fornitori offrono la possibilità di programmare un FPGA con maschera. Ad esempio, Xilinx chiama i propri dispositivi FPGA " EasyPath " programmati dalla maschera . Questo richiede un pagamento NRE, per quanto ne so, quindi non è appropriato per le situazioni in cui potresti dover aggiornare il tuo design. (Punta del cappello ad alex.forencich per la correzione)


2
Gli FPGA EasyPath non sono programmati con maschera, sono testati su misura solo per il tuo bitstream, riducendo i costi di test e aumentando il rendimento (possono tollerare difetti nei componenti che il tuo progetto non utilizza). L'FPGA richiede ancora un flash di configurazione con il progetto caricato per funzionare. Se fosse effettivamente programmato con maschera, l'NRE sarebbe enorme.
alex.forencich,

6

Posso almeno parlare per altera, suppongo che Xilinx avrà qualcosa di simile. Hanno la possibilità di crittografare il file inserito in flash esterno o EEPROM. Quindi si carica la chiave di decodifica nella parte altera, utilizzando la sua memoria non volatile o alimentata a batteria.

Poiché non riesci a leggere la chiave, protegge il tuo IP. Stavano perdendo vittorie nel design per Asics perché non potevano proteggere l'IP delle persone, quindi questa è una caratteristica piuttosto comune.

http://www.altera.com/devices/fpga/stratix-fpgas/about/security/stx-design-security.html


0

L'unico modo per farlo è acquistando un modulo Flash separato (se non ne hai già uno sul PGA) e caricando il tuo codice in ram, tuttavia questo non è raccomandato per tutta la seccatura, basta acquistare qualcosa come un CPLD se pianificare di riprogrammare in un secondo momento o un ASIC se non si ha intenzione di riprogrammare di nuovo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.