一種IC卡應用系統的防竄改技術(shù)
文章出處:http://psychicreadingswithdeb.com 作者: 人氣: 發(fā)表時(shí)間:2012年03月18日
摘要:針對目前一些IC 卡應用系統存在的某些漏洞, 設計了一個(gè)IC 卡應用系統來(lái)防止非法用戶(hù)對IC 卡的竄改。本系統按不同的安全級別使用了摘要、認證、加密等技術(shù), 保證了IC 卡應用系統的正常運行。
關(guān)鍵詞:安全級別; 摘要; 認證;加密
1 引言
目前許多院校采用IC卡應用系統在校園內實(shí)現售飯、消費、管理等功能“一卡通”, 但是有些IC 卡應用系統存在著(zhù)漏洞。在一些院校IC 卡系統中, 學(xué)生往往通過(guò)竄改IC卡載體的信息來(lái)破壞IC卡系統, 從而達到非法的目的。同樣, 在一些電話(huà)IC卡系統中也存在著(zhù)這樣的問(wèn)題, 用戶(hù)通過(guò)分析、比較IC卡載體所載信息, 從而得到IC 卡內部各比特位的意義, 而后更改特定比特位, 以達到盜打電話(huà)的目的。在某些IC卡系統中,讀寫(xiě)終端與服務(wù)器的通信是以明文方式傳輸, 這樣非法用戶(hù)往往可以通過(guò)偵聽(tīng)獲得大量信息, 進(jìn)而進(jìn)入系統, 修改系統信息。本文從IC卡防竄改著(zhù)手, 提出了一個(gè)可行的方案來(lái)解決IC卡防竄改的問(wèn)題。
2 防竄改安全需求分析
IC 卡系統一般由以下幾部分組成: IC卡、讀寫(xiě)終端設備、通信網(wǎng)絡(luò )和后臺管理服務(wù)器。對IC卡系統進(jìn)行竄改往往采用以下幾種方式:
( 1) 解剖分析IC 卡的內部結構。將IC卡的電路進(jìn)行解剖分析, 并利用較先進(jìn)的儀器設備測試IC卡的各種密鑰的位置和狀態(tài)字, 從而破譯整個(gè)系統。
( 2) 竄改IC 卡。通過(guò)解析IC卡后, 獲取IC卡各比特位的意義, 利用先進(jìn)設備可以竄改IC卡特定比特位的值。
( 3) 冒充合法持卡人使用IC卡。在IC卡使用過(guò)程中, 由于被盜或遺失, 使得非授權持卡人可能冒充合法持卡人使用IC卡。
( 4) 通過(guò)網(wǎng)絡(luò )途徑截獲有價(jià)值的信息。在IC 卡應用系統中, 截獲和分析通過(guò)網(wǎng)絡(luò )傳輸的各類(lèi)信息, 得到各種有價(jià)值的信息。
( 5) 對數據庫服務(wù)器或系統服務(wù)器進(jìn)行網(wǎng)絡(luò )攻擊, 癱瘓服務(wù)器, 使其中斷服務(wù), 竊取有價(jià)值的信息或者修改個(gè)人資料等。
通過(guò)以上分析可以發(fā)現, 要防止IC卡的竄改應該在系統中增加以下兩個(gè)模塊: IC 卡認證模塊、用戶(hù)認證模塊。同時(shí)為了保護服務(wù)器與終端之間的數據通信, 應該采用加密技術(shù)對信息流進(jìn)行加密, 保證信息不會(huì )外泄。在服務(wù)器端, 要保證服務(wù)器數據的安全, 即使服務(wù)器被攻擊, 造成部分數據泄露, 也不會(huì )危及到整個(gè)系統, 所以應該對存放的數據進(jìn)行處理。
為了保證IC卡內部結構不被解析, IC 應該有較強的抗解讀性。在本文參考模型中IC 卡類(lèi)型采用PHILIPS 公司的MIFARE1 型的非接觸式邏輯加密卡, 該卡有較好的抗解讀性; 它具有全世界唯一的序列號, 固化于IC卡內, 不可更改; 卡片分為16 個(gè)扇區, 每個(gè)扇區能存放不同信息, 便于安全等級的分類(lèi)。本文主要是從軟件上著(zhù)手設計系統, 硬件不在本文討論范圍之內。
3 應用系統防竄改整體設計
3. 1 系統模型
一般地, 校園IC 卡應用系統分為食堂消費、圖書(shū)管理、校內消費以及校園銀行等幾個(gè)子系統, 不同的子系統安全等級也是不同的。例如在食堂消費子系統中安全等級最低, 圖書(shū)館借閱子系統安全等級稍高, 校園銀行子系統安全等級最高。在低級別安全等級中沒(méi)有過(guò)多的安全措施, 過(guò)多的安全措施往往會(huì )帶給用戶(hù)使用上的不方便, 也沒(méi)有必要增加安全措施。在中等級別安全等級中, 在系統中加入了對IC 卡認證模塊。在高級別安全等級中, 在系統中加入了對IC 卡和用戶(hù)認證模塊。對于后兩種安全級別的數據通信是經(jīng)過(guò)加密保護的, 防止信息泄露, 而在數據通信之前, 需先完成終端與服務(wù)器的相互認證。
所有的數據在服務(wù)器的存放是經(jīng)過(guò)加密處理過(guò)的。具體的模型圖如圖1 所示。
圖1 參考模型
3. 2 IC 卡認證模塊
本文參考模型所采用的IC 卡有固化、惟一的ID 號, 可以通過(guò)驗證當前的IC 卡的卡號來(lái)防止偽造IC 卡, 但是僅僅靠檢測卡號是無(wú)法防止竄改IC 卡內容。為此設計了以下方案: IC卡初始化時(shí), 將卡號以及所要保護扇區的隨機內容作為一個(gè)摘要算法的原文, 生成一個(gè)摘要值, 傳送到服務(wù)器。當用戶(hù)使用IC 卡時(shí), 首先由讀寫(xiě)終端讀出IC 保護扇區內容, 以及IC 卡號作為一個(gè)摘要算法的原文, 生成摘要值, 傳送到服務(wù)器。服務(wù)器根據IC 卡號在數據庫中找出相應的摘要值進(jìn)行匹配, 如果匹配, 認為此IC 卡在上次使用過(guò)后沒(méi)有進(jìn)行竄改, 是合法的IC 卡, 允許IC 卡使用; 否則IC 卡將在系統中被注銷(xiāo)。當此次IC 卡使用完畢, 讀寫(xiě)終端將結束時(shí), 保護扇區的內容與IC 卡號再作一次摘要計算, 將摘要值傳送到服務(wù)器, 服務(wù)器用此摘要值更新此IC 卡在服務(wù)器數據庫中的摘要值。
本模塊采用的摘要算法是MD5。MD5 是一個(gè)典型的摘要算法, 其工作過(guò)程大致如下: 以512 位分組來(lái)處理輸入文本, 每一分組又劃分為16 個(gè)32 位子分組, 算法的輸出由四個(gè)32 位分組組成, 將它們級聯(lián)形成一個(gè)128 位散列, 當文本長(cháng)度不夠時(shí)進(jìn)行填充, 而后進(jìn)行四輪的運算, 取得良好的雪崩效應, 最后得出一個(gè)128bits 的摘要值。MD5 是一種無(wú)碰撞的壓縮函數,有很好的安全性, 目前還沒(méi)有有效的攻擊方法。用MD5 可以完全滿(mǎn)足IC 卡認證模塊的安全要求。
3. 3 用戶(hù)認證模塊
用戶(hù)認證的原理是用戶(hù)向服務(wù)器證明自己擁有某個(gè)惟一性的、足以證明自身身份的秘密參數, 服務(wù)器對之驗證。用戶(hù)認證模塊有兩種: ①依托于IC 卡認證模塊; ② 可以單獨工作。在參考模型中采用的是前者, 其具體過(guò)程如下: 用戶(hù)在終端輸入口令, 讀寫(xiě)終端將其口令作為密鑰, 對被保護扇區進(jìn)行一次加密運算, 將所得的密文作為IC 卡認證模塊中摘要算法的原文進(jìn)行摘要計算, 將摘要值送與服務(wù)器。服務(wù)器匹配摘要值,如果匹配則認證身份, 確認此用戶(hù)是IC 卡的合法用戶(hù), 同時(shí)也完成了對IC 卡認證。采用這種方式的另一個(gè)好處是, 服務(wù)器端不需要存放用戶(hù)口令, 所以服務(wù)器端的數據即使泄露也不會(huì )對用戶(hù)口令造成威脅。
DES 是20 世紀非常流行的加密算法, 但因其密鑰長(cháng)度不夠長(cháng), 安全性在當前的計算強度下已顯得力不從心。本參考模型采用IDEA 算法。該算法是利用“來(lái)自于不同代數群的混合運算”, 在三個(gè)代數群的基礎上進(jìn)行運算, 既能達到混亂, 又可以用于擴散。它的密鑰長(cháng)度為128 位, 可以有效預防窮舉攻擊和差分攻擊。
3. 4 通信網(wǎng)加密
IC 卡認證與用戶(hù)認證模塊在一定程度上可以預防IC 卡的竄改, 但是非法用戶(hù)可以在通信網(wǎng)中通過(guò)竊聽(tīng)通信流來(lái)獲取有價(jià)值的信息, 從而可以模擬報文, 對服務(wù)器數據庫進(jìn)行更新以后, 再對IC 卡的內容進(jìn)行竄改。例如非法用戶(hù)要在校園銀行子系統中更改自己的賬戶(hù)余額, 可以先在網(wǎng)絡(luò )中用虛假的報文騙取服務(wù)器修改數據庫數據, 然后再更改IC 卡內的數據, 從而達到竄改的目的。為了避免這種情況的出現, 必須采取數據加密的方式來(lái)保證信息流的安全。
加密的方法可有三種方式: ①一次會(huì )話(huà)一個(gè)密鑰。這種方式安全性好, 即使非法用戶(hù)在已知明文攻擊下也有相當高的安全性, 因為即使當前會(huì )話(huà)密鑰被破解也不會(huì )對其他會(huì )話(huà)造成影響, 但是安全性的代價(jià)是系統的開(kāi)銷(xiāo)增加。因為在每一次生成會(huì )話(huà)時(shí), 系統會(huì )為生成會(huì )話(huà)密鑰消耗系統開(kāi)銷(xiāo), 這對服務(wù)器和終端的性能提出一個(gè)更高的要求。②一個(gè)終端使用一個(gè)密鑰。在開(kāi)機時(shí), 終端獲取服務(wù)器的分配給當前終端的一個(gè)會(huì )話(huà)密鑰。在終端沒(méi)有退出應用系統以前, 終端發(fā)向服務(wù)器的所有報文都用此會(huì )話(huà)密鑰來(lái)加密。③偽一次會(huì )話(huà)一個(gè)密鑰。第一種方法增加了系統開(kāi)銷(xiāo), 第二種方法會(huì )產(chǎn)生已知明文攻擊, 因為報文的內容是可以猜測到的, 密文則可以在網(wǎng)絡(luò )上偵聽(tīng)到, 而已知明文攻擊會(huì )降低系統安全性。折中兩者, 采用一種偽一次會(huì )話(huà)一個(gè)密鑰方法: 在通信之前, 通信雙方已經(jīng)獲得一個(gè)會(huì )話(huà)密鑰, 并且由通信發(fā)起方生成一定長(cháng)度隨機數T, 將會(huì )話(huà)密鑰作為密鑰加密此隨機數T得到一個(gè)密文C, 而用隨機數T加密通信報文得到另一個(gè)密文M。將密文C 與M一同發(fā)送給通信接收方。接收方首先用會(huì )話(huà)密鑰解密C, 得到隨機數T, 再用T解密M 得到報文內容。如此非法用戶(hù)無(wú)法獲取明密文對, 避免了已經(jīng)明文攻擊。本參考模型使用第三種方法。
但是, 僅僅用加密方法保護數據流的安全還不夠, 為了防止非法終端接入應用系統, 騙取服務(wù)器的信任, 從而達到修改服務(wù)器數據庫的目的, 必須在讀寫(xiě)終端與服務(wù)器之間實(shí)現相互認證。Kerbors 認證協(xié)議是當前流行的認證協(xié)議, 現在一些操作系統支持此協(xié)議, 可以方便地實(shí)現認證。但是考慮應用系統的可移植性和可用性, 本參考模型并沒(méi)有采用此方法, 而是實(shí)現了另一種較為簡(jiǎn)便的認證, 具體過(guò)程如下: 當讀寫(xiě)終端要求接入IC 卡應用系統中, 首先服務(wù)器生成一個(gè)隨機數R, 用該終端的用戶(hù)口令K 加密R 得到一個(gè)報文M送與終端; 讀寫(xiě)終端用K 解密M得到隨機數R, 然后用K 加密R +1 得到一個(gè)報文M1 , 將其送與服務(wù)器; 服務(wù)器解密M1 得到R +1, 從而驗證終端身份; 當服務(wù)器完成對讀寫(xiě)終端認證后, 用終端口令K 加密一個(gè)終端操作員預留于服務(wù)器的一段認證碼T與隨機數R +2, 發(fā)送給讀寫(xiě)終端;讀寫(xiě)終端解密, 認證T與K +2, 讀寫(xiě)終端完成對服務(wù)器認證, 至此完成服務(wù)器與讀寫(xiě)終端的相互認證。
經(jīng)過(guò)認證后的通信雙方可以開(kāi)始通信, 但是在通信過(guò)程中, 非法用戶(hù)可以通過(guò)重放、中間人攻擊等方法對系統進(jìn)行攻擊。因此, 為了防止重放攻擊, 應在報文中加入檢測報文新鮮性的信息; 為了防止中間人攻擊, 應在報文中加入檢測報文來(lái)源的身份信息。在參考模型中的報文內容如圖2 所示。
圖2 偽一次會(huì )話(huà)一個(gè)密鑰方式的報文格式
密文C: 由會(huì )話(huà)密鑰加密并由終端生成的隨機數R。
密文M: 由隨機數R 加密。發(fā)送者身份編號: 在應用系統中唯一標志該終端或服務(wù)器的編號。
發(fā)報日期: 報文發(fā)送的日期, 只要求精確到日期, 如果嚴格要求到分秒的話(huà), 往往會(huì )因系統時(shí)間難以協(xié)調而產(chǎn)生大量被認為是重放報文的無(wú)效報文。
報文編號: 當日報文的編號, 從0 開(kāi)始計數, 每發(fā)送一個(gè)報文編號增加1。
3. 5 服務(wù)器的數據存放
目前的操作系統都或多或少地存在一些漏洞, 存在著(zhù)被非法用戶(hù)入侵的危險。如果操作系統一旦被攻入, 數據庫數據被竊取或者被修改, 那么整個(gè)應用系統的安全性就受到極大的危險。所以對數據存放的設計目的是: 即使一旦數據文件被非法用戶(hù)獲取也不會(huì )有太多有價(jià)值的信息, 不會(huì )對應用系統造成大的危險。換言之, 服務(wù)器的數據是不應該明文存放的, 而是應該經(jīng)過(guò)某種函數處理過(guò)的。
考慮到入侵服務(wù)器操作系統并不是一件容易的事, 尤其是當服務(wù)器經(jīng)過(guò)安全設置后, 為此在服務(wù)器端進(jìn)行安全處理并不需要太高的強度。DES 加密算法的安全強度完全可以滿(mǎn)足需要, 以此減少系統開(kāi)銷(xiāo), 使安全模塊工作透明化, 不給整個(gè)應用系統服務(wù)造成影響。每次服務(wù)器進(jìn)入IC 卡應用系統時(shí)由操作員輸入密鑰, 當讀寫(xiě)終端傳來(lái)數據要求服務(wù)器認證時(shí), 服務(wù)器根據IC 卡ID 號從數據庫中取出數據, 用此密鑰解密, 得到原明文; 當讀寫(xiě)終端傳來(lái)要求入庫的數據時(shí), 服務(wù)器用此密鑰加密數據后得到密文再放入數據庫中。而即使非法用戶(hù)攻入了操作系統, 獲取的數據也是經(jīng)過(guò)加密, 不會(huì )獲取有價(jià)值的信息,但是無(wú)法阻止其惡意的竄改數據庫信息, 只有依靠經(jīng)常性的備份來(lái)減少這種惡意竄改所帶來(lái)的破壞。
4 應用系統安全性分析
在本參考模型中, 中等安全級別可以防止第( 2) 、第( 4) 和第( 5) 種攻擊; 高級安全級別可以防止第( 2) 、第( 3) 、第( 4) 和第( 5) 種攻擊。預防第( 1 ) 種攻擊需要在硬件上進(jìn)行重新設計。例如在IC 卡內加入觸點(diǎn), 一旦非法用戶(hù)試圖解剖IC 卡時(shí), IC 卡內信息全部丟失, 或者對IC 卡內容加密等。這些方法不在本文的討論范圍內, 就不再贅述。
現具體分析該系統的安全性( 以高級安全級別為例) 。為了預防第( 2) 種攻擊, 系統使用了IC 卡認證模塊, 該模塊的安全性在于摘要算法的安全性, 在參考模型中所采用的MD5 算法的輸出是128bits, 若采用強力攻擊尋找一個(gè)原文具有某一個(gè)特定的Hash 值的計算困難性為2128 , 若采用生日攻擊法, 尋找有相同Hash 值的兩個(gè)輸入需要試驗264 個(gè)輸入, 這樣的計算難度對于目前計算機的計算能力是安全的。對于第( 3 ) 種攻擊, 系統使用了用戶(hù)認證模塊, 該模塊采用了IDEA 加密算法,該算法提供了比DES 更高的安全性, 目前還沒(méi)有一個(gè)可行的破解方法。對于第( 4) 種攻擊, 系統對通信過(guò)程雙方實(shí)現嚴格的認證, 在保證通信雙方都是合法用戶(hù)后, 系統采用偽一次會(huì )話(huà)一個(gè)密鑰的方式對報文內容進(jìn)行了加密, 同時(shí)在報文內容加入保證報文新鮮性以及報文身份的信息以防止報文被竊聽(tīng), 被重放, 并避免了中間人攻擊。對于第( 5 ) 種攻擊, 系統對服務(wù)器端所存放的數據用一個(gè)管理員所設定的密鑰加密, 而這個(gè)密鑰并不存放于服務(wù)器內。雖然采用的算法仍是DES, 但是考慮到入侵一個(gè)操作系統的難度以及數據庫所存放的數據都是經(jīng)過(guò)摘要計算以后再加密的, DES 的安全等級已經(jīng)足夠了。
5 結束語(yǔ)
在本參考模型中, 在不同的安全等級場(chǎng)所采用了不同的安全措施, 對低等級的子系統甚至不需要過(guò)多的考慮安全性, 而在高安全等級要求的應用場(chǎng)所則加入了足夠的安全性。因為參考模型是一個(gè)校園IC 卡應用系統, 對安全性并沒(méi)有過(guò)于苛刻的要求。在一些要求更高的安全應用場(chǎng)所, 可以在相應模塊中采用安全性相同的算法, 或者采用更安全的認證協(xié)議來(lái)實(shí)現服務(wù)器與讀寫(xiě)終端的相互認證, 從而提高系統的安全性, 更加有效地防止對IC 卡的竄改。
參考文獻:
[ 1] 美] Bruce Schneier. 應用密碼學(xué)———協(xié)議、算法與C 源程序[ M] . 北京: 機械工業(yè)出版社, 2000.
[ 2] 王育民, 劉建偉. 通信網(wǎng)的安全———理論與技術(shù)[ M] . 西安: 西安電子科技大學(xué)出版社, 1999.
[ 3] 楊南海, 王秀坤. 一種安全的IC 卡數據加密算法及其應用[ J] . 計算機工程與應用, 2002, ( 38 ) : 249- 250.
[ 4 ] 王卓人, 鄧晉鈞, 劉宗祥. IC 卡的技術(shù)與應用[ M] . 北京: 電子工業(yè)出版社, 1998.
作者簡(jiǎn)介:周洪偉( 1979 - ) , 男, 碩士生, 研究方向為計算機網(wǎng)絡(luò )安全; 張來(lái)順( 1963- ) , 男, 教授, 碩士生導師, 研究方向為軟件工程、計算機網(wǎng)絡(luò )。
【稿件聲明】:如需轉載,必須注明來(lái)源和作者,保留文中圖片和內容的完整性,違者將依法追究。