IC卡技術已經廣泛應用于金融、保險、社會保障、身份識別等領域。她以她存儲容量大,安全性能好,攜帶方便等特點,得到廣大行業的普遍認同。 一 IC卡應用從技術角度來講分三個層次:硬件層、技術層和應用層。 1 硬件層分兩個方面: 1) IC卡芯片及卡的制作。IC卡芯片目前主要有國外愛爾梅特、西門子等幾家公司生產。IC卡片的制作是把IC芯片封裝成為一張張各式各樣的卡片,這樣的公司國內很多. 2) 另一方面為IC卡讀寫器.IC卡讀寫器糞通用與專用兩種:通用讀寫器為一臺單獨的裝置,可以用來讀取不同型號的IC卡.專用讀寫器通常嵌入專用儀器中,例如:IC卡電話機,IC卡電表等,一般只能讀取某種特定IC卡.對于上述行業中,IC卡讀寫器一般采用通用讀寫器,生產這種IC卡讀寫器公司,國內已經有一些,比如深圳的明華粵漢公司.但傳統的通用讀寫器一般是把一張IC卡插入讀寫器中,IC卡上的密碼和對于數據讀取都由讀寫器以外的應用程序來完成,這樣在一定程度上用戶的信息就暴露給了應用程序的開發與維護人員.未了解決用戶信息的安全過分依賴于應用程序的問題,現在已經研制出一種雙卡座IC卡讀寫器,這種讀寫在原來讀寫器基礎上增加了一個SAM卡座,用來插智能存儲卡(CPU卡),SAM卡上帶有加密解密程序,SAM能對用戶的密鑰進行加密與解密存取,核對卡上密碼,加密解密存取卡中數據.這樣在一定程度上隔離了IC卡的安全系統與應用程序系統之間的關系,保證了IC卡的用戶獨立性. 2 接口層 應用系統要通過IC卡讀寫起來讀寫IC卡中的數據,這就需要IC卡讀寫器向應用系統提供一個讀寫接口,現在IC卡讀寫器的接口一般有普通串口,USB接口,以及無線接口,因此IC卡讀寫器的開發人員就的為應用系統開發人員提供一套接口程序,目前在WINDOWS平臺上普遍采用提供一組動態連接庫(dll)給應用系統開發人員.應用系統開發人員就調用動態連接庫中函數來完成對IC卡的操作.采用普通串口讀寫器動態庫主要完成是串口通訊的功能。 IC_DLL動態庫大體設計思路如下: IC_DLL動態庫主要用來與IC卡讀寫器之間進行通訊,可以通過串口或并口,具體通訊方式是:IC_DLL動態庫向串口或并口發送與讀寫器協調一致的通訊信號,而讀寫器則從串口接收這些通訊信號,然后根據這些通訊信號來對IC卡進行具體操作,真正直接操作IC卡是讀寫器,而IC_DLL動態庫是利用串口或并口來操作讀寫器的函數庫。 IC_DLL動態庫大體設計方法如下: (1)與串口的底層接口: 利用WINDOWS對硬件設備的抽象:在WINDOWS 環境下,WINDOWS對硬件設備的管理采用設備文件方式。在IC_DLL動態庫中建立一個與串口或并口相關聯的通訊設備文件gFile,通過讀寫設備文件來實現對串口或并口數據的接收與發送。 另外,利用WINDOWS的底層通訊結構COMMTIMEOUTS,DCB,COMSTAT來對通訊設備的屬性進行訪問與設置。 (2)IC_DLL動態庫內部函數的處理機制 利用c語言豐富而強大的對內存管理和對字節的處理功能,另外還利用c語言豐富的數據類型,很方便的實現對IC卡上的存儲地址的計算和數據的移位操作;利用移位操作和位操作可以實現數據在二進制位上的加密和校驗,IC_DLL動態庫內部對發送到串口或并口上的數據都在二進位上進行了加密,以防在串口或并口上竊取數據。 (3)IC_DLL動態庫與高層接口 IC_DLL動態庫采用傳遞參數和調用函數返回值來與高層通訊,并對高層傳遞過來的參數有一個合法性檢查,對底層返回錯誤有錯誤處理機制和錯誤提示信息,對與高層使用者來說,底層與本層的處理和錯誤是透明的,高層使用者只須通過調用函數的返回值來判定此次操作成功與否。 3 應用層 各種行業的應用系統中是如何利用IC卡來存儲與操作用戶向關數據?這就要事先對IC卡上的存儲空間根據用戶數據進行規劃,下面舉一個在醫療保險系統中對1604卡的使用與規劃情況: 二、IC卡的應用實例:加密存儲卡1604卡在醫保信息系統中的應用 1 1604卡的特點: — 邏輯加密存儲芯片 — 屬于單存儲器多邏輯分區結構。主存儲器劃分了特定的標志數據區和控制數據區之外,還將應用數據區分成四個完全隔離的子區,并在每個子區中配備了各自的讀、寫控制標志和寫入/擦除密碼以及密碼輸入錯誤計數器等邏輯控制。 — 芯片為串行傳輸方式,并滿足ISO7816-3同步傳送協議。采用低功耗的CMOS工藝制造,每字節的讀取時間為2us,寫周期為5ms。 — 內部設計有電壓提升電路,保證使用單+5V電源電壓能夠完成對芯片的讀寫和擦除等各類編程操作。 芯片的存儲單元具有至少10000次的擦除/改寫循環次數,數據保存期為10年。 2 芯片的存儲分區及其定義[1]: 3 IC卡的密碼系統 1) 使用SC作為用戶密碼 2) 應用SCn、EZn為應用系統的密碼控制,同時也可用來作為卡片防偽控制 3) 設置Pn=0、Rn=0,這樣使得,要讀數據必須在本應用系統才可讀數,要進行修改數據操作必須還要核對EZn才可。 4) 各個應用系統分別有自己的兩個密碼(SCn、EZn),使得應用系統之間數據具有安全性。 注意:由于所有卡片的SCn、EZn都完全相同,那么系統對于這兩個密碼的保護就相當重要,它稱為系統安全性的唯一保證,可以采取其它密碼保護措施。 4 IC卡的個人化操作 1)個人化流程,如圖1所示。 2)密碼控制 用戶密碼只有一個,但不同的應用系統分別對這個用戶密碼使用DES算法將會產生不同的結果,這樣可以保證不同的應用系統,不可對其它應用系統的數據進行修改。但這帶來的一個問題是,用戶修改密碼必須在總發行機構,必須同時對所有應用系統使用DES算法重新計算一次。 個人化之前: (1)只有總密碼,總密碼可讀,四個分區密碼無效(即核對無效),但可以設置密碼 (2)制造商代碼區不能修改,其它所有區域均可讀寫擦,只由總密碼控制 個人化之后: (1)總密碼不可讀,四個分區密碼有效,所有密碼均不可讀 (2)發行區、個人代碼區不可修改,但可讀 (3)一區密碼有錯誤計數器,其它分區密碼沒有錯誤計數器。 (4)錯誤計數達到8次,則IC卡鎖死。 4)用戶數據存儲規劃: 用戶數分四個部分: a.版本信息:應用一區的前兩個字節. b.用戶基本信息: 應用一區的前512各字節. c.用戶就診結算數據: 應用一區的剩下字節. d.用戶身份識別數據:應用二區 5)IC卡的使用方法:如圖2所示 |