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