基於pci匯流排加密卡硬體設計
摘要:介紹基於pci匯流排加密卡的硬體組成部分。該加密卡汲取了現代先進的加密思想,實現了高強度加密功能。
加密是對軟體進行保護的一種有效手段。從加密技術的發展歷程及發展趨勢來看,加密可大體劃分為軟加密和硬加密兩種。硬加密的典型產品是使用並口的軟體狗,它的缺點是埠位址固定,容易被邏輯分析儀或**軟體跟蹤,並且還占用了有限的並口資源。筆者設計的基於pci匯流排的加密卡具有以下幾個優點:第一,pci匯流排是當今計算機使用的主流標準匯流排,具有豐富的硬體資源,因此不易受資源環境限制;第二,pci裝置配置空間採用自動配置方式,反跟蹤能力強;第三,在pci擴充套件卡上易於實現先進的加密演算法。
1 總體設計方案
基於pci匯流排的加密卡插在計算機的pci匯流排插槽上(5v 32bit聯結器),主處理器通過與加密**信,獲取金鑰及其它資料。加密卡的工作過程和工作原理是:系統動態分配給加密卡4位元組i/o空間,被加密軟體通過驅動程式訪問該i/o空間;加密卡收到訪問命令後,通過pci專用介面晶元,把pci匯流排訪問時序轉化為本地匯流排訪問時序;本地匯流排訊號經過轉換處理後,與微控制器相連,按約定的通訊協議與微控制器通訊。上述過程實現了主處理器對加密卡的訪問操作。
圖1 硬體總體設計方案
下面以主處理器對加密卡進行寫操作為例,闡述具體的實現方法。加密卡採用plx公司的pci9052作為pci匯流排週期與本地匯流排週期進行轉換的介面晶元。pci9052作為pci匯流排從裝置,又充當了本地匯流排主裝置,對其配置可通過eeprom 93lc46b實現。主處理器對加密卡進行寫操作,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.1 pci9052部分
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#中斷,pci 3c:0100;分配4位元組本地i/o空間:(例las0rr)0ffffffd;其它本地位址空間未使用:00000000;4位元組本地i/o空間基位址(模4對齊):(las0ba)01200001(僅為示例);4位元組本地i/o空間描述符:(las0brd)00000022(非猝發、lrdyi#輸入使能、bterm#輸入不使能、不預取、各內部等待狀態數均為0、8位本地資料匯流排寬度、小endian模式);中斷控制/狀態,local 4c:00000143(linti1使能、linti1邊沿觸發中斷選擇使能、linti2不使能、pci中斷使能、非軟體中斷、isa介面模式不使能);user i/o、從裝置應答、序列eeprom、初始化控制,local 50:00024492。有兩點要注意:一是設計中採用plx公司推薦使用的序列eeprom 93lc46b按字(16 bit)為單位組織;二是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#引腳加上拉電阻。
圖2 pci9052本地寫時序
以主處理器向微控制器寫資料為例,圖2給出了pci9052的本地寫時序。
2.2 isplsi2064部分
原理圖中用到的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的擴充套件,程式儲存和執行均在片內完成,有效地保證了加密強度。
圖3 lad[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空間,實現主處理器與卡上微控制器之間的握手通訊。被加密軟體通過訪問加密卡,獲取軟體正常執行的相關許可權。在加密卡不存在的情況下,被加密軟體因得不到相關授權而無法執行,從而實現了加密功能。在微控制器的儲存器裡,除了存放金鑰之外,設計者還可以把被加密軟體的部分程式、演算法或常數寫入微控制器的儲存器,在加密卡不存在的情況下,被加密軟體的功能是不完整的,從根本上防止了軟體破解。
一種硬體加密卡方案
本方案是基於fpga的高效能加密卡。加密 過pci express匯流排與主機通訊,由fpga晶元內建的nios ii軟和處理器和pci e硬核分別實現控制模組和通訊模組的功能 採用sm1 rsa des 3des desx或aes等演算法 具體演算法未定 對資料進行加密或解密。使用外接單匯流排加密...
基於硬體指紋的軟體加密和註冊技術
在軟體加密保護技術中,一種常用的保護方法就是基於硬體指紋進行許可授權,本文將詳細介紹硬體指紋的具體獲取技術,並提供一段演示源 程式。硬體指紋加密,指的是使用者免費得到軟體並安裝後,軟體從使用者的機器上取得該機器的一些硬體資訊 如硬碟序列號 bois序列號等等 然後把這些資訊和使用者授權進行繫結,產生...
基於硬體指紋的軟體加密和註冊技術
在軟體加密保護技術中,一種常用的保護方法就是基於硬體指紋進行許可授權,本文將詳細介紹硬體指紋的具體獲取技術,並提供一段演示源 程式。硬體指紋加密,指的是使用者免費得到軟體並安裝後,軟體從使用者的機器上取得該機器的一些硬體資訊 如硬碟序列號 bois序列號等等 然後把這些資訊和使用者授權進行繫結,產生...