計算機、網絡、通信技術的迅猛發展,使人們的生活和生產方式發生了深刻變化。高科技在給人們的工作和生活帶來方便、舒適的同時,也給人們增添了許多困擾。安全問題首當其沖。PKI(Public Key Infrastructure,公鑰基礎設施)被譽為現代信息社會安全的基石,也是電子商務與電子政務的關鍵技術。它能夠為所有網絡應用透明地提供加密和數字簽名等密碼服務所必需的密鑰和證書管理功能,能夠提供認證、訪問控制、數據完整性、機密性和不可否認性等核心安全服務。通常PKI系統主要由認證
機構、證書庫、密鑰備份及恢復系統、證書作廢處理系統、PKI應用接口系統等部分組成。
PKI的基礎是基于非對稱加密算法的,每個用戶需要有一個能夠確保其安全的場所,用以存放一些個人密鑰(Private Key)、被其直接信任的CA(root CA)名字和證書,以及其他一些重要數據。智能卡(Smart Card)具有安全性高、保密性好的特點,為密鑰的存儲管理提供了良好的介質。智能卡具有嵌入卡片內部的CPU和存儲器,同時還有一系列的安全機制來保證內部數據的安全。利用智能卡卡上CPU的計算能力,可以在卡上進行密鑰對的生成和進行卡上的簽名和驗證運算;同時,利用智能卡出色的安全機制,能夠對存儲在其中的數據提供強有力的安全保證,這樣在用戶私鑰的整個生命周期內,都處在智能卡的保護之下。另外,為了提高設備使用的靈活性和方便性,采用了USB接口技術,充分發揮了USB接口的即插即用、總線供電等優點,使開發的設備具有可攜帶性、靈活性和方便性,可以在各種場合中進行簽名和驗證。
2 PKl客戶端設備的研制
PKI客戶端設備是一個全功能、可操作PKI系統的必要組成部分。主要提供以下一些功能[1.2]:
① 密鑰的產生、更新和保護;
② 進行加解密或數字簽名操作;
③ 證書管理,包括證書的申請、安裝、存儲及驗證等;
④ 與主機、外圍設備和系統軟件有良好接口,方便用戶開發相應的高層軟件。
2.1 客戶端設備的硬件實現
要實現本客戶端設備,在硬件上必須具有智能卡芯片和USB芯片。作為智能卡芯片必須具備至少32 KB用戶數據區(EEPROM)和32 KB程序存儲區及1 KB的RAM;另外必須具備協處理器,能夠進行至少1024位模冪運算,此外必須具備良好的物理安全性,以確保除了通過本系統外,沒有其他途徑可以獲取智能卡中RAM、EE-PROM、ROM、寄存器的數據。而作為USB芯片,只需具備4個端口和滿足USB協議1.1即可。當然,如果能夠把這兩種芯片的功能集成在一起成一顆芯片,會進一步提高安全性和進一步降低設備的尺寸。經過反復比較篩選,我們選用了Atmel公司的同時具備IC卡和USB接口功能的單一芯片AT90S6464C―USB。本芯片還具備硬件隨機數發生器、硬件實現DES和3DES算法、內置RSA、ECC算法等。
其硬件實現只需要加一個振蕩電路即可。另外,為了指示USB的讀寫操作,加了一個指示燈。在讀寫操作時指示燈亮。
2.2 客戶端設備的軟件設計
PKI客戶端系統的軟件設計包括計算機主機的軟件設計和硬件設備中的軟件設計,具體的層次結構如圖1所示。
智能卡層的軟件設計,主要完成COS(Chip Operation System)軟件和加密算法;USB接口層的軟件設計,主要完成主機和智能卡之間的信息傳遞;應用層的軟件設計,主要完成底層的API函數和CSP軟件,為用戶提供開發接口支持。下面詳細介紹各部分的設計。
2.2.1 智能卡層軟件設計
主要包括兩個模塊:卡內操作系統COS和算法庫。這是實現PKI客戶端設備的關鍵部分。
(1)卡內操作系統COS的設計
智能卡內設計了一個小型的操作系統COS. COS的主要功能是:控制智能卡與外界信息進行交換,管理智能卡存儲器中的文件系統,并在智能卡內完成各種命令的處理。COS的基本功能必須遵循ISO7816―4標準[3]。
COS系統是由傳輸管理、文件管理、安全體系、命令解釋四個功能模塊組成的。
① 傳輸管理。按ISO7816―3標準,監督卡與終端之間的通信,保證數據正確地傳輸,防止與終端之間通信數據被非法竊取和篡改。
②文件管理。文件管理模塊用來管理智能卡芯片內存儲的各種數據,如證書、密鑰和其他用戶信息等。
智能卡芯片內的文件分為MF、DF和EF三種。MF(主文件)是所有文件的根文件;DF文件是目錄文件,根據DF可以區分存在于智能卡上的不同應用;EF是基本文件,用來存儲具體的數據和記錄,也是COS命令所要操作的具體對象。本設計中,EF分為四種類對象:密鑰、證書、認證對象和數據對象。其中認證對象中保存識別用戶身份的PIN碼。EF的存放分為文件頭和文件體兩個部分。文件頭中包含文件的標識符、訪問權限和文件體的指針;而文件體中存放具體數據。
對IC卡的操作,是通過命令的方式實現的。實際上是通過命令對IC卡內文件的操作。增加功能即是增加文件,所以,下面著重就文件系統進行說明。
a.文件的空間結構
每個文件在EEPROM中的存放格式為
COS整個的文件空間劃分如下:
◆當建立完.MF之后,COS自動將整個EEPROM空間都分配給它。MF的文件頭長度為13字節十文件名長
度(5~16字節)。
◆每個DF所占空間=DF文件頭空間(等同于MF)+DF下所有的文件空間之和。
◆二進制結構文件的空間=文件頭空間(13字節)+EF所申請的空間。
◆定長記錄和循環定長記錄文件的空間=文件頭空間(13字節)+記錄數×記錄長度。
◆變長記錄結構文件的空間=文件頭空間(13字節)+建立時申請的空間。
◆安全基本文件的空間一文件頭空間(13字節)+密鑰個數×(25字節)。
b.KEY文件及其文件中的密鑰
每個DF或MF下有且只有一個KEY文件,在任何情況下密鑰均無法讀出。在KEY文件中可存放多個密鑰,每個密鑰為一條定長記錄。記錄中規定了其標識、版本、算法、屬性及密鑰本身等相關內容。
在滿足KEY文件的增加權限時,可用Write KEY命令增加一條記錄。只有在滿足某個密鑰的使用權限時才可以使用該密鑰,在滿足某個密鑰的修改權限時才可以修改該密鑰。
每種密鑰具有其獨立性,用于一種特定功能的密鑰不可作為它用。本設計支持以下幾種密鑰:個人密碼(PIN)、外部認證密鑰、內部認證密鑰、(Crypt密鑰、PIN解鎖密鑰、PIN重裝密鑰、應用維護密鑰等。
③ 安全體系。主要是對所傳送的信息進行安全性的檢查和處理,防止非法的竊聽或侵入。安全體系包括3部分:安全狀態、安全屬性和安全機制。安全狀態是指當前智能卡所處的一種系統狀態,這種安全狀態是在智能卡完成復位應答或完成某個命令后得到的;安全屬性是智能卡執行特定的命令所需要的安全條件,只有滿足了這個安全條件,命令才能執行;安全機制是指安全狀態實現轉移所采取的方法和手段,它是與安全狀態和安全屬性相聯系的。
④ 命令解釋。根據接收到的命令檢查各項參數是否正確,執行相應的操作。
IC卡通過USB接口與終端之間使用命令與應答的通信機制,即終端,把命令送到1C卡,IC卡接收并處理后發送響應給終端。這種機制包括兩種應用協議數據單元(APDU)――命令應用數據單元與響應應用數據單元。
命令應用數據單元包含兩部分:固定的4字節命令頭和長度可變的命令體,其內容為
CLA字節代表命令的類型。
INS字節表示命令編碼,P1和P2為具體命令參數。Lc字節表示數據的長度,只有一個字節表示,取值范圍為1~115。如果Lc為0,表示沒有數據域。
Le表示期望卡返回的數據長度,由單字節表示,取值范圍為1~115。
響應應用數據單元也包括兩部分:可能存在的響應數據體(應答體)和兩個狀態字節(應答尾部),其內容為
基于保密的原因,具體的命令代碼和狀態字節(SWl、SW2)的編碼略。
(2)算法庫的實現
算法庫是一個根據不同需要可擴展的函數庫。目前,算法庫里有:
◆對稱加密算法――DES算法、3DES算法、RC2、RC4算法;
◆摘要(散列值)算法――SHA一1算法、MD5算法;
◆非對稱加密算法――RSA算法、DSA算法、ECC算法。
以上算法全部在設備內實現。
2.2.2 USB接口層的軟件設計
USB接口層軟件主要完成計算機主機和客戶端設備之間的數據傳輸,完成主機與IC卡之間交互的命令及響應。一方面將主機來的USB信息包轉換成符合IS07816--4標準的智能卡可識別的命令,另一方面,根據IS07816--4標準,將智能卡的響應數據轉化成USB數據包,上傳給主機。
在USB的初始化中,完成終端設備USB的自舉過程。考慮到設備與計算機之間的數據交換具有數量少、傳輸速度不要求很高的特點,因而將其配置為HID類設備,實現在WIN2000、Win Me等環境下免安裝驅動程序的特點。本設備使用了3個端點:端點0用于控制信息的傳輸,端點1用于接收主機發來的數據,端點3用于向主機發送數據。
USB的消息處理過程是:USB發出中斷請求,單片機響應中斷,首先查看各中斷寄存器,找出產生中斷的事件,然后處理。程序的設計主要集中在中斷處理服務程序上,如圖2所示。
上述2.2.1節和2.2.2節軟件設計為PKI終端設備內軟件設計,整個軟件采用了Keil C51語言編寫。與匯編相比,C語言在功能、結構、可讀性、可維護性上有明顯的優勢。Keil C51提供了豐富的庫函數和功能強大的集成開發調試工具,全Windows界面。生成標準的HEX文件,以直接寫入程序存儲器,如Flash中。
2.2.3應用層軟件設計
應用層(計算機主機)軟件開發主要是提供底層API庫函數,在此基礎上實現CSP[4](Cryptographic Service Provider,加密服務提供者)軟件設計,為用戶提供符合微軟加密服務要求的中間件。應用層軟件結構如圖3所示。
應用程序不能直接與CSP進行通信。取而代之,應用程序通過調用由Advapi32.d11和Crypt32.dll模塊所提供的一些CryptoAPI接口函數來與CSP進行通信,從而完成相應的功能。操作系統過濾這些函數調用,并把它們通過C2ryptoSPI(系統編程接口)傳遞給相應的CSP函數。
整個軟件的實現過程為:首先,根據智能卡COS命令,完成底層API庫函數CLlB。通過對庫函數進行封裝生成PKIKEY類,即PKIKEY.CPP,PKIKEY.H,進而生成CSP所需的DLL文件,通過向微軟申請認證,通過后微軟將進行簽名。
本設計中,可以向客戶提供底層API函數和CSP兩種中間件接口,以支持客戶的二次開發。
在應用軟件方面,我們設計了客戶端管理工具軟件和管理端管理工具軟件。
客戶端管理工具實現的功能:證書的自動注冊注銷,修改用戶密碼等功能。
管理端管理工具實現的功能:除具有客戶端管理工具的功能外,還提供了格式化設備、清空設備、解鎖用戶密碼、修改管理員密碼等功能。
2.3 主要技術指標
操作系統:Windows 98/Me/2000/XP,Mac OS 8/9,Linux.
證書及標準:PKCS#1l,MS CAPI,PC/SC,X.509 v3證書存儲。
加密算法:MD5,SHA - l,DES/3DES,RC2,RC4,RSA,DSA,ECC等。
接口類型:USB V1.1 A型。
功耗:<250 mW。
3 總 結
本文提出的PKI客戶端設備已經小批量生產。它是整個PKI體系的重要組成部分,可以實現密鑰安全保管、證書管理、簽名、驗證簽名、加/解密和身份認證等功能,具有高穩定性、高安全性、高可靠性、安裝和攜帶方便、操作簡便、運算速度快等特點;可廣泛應用于要求個人身份認證、識別、數據加密、安全存儲等領域,如電子商務、電子政務等,所提供的底層庫函數和CSP軟件以中間件方式極大地方便了客戶的二次開發。總之,本設計思想先進,代表了當前該領域的發展方向,應用前景廣泛。