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