PCI加密卡硬件設計分析論文

時間:2022-06-26 04:34:00

導語:PCI加密卡硬件設計分析論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

PCI加密卡硬件設計分析論文

摘要:介紹基于pci總線加密卡的硬件組成部分。該加密卡汲取了現代先進的加密思想,實現了高強度加密功能。

關鍵詞:加密卡PCI總線PCI9052ISP單片機

加密是對軟件進行保護的一種有效手段。從加密技術的發展歷程及發展趨勢來看,加密可大體劃分為軟加密和硬加密兩種。硬加密的典型產品是使用并口的軟件狗,它的缺點是端口地址固定,容易被邏輯分析儀或仿真軟件跟蹤,并且還占用了有限的并口資源。筆者設計的基于PCI總線的加密卡具有以下幾個優點:第一,PCI總線是當今計算機使用的主流標準總線,具有豐富的硬件資源,因此不易受資源環境限制;第二,PCI設備配置空間采用自動配置方式,反跟蹤能力強;第三,在PCI擴展卡上易于實現先進的加密算法。

1總體設計方案

基于PCI總線的加密卡插在計算機的PCI總線插槽上(5V32Bit連接器),主處理器通過與加密卡通信,獲取密鑰及其它數據。加密卡的工作過程和工作原理是:系統動態分配給加密卡4字節I/O空間,被加密軟件通過驅動程序訪問該I/O空間;加密卡收到訪問命令后,通過PCI專用接口芯片,把PCI總線訪問時序轉化為本地總線訪問時序;本地總線信號經過轉換處理后,與單片機相連,按約定的通信協議與單片機通信。上述過程實現了主處理器對加密卡的訪問操作。

圖1硬件總體設計方案

下面以主處理器對加密卡進行寫操作為例,闡述具體的實現方法。加密卡采用PLX公司的PCI9052作為PCI總線周期與本地總線周期進行轉換的接口芯片。PCI9052作為PCI總線從設備,又充當了本地總線主設備,對其配置可通過EEPROM93LC46B實現。主處理器對加密卡進行寫操作,PCI9052把PCI總線時序轉化為8位本地數據總線寫操作。這8位本地數據總線通過Lattice公司的ispLSI2064與單片機AT89C51的P0口相連,2064完成PCI9052本地總線與AT89C51之間的數據傳輸、握手信號轉換控制等功能。2064對8位本地數據總線寫操作進行處理,產生中斷信號。該中斷信號與AT89C51的INT0#相連,使AT89C51產生中斷。AT89C51產生中斷后,檢測與其P2口相連的本地讀寫信號WR#、RD#、LW/R#。當WR#為低電平、LW/R#為高電平時,AT89C51判斷目前的操作是否為寫操作。確認是寫操作后,AT89C51把P0口上的8位數據取下來,然后用RDY51#(經2064轉換后)通知PCI9052的LRDYi#,表明自己已經把當前的8位數據取走,可以繼續下面的工作。PCI9052收到LRDYi#有效后,結束當前的8位數據寫操作。PCI總線的一次32位數據寫操作,PCI9052本地總線需要四次8位數據寫操作,通過字節使能LBE1#、LBE0#區分當前的8位數據是第幾個字節有效。

加密卡硬件總體設計方案如圖1所示。

2硬件各組成部分說明

2.1PCI9052部分

PCI9052是PCI總線專用接口芯片,采用CMOS工藝,160引腳PQFP封裝,符合PCI總線標準2.1版。其總線接口信號與PCI總線信號位置對應,因此可直接相連,易于PCB實現。PCI9052的最大數據傳輸速率可達132MB/s;本地時鐘最高可至40MHz,且無需與PCI時鐘同步;可通過兩個本地中斷輸入或軟件設置產生PCI中斷。它支持三種本地總線工作模式,實際設計采用地址和數據線非復用、8位本地數據總線、非ISA模式。

PCI9052內部有一個64字節PCI配置空間,一個84字節本地配置寄存器組。對PCI9052的配置可由主機或符合3線協議的串行EEPROM完成(注:ISA模式必須由串行EEPROM完成配置)。實際設計采用Microchip公司的93LC46B存放配置信息。系統初始化時,自動將配置信息裝入PCI9052,約需780μs。如果EEPROM不存在或檢測到空設備,則PCI9052設置為默認值。

在設計中,EEPROM用到的配置項目有:設備ID:9050;廠商ID:10B5;分類代碼:0780;子系統ID:9050;子系統廠商ID:10B5;支持INTA#中斷,PCI3C:0100;分配4字節本地I/O空間:(例LAS0RR)0FFFFFFD;其它本地地址空間未使用:00000000;4字節本地I/O空間基地址(模4對齊):(LAS0BA)01200001(僅為示例);4字節本地I/O空間描述符:(LAS0BRD)00000022(非猝發、LRDYi#輸入使能、BTERM#輸入不使能、不預取、各內部等待狀態數均為0、8位本地數據總線寬度、小Endian模式);中斷控制/狀態,Local4C:00000143(LINTi1使能、LINTi1邊沿觸發中斷選擇使能、LINTi2不使能、PCI中斷使能、非軟件中斷、ISA接口模式不使能);UserI/O、從設備應答、串行EEPROM、初始化控制,Local50:00024492。有兩點要注意:一是設計中采用PLX公司推薦使用的串行EEPROM93LC46B按字(16bit)為單位組織;二是EEPROM開發器編輯輸入與手工書寫的順序對應關系,以廠商ID:10B5為例,在開發器編輯輸入的是b510,而不是10B5。

PCI9052本地信號的含義是:LAD[7..0]:本地8位數據總線;WR#:寫有效;RD#:讀有效;LW/R#:數據傳輸方向,高電平為寫操作,低電平為讀操作;LBE1#和LBE0#:字節使能,表明當前LAD[7..0]上的數據是第幾個字節(0到3);BLAST#:PCI9052寫數據準備好或讀數據已取走;LRDYi#:外部設備(此設計指單片機)已把PCI9052寫操作數據取走或讀操作數據準備好;LINTi1:外部設備通過LINTi1向主機發送INTA#中斷,當單片機驗證密鑰正確,向主處理器發送請求,表明可以開始從中讀取相關數據。

需注意的是,PCI9052在使用時,某些引腳要加阻值為1kΩ~10kΩ的下拉或上拉電阻。因此在實現時,給MODE、LHOLD、LINTi1引腳加下拉電阻,CHRDY、EEDO、LRDYi#引腳加上拉電阻。

圖2PCI9052本地寫時序

以主處理器向單片機寫數據為例,圖2給出了PCI9052的本地寫時序。

2.2ispLSI2064部分

為降低數據被解析的風險,應盡量減少使用分離元件。因此在設計中選用了Lattice公司的CPLDispLSI2064。該芯片采用EECMOS技術,100引腳TQFP封裝,擁有2000個PLD門,64個I/O引腳另加4個專用輸入,64個寄存器,3個全局時鐘,TTL兼容的輸入輸出信號。2064具有在系統可編程ISP(In-SystemProgrammable)功能,可方便實現硬件重構,易于升級,降低了設計風險,并且安全性能高。PCI9052與單片機之間的8位數據線進行雙向數據傳輸,不能簡單地直接相連,需要進行傳輸方向控制和數據隔離。故用2064作為PCI9052本地信號與單片機信號進行信號傳遞的接口,圖3給出了8位數據信號雙向傳輸的原理圖。2064的開發軟件ispDesignExpert8.2版支持VHDL、VerilogHDL、Abel等語言及原理圖輸入,且通過專用下載電纜可把最終生成的JEDEC文件寫入2064,實現編程。在設計時采用了原理圖輸入的方法。

原理圖中用到的BI18的功能描述為:當OE=1時,XB為輸出,A為輸入,即XB=A;當OE=0時,XB為輸入,Z為輸出,即Z=XB。FD28的功能描述為:8位D觸發器(帶異步清除)。結合PCI9052本地讀寫時序,可以分析得出,在進行讀寫操作時,圖3實現了LAD[7..0]與D[7..0]之間正常的數據傳輸;在非讀寫時,雙方數據處于正常隔離狀態。

2.3單片機AT89C51部分

單片機采用ATMEL公司的AT89C51。這是一個8位微處理器,采用CMOS工藝,40引腳DIP封裝。它含有4K字節Flash和128字節RAM,且自身具有加密保護功能。單片機不進行外部存儲器和RAM的擴展,程序存儲和運行均在片內完成,有效地保證了加密強度。

圖3LAD[7..0]與D[7..0]之間的數據傳輸

單片機的P0口接圖3的D[7..0],并加10kΩ的上拉排阻。WR#、RD#、W/R#、BE1#、BE0#作為單片機輸入信號接P2口。PCI9052寫數據準備好或讀數據已取走信號REQ9052#作為單片機輸入信號接P3.2(INT0#);寫數據單片機已取走或讀數據單片機準備好信號RDY51#作為單片機輸出信號接P1.0;接P1.1的OVER51#作為單片機輸出信號,經2064接PCI9052的LINTi1,通過LINTi1向主機發送INTA#中斷請求。

基于PCI總線的加密卡,依照PCI總線標準2.1版,通過動態分配4字節I/O空間,實現主處理器與卡上單片機之間的握手通信。被加密軟件通過訪問加密卡,獲取軟件正常執行的相關權限。在加密卡不存在的情況下,被加密軟件因得不到相關授權而無法運行,從而實現了加密功能。在單片機的存儲器里,除了存放密鑰之外,設計者還可以把被加密軟件的部分程序、算法或常數寫入單片機的存儲器,在加密卡不存在的情況下,被加密軟件的功能是不完整的,從根本上防止了軟件破解。