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