智能卡互聯互通中的密鑰關系
文章出處:http://5052h112.com 作者: 人氣: 發表時間:2012年09月25日
引子
智能卡的互聯互通是一個老話題了,最近因為舉辦了城市一卡通全國互聯互通的會議而再次被媒體廣泛提起。對于一卡通是否有必要實現全國互聯互通,能否真正實現互聯互通以及該以什么樣的方式來互聯互通,在此不作評論。僅就互聯互通涉及到的一些密鑰方面的內容進行一個簡單的概括。
智能卡的關鍵功能就是利用其具備的數據加解密和數據的安全存儲能力,來實現卡片和終端(后臺)之間的身份認證,并建立一個安全的通道,便于數據交互,以完成各種應用所定義的交易流程。
另外,所謂的互聯互通多指脫機交易,可以是跨地區的互聯互通,也可以是跨行業的互聯互通。對于聯機交易原則上任何時候都可以通過網絡連接到發卡主體的后臺,不受地域影響,也就不存在互聯互通的問題。
對稱密鑰及其分散
對于對稱密鑰來說,加密和解密的密鑰是相同的。也就是說要想操作智能卡,利用智能卡實現某些交易,那么外界的終端或者后臺必須清楚地知道智能卡里面存儲的密鑰是什么。當然最簡單的方式就是大家都使用相同的密鑰,每張卡片、每個終端、每個后臺都用這個密鑰,各種交易就能夠順利完成。問題是這樣做存在風險,只要任何一張卡片的密鑰被破解整個系統就垮掉了。于是有了“一卡一密”的概念,也就是每張卡片的密鑰各不相同,這樣的話為了保證正常交易,后臺或者終端就必須把所有卡片的密鑰都存儲在自己的數據庫中。對于實際系統而言,這既不現實也不安全,所以需要進行密鑰分散。
密鑰分散的原則就是首先要生成一個主密鑰,每張卡片的密鑰都是利用卡片自身的唯一信息(比如卡號或者卡號再加上地區行業的編碼等)和主密鑰進行運算,最后生成新的密鑰,這個新密鑰有兩個特點:1)每張卡片的密鑰各不相同,確保一卡一密;2)和卡片的唯一信息具有相關性,換句話說可以通過卡片的唯一信息結合主密鑰推導出卡片里存儲的密鑰。這樣只要終端或者后臺知道這個主密鑰,就能夠通過卡片的唯一信息推導出每張卡片的密鑰了,在脫機交易終端中這個主密鑰通過SAM卡來保存,在后臺也可以通過加密機來保存。
實際上如果全國各地的終端和后臺系統都存儲這個主密鑰,而全國各地發行的卡片都是依據這個主密鑰進行分散的,那么自然就是全國互聯互通了。當然其中還涉及到后臺的結算處理密鑰的多級分散等,實際情況會復雜得多,但是如果單純從對稱密鑰角度看,互聯互通不過如此。
非對稱密鑰的互聯互通
上面提到的對稱密鑰體系中整個系統的安全全都寄托在主密鑰上,所以對于SAM卡的發行和管理也必須有嚴格的流程來控制。
非對稱密鑰算法中加密和解密使用的是不同的密鑰,其中一個可以公開稱作公鑰,另一個必須保密稱作私鑰。這種非對稱密鑰算法的特點就是:1)公鑰和私鑰是嚴格配對出現的,不同的公鑰一定對應著不同的私鑰,反之亦然。并且不能根據公鑰推導出私鑰;2)所有知道公鑰的人都可以對數據進行加密,但是加密后的信息只有擁有私鑰的人才能解密;3)所有用公鑰能夠正確解密的信息,一定是來自私鑰的擁有者,具有抗抵賴屬性,私鑰加密后的信息等同于私鑰擁有者的簽名(所以把私鑰的加密過程也叫做“簽名”,把公鑰的解密過程也叫做“驗簽”)。
如果智能卡采用的是非對稱密鑰體系,卡片、終端、后臺不需要一個統一的主密鑰來推導每張卡片的密鑰,每張卡片可以有自己的公私鑰對,并且把各自的公鑰數據公開給參與交易的各方即可完成正常的交易流程。為了保證交易的順利進行,必須確保參與交易過程的各方所出示的公鑰是真實有效的。于是需要一個權威機構(CA)來負責給這些參與方的公鑰出具“蓋章”的證明,也就是生成一個經過簽名的公鑰證書。這個簽名是由權威機構的私鑰來完成的,大家通過它的公鑰能夠驗證簽名的真偽,從而也驗證了這些被簽名的公鑰的真偽,于是就能夠保證后續身份認證的順利進行。前提是大家都信任這個權威機構,對權威機構公鑰的真實性不存異議。
那么要實現互聯互通,只要卡片、終端、后臺分別存儲權威機構的公鑰以及各自的公鑰證書(對應的私鑰是各自秘密存儲的),并且各自的公鑰證書必須經過權威機構的私鑰來簽名。在進行敏感信息交互之前,先讀出彼此的公鑰證書,并驗證簽名,然后就可以建立起彼此可信的安全數據通道,完成相關交易流程。雖然實際情況并沒有這么簡單,但是基本原理就是這些。
后記
簡而言之,對于目前的城市一卡通或者社保卡而言,如果各個城市都是根據全國統一的密鑰進行的SAM卡發行和用戶卡密鑰分散的,毫無疑問可以直接實現互聯互通。如果A、B兩個城市各自根據自己自定義的主密鑰來發行SAM卡和分散用戶卡密鑰,要想實現二者的互聯互通則需要它們在各自的終端里安裝對方的SAM卡。