摘要:由于用戶的結算信息和公用儀表的計量信息都是通過用戶手中的IC卡進行傳輸的,用戶的分布又是一個十分復雜、分散的群體,因此如何保證用戶卡中傳遞信息的安全性已經變成一個十分重要的問題。這個問題解決的好壞,將直接影響IC卡表以及預付費管理系統的推廣使用。
隨著“一戶一表”工程的實施,利用IC卡作為傳輸介質,采用預付費的收費方式對公用事業儀表進行抄表收費管理的模式得到了迅速的發展,并且逐漸從物業小區管理方式發展到行業或城市管理方式。由于用戶的結算信息和公用儀表的計量信息都是通過用戶手中的IC卡進行傳輸的,用戶的分布又是一個十分復雜、分散的群體,因此如何保證用戶卡中傳遞信息的安全性已經變成一個十分重要的問題。這個問題解決的好壞,將直接影響IC卡表以及預付費管理系統的推廣使用。
一、智能卡表的安全性內容
在智能卡表和預付費管理系統之間,信息的傳遞是通過IC卡作為傳輸介質進行的,安全性的主要內容是如何保證IC卡中信息的安全性,與此相關,還要保證不能用非法的手段獲得或者修改智能卡表中的數據信息。
對IC卡和智能卡表中的信息安全性保護主要體現在對數據信息進行非法攻擊的防護上,常用的攻擊行為有以下幾種:
1、截取信道中的信息:通過非法設備以及相關技術手段讀取IC卡中存儲的數據信息以及在IC卡與智能卡表進行操作時截取數據交換信息。見下圖所示:
左圖所示為非法設備直接從IC卡讀取數據信息,右圖所示為非法設備在IC卡與合法設備在進行數據交換時對數據信息進行截獲。這兩種攻擊方式是不可控制的,并且也是最常用的攻擊方式。
2、破譯IC卡中的信息:攻擊者在采用上述兩種方式截獲數據信息后,根據IC卡中數據信息的變化情況以及數據交換過程中數據流的變化,對數據進行分析,從而確認IC卡中所有數據的含義以及數據流的變化規則,完成對IC卡以及智能卡表中數據信息的破譯,進而達到非法改變數據信息的目的。
3、復現IC卡中的數據信息:攻擊者在截獲數據信息后,并不對數據進行分析破譯,而是記錄在特定操作中數據流的變化情況,在需要時,將記錄的數據流直接復制發送到IC卡或智能卡表,從而達到非法改變數據信息的目的。這種情況經常發生在當IC卡與智能卡表之間進行數據交換采用加密處理的時候。
在上述所描述的攻擊方法中,第一種方式是手段,由于IC卡和智能卡表全部由用戶掌握和使用,管理方無法做到實現實時跟蹤,因此在現實中是無法阻止攻擊者進行這種嘗試的。第二、三種方式是數據分析處理,是攻擊的目的所在。如果對IC卡與智能卡表之間的數據進行安全保護處理或者采用較為簡單的安全保護,攻擊是非常容易達到效果的。為此在設計智能卡表及其相關管理系統時,必須對數據的安全性給予高度的重視,從某種角度來說,一個智能卡表及系統設計是否成功,關鍵在于其對數據安全性的處理。
二、智能卡表及系統數據存儲的安全性分析
由于在智能卡表及系統中,IC卡是數據存儲和傳遞的載體,因此IC卡的數據存儲安全性是需要著重予以考慮的。
在智能卡表及系統中所使用的都是集成電路卡(IC卡),(從數據容量和安全性的角度以及讀寫設備的成本考慮,沒有使用磁條卡作為信息載體的,因此磁卡表的名稱是不準確的。)集成電路卡的核心是采用集成電路芯片來進行數據的存儲。目前廣泛使用的IC卡使用的是電可擦除數據存儲芯片(EEPROM),這種芯片讀寫速度快,掉電后數據可以長期保存,并且數據可以反復進行擦寫。應該說,正是由于EEPROM芯片的出現才帶來了IC卡技術的廣泛應用。
IC卡根據對EEPROM讀寫處理方式的不同,可以分為存儲卡、邏輯加密卡以及智能卡(CPU卡)三大類,它們具有不同的數據保護安全級別。
1、存儲卡:存儲卡是直接將EEPROM芯片封裝在卡片上,外部設備可以直接訪問到EEPROM中的任何一個單元,如下圖所示:
由于存儲卡中只有EEPROM一個芯片,因此IC卡的對外接口實際上就是EEPROM的對外接口,這樣外部讀寫設備就可以十分方便地對EEPROM進行數據讀寫操作,作為IC卡而言,無法對合法或非法的讀寫設備進行判斷和識別,非常容易進行攻擊。存儲卡只是用來對數據進行存儲,而無法對數據進行安全性保護,因此存儲卡不具備數據安全性保護措施,數據安全級別很低。
2、邏輯加密卡:邏輯加密卡是在將EEPROM芯片封裝在卡片上的同時,將一組硬件邏輯電路也封裝在卡片上,外部讀寫設備必須通過硬件邏輯電路的判斷后才能訪問到EEPROM中的任何一個單元,如下圖所示:
由于在IC卡中存在一組硬件邏輯加密電路,EEPROM芯片的接口并不直接對外,在初始狀態IC卡芯片中的數據開關處于斷開狀態。外部讀寫設備在訪問IC卡芯片中的EEPROM單元之前,必須首先發一組數據給硬件邏輯電路,硬件邏輯電路在判斷數據的合法性后(即密碼校驗),才決定是否將IC卡內的開關閉合。只有密碼校驗正確后,硬件邏輯電路才能將開關閉合,這時外部讀寫設備才能對EEPROM中的數據進行讀寫操作,這樣邏輯加密卡就可以對外部合法和非法的讀寫設備進行識別判斷。通過這種方式,邏輯加密卡對內部EEPROM中的數據進行了安全性保護,因此邏輯加密卡具備數據安全性保護措施。
但邏輯加密卡的安全性級別并不是很高,有兩種攻擊方式可以對其進行攻擊測試,一種是當合法讀寫設備在發送數據進行密碼校驗時,非法設備可以跟蹤到校驗密碼,這樣今后非法設備通過重放也可以通過密碼校驗,從而對邏輯加密卡進行數據攻擊;另一種方法是非法設備在跟蹤到合法設備已經通過邏輯加密卡的密碼校驗,IC卡內部開關閉合后,再通過數據線對邏輯加密卡中EEPROM的數據進行攻擊破壞。因此邏輯加密卡雖然具備一定的數據安全性保護,但它的安全級別依然較低,具備一定的手段仍然是可以攻破的。
造成這種情況出現的原因是因為邏輯加密卡中的安全性是依賴一組硬件邏輯電路,這種電路只有判斷能力,但不具備分析處理能力,因此不能及時發現和處理變化的環境。
3、智能卡(CPU卡):智能卡是在將EEPROM芯片封裝在卡片上的同時,將微處理器芯片(CPU)也封裝在卡片上,外部讀寫設備只能通過CPU與IC卡內的EEPROM進行數據交換,在任何情況下都不能再訪問到EEPROM中的任何一個單元,如下圖所示:
由于在智能卡中封裝了微處理器芯片(CPU),這樣EEPROM的數據接口在任何情況下都不會與IC卡的對外數據線相連接。外部讀寫設備在與智能卡進行數據交換時,首先必須發指令給CPU,由CPU根據其內部ROM中存儲的卡片操作系統(COS)對指令進行解釋,并進行分析判斷,在確認讀寫設備的合法性后,允許外部讀寫設備與智能卡建立連接。之后的數據操作仍然要由外部讀寫設備發出相應的指令,并且CPU對指令進行正確解釋后,允許外部讀寫設備和智能卡中的數據存儲區(RAM)進行數據交換,數據交換成功后,在CPU的控制下,利用智能卡中的內部數據總線,再將內部RAM中的數據與EEPROM中的數據進行交換。可以看到,在數據處理過程中,外部讀寫設備只是和CPU打交道,同時數據交換也只能和數據緩存區RAM進行,根本無法實現對智能卡中EEPROM數據的直接訪問。這樣就實現了對智能卡EEPROM中數據的安全保護,因此智能卡也具備數據安全性保護措施。
與邏輯加密卡相比,由于智能卡內部具有CPU芯片,在具有數據判斷能力的同時,也具備了數據分析處理能力,因此智能卡可以隨時區別合法和非法讀寫設備,并且由于有了CPU芯片,具備數據運算能力,還可以對數據進行加密解密處理,因此具備非常高的安全性,其安全級別很高。
從對攻擊方式的分析可以看到,保證IC卡內數據的安全性是最基本的要求,如果非法設備可以容易地與IC卡進行數據信息交換,進而進行分析處理,智能卡表及系統就不再具備任何安全性。因此提高IC卡的安全性是設計好的智能卡表及系統的關鍵。
根據上面的分析,如果智能卡表及系統對數據的安全性非常重視,應該選用安全級別高的IC卡,從發展趨勢看,應盡量選用智能卡作為智能卡表信息傳遞的介質。
在設計實際的智能卡表系統時,安全性的指標也是相對而言的。如果設計的是單機版的物業小區管理系統,對安全性的要求不高,為簡化設計和降低成本,可以選用邏輯加密卡或存儲卡;但如果是行業管理部門或在大中城市推廣智能卡管理系統,數據的安全性將是一個非常重要的指標,這時應該首先選擇智能卡做為管理系統的數據信息載體。
三、智能卡表及系統數據交換的安全性分析
根據上面的分析,在智能卡表及系統中選擇使用智能卡可以有效保證數據存儲的安全性,但即使這樣也只是阻止了非法讀寫設備直接對IC卡中數據的操作,并不能保證在IC卡與智能卡表或合法讀寫器之間進行數據交換時不被非法設備跟蹤破譯,要解決這種類型的非法攻擊,還需要采用安全認證以及對數據在傳輸時進行線路保護處理。
1、安全認證:安全認證用來在讀寫設備(包括智能卡表)與IC卡進行數據交換之前,首先進行必要的安全認證,用來確認雙方身份的合法性。只有雙方身份確認后,才能建立相互之間聯系的通道進行必要的數據交換。如果雙方不能確認身份的合法性,則不能建立進行數據交換的通道。
安全認證有兩種方式可以實現,一是通過密碼進行安全認證;一是通過密鑰進行安全認證。
密碼認證的過程如下所示:
①讀寫設備發送密碼到IC卡
——————————→
②IC卡進行密碼比較
③IC卡將比較結果返回讀寫設備
←————————————
IC卡在進行密碼比較時,如果讀寫設備發來的密碼與IC卡中存儲的密碼相同,IC卡向讀寫設備返回密碼認證通過的結果,并打開IC卡數據與外部進行交換的權限。如果密碼不同,則返回錯誤結果,IC卡數據與外部進行交換的權限被關閉。
在邏輯加密卡中使用的就是這種認證方式,同時智能卡中的口令密鑰認證也是采用這種方式進行的。密碼認證的方式比較簡單實用,是一種常用的安全認證手段。其最大的缺陷在于進行認證的密碼在線路上進行了傳輸,如果非法設備跟蹤到密碼認證的第一步,就比較容易破譯整個密碼認證過程,這樣非法設備也能夠正確地與IC卡進行密碼認證,從而能夠非法與IC卡進行數據交換,而這個過程是無法阻止的。
密鑰認證的過程如下所示:
①讀寫設備向IC卡發取隨機數指令
—————————————→
②IC卡向讀寫設備返回隨機數
←———————————
③讀寫設備用存儲的密鑰對隨機數進行加密運算,生成加密結果即密碼
④讀寫設備發送密碼到IC卡
——————————→
⑤IC卡用存儲的密鑰和隨機數進行加密運算,并將生成的密碼和收到的密碼進行比較
⑥IC卡將比較結果返回讀寫設備
←————————————
與密碼認證過程相比,密鑰認證增加了兩個內容,一是引入了密鑰的概念,增加了加密運算過程;二是增加了產生隨機數的過程,有了這兩個過程,就可以有效地保證密鑰認證過程被非法跟蹤后,仍然能夠保證認證過程的安全性。
密鑰是事先設置到讀寫設備和IC卡中的,它在認證過程中只參與運算,但不在線路中進行傳輸,這樣非法跟蹤是不可能截獲到密鑰的;由于有隨機數的概念,這樣每次進行密鑰認證雖然使用的是相同的密鑰,但經過加密運算產生的密碼也是隨機的,無規律可循的,這樣非法跟蹤截獲到的密碼無法在下次進行認證時使用,只要不知道密鑰,非法設備就無法再向密碼認證那樣模擬安全認證的過程,也就不能非法與IC卡進行數據交換。
在這里值得特別指出的是加密運算過程也是保證密鑰認證安全性的一個非常重要的環節,加密運算的算法必須滿足下面的條件:
已知加密因子和密鑰可以計算出加密結果,即數據加密運算;
已知加密結果和密鑰可以推出加密因子,即數據解密運算;
已知加密因子和加密結果不可以推出密鑰;
加密算法應該是公開的算法。
這樣的加密算法就可以有效地保證密鑰的安全性。同時需要特別指出的是在智能卡表及系統中采用的算法一定應該是國際上公認的具備上述特征的算法,只有采用這樣的算法,才能夠有效保證安全性,同時也能使智能卡表及系統具有兼容性和互換性。目前有些廠家采用自己編制的算法進行密鑰安全認證存在兩大隱患:一是算法未經過權威部門認證,算法的安全級別實際上很低,其安全性完全取決于算法不公開,但即使不公開的算法也很容易被非法攻擊攻破,因為廠家的技術人員往往只是表具設計專家,而不是密碼安全算法專家,而進行非法攻擊的人員卻往往是密碼算法專家;二是由于安全原因算法不公開,系統的安全性就永遠和廠家的人員有關,而真正關心系統運行安全的行業管理部門卻不能掌握核心安全,同時也無法實現在系統中使用多家的智能卡表,從而對產品招標選型帶來不方便,在某種程度上,不安全的算法可能反而保護了產品性能并不高的廠家,因為即使發現智能卡表產品有性能缺陷,使用者卻由于安全算法的原因不能更換更好廠家的產品。
目前國際上公認的加密算法主要分為兩大類型:一種是對稱加密算法,這種算法的加密密鑰和解密密鑰是相同的,代表性的算法有DES算法和3�DES算法;另一種算法是非對稱算法,這種算法的加密密鑰和解密密鑰是不相同的,代表性的算法有RSA算法。從安全性的角度來講,不對稱算法的安全性更高,但計算過程也更復雜,一般都應用在需要對身份進行合法性認證,防偽認證等場合;對稱性算法也具有很高的安全性,算法相對比較簡單使用,目前金融應用,公用事業應用基本上都采用對稱算法。
在智能卡表應用中,如果是非金融的單機系統,采用DES算法比較適宜;如果考慮今后和金融系統聯網收費,則應滿足銀行規范使用3�DES算法。
2、數據的線路保護:線路保護是指讀寫設備和IC卡通過安全認證后進行數據交換傳輸時,要保證數據在線路上被非法設備截獲后不能進行破譯、竄改和重放復現。數據的線路保護分為兩個層面:一是數據的機密性保護;一是數據的完整性保護。
數據的機密性保護是指對要傳輸的數據用密鑰進行加密處理后再進行傳輸。這樣在線路中傳輸的數據為密文數據,非法設備截獲后無法進行數據破譯和分析,接收方收到密文數據后再用解密密鑰進行解密重新得到明文數據。
數據的完整性保護是指在要傳輸的數據后面附加校驗碼字節,發送方將發送數據與線路保護密鑰以及隨機數進行運算,生成校驗碼后進行數據傳輸,接收方接收到數據后用相同的密鑰對接收到的數據重新計算校驗碼并與接收到的校驗碼進行比較,相同則接收數據有效,否則數據無效。由于密鑰不在線路上傳輸,這樣非法設備截獲數據后如果對數據進行竄改,必然會導致校驗碼不正確,接收方就能夠拒絕接受錯誤數據。
由于校驗碼在運算過程中也有隨機數參與運算,因此即使采用相同的密鑰,將相同的數據進行多次傳輸,每次形成的校驗碼也是各不相同的,這樣非法設備即使截獲了某一次的合理數據,也不能在進行二次傳輸,這就有效避免了非法設備對數據進行重放復現。
綜合運用上述兩種方法,就可以有效地保證數據在傳輸過程中的安全性,也就最終實現了在公開的傳輸介質或信道上,采用公開的加密算法進行數據傳輸,數據能夠是有效的,正確的,安全的。與此相對應,數據傳輸的安全性不是依靠傳輸信道的封閉性,加密算法的不公開性來保證的。
綜合上面所討論的內容,在智能卡表及系統中要具備高的數據安全性,一是要采用安全級別高的IC卡即智能卡(CPU卡)作為傳輸介質,二是利用密鑰和相應的加密算法進行數據的安全認證和有效傳輸。
四、智能卡表中實現安全性的工具�嵌入式安全模塊(ESAM模塊)
根據上面的論述,智能卡表在廣義上也是一種IC卡讀寫設備,要保證智能卡表以及所使用IC卡中數據的安全性,除了使用智能卡外,必須能夠實現智能卡表和智能卡之間能夠進行數據的安全認證和線路保護處理,也就是要求智能卡表必須具有存儲密鑰以及進行加密運算的能力。
普通卡表的邏輯組成如下所示:
卡表中的核心器件是微處理器(CPU),通過編制合理的程序,CPU可以對計量數據進行計算、存儲、顯示、與IC卡進行數據交換以及對相關數據進行分析判斷控制執行機構。因此CPU的主要作用是完成卡表的數據處理流程以及實現設計好的功能。
從安全性的角度來講,智能卡表除了要完成上述內容以外,還要完成密鑰存儲和加密運算功能,這樣就產生了一個不可調和的矛盾。
由于CPU中的程序是需要生產廠家(或第三方)的設計人員進行設計的,這部分程序的功能和處理流程可以是由智能卡表使用方提出需求而委托設計的,需求本身也是公開的。但如果要在CPU的控制下存儲密鑰和進行加密運算,出于安全性的考慮,密鑰值應該是不公開的,因此這部分程序編制是不能委托開發設計的,必須掌握在智能卡表使用方手里。換言之,智能卡表的功能、數據操作流程和數據的安全性是兩個不同的概念,應該由不同的功能模塊去完成。解決這個問題最好的方案就是在智能卡表中增加嵌入式安全模塊(ESAM模塊)。
增加了ESAM安全模塊的智能卡表的邏輯組成如下所示:
與普通卡表相比,只是將數據存儲模塊換成ESAM模塊,這樣智能卡表中的CPU還是完成原來普通卡表的功能,程序也完全可以由生產廠家(或第三方)根據用戶需求進行靈活編制,當需要進行數據交換時,由CPU啟動ESAM模塊與智能卡完成安全認證以及數據保護工作,密鑰和智能卡表數據都保存在ESAM模塊中。ESAM模塊可以由智能卡表的使用方發行,安裝在智能卡表中即可,這樣密鑰和算法的安全性和CPU程序就可以完全分開,整個智能卡表及系統的安全性就全部由使用方掌握。同時使用方沒有由于安全的原因限制生產方靈活設計不同功能的智能卡表,廠家可以隨時對智能卡表中的程序進行修改和升級而不影響使用方的數據安全性。
從技術發展的角度來看,由于半導體芯片技術的發展,CPU芯片升級速度很快,新的CPU芯片不斷出現,芯片的價格也在不斷調整,生產廠家必然要使用性能價格比最高的芯片,如果將數據安全性的實現和CPU芯片聯系在一起,一旦一個系統使用后,即使有更好的芯片出現,出于安全性的考慮,也無法再對CPU以及程序進行調整,也不利于新技術的推廣使用。如果使用ESAM安全模塊,這個問題也可以得到解決。
使用ESAM安全模塊還有一個優勢,由于加密算法都有一定的安全等級,用匯編語言來編制加密算法要占用CPU較大的程序空間,這樣生產廠家就必須選用容量較大的CPU芯片,這樣也會造成智能卡表成本的增加。目前大量使用的智能卡表都是針對居民的,屬于民用產品,對價格的要求應該是比較嚴格的。
綜合上面的因素,在智能卡表中使用ESAM模塊技術可以實現智能卡表數據流程和數據安全的分離,便于實現產品的兼容和升級,可以不斷推動技術進步,是規范智能卡表技術發展的有效技術手段。
隨著“一戶一表”工程的實施,利用IC卡作為傳輸介質,采用預付費的收費方式對公用事業儀表進行抄表收費管理的模式得到了迅速的發展,并且逐漸從物業小區管理方式發展到行業或城市管理方式。由于用戶的結算信息和公用儀表的計量信息都是通過用戶手中的IC卡進行傳輸的,用戶的分布又是一個十分復雜、分散的群體,因此如何保證用戶卡中傳遞信息的安全性已經變成一個十分重要的問題。這個問題解決的好壞,將直接影響IC卡表以及預付費管理系統的推廣使用。
一、智能卡表的安全性內容
在智能卡表和預付費管理系統之間,信息的傳遞是通過IC卡作為傳輸介質進行的,安全性的主要內容是如何保證IC卡中信息的安全性,與此相關,還要保證不能用非法的手段獲得或者修改智能卡表中的數據信息。
對IC卡和智能卡表中的信息安全性保護主要體現在對數據信息進行非法攻擊的防護上,常用的攻擊行為有以下幾種:
1、截取信道中的信息:通過非法設備以及相關技術手段讀取IC卡中存儲的數據信息以及在IC卡與智能卡表進行操作時截取數據交換信息。見下圖所示:
左圖所示為非法設備直接從IC卡讀取數據信息,右圖所示為非法設備在IC卡與合法設備在進行數據交換時對數據信息進行截獲。這兩種攻擊方式是不可控制的,并且也是最常用的攻擊方式。
2、破譯IC卡中的信息:攻擊者在采用上述兩種方式截獲數據信息后,根據IC卡中數據信息的變化情況以及數據交換過程中數據流的變化,對數據進行分析,從而確認IC卡中所有數據的含義以及數據流的變化規則,完成對IC卡以及智能卡表中數據信息的破譯,進而達到非法改變數據信息的目的。
3、復現IC卡中的數據信息:攻擊者在截獲數據信息后,并不對數據進行分析破譯,而是記錄在特定操作中數據流的變化情況,在需要時,將記錄的數據流直接復制發送到IC卡或智能卡表,從而達到非法改變數據信息的目的。這種情況經常發生在當IC卡與智能卡表之間進行數據交換采用加密處理的時候。
在上述所描述的攻擊方法中,第一種方式是手段,由于IC卡和智能卡表全部由用戶掌握和使用,管理方無法做到實現實時跟蹤,因此在現實中是無法阻止攻擊者進行這種嘗試的。第二、三種方式是數據分析處理,是攻擊的目的所在。如果對IC卡與智能卡表之間的數據進行安全保護處理或者采用較為簡單的安全保護,攻擊是非常容易達到效果的。為此在設計智能卡表及其相關管理系統時,必須對數據的安全性給予高度的重視,從某種角度來說,一個智能卡表及系統設計是否成功,關鍵在于其對數據安全性的處理。
二、智能卡表及系統數據存儲的安全性分析
由于在智能卡表及系統中,IC卡是數據存儲和傳遞的載體,因此IC卡的數據存儲安全性是需要著重予以考慮的。
在智能卡表及系統中所使用的都是集成電路卡(IC卡),(從數據容量和安全性的角度以及讀寫設備的成本考慮,沒有使用磁條卡作為信息載體的,因此磁卡表的名稱是不準確的。)集成電路卡的核心是采用集成電路芯片來進行數據的存儲。目前廣泛使用的IC卡使用的是電可擦除數據存儲芯片(EEPROM),這種芯片讀寫速度快,掉電后數據可以長期保存,并且數據可以反復進行擦寫。應該說,正是由于EEPROM芯片的出現才帶來了IC卡技術的廣泛應用。
IC卡根據對EEPROM讀寫處理方式的不同,可以分為存儲卡、邏輯加密卡以及智能卡(CPU卡)三大類,它們具有不同的數據保護安全級別。
1、存儲卡:存儲卡是直接將EEPROM芯片封裝在卡片上,外部設備可以直接訪問到EEPROM中的任何一個單元,如下圖所示:
由于存儲卡中只有EEPROM一個芯片,因此IC卡的對外接口實際上就是EEPROM的對外接口,這樣外部讀寫設備就可以十分方便地對EEPROM進行數據讀寫操作,作為IC卡而言,無法對合法或非法的讀寫設備進行判斷和識別,非常容易進行攻擊。存儲卡只是用來對數據進行存儲,而無法對數據進行安全性保護,因此存儲卡不具備數據安全性保護措施,數據安全級別很低。
2、邏輯加密卡:邏輯加密卡是在將EEPROM芯片封裝在卡片上的同時,將一組硬件邏輯電路也封裝在卡片上,外部讀寫設備必須通過硬件邏輯電路的判斷后才能訪問到EEPROM中的任何一個單元,如下圖所示:
由于在IC卡中存在一組硬件邏輯加密電路,EEPROM芯片的接口并不直接對外,在初始狀態IC卡芯片中的數據開關處于斷開狀態。外部讀寫設備在訪問IC卡芯片中的EEPROM單元之前,必須首先發一組數據給硬件邏輯電路,硬件邏輯電路在判斷數據的合法性后(即密碼校驗),才決定是否將IC卡內的開關閉合。只有密碼校驗正確后,硬件邏輯電路才能將開關閉合,這時外部讀寫設備才能對EEPROM中的數據進行讀寫操作,這樣邏輯加密卡就可以對外部合法和非法的讀寫設備進行識別判斷。通過這種方式,邏輯加密卡對內部EEPROM中的數據進行了安全性保護,因此邏輯加密卡具備數據安全性保護措施。
但邏輯加密卡的安全性級別并不是很高,有兩種攻擊方式可以對其進行攻擊測試,一種是當合法讀寫設備在發送數據進行密碼校驗時,非法設備可以跟蹤到校驗密碼,這樣今后非法設備通過重放也可以通過密碼校驗,從而對邏輯加密卡進行數據攻擊;另一種方法是非法設備在跟蹤到合法設備已經通過邏輯加密卡的密碼校驗,IC卡內部開關閉合后,再通過數據線對邏輯加密卡中EEPROM的數據進行攻擊破壞。因此邏輯加密卡雖然具備一定的數據安全性保護,但它的安全級別依然較低,具備一定的手段仍然是可以攻破的。
造成這種情況出現的原因是因為邏輯加密卡中的安全性是依賴一組硬件邏輯電路,這種電路只有判斷能力,但不具備分析處理能力,因此不能及時發現和處理變化的環境。
3、智能卡(CPU卡):智能卡是在將EEPROM芯片封裝在卡片上的同時,將微處理器芯片(CPU)也封裝在卡片上,外部讀寫設備只能通過CPU與IC卡內的EEPROM進行數據交換,在任何情況下都不能再訪問到EEPROM中的任何一個單元,如下圖所示:
由于在智能卡中封裝了微處理器芯片(CPU),這樣EEPROM的數據接口在任何情況下都不會與IC卡的對外數據線相連接。外部讀寫設備在與智能卡進行數據交換時,首先必須發指令給CPU,由CPU根據其內部ROM中存儲的卡片操作系統(COS)對指令進行解釋,并進行分析判斷,在確認讀寫設備的合法性后,允許外部讀寫設備與智能卡建立連接。之后的數據操作仍然要由外部讀寫設備發出相應的指令,并且CPU對指令進行正確解釋后,允許外部讀寫設備和智能卡中的數據存儲區(RAM)進行數據交換,數據交換成功后,在CPU的控制下,利用智能卡中的內部數據總線,再將內部RAM中的數據與EEPROM中的數據進行交換。可以看到,在數據處理過程中,外部讀寫設備只是和CPU打交道,同時數據交換也只能和數據緩存區RAM進行,根本無法實現對智能卡中EEPROM數據的直接訪問。這樣就實現了對智能卡EEPROM中數據的安全保護,因此智能卡也具備數據安全性保護措施。
與邏輯加密卡相比,由于智能卡內部具有CPU芯片,在具有數據判斷能力的同時,也具備了數據分析處理能力,因此智能卡可以隨時區別合法和非法讀寫設備,并且由于有了CPU芯片,具備數據運算能力,還可以對數據進行加密解密處理,因此具備非常高的安全性,其安全級別很高。
從對攻擊方式的分析可以看到,保證IC卡內數據的安全性是最基本的要求,如果非法設備可以容易地與IC卡進行數據信息交換,進而進行分析處理,智能卡表及系統就不再具備任何安全性。因此提高IC卡的安全性是設計好的智能卡表及系統的關鍵。
根據上面的分析,如果智能卡表及系統對數據的安全性非常重視,應該選用安全級別高的IC卡,從發展趨勢看,應盡量選用智能卡作為智能卡表信息傳遞的介質。
在設計實際的智能卡表系統時,安全性的指標也是相對而言的。如果設計的是單機版的物業小區管理系統,對安全性的要求不高,為簡化設計和降低成本,可以選用邏輯加密卡或存儲卡;但如果是行業管理部門或在大中城市推廣智能卡管理系統,數據的安全性將是一個非常重要的指標,這時應該首先選擇智能卡做為管理系統的數據信息載體。
三、智能卡表及系統數據交換的安全性分析
根據上面的分析,在智能卡表及系統中選擇使用智能卡可以有效保證數據存儲的安全性,但即使這樣也只是阻止了非法讀寫設備直接對IC卡中數據的操作,并不能保證在IC卡與智能卡表或合法讀寫器之間進行數據交換時不被非法設備跟蹤破譯,要解決這種類型的非法攻擊,還需要采用安全認證以及對數據在傳輸時進行線路保護處理。
1、安全認證:安全認證用來在讀寫設備(包括智能卡表)與IC卡進行數據交換之前,首先進行必要的安全認證,用來確認雙方身份的合法性。只有雙方身份確認后,才能建立相互之間聯系的通道進行必要的數據交換。如果雙方不能確認身份的合法性,則不能建立進行數據交換的通道。
安全認證有兩種方式可以實現,一是通過密碼進行安全認證;一是通過密鑰進行安全認證。
密碼認證的過程如下所示:
①讀寫設備發送密碼到IC卡
——————————→
②IC卡進行密碼比較
③IC卡將比較結果返回讀寫設備
←————————————
IC卡在進行密碼比較時,如果讀寫設備發來的密碼與IC卡中存儲的密碼相同,IC卡向讀寫設備返回密碼認證通過的結果,并打開IC卡數據與外部進行交換的權限。如果密碼不同,則返回錯誤結果,IC卡數據與外部進行交換的權限被關閉。
在邏輯加密卡中使用的就是這種認證方式,同時智能卡中的口令密鑰認證也是采用這種方式進行的。密碼認證的方式比較簡單實用,是一種常用的安全認證手段。其最大的缺陷在于進行認證的密碼在線路上進行了傳輸,如果非法設備跟蹤到密碼認證的第一步,就比較容易破譯整個密碼認證過程,這樣非法設備也能夠正確地與IC卡進行密碼認證,從而能夠非法與IC卡進行數據交換,而這個過程是無法阻止的。
密鑰認證的過程如下所示:
①讀寫設備向IC卡發取隨機數指令
—————————————→
②IC卡向讀寫設備返回隨機數
←———————————
③讀寫設備用存儲的密鑰對隨機數進行加密運算,生成加密結果即密碼
④讀寫設備發送密碼到IC卡
——————————→
⑤IC卡用存儲的密鑰和隨機數進行加密運算,并將生成的密碼和收到的密碼進行比較
⑥IC卡將比較結果返回讀寫設備
←————————————
與密碼認證過程相比,密鑰認證增加了兩個內容,一是引入了密鑰的概念,增加了加密運算過程;二是增加了產生隨機數的過程,有了這兩個過程,就可以有效地保證密鑰認證過程被非法跟蹤后,仍然能夠保證認證過程的安全性。
密鑰是事先設置到讀寫設備和IC卡中的,它在認證過程中只參與運算,但不在線路中進行傳輸,這樣非法跟蹤是不可能截獲到密鑰的;由于有隨機數的概念,這樣每次進行密鑰認證雖然使用的是相同的密鑰,但經過加密運算產生的密碼也是隨機的,無規律可循的,這樣非法跟蹤截獲到的密碼無法在下次進行認證時使用,只要不知道密鑰,非法設備就無法再向密碼認證那樣模擬安全認證的過程,也就不能非法與IC卡進行數據交換。
在這里值得特別指出的是加密運算過程也是保證密鑰認證安全性的一個非常重要的環節,加密運算的算法必須滿足下面的條件:
已知加密因子和密鑰可以計算出加密結果,即數據加密運算;
已知加密結果和密鑰可以推出加密因子,即數據解密運算;
已知加密因子和加密結果不可以推出密鑰;
加密算法應該是公開的算法。
這樣的加密算法就可以有效地保證密鑰的安全性。同時需要特別指出的是在智能卡表及系統中采用的算法一定應該是國際上公認的具備上述特征的算法,只有采用這樣的算法,才能夠有效保證安全性,同時也能使智能卡表及系統具有兼容性和互換性。目前有些廠家采用自己編制的算法進行密鑰安全認證存在兩大隱患:一是算法未經過權威部門認證,算法的安全級別實際上很低,其安全性完全取決于算法不公開,但即使不公開的算法也很容易被非法攻擊攻破,因為廠家的技術人員往往只是表具設計專家,而不是密碼安全算法專家,而進行非法攻擊的人員卻往往是密碼算法專家;二是由于安全原因算法不公開,系統的安全性就永遠和廠家的人員有關,而真正關心系統運行安全的行業管理部門卻不能掌握核心安全,同時也無法實現在系統中使用多家的智能卡表,從而對產品招標選型帶來不方便,在某種程度上,不安全的算法可能反而保護了產品性能并不高的廠家,因為即使發現智能卡表產品有性能缺陷,使用者卻由于安全算法的原因不能更換更好廠家的產品。
目前國際上公認的加密算法主要分為兩大類型:一種是對稱加密算法,這種算法的加密密鑰和解密密鑰是相同的,代表性的算法有DES算法和3�DES算法;另一種算法是非對稱算法,這種算法的加密密鑰和解密密鑰是不相同的,代表性的算法有RSA算法。從安全性的角度來講,不對稱算法的安全性更高,但計算過程也更復雜,一般都應用在需要對身份進行合法性認證,防偽認證等場合;對稱性算法也具有很高的安全性,算法相對比較簡單使用,目前金融應用,公用事業應用基本上都采用對稱算法。
在智能卡表應用中,如果是非金融的單機系統,采用DES算法比較適宜;如果考慮今后和金融系統聯網收費,則應滿足銀行規范使用3�DES算法。
2、數據的線路保護:線路保護是指讀寫設備和IC卡通過安全認證后進行數據交換傳輸時,要保證數據在線路上被非法設備截獲后不能進行破譯、竄改和重放復現。數據的線路保護分為兩個層面:一是數據的機密性保護;一是數據的完整性保護。
數據的機密性保護是指對要傳輸的數據用密鑰進行加密處理后再進行傳輸。這樣在線路中傳輸的數據為密文數據,非法設備截獲后無法進行數據破譯和分析,接收方收到密文數據后再用解密密鑰進行解密重新得到明文數據。
數據的完整性保護是指在要傳輸的數據后面附加校驗碼字節,發送方將發送數據與線路保護密鑰以及隨機數進行運算,生成校驗碼后進行數據傳輸,接收方接收到數據后用相同的密鑰對接收到的數據重新計算校驗碼并與接收到的校驗碼進行比較,相同則接收數據有效,否則數據無效。由于密鑰不在線路上傳輸,這樣非法設備截獲數據后如果對數據進行竄改,必然會導致校驗碼不正確,接收方就能夠拒絕接受錯誤數據。
由于校驗碼在運算過程中也有隨機數參與運算,因此即使采用相同的密鑰,將相同的數據進行多次傳輸,每次形成的校驗碼也是各不相同的,這樣非法設備即使截獲了某一次的合理數據,也不能在進行二次傳輸,這就有效避免了非法設備對數據進行重放復現。
綜合運用上述兩種方法,就可以有效地保證數據在傳輸過程中的安全性,也就最終實現了在公開的傳輸介質或信道上,采用公開的加密算法進行數據傳輸,數據能夠是有效的,正確的,安全的。與此相對應,數據傳輸的安全性不是依靠傳輸信道的封閉性,加密算法的不公開性來保證的。
綜合上面所討論的內容,在智能卡表及系統中要具備高的數據安全性,一是要采用安全級別高的IC卡即智能卡(CPU卡)作為傳輸介質,二是利用密鑰和相應的加密算法進行數據的安全認證和有效傳輸。
四、智能卡表中實現安全性的工具�嵌入式安全模塊(ESAM模塊)
根據上面的論述,智能卡表在廣義上也是一種IC卡讀寫設備,要保證智能卡表以及所使用IC卡中數據的安全性,除了使用智能卡外,必須能夠實現智能卡表和智能卡之間能夠進行數據的安全認證和線路保護處理,也就是要求智能卡表必須具有存儲密鑰以及進行加密運算的能力。
普通卡表的邏輯組成如下所示:
卡表中的核心器件是微處理器(CPU),通過編制合理的程序,CPU可以對計量數據進行計算、存儲、顯示、與IC卡進行數據交換以及對相關數據進行分析判斷控制執行機構。因此CPU的主要作用是完成卡表的數據處理流程以及實現設計好的功能。
從安全性的角度來講,智能卡表除了要完成上述內容以外,還要完成密鑰存儲和加密運算功能,這樣就產生了一個不可調和的矛盾。
由于CPU中的程序是需要生產廠家(或第三方)的設計人員進行設計的,這部分程序的功能和處理流程可以是由智能卡表使用方提出需求而委托設計的,需求本身也是公開的。但如果要在CPU的控制下存儲密鑰和進行加密運算,出于安全性的考慮,密鑰值應該是不公開的,因此這部分程序編制是不能委托開發設計的,必須掌握在智能卡表使用方手里。換言之,智能卡表的功能、數據操作流程和數據的安全性是兩個不同的概念,應該由不同的功能模塊去完成。解決這個問題最好的方案就是在智能卡表中增加嵌入式安全模塊(ESAM模塊)。
增加了ESAM安全模塊的智能卡表的邏輯組成如下所示:
與普通卡表相比,只是將數據存儲模塊換成ESAM模塊,這樣智能卡表中的CPU還是完成原來普通卡表的功能,程序也完全可以由生產廠家(或第三方)根據用戶需求進行靈活編制,當需要進行數據交換時,由CPU啟動ESAM模塊與智能卡完成安全認證以及數據保護工作,密鑰和智能卡表數據都保存在ESAM模塊中。ESAM模塊可以由智能卡表的使用方發行,安裝在智能卡表中即可,這樣密鑰和算法的安全性和CPU程序就可以完全分開,整個智能卡表及系統的安全性就全部由使用方掌握。同時使用方沒有由于安全的原因限制生產方靈活設計不同功能的智能卡表,廠家可以隨時對智能卡表中的程序進行修改和升級而不影響使用方的數據安全性。
從技術發展的角度來看,由于半導體芯片技術的發展,CPU芯片升級速度很快,新的CPU芯片不斷出現,芯片的價格也在不斷調整,生產廠家必然要使用性能價格比最高的芯片,如果將數據安全性的實現和CPU芯片聯系在一起,一旦一個系統使用后,即使有更好的芯片出現,出于安全性的考慮,也無法再對CPU以及程序進行調整,也不利于新技術的推廣使用。如果使用ESAM安全模塊,這個問題也可以得到解決。
使用ESAM安全模塊還有一個優勢,由于加密算法都有一定的安全等級,用匯編語言來編制加密算法要占用CPU較大的程序空間,這樣生產廠家就必須選用容量較大的CPU芯片,這樣也會造成智能卡表成本的增加。目前大量使用的智能卡表都是針對居民的,屬于民用產品,對價格的要求應該是比較嚴格的。
綜合上面的因素,在智能卡表中使用ESAM模塊技術可以實現智能卡表數據流程和數據安全的分離,便于實現產品的兼容和升級,可以不斷推動技術進步,是規范智能卡表技術發展的有效技術手段。








