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