|
眾所周知,所有FPGA基本上都是基于SRAM結(jié)構(gòu)的,其程序(固件)是通過JTAG口直接加載或從外部Flash加載到內(nèi)部SRAM中運(yùn)行的。由于 Flash本身無法加密,因此FPGA程序加密保護(hù)是所有開發(fā)者必須面臨的一個主要問題。目前,F(xiàn)PGA程序加密主要有兩種方法:
1、如果系統(tǒng)中沒有可加密的微處理器,可選用自帶加密功能的FPGA,其中Xilinx的有Virtex-2~5系列,采用的是DES( Data Encryption Standard)加密算法;ALtera的有Stratix II~III系列,采用128位密鑰的高級加密算法AES( Advanced Encryption Standard)。兩者的加密原理是:程序被加載到Flash時被加密,再加載到FPGA內(nèi)部SRAM時被還原。第三者從Flash拷出的程序是加了密的,無法復(fù)制使用。這種方法簡單、實(shí)用,但大部分FPGA(特別是中、低檔FPGA)都不具備加密功能。
2、對于自身沒有加密功能的FPGA,可在系統(tǒng)中增加一個可加密的MCU(單片機(jī)),F(xiàn)PGA程序在下載到Flash之前,由用戶根據(jù)自定的算法加其加密,然后再下載到Flash中,MCU將 Flash中程序還原后裝載到FPGA的SRAM中運(yùn)行。因MCU是加密的,其還原算法第三者無法破譯,即使將Flash中的代碼拷出,也無法使用。這種方法雖然復(fù)雜些,但對所有FPGA都適用。
作者:肖時江 |
|