嵌入式軟件代碼保護系統設計
目前為止, 有些廠商采取先預先加密軟件代碼, 寫入存儲器中, 執行時, 通過軟件解碼來實現對代碼的保護, 但是這種方法效率低, 成本高, 實用性比較低; 現有的一些硬件加解密系統, 只能保護有限類型的NAND- Flash存儲器中的代碼, 并且系統中的密匙一旦固化就無法改變。針對這些局限性, 本文提出了一種全新的嵌入式產品軟件代碼保護系統, 該系統適用于目前通用的基于I2C、SPI總線的EEPROM 和F lash;以及主流廠商的NAND- Flash。
1 嵌入式軟件代碼保護系統構成
嵌入式軟件代碼保護系統由兩部分組成: PC 機上運行的TDES加密軟件和硬件電路中隔離處理器與軟件代碼存儲器直接通路的代碼保護芯片組成, 如圖1所示。PC機上的TDES 程序對嵌入式軟件代碼進行加密, 生成密文形式的數據, 并寫入軟件代碼存儲器中, 供嵌入式系統使用; 同時通過GPIO 口模擬I2C 或者SPI通信協議, 對代碼保護芯片中, 存放相關重要數據的EERPOM 區域進行配置: 達到諸如更改代碼保護芯片中TDES的密匙的目的。
代碼保護芯片內嵌于嵌入式系統的硬件電路中, 用戶可以選擇隔離處理器和指令代碼存儲器之間的通路: 所有寫入存儲器的數據將被加密后才寫入其中; 所有從存儲器中讀出的數據將被解密后才送回給CPU執行; 用戶也可以選擇不隔離處理器和存儲器之間的通路: 讀寫操作將不會進行任何加密和解密。

圖1 嵌入式軟件代碼保護系統
2 代碼保護芯片設計
2. 1 內部結構簡介
代碼保護芯片隔斷了原有嵌入式系統處理器和軟件代碼存儲器之間的直接通路, 如圖2所示。該系統主要分成主從I2C 總線接口模塊、主從SPI總線接口模塊、Nand- Flash通信模塊以及核心控制模塊。
如果用戶選擇I2C 接口, 芯片將通過I2C總線和存儲器進行通信, 如果用戶選擇SPI接口, 芯片將通過SPI總線和存儲器進行通信, 否則芯片將通過NAND- F lash模塊和存儲器進行通信。
如果用戶選擇加密模式, 那么處理器和存儲器之間的通路將被隔斷, 所有準備寫入存儲器的數據經過TDES加密后才寫入其中, 所有從存儲器讀入的數據經過TDES解密后才送回至處理器執行; 如果用戶選擇不加密模式, 那么處理器將直接和存儲器進行通信, 代碼保護芯片將不啟動任何加密/解密操作。這種設計方式, 使得芯片可以適用于更多的嵌入式系統, 同時也給予用戶最大限度的靈活性。
圖2 代碼保護芯片架構
評論