基于PCI總線芯片CH365的數(shù)據(jù)密碼卡設(shè)計
引言
在信息化時代的今天,計算機技術(shù)的飛速發(fā)展,給人們的生產(chǎn)和生活帶來了巨大便利,以前復(fù)雜的工作,現(xiàn)在只要單擊鼠標即可完成,因此,計算機已經(jīng)成為人們?nèi)粘9ぷ骱蜕畹囊徊糠?,人們對計算機的依賴程度越來越高,沒有計算機的生活簡直難以想象。隨著計算機在生產(chǎn)和生活中占劇比重的加大,信息安全問題也顯得突出重要,失泄密案件時有發(fā)生。小到企業(yè)商業(yè)機密被竊取,給企業(yè)造成巨大的經(jīng)濟損失;大到國家安全和軍事機密被竊取,給人民的生命財產(chǎn)安全帶來嚴重威脅。在鐵路軍交管理系統(tǒng)中,對軍列的調(diào)度是采用密碼管理的,這些密碼標識了重要的軍事目標,同時也只有通過此密碼才能訪問調(diào)度軟件,從而調(diào)度軍列。如果這些密碼失竊,重要的軍事目標將暴露,同時對軍列的調(diào)度將出現(xiàn)混亂甚至引發(fā)安全事故。因此,對這些密碼進行管理顯得尤為重要。在這樣的背景下,本文研制了一種能有效安全管理機密數(shù)據(jù)的密碼卡。
1 CH365的功能特點
現(xiàn)在主流的PCI接口芯片是PLX公司的PCI905x系列芯片,此類芯片功能強大,有多種工作模式,數(shù)據(jù)傳輸速率高,但價格相對偏高,而且需要編寫相應(yīng)的硬件驅(qū)動程序。而CH365則是一款國產(chǎn)的廉價PCI接口芯片,它可以將PCI總線的時序轉(zhuǎn)換為類似ISA總線時序,以便于后續(xù)與數(shù)字信號處理器、FPGA以及MCU等接口。由于CH365的生產(chǎn)廠商提供了豐富的硬件驅(qū)動程序,因此,軟件編程人員只要調(diào)用相應(yīng)廠商提供的動態(tài)連接庫,即可完成對器件的操作,而且操作十分簡便。
CH365支持I/O端口映射、存儲器映射、擴展ROM以及中斷。CH365可將32位高速PCI總線轉(zhuǎn)換為簡單的類似于ISA總線的8位主動并行接口,以用于制作低成本的、基于PCI總線的計算機板卡,也可將原先基于ISA總線的板卡升級到PCI總線上。PCI總線與其它主流總線相比,速度更快,實時性更好,可控性更佳,所以,CH365非常適用于高速實時的I/O控制卡、通訊接口卡、數(shù)據(jù)采集卡、電子盤、擴展ROM卡等。它的主要特點如下:
(1)可將基于32位PCI總線的從設(shè)備接口轉(zhuǎn)換為主動并行接口,包括8位數(shù)據(jù),16位地址,I/O讀和寫,存儲器讀和寫;
(2)可以設(shè)定PCI板卡的設(shè)備標識(VendorID,Device ID,Class Code等);
(3)能以字節(jié)、字或雙字為單位對I/O端口或者存儲器進行讀寫;
(4)支持本地硬件定址功能,可自由選擇I/O地址;
(5)直接升級ISA板卡到PCI總線,完全不需要修改I/O板卡的相關(guān)軟件;
(6)芯片本身無需驅(qū)動程序即可工作,而且升級ISA板卡可以不需要軀動程序。
2 CH365的內(nèi)部結(jié)構(gòu)和信號線
圖1所示是CH365內(nèi)部的主要結(jié)構(gòu)。CH365對PCI總線的各種信號進行譯碼后,可產(chǎn)生內(nèi)部數(shù)據(jù)總線D31~D0、內(nèi)部地址總線 A31~A0、讀寫I/O端口信號、讀寫存儲器等信號。結(jié)構(gòu)圖右側(cè)的信號是CH365提供給本地端的各個外部引腳。地址線A15~A0用于提供相對于基址的偏移地址:數(shù)據(jù)總線D7~D0在讀操作時用于輸入數(shù)據(jù),在寫操作時用于輸出數(shù)據(jù);IOP_RD用于提供I/O讀選通脈沖信號;IOP_WR用于提供 I/O寫選通脈沖信號;MEM_RD用于提供存儲器讀選通脈沖信號,MEM_WR用于提供存儲器寫選通脈沖信號。由于CH365提供的地址線、數(shù)據(jù)線、讀寫選通信號線類似于ISA總線的信號線,所以,非常適合將ISA板卡升級到PCI總線上。在I/O讀寫操作期間,CH365的A7~A0輸出的是I/O端口的偏移地址,它提供給外部設(shè)備的有效偏移地址范圍是00H~EFH,外部設(shè)備可進一步對A7~A0進行譯碼以產(chǎn)生二級片選信號。在I/O操作期間,CH365的A15~A10保持不變,但可以由內(nèi)部寄存器事先設(shè)定為高電平或低電平。如果使用本地硬件定址功能,則可以對A9~A0進行地址譯碼,并通過IOP_HIT引腳向CH365請求本地定址,以實現(xiàn)與ISA總線相兼容的000H~3FFH地址范圍內(nèi)的I/O端口地址。在存儲器操作期間,CH365的A14~A0可輸出存儲器的偏移地址,提供給外部設(shè)備的有效偏移地址范圍是0000H~7FFFH。在存儲器讀寫操作期間,CH365的 A15保持不變,但可以由內(nèi)部寄存器事先設(shè)定為高電平或低電平,以用于存儲器地址線的擴展或者頁面選擇。
3 PCI總線的數(shù)據(jù)密碼卡硬件設(shè)計
3.1 數(shù)據(jù)密碼卡的組成
數(shù)據(jù)密碼卡實際上就是一個基于計算機PCI總線的板卡。它區(qū)別于普通板卡的地方主要是這塊板卡中包含了大量的加密后的機密數(shù)據(jù),這些數(shù)據(jù)存于板卡的FLASH存儲器中。在軍交系統(tǒng)中,這些數(shù)據(jù)代表了車輛的編組調(diào)度等信息,軍交管理軟件直接應(yīng)用解密后的數(shù)據(jù)來對車輛實施調(diào)度,但這些解密后的數(shù)據(jù)對操作人員來說是透明的。為了防止不法分子蓄意破解數(shù)據(jù),上級主管部門會不定期的將原始數(shù)據(jù)重新加密,然后寫入FLASH存儲器中,再將重新加密過的 FLASH存儲器下發(fā)給各個部門。采取多種加密策略的目的主要是為了防止數(shù)據(jù)密碼卡被盜,或者其中的FLASH存儲器被盜而使密碼被破譯。
數(shù)據(jù)密碼卡的組成框圖如圖2所示。
3.2 CPLD設(shè)計
CPLD的設(shè)計是本數(shù)據(jù)密碼卡的核心。設(shè)計選用LATTICE公司生產(chǎn)的LATYICE1032。它所包含的模塊主要有三塊。其一是數(shù)據(jù)密碼卡訪問合法性確認和數(shù)據(jù)解密模塊;其二是地址譯碼模塊;三是ROM地址產(chǎn)生器模塊。其頂層設(shè)計圖如圖3所示。
4 各模塊核心部分的ABEL語言實現(xiàn)
4.1 ROM地址產(chǎn)生模塊
下面是產(chǎn)生ROM地址的程序代碼:
addrl:=addrl+1:
when addr1==^hlff then c0=1
else c0=0;
when e0 then addr2:=addr2+1
else addS:=addr2;
從上述程序中可以看出,ROM中的數(shù)據(jù)不是按照地址順序排放的,也就是說,即使是得到了這片ROM,用編程器把數(shù)據(jù)讀出,讀出的數(shù)據(jù)也是無法破解的。[!--empirenews.page--]
4.2 訪問合法性確認和數(shù)據(jù)解密模塊
訪問合法性確認和數(shù)據(jù)解密程序代碼如下:
該操作的保密措施主要是兩點:一是在當(dāng)訪問者所輸入的權(quán)限密碼正確后,才能使pass0~pass4信號有效,從而使OE信號有效來讀取ROM 中的數(shù)據(jù);二是從ROM中讀到的數(shù)據(jù),還必須經(jīng)過解密后才能得到真正的數(shù)據(jù),解密的措施是ROM中讀到的數(shù)據(jù)與某一數(shù)據(jù)進行異或處理。
5 結(jié)束語
基于CH365設(shè)計的PCI總線數(shù)據(jù)密碼卡與PCI總線的接口比較簡單,數(shù)據(jù)保密性強,操作簡單。目前此卡已成功用于鐵路調(diào)度系統(tǒng)之中。(中電網(wǎng) 作者:張顯才 韓德紅)