目前中國國內(nèi)“金稅工程”經(jīng)過幾年的推廣實施,在全國范圍內(nèi)己取得了巨大的經(jīng)濟效益和社會效益,在金稅工程中,最重要的是對于開票系統(tǒng)數(shù)據(jù)的保護,為了防止開票系統(tǒng)受病毒感染或被人為地破壞,絕大部分的單位都被要求專機專用,從而來確保系統(tǒng)的安全和穩(wěn)定。
但隨著“金稅工程”的深入推廣,也暴露出了一些急待解決的問題∶首先,由于國稅局對于企業(yè)的防偽稅控開票系統(tǒng)有“專機專用”的要求,致使企業(yè)花費一萬多元購買的防偽稅控設(shè)備及計算機只能用于開具增值稅發(fā)票巨大的資源浪費;其次,隨著電子報稅、出口退稅等科技手段在企業(yè)中的應(yīng)用以及企業(yè)財務(wù)管理的電子化,都必須依賴計算機處理,這必然會造成企業(yè)還需再投資一臺電腦給財務(wù)人員來處理這方面的工作,這對企業(yè)來說,是一種重復(fù)的投資;最后,防偽稅控的系統(tǒng)和數(shù)據(jù),財務(wù)軟件和數(shù)據(jù)以及電子報稅系統(tǒng)和數(shù)據(jù)等都屬于企業(yè)的重要資料,如何保證其安全性,使其不會因為財務(wù)人員的誤操作、病毒等因素造成系統(tǒng)的崩潰,甚至重要數(shù)據(jù)資料的丟失,而影響企業(yè)的正常工作。
財稅安全卡的硬件實現(xiàn)
財稅安全卡的工作過程和工作原理是:利用PCI總線的擴展ROM機制,在安全卡上嵌入擴展程序,通過CH365的本地8位總線,接管并擴展BIOS的INT13H中斷,實時監(jiān)控系統(tǒng)的讀寫操作,根據(jù)設(shè)置進行過濾,確保讀寫操作的安全性,實現(xiàn)硬盤隔離和一機多用。相關(guān)硬盤系統(tǒng)引導(dǎo)分區(qū)等信息可以通過CH365的兩線串行主機接口保存在EEPROM上,達到動態(tài)分隔硬盤空間的目的,將一個硬盤分成相互隔離互不干擾的多個硬盤空間。
圖1:財稅安全卡硬件電路圖。 |
PCI總線協(xié)議比較復(fù)雜,用戶可以根據(jù)具體實際需求選擇相應(yīng)的開發(fā)方式。一般,PCI總線開發(fā)采用兩種方式:一是采用CPLD來設(shè)計控制接口。它的最大好處是比較靈活,用戶可以根據(jù)自己的需要開發(fā)出適合于特定功能的芯片,而不必實現(xiàn)PCI的全部功能?,F(xiàn)在有許多生產(chǎn)可編程邏輯器件的廠商,如Xilinx的LogiCore和Altera的AMPP都提供經(jīng)過嚴格測試的PCI接口功能模塊,用戶只要進行組合設(shè)計即可。由于PCI總線協(xié)議復(fù)雜,設(shè)計PCI控制接口難度較大,對于產(chǎn)品不大又有時限的工程項目來說,成本巨大。
二是采用通用PCI接口芯片,例如南京沁恒公司的CH365、AMCC公司的AMCCS5920和AMCCS5933,PLX公司的PLX9054和PLX9080等。通過專用芯片可以實現(xiàn)完整的PCI主控模塊和目標模塊的功能,將復(fù)雜的PCI總線接口轉(zhuǎn)換為相對簡單的用戶接口,用戶只要設(shè)計轉(zhuǎn)換后的總線接口即可,它能實現(xiàn)PCI規(guī)范所要求的所有硬件接口信號和配置空間寄存器,專用接口芯片具有較低的成本和通用性,能夠有效降低接口設(shè)計的難度,縮短開發(fā)時間,并能獲得較好的數(shù)據(jù)傳輸性能。
第二種方法適合于小規(guī)模的情況,能夠有效縮短開發(fā)時間以及成本投入,因此在設(shè)計財稅安全卡上選擇CH365 PCI接口芯片。CH365是一個連接PCI總線的通用接口芯片,支持I/O端口映射、存儲器映射、擴展ROM以及中斷。實現(xiàn)將基于32位PCI總線的從設(shè)備接口轉(zhuǎn)換為主動并行接口:8位數(shù)據(jù)、16位地址、I/O讀和寫、存儲器讀和寫。支持低電平有效的本地中斷請求,支持中斷共享。支持長度達240字節(jié)的I/O端口。支持本地硬件定址功能,自由選擇I/O地址,并在指定地址實現(xiàn)I/O端口。基于CH365的財稅安全卡硬件電路圖如圖1。
在本設(shè)計中,所使用的存儲器是華邦公司的W27C512,64K容量。存儲器容量根據(jù)安全卡擴展程序的大小選擇更大的存儲器,如128K等。EEPROM是Atmel公司的AT24C02,支持寫保護功能,能夠有效防止信息被篡改。圖1的財稅安全卡的硬件電路核心器件是PCI接口芯片CH365、W27C512和AT24C02,CH365的部分引腳連線直接與金手指(電路板和插槽之間的連接點)相連。
CH365通過MEM_RD與ROM芯片U2(27C512)連接。CH365支持EPROM和閃存,容量為32KB或者64KB,如果將SYS_EX用于A16地址線,則最大容量可達128KB。一般情況下CH365直接支持32KB容量的擴展ROM(即27C256芯片的容量),但可以在擴展ROM的程序中通過控制A15地址線支持64KB容量的ROM芯片??蛇x的下拉電阻R1用于CH365的工作模式設(shè)定,圖中的數(shù)據(jù)線D0被連接了下拉電阻,所以系統(tǒng)復(fù)位后,地址線A15為低電平,從而選擇U2的低32KB(偏移地址為0000H~7FFFH),而在需要讀取U2的高32KB時(偏移地址為8000H~0FFFFH),可以通過寫芯片控制寄存器的位0重新設(shè)定A15地址線來訪問ROM的高字節(jié)。
圖2:CH365的讀寫時序。 |
另外,PCI擴展ROM的內(nèi)容通常被BIOS復(fù)制到RAM內(nèi)存中,所以需要設(shè)置CH365的擴展ROM基址以重新映射U2到存儲器空間。
CH365通過SYS_EX與EPPROM芯片U3(型號是AT24C02)連接,CH365的SCL信號線可以選用SYS_EX或者A15,系統(tǒng)復(fù)位后的默認選擇是A15,通常在A15用作地址線時選用SYS_EX,否則選用A15。因為SDA信號線同時是數(shù)據(jù)線D7,為了防止在SCL高電平期間由于SDA變化而產(chǎn)生不必要的誤操作,通常借助于工作模式設(shè)定使SCL信號線(SYS_EX或A15)在系統(tǒng)復(fù)位后保持低電平。CH365的兩線串行接口使用7位設(shè)備地址,可以同時連接多個設(shè)備。設(shè)備地址和命令寄存器的位7至位1為7位設(shè)備地址位,用以選擇從設(shè)備;位0為命令位,置0代表寫操作,置1代表讀操作。本設(shè)計中連接一個設(shè)備,通過數(shù)據(jù)線D7保存相關(guān)的硬盤引導(dǎo)分區(qū)的信息,同時通過“LOCK”信號可以對設(shè)備進行寫保護,防止信息篡改等。CH365的讀寫時序如圖2。
財稅安全卡的擴展程序設(shè)計
PC機中的擴展ROM相當(dāng)于一個電子盤,如果在其中寫入引導(dǎo)程序和應(yīng)用程序,即使計算機沒有硬盤和操作系統(tǒng),擴展ROM中的引導(dǎo)程序和應(yīng)用程序也能夠控制計算機實現(xiàn)某些特定的功能。例如,無硬盤PC機用于工業(yè)控制,控制外部設(shè)備及作業(yè)流程等。
財稅安全卡就是應(yīng)用到PCI總線的擴展ROM,通過特定的擴展引導(dǎo)應(yīng)用程序,在計算機啟動進入硬盤時有效地接管和控制硬盤引導(dǎo),以達到動態(tài)分隔硬盤空間將一個硬盤分成相互隔離,互不干擾的多個硬盤空間,可以根據(jù)用戶需求引導(dǎo)進入相應(yīng)的系統(tǒng)和使用相應(yīng)的空間。
擴展引導(dǎo)應(yīng)用程序主要包括PC引導(dǎo)控制權(quán)接管模塊、動態(tài)隔離硬盤空間模塊,多系統(tǒng)引導(dǎo)模塊(其中包含I2C讀寫模塊)。通過豐富擴展引導(dǎo)引用程序,可以實現(xiàn)基于BIOS級的系統(tǒng)分區(qū)備份、系統(tǒng)數(shù)據(jù)備份、系統(tǒng)拷貝等功能。
1. PC引導(dǎo)控制權(quán)接管的實現(xiàn)
在PC的BIOS自檢中,硬件設(shè)備檢測正常通過后,就開始把系統(tǒng)引導(dǎo)控制權(quán)即根據(jù)用戶指定的啟動順序遞交給軟盤、硬盤或光驅(qū)啟動。以從C盤啟動為例,系統(tǒng)BIOS將讀取并執(zhí)行硬盤上的主引導(dǎo)記錄,主引導(dǎo)記錄接著從分區(qū)表中找到第一個活動分區(qū),然后讀取并執(zhí)行這個活動分區(qū)的分區(qū)引導(dǎo)記錄,而分區(qū)引導(dǎo)記錄將負責(zé)讀取并執(zhí)行IO.SYS,這是DOS和Windows9x最基本的系統(tǒng)文件。
擴展ROM程序首次獲得CPU控制權(quán),修改系統(tǒng)自舉中斷INT19以便在引導(dǎo)操作系統(tǒng)前被初始化,重新編寫新INT19中斷服務(wù)程序,使用INT7B中斷向量作為返回地址。
BOOT_ROM_INIT: PUSH DX;保存寄存器
PUSH BX
MOV DH, 80H;位7置1則自動檢測主板的BIOS
MOV DL, 0FFH;指定初始化方式,為0FFH則自動檢測
MOV BX, OFFSET ROM_INT19;指定新INT19程序的偏移地址_ROM_INT19,
CALL INIT_ROM;ROM初始化程序,返回DL為實際使用的初始化方式
POP BX
POP DX
RETF;ROM初始化完成后返回,必須是遠程返回
2. 動態(tài)隔離硬盤空間的實現(xiàn)
可以利用硬盤特性“AddressOffsetMode”和“SetMax”來有效地縮小硬盤空間,使得動態(tài)隔離硬盤空間,其中通過獲取硬盤I/O端口的基址來設(shè)置硬盤最大邏輯塊尋址(LBA)地址。傳統(tǒng)的縮小硬盤空間采用的是隱藏分區(qū),通過修改系統(tǒng)分區(qū)表的系統(tǒng)標志位達到隱藏分區(qū)效果,此方法安全性低,不能有效地隔離硬盤,在財稅安全方面達不到安全性能要求。
3. 多系統(tǒng)引導(dǎo)模塊的實現(xiàn)
多系統(tǒng)引導(dǎo)根據(jù)用戶選擇啟動相應(yīng)的系統(tǒng),去選擇相應(yīng)的引導(dǎo)程序,這里有別于計算機多重引導(dǎo)啟動(邏輯隔離)原有的系統(tǒng)引導(dǎo)程序,它是簡單的單分區(qū)單系統(tǒng)啟動模式,即固定讀入硬盤活動分區(qū)引導(dǎo)記錄以實現(xiàn)對系統(tǒng)的引導(dǎo),而活動分區(qū)是相對固定的。重寫的系統(tǒng)引導(dǎo)程序?qū)崿F(xiàn)了多分區(qū)多系統(tǒng)啟動模式,可以將硬盤任一分區(qū)視作活動分區(qū),讀入該分區(qū)引導(dǎo)記錄以引導(dǎo)系統(tǒng),本設(shè)計中采用的是通過加載多重引導(dǎo)信息扇區(qū),檢驗數(shù)據(jù)的有效性,在加載過程中動態(tài)設(shè)置硬盤分區(qū)信息。
參考文獻:
[1]李貴山,戚德虎.PCI局部總線開發(fā)者指南.西安:西安電子科技大學(xué)出版社,2001
[2]PCILocalBusSpecificationRevision2.2December18,1998
[3]PCI總線接口芯片CH365中文手冊.南京沁恒電子有限公司,2001