RFID智能卡的安全問(wèn)題
RFID智能卡是應(yīng)用最廣泛的一種電子標(biāo)簽,應(yīng)用于證件或者流通領(lǐng)域等領(lǐng)域。隨著智能卡的推廣使用,利用它進(jìn)行欺詐或者作弊的行為也會(huì)不斷增加,因此,需要提供合理的防護(hù)措施。
1、影響智能卡安全的基本問(wèn)題
在智能卡的設(shè)計(jì)階段、生產(chǎn)環(huán)境、生產(chǎn)流程及使用過(guò)程中都會(huì)遇到各種潛在的威脅。攻擊者可能采取各種探測(cè)方法以獲取硬件安全機(jī)制、訪問(wèn)控制機(jī)制、鑒別機(jī)制、數(shù)據(jù)保護(hù)系統(tǒng)、存儲(chǔ)體分區(qū)、密碼模塊程序等的設(shè)計(jì)細(xì)節(jié),以及初始化數(shù)據(jù)、私有數(shù)據(jù)、口令或密碼密鑰等敏感數(shù)據(jù),并可能通過(guò)修改智能卡上重要安全數(shù)據(jù)的方法,非法獲得對(duì)智能卡的使用權(quán)。這些攻擊對(duì)智能卡的安全構(gòu)成很大威脅。根據(jù)各種對(duì)智能卡攻擊所采用的手段和攻擊對(duì)象的不同,一般可以歸納為以下三種方式。
(1)使用偽造的智能卡,以期進(jìn)入某一系統(tǒng)。模擬智能卡與接口設(shè)備之間的信息,使接口設(shè)備無(wú)法判斷出是合法的還是偽造的智能卡。例如,像制造偽鈔那樣直接制造偽卡,對(duì)智能卡的個(gè)人化過(guò)程進(jìn)行攻擊,在交易過(guò)程中替換智能卡等。
(2)冒用他人遺失的,或是使用盜竊所得的智能卡。試圖冒充別的合法用戶進(jìn)入系統(tǒng),對(duì)系統(tǒng)進(jìn)行實(shí)質(zhì)上未經(jīng)授權(quán)的訪問(wèn)。
(3)主動(dòng)攻擊方式,直接對(duì)智能卡與外部通信時(shí)所交換的信息流(包括數(shù)據(jù)和控制信息)進(jìn)行截聽(tīng)、修改等非法攻擊,以謀取非法利益或破壞系統(tǒng)。
2、物理安全
雖然智能卡的主要功能封閉在單個(gè)芯片中,然而仍然有可能被實(shí)施反向工程。用于實(shí)施物理攻擊的主要方法包括以下三種。
(1)微探針技術(shù):攻擊者通常使用專業(yè)手段去除芯片的各層金屬,在去除芯片封裝之后,通過(guò)使用亞微米級(jí)微探針獲取感興趣的信號(hào),從而分析出智能卡的有關(guān)設(shè)計(jì)信息和存儲(chǔ)結(jié)構(gòu),甚至直接讀取出存儲(chǔ)器的信息進(jìn)行分析。
(2)版圖重構(gòu):利用特制顯微鏡研究電路的連接模式,跟蹤金屬連線穿越可見(jiàn)模塊(如ROM、RAM、EEPROM、ALU、指令譯碼器等)的邊界,可以迅速識(shí)別芯片上的一些基本結(jié)構(gòu),如數(shù)據(jù)線和地址線。
(3)聚離子束(FIB)技術(shù):采用鎵粒子束攻擊芯片表面,在不破壞芯片表面電路結(jié)構(gòu)的情況下,用含有不同氣體的粒子束,可在芯片上沉積出導(dǎo)線、絕緣體甚至半導(dǎo)體。采用這種方法可重
重新連接測(cè)試電路的熔斷絲,或?qū)⒍鄬有酒猩畈卦趦?nèi)部的信號(hào)連到芯片的表面,或加粗加強(qiáng)過(guò)于纖細(xì)脆弱無(wú)法置放探針的導(dǎo)線,從而形成一個(gè)新的“探針臺(tái)”。技術(shù)人員可利用激光干涉儀工作臺(tái)觀察芯片單個(gè)晶體的微細(xì)結(jié)構(gòu),以及其他的電路結(jié)構(gòu)。
物理攻擊是實(shí)現(xiàn)成功探測(cè)的強(qiáng)有力手段,但其缺點(diǎn)在于入侵式的攻擊模式,同時(shí)需要昂貴的高端實(shí)驗(yàn)室設(shè)備和專門的探測(cè)技術(shù)。
為了保證智能卡在物理安全方面的安全,一般應(yīng)該采取如下的一些措施。
(1)在智能卡的制造過(guò)程中使用特定的復(fù)雜而昂貴的生產(chǎn)設(shè)備,同時(shí)制造人員還需要具備各種專業(yè)知識(shí)或技能,以增加直接偽造的難度,甚至使之不能實(shí)現(xiàn)。
(2)對(duì)智能卡在制造和發(fā)行過(guò)程中所使用的一切參數(shù)都應(yīng)嚴(yán)格保密。
(3)增強(qiáng)智能卡在包裝上的完整性。這主要包括給存儲(chǔ)器加上若干保護(hù)層,把處理器和存儲(chǔ)器做在智能卡內(nèi)部的芯片上;選用一定的特殊材料(如對(duì)電子顯微鏡的電子束敏感的材料),防止非法對(duì)存儲(chǔ)器內(nèi)容進(jìn)行直接分析。
(4)在智能卡的內(nèi)部安裝監(jiān)控程序,以防止外界對(duì)處理器/存儲(chǔ)器數(shù)據(jù)總線及地址總線的截聽(tīng),設(shè)置監(jiān)控程序也可以防止對(duì)智能卡進(jìn)行非授權(quán)的訪問(wèn)。
(5)對(duì)智能卡的制造和發(fā)行的整個(gè)工序加以分析,確保沒(méi)有人能夠完整地掌握智能卡的制造和發(fā)行過(guò)程,從而在一定程度上防止可能發(fā)生的內(nèi)部職員的非法行為。
3、邏輯安全
邏輯攻擊者在軟件的執(zhí)行過(guò)程中插入竊聽(tīng)程序,利用這些缺陷誘騙智能卡泄漏機(jī)密數(shù)據(jù)或允許非期望的數(shù)據(jù)修改。從所需的設(shè)備來(lái)看,邏輯攻擊的成本可以說(shuō)是相當(dāng)?shù)偷?,攻擊者只需具備智能卡、讀寫器和PC即可;其另一優(yōu)點(diǎn)在于非入侵式的攻擊模式,以及可輕松地復(fù)制。智能卡的邏輯安全主要由下列的途徑實(shí)現(xiàn)。
1. 鑒別與核實(shí)
鑒別與核實(shí):鑒別與核實(shí)其實(shí)是兩個(gè)不同的概念,但是它們二者在所實(shí)現(xiàn)的功能十分相似,所以我們同時(shí)對(duì)它們進(jìn)行討論,利于比較。
通常所謂的鑒別(Authentication),是指的是對(duì)智能卡(或者是讀寫設(shè)備)的合法性的驗(yàn)證,即如何判定一張智能卡(或讀寫設(shè)備)不是偽造的卡(或讀寫設(shè)備)的問(wèn)題;而核實(shí)(Verify)是指對(duì)智能卡的持有者的合法性進(jìn)行驗(yàn)證,也就是如何判定一個(gè) 持卡人是否經(jīng)過(guò)了合法的授權(quán)的問(wèn)題。由此可見(jiàn),二者實(shí)質(zhì)都是對(duì)合法性的一種驗(yàn)證,但是,在具體的實(shí)現(xiàn)方式上,由于二者所要驗(yàn)證的對(duì)象的不同,所采用的手段也就不盡相同。
鑒別是通過(guò)智能卡和讀寫設(shè)備雙方同時(shí)對(duì)任意一個(gè)相同的隨機(jī)數(shù)進(jìn)行某種相同的加密運(yùn)算(目前常用DES算法),然后判斷雙方運(yùn)算結(jié)果的一致性來(lái)達(dá)到驗(yàn)證的目的。以智能卡作為參照點(diǎn),分為外部鑒別和內(nèi)部鑒別。
外部鑒別就是智能卡對(duì)讀寫設(shè)備的合法性進(jìn)行的驗(yàn)證。先由讀寫器向智能卡發(fā)一串口令(產(chǎn)生隨機(jī)數(shù))命令,智能卡產(chǎn)生一個(gè)隨機(jī)數(shù),然后由讀寫器對(duì)隨機(jī)數(shù)加密成密文,密鑰預(yù)先存放在讀寫器和IC卡中,密鑰的層次則要按需要設(shè)定。讀寫器將密文與外部鑒別命令發(fā)送給IC卡,卡執(zhí)行命令時(shí)將密文解密成明文,并將明文和原隨機(jī)數(shù)相比較,若相同則卡認(rèn)為讀寫器是合法的,否則卡認(rèn)為讀寫器是偽造的。
內(nèi)部鑒別就是讀寫設(shè)備對(duì)智能卡的合法性進(jìn)行的驗(yàn)證,原理與IC卡鑒別讀寫器的真?zhèn)蜗嗨?,但使用?nèi)部鑒別命令,解密后的結(jié)果與隨機(jī)數(shù)進(jìn)行比較的操作應(yīng)在讀寫器中進(jìn)行,而不是由IC卡來(lái)鑒別真?zhèn)巍?/span>
核實(shí)是通過(guò)用戶向智能卡出示僅有他本人才知道的通行字,并由智能卡對(duì)該通行字的正確性進(jìn)行判斷來(lái)達(dá)到驗(yàn)證的目的。在通行字的傳輸過(guò)程中,有時(shí)為了保證不被人竊聽(tīng)還可以對(duì)要傳輸?shù)男畔⑦M(jìn)行加/解密運(yùn)算,這一過(guò)程通常也稱為通行字鑒別,有時(shí)也稱為個(gè)人身份鑒別。目前用得最多的方法就是通過(guò)驗(yàn)證用戶個(gè)人識(shí)別號(hào)(Personal Identification Number,PIN)來(lái)確認(rèn)使用卡的用戶是不是合法的持卡人。驗(yàn)證過(guò)程如圖9-4所示,持卡人利用讀寫設(shè)備向智能卡提供PIN,智能卡把它和事先存儲(chǔ)在卡內(nèi)的PIN相比較,比較結(jié)果在以后訪問(wèn)存儲(chǔ)器和執(zhí)行指令時(shí)可以作為參考,用來(lái)判斷是否可以訪問(wèn)或者執(zhí)行。
圖PIN的驗(yàn)證過(guò)程
2. 智能卡的通信安全與保密智能卡通過(guò)鑒別與核實(shí)的方法可以有效地防止偽卡的使用,防止非法用戶的入侵,但無(wú)法防止在信息交換過(guò)程中發(fā)生的竊聽(tīng),因此,在智能卡與讀寫設(shè)備的通信過(guò)程中,需要對(duì)重要的數(shù)據(jù)進(jìn)行加密來(lái)作為反竊聽(tīng)的有效手段。智能卡的通信安全與保密是智能卡的安全特性中最重要的方面之一,因?yàn)闊o(wú)論一張卡使用的目的是什么,它都必須與別的設(shè)備進(jìn)行通信。
一般而言,在通信方面對(duì)信息的修改可以有許多不同的方法,主要包括:對(duì)信息內(nèi)容進(jìn)行更改、刪除及添加、改變信息的源點(diǎn)或目的點(diǎn)、改變信息組/項(xiàng)的順序、再次利用曾經(jīng)發(fā)送過(guò)的或者存儲(chǔ)過(guò)的信息,以及篡改回執(zhí)等。從安全角度考慮,就是要針對(duì) 以上這些攻擊手段采取適當(dāng)?shù)募夹g(shù)防范措施,以求實(shí)現(xiàn)智能卡與外部設(shè)備進(jìn)行信息交換過(guò)程的有效性與合法性的目的。
信息交換過(guò)程中的保密性主要是利用密碼技術(shù)對(duì)信息進(jìn)行加密處理的,以掩蓋真實(shí)信息,使之變得不可理解,達(dá)到保密的目的。智能卡系統(tǒng)中常用的兩種密碼算法是:對(duì)稱密鑰密碼算法或數(shù)據(jù)加密算法(Data Encryption Standard,DES)和非對(duì)稱密碼算法或公共密鑰密碼算法(RSA)。智能卡經(jīng)常采用DES算法的原因是因?yàn)樵撍惴ㄒ驯蛔C明是一個(gè)十分成功的加密算法,而且算法的運(yùn)算復(fù)雜度相對(duì)而言也較小,比較適用于智能卡這樣運(yùn)算能力不是很強(qiáng)的情況。
例如,在對(duì)數(shù)據(jù)內(nèi)容a加密時(shí),采用的辦法就是對(duì)從密碼文件中選出的密碼首先進(jìn)行一次DES加密運(yùn)算,然后將運(yùn)算結(jié)果作為數(shù)據(jù)加密的密碼使用。其計(jì)算公式為
Key=DES(CTC,K(a))
式中,K是從密碼文件中隨機(jī)選取的一個(gè)密鑰;CTC是記錄智能卡操作次數(shù)的計(jì)數(shù)器,該計(jì)數(shù)器每完成一次操作就增1;Key就是最后要提供給數(shù)據(jù)加密運(yùn)算使用的密碼。使用這種方法可以提高智能卡的安全性,但卻降低了執(zhí)行的效率。具體采用什么樣的方法來(lái)產(chǎn)生密碼應(yīng)當(dāng)根據(jù)智能卡的應(yīng)用范圍及安全性要求的高低而具體而定。
保證數(shù)據(jù)完整性的一般方法是在所交換的信息報(bào)文內(nèi)加入報(bào)頭或報(bào)尾,稱其為鑒別碼。這個(gè)鑒別碼是通過(guò)對(duì)報(bào)文進(jìn)行的某種運(yùn)算得到的,它與報(bào)文的內(nèi)內(nèi)容密切相關(guān),報(bào)文的正確與否可以通過(guò)這個(gè)鑒別碼來(lái)檢驗(yàn)。鑒別碼由報(bào)文發(fā)送方計(jì)算產(chǎn)生,并和報(bào)文一起加密后提供給接收方。接收方在收到報(bào)文后,首先對(duì)之解密得到明文,然后用約定的算法計(jì)算出解密報(bào)文(明文)的鑒別碼,再與收到報(bào)文中的鑒別碼相比較,如果相等,則認(rèn)為報(bào)文是正確的,否則就認(rèn)為該報(bào)文在傳輸過(guò)程中已被修改過(guò)。在鑒別過(guò)程中,鑒別算法的設(shè)計(jì)是至關(guān)重要的,常用的鑒別算法有累加和、異或校驗(yàn)、CRC校驗(yàn)、DSA(Decimal Shift and Add)鑒別算法等。
3. 存儲(chǔ)區(qū)域保護(hù)
把智能卡的數(shù)據(jù)存儲(chǔ)器劃分成若干若干個(gè)區(qū),對(duì)每個(gè)區(qū)都設(shè)定各自的訪問(wèn)條件;只有在符合設(shè)定條件的情況下,才允許對(duì)相應(yīng)的數(shù)據(jù)存儲(chǔ)區(qū)域進(jìn)行訪問(wèn)。表所示為一金融智能卡的存儲(chǔ)區(qū)域保護(hù)措施,“O”為允許,“X”為不允許,發(fā)行密碼用來(lái)驗(yàn)證發(fā)行者的身份,PIN用來(lái)驗(yàn)證持卡人的身份。通過(guò)對(duì)存儲(chǔ)區(qū)域的劃分,普通數(shù)據(jù)和重要數(shù)據(jù)被有效地分離,各自接受不同程度的條件保護(hù),相應(yīng)地提高了邏輯安全的強(qiáng)度。
智能卡數(shù)據(jù)存儲(chǔ)區(qū)域訪問(wèn)權(quán)限
對(duì)存儲(chǔ)區(qū)的訪問(wèn)控制,本書5.5.2節(jié)已經(jīng)介紹了一個(gè)具體的實(shí)例(Mifare S50卡的存儲(chǔ)區(qū)訪問(wèn)控制),可作為部分參考。