社保CPU卡的安全體系研究
文章出處:http://srpd123.com 作者: 人氣: 發(fā)表時間:2011年12月08日
IC卡(Integrate Circuit Card)是將集成電路芯片鑲嵌于塑料基片中,封裝成卡的形式,它因體積小、存儲容量大、安全性高、使用方便等優(yōu)點被廣泛應(yīng)用于各行各業(yè)。IC卡分為存儲卡(Memory Card) 、邏輯加密卡(Logical Encrypt Card)和CPU卡(CPU Card)。中華人民共和國社會保障卡(簡稱社保卡)使用的是CPU卡。勞動和社會保障部于1999 年制定并發(fā)布了《社會保障卡建設(shè)總體規(guī)劃》,按照此規(guī)劃,社??▽嵭?ldquo;一卡多用”和“全國通用”。社??ㄗ鳛閯趧诱咴趧趧颖U项I(lǐng)域辦理有關(guān)事務(wù)的身份驗證和交易消費的唯一電子憑證,其安全性尤為重要。
1 社??▋?nèi)部結(jié)構(gòu)
1.1 物理結(jié)構(gòu)
社??ǖ膬?nèi)部包含五部分:CPU 及加密邏輯、RAM、ROM、EEPROM 及I/O,是一個完整的計算機安全體系[1],如圖1 所示。
其中,CPU 及加密邏輯保證EEPROM 中數(shù)據(jù)安全, 防止外界用非法手段獲取EEPROM中的數(shù)據(jù);RAM 存放命令參數(shù)、返回結(jié)果、安全狀態(tài)、臨時密鑰等數(shù)據(jù),掉電后自動丟失。社保卡操作系統(tǒng)COS 掩膜在ROM 中,保證COS 的代碼安全。用戶信息以文件形式存放在EEPROM 中,在擁有相應(yīng)權(quán)限的前提下可進行讀或?qū)憽?
1.2 文件組織結(jié)構(gòu)
社保卡的文件系統(tǒng)是完全遵照《社會保障(個人)卡規(guī)范》[2]和ISO/IEC 7816-4 [3] 來組織的, 它是具有樹型結(jié)構(gòu)的多級目錄系統(tǒng), 由主文件MF(Master File)、目錄文件DF(Directory File)、和基本文件EF(Element File)組成,其中包含下級目錄的DF 為DDF,不包含下級目錄的DF 為ADF。文件系統(tǒng)在社??ǖ腅EPROM 中建立。MF 在社??▋?nèi)唯一存在,在MF 和DF 下可以有多個EF 和多個下一級DF。社保卡支持多層目錄結(jié)構(gòu),同層目錄中文件不能有相同的ID。在應(yīng)用系統(tǒng)中,各個不同的應(yīng)用可以創(chuàng)建不同的DF,使一張社保卡可以適用于多個應(yīng)用。社保卡具體的層次結(jié)構(gòu)如圖2所示。
2 社??ò踩w系的設(shè)計要求
社??ǖ陌踩w系有以下幾個階段:在芯片制造商完成芯片的制造后,社??ㄌ幱谖闯跏蓟癄顟B(tài);卡片制造廠商封裝完成后進行初始化和檢測,此時社??ㄌ幱诔跏蓟A段;初始化和檢測完成后社??ㄌ幱谖磦€人化階段;發(fā)卡方使用專用密鑰進行個人化,此時處于個人化階段,這個過程中發(fā)卡方設(shè)計自己應(yīng)用的安全體系并封裝到卡片中,當個人化過程結(jié)束后,社??ㄔ诎l(fā)卡方規(guī)劃的安全體系的保護下對《社會保障(個人)卡規(guī)范》和ISO/IEC7816-4 中的指令進行解釋和執(zhí)行。因此,社保卡安全體系的設(shè)計需具備以下要求:
從設(shè)計上保證即使攻擊者(含設(shè)計者)得到社??ùa,也不會影響卡片安全性。
卡片中所有密鑰(口令密鑰、密碼算法密鑰)無論在什么條件下均不可由外界讀出,因而卡片密鑰內(nèi)容是不可復(fù)制的。
卡片中對文件的讀寫根據(jù)應(yīng)用需求設(shè)計安全級別,必須保證擁有相應(yīng)的級別才可讀或?qū)憽?
無其它隱含命令可直接讀寫卡中的數(shù)據(jù)。
ROM 中的代碼不能從外部讀出,也不能被駐留在EEPROM 中的程序讀取。
EEPROM 中的數(shù)據(jù)只能通過社??钤L問。
3 社??ò踩w系劃分
社保卡的安全體系可分為社??ㄗ陨戆踩c應(yīng)用安全。應(yīng)用安全又分為安全狀態(tài)、安全屬性、安全機制、密碼算法和密鑰管理等幾個方面。社保卡的核心軟件是卡內(nèi)操作系統(tǒng)COS(Chip Operation System)。社??ㄍㄟ^COS 來管理卡內(nèi)軟硬件資源,并通過安全通道與外界交換信息,保證用戶數(shù)據(jù)安全的傳輸,達到社??ò踩珣?yīng)用的目的。
3.1 安全狀態(tài)
安全狀態(tài)指的是一種安全級別。在環(huán)境目錄(DDF/MF)和應(yīng)用目錄(ADF)中各有15 個等級的安全狀態(tài)。環(huán)境目錄下的安全狀態(tài),稱為全局安全狀態(tài)字;應(yīng)用目錄下的安全狀態(tài),稱為局部安全狀態(tài)字。如果卡工作在環(huán)境目錄下(DDF/MF),則局部安全狀態(tài)無意義。
安全狀態(tài)是通過對KEY 進行外部認證后,將KEY 數(shù)據(jù)信息中的安全級別字(SSB)映射到安全狀態(tài)字上。若認證密鑰在DDF/MF 下,則映射到全局安全狀態(tài)字上;若認證密鑰在ADF 下,則映射到局部安全狀態(tài)字上。SSB 的高4 位表示安全級別的下限(1~15),SSB 的低4 位表示安全級別的上限(1~15)。假設(shè)KEY 的SSB 為‘XY’,表示認證KEY 成功后可獲得X 至Y 區(qū)域內(nèi)的安全級別。例如:在DDF/MF 下有Key1,其安全級別設(shè)置為‘46’,即SSB=‘46’。Key1 認證通過后,卡的全局安全狀態(tài)為4,5,6 三級。若在ADF 下有Key2,SSB=‘AD’,則Key2 認證通過后,卡的局部安全狀態(tài)為10、11、12、13 四級。若SSB=‘00’表示Key 認證通過后對安全狀態(tài)無影響。‘X’>‘Y’的組合為不合理數(shù)據(jù)。
3.2 安全屬性
安全屬性是指對社??ǖ牟僮鳈?quán)限,用戶只有達到安全屬性規(guī)定的權(quán)限才能通過COS 命令對卡內(nèi)文件和KEY 進行操作。Right定義了對文件和KEY 操作的權(quán)限,用2 個字節(jié)表示,高字節(jié)對應(yīng)全局安全狀態(tài),低字節(jié)對應(yīng)局部安全狀態(tài)。每個字節(jié)的高4 位表示安全狀態(tài)的下限,低4 位表示安全狀態(tài)的上限。假設(shè)權(quán)限的高字節(jié)為‘XY’,若‘X’‘Y’表示文件或KEY 的全局安全級別在‘X’至‘Y’區(qū)域內(nèi),對文件或KEY 訪問前,先要滿足文件或KEY 的訪問權(quán)限;若‘X’>‘Y’,表示文件或KEY 被禁止訪問;若為‘0Y’,表示對文件或KEY 的訪問無安全級別限制。
安全屬性往往和COS 文件系統(tǒng)相關(guān)聯(lián), 根據(jù)對不同文件類型的操作權(quán)限,可以設(shè)計不同的安全屬性。
增加權(quán)限:在當前目錄下創(chuàng)建新文件的權(quán)限。
激活權(quán)限:激活失效安全機制的權(quán)限。
終止權(quán)限:永久終止的權(quán)限,對于MF 來說表示卡鎖定,對于ADF 文件來說表示當前應(yīng)用永久鎖定,即: 應(yīng)用失效。
讀權(quán)限:對EF 文件內(nèi)容的讀操作權(quán)限。
寫權(quán)限:對EF 文件內(nèi)容的寫操作權(quán)限。
安裝權(quán)限:表示安裝密鑰或密碼的權(quán)限。
使用權(quán)限:表示使用密鑰或密碼的權(quán)限。
修改權(quán)限:修改密鑰或密碼的權(quán)限。
解鎖權(quán)限:解鎖密碼PIN 的權(quán)限,此權(quán)限只有PIN 才有。
3.3 安全機制
安全機制是指安全狀態(tài)的改變所采用的方法和手段以及安全屬性和安全狀態(tài)之間的控制關(guān)系。COS 命令在執(zhí)行過程中,首先要檢查COS 環(huán)境所處的安全狀態(tài)是否符合執(zhí)行命令要求的安全屬性。假設(shè)當前COS 所處的是安全狀態(tài)A,執(zhí)行COS 命令安全屬性要求安全狀態(tài)B , 在執(zhí)行COS 命令前要通過安全機制涉及安全提升方法,將安全狀態(tài)提升到安全狀態(tài)B ,這樣COS 命令才能正常執(zhí)行。安全狀態(tài)、安全機制、安全屬性,三者的關(guān)系見圖3。
社??ǖ陌踩珯C制根據(jù)《社會保障(個人)卡規(guī)范》規(guī)定,有三方面的要求, 即: 內(nèi)部/外部認證、PIN 驗證和安全報文MAC(MessageAuthentication Code)。
3.3.1 內(nèi)部/外部認證:內(nèi)部認證和外部認證是一種互認證過程。內(nèi)部認證是用讀卡設(shè)備來認證卡, 保證卡的合法性, 內(nèi)部認證可以防止偽造的卡在讀卡設(shè)備上進行操作。外部認證是用卡來認證外部讀卡設(shè)備的合法性,外部認證可以防止惡意對卡進行操作,讀取和更改卡內(nèi)信息。外部認證還可以改變社??ǖ陌踩珷顟B(tài),一般卡內(nèi)存儲了多個外部認證密鑰,每個外部認證密鑰所能改變的安全狀態(tài)不一樣,在進行外部認證時,必須通過密鑰索引參數(shù)選擇相對應(yīng)的外部認證密鑰完成外部認證。
3.3.2 PIN 驗證:PIN 實際上就是密碼,根據(jù)《社會保障(個人)卡安全要求》[4]規(guī)定,社??ㄖ挥幸粋€密碼PIN,持卡用戶可以修改密碼,通過密碼驗證,改變卡的安全狀態(tài),達到安全要求。
3.3.3 安全報文MAC:傳送安全報文的目的是保證數(shù)據(jù)的可靠性、完整性和發(fā)送方的認證。數(shù)據(jù)完整性和對發(fā)送方的認證是通過使用MAC 來實現(xiàn),數(shù)據(jù)可靠性通過數(shù)據(jù)域的加密來得以保障。
3.4 密碼算法
社??ㄓ玫募用芩惴ǘ际菍ΨQ分組加密算法,一般通用的對稱加密算法主要是DES(Data Encryption Standard)。DES 算法,見圖4,需要滿足4 個要求:提供高質(zhì)量的數(shù)據(jù)保護,防止數(shù)據(jù)未經(jīng)授權(quán)的泄露和未被察覺的修改;具有相當高的復(fù)雜性;使得破譯的開銷超過可能獲得的利益;便于理解和掌握;DES 算法的入口參數(shù)有三個:Key、Data、Mode。其中Key 為8 個字節(jié)共64 位, 是DES 算法的工作密鑰;Data 也為8 個字節(jié)64位,是要被加密或被解密的數(shù)據(jù);Mode 為DES 的工作方式,有兩種:加密或解密。如果Mode 為加密,則用Key 去把數(shù)據(jù)Data 進行加密,生成Data 的密碼形式作為DES 的輸出結(jié)果; 如Mode 為解密, 則用Key 去把密碼形式的數(shù)據(jù)Data 解密, 還原為Data 的明碼形式作為DES 的輸出結(jié)果。在使用DES 時, 雙方預(yù)先約定使用的“密碼”即Key,然后用Key 去加密數(shù)據(jù);接收方得到密文后使用同樣的Key 解密得到原數(shù)據(jù),這樣便實現(xiàn)了安全性較高的數(shù)據(jù)傳輸。
3.5 密鑰管理
社保卡的密鑰的裝載、更新和下發(fā)都有一整套安全管理辦法。社??ǖ拿荑€分為三個級別:國家級密鑰、省級密鑰和地市級密鑰,采用多級密鑰管理方式,逐級分散下發(fā)。從而保證用于加(解)密算法的非對稱私有密鑰或?qū)ΨQ加密密鑰在沒經(jīng)授權(quán)的情況下,不會被泄漏。如果增設(shè)個人密碼,則應(yīng)保證其在社??ㄖ械陌踩娣?。社保卡的COS 在設(shè)計、封裝時將所有密鑰存放在專用的文件中,即:密鑰存放到密鑰文件中,密碼存放到密碼文件中,并且外部不能訪問這兩種文件,每一種密鑰只能執(zhí)行特定的功能,這樣可以保障密鑰和密碼不外泄漏, 同時又能正常使用。
4 結(jié)束語
為了適應(yīng)社會保障信息化發(fā)展要求,滿足社??ㄏ到y(tǒng)建設(shè)、應(yīng)用和管理的需求,實現(xiàn)“一卡多用”、“全國通用”,社??ò踩w系的研究是解決卡片信息安全問題的關(guān)鍵和基礎(chǔ)技術(shù)。隨著社??☉?yīng)用領(lǐng)域和功能的不斷地擴展,社??ò踩w系的研究和設(shè)計也將隨之發(fā)展,從而保證卡內(nèi)信息的安全。