好吊视频一区二区三区-国产精品V欧美精品V日韩精品-老司机亚洲精品影院-国产精品视频免费播放

物聯傳媒 旗下網站
登錄 注冊
RFID世界網 >  技術文章  >  防偽  >  正文

金融智能卡操作系統安全體系研究

作者:楊帆, 張煥國
來源:中國一卡通網
日期:2009-10-14 09:26:25
摘要:討論了通用智能卡操作系統COS 的安全體系, 圍繞該體系的三大功能: 文件操作、認證系統、加/ 解密展開論述。金融智能卡操作系統是建立在通用COS 基礎上集成了銀行應用的COS。結合實踐的JETCOS 智能卡操作系統分析了金融智能卡COS 在交易流程和應用過程中的安全性。

    智能卡又稱為IC 卡( Integrated circuit Card) , 即集成電路卡。根據卡中使用的集成電路的不同可以分為存儲器卡、邏輯加密卡和CPU卡。由于CPU卡中集成了中央處理器CPU、存儲器和芯片操作系統( Chip Operating System, COS) , 構成一個完整的計算機系統, 具有獨立的數據處理能力, 因此安全性大大增強, 從而得到了廣泛的應用, 成為IC 卡中的主流產品。本文主要針對CPU 卡進行討論。COS 建立在CPU、存儲器等硬件之上, 是管理芯片資源和實現安全保密的操作系統。它的主要功能是: 控制智能卡和外界的信息交換, 管理智能卡內的存儲器, 并在卡內部完成各種命令的處理。

    1 安全體系

    根據接觸式集成電路( IC) 卡國際標準ISO7816-4, 智能卡安全體系包括三部分: 安全狀態( Security Status) 、安全屬性( Security Attributes) 以及安全機制( Security Mechanisms) 。安全狀態是指智能卡當前所處的安全級別, 即當前安全狀態寄存器的值。安全屬性又稱為訪問權限, 即在進行某種操作時要求安全狀態寄存器的值是什么。安全機制從廣義上說是卡片支持的各種安全模式, 從狹義上說是安全狀態實現轉移所采用的方法和手段。一種安全狀態通過上述安全機制轉移到另一種狀態, 把該安全狀態與某個安全屬性相比較, 如果一致, 則表明能夠執行該屬性對應的命令; 如果不一致, 則相關命令不能被執行, 從而達到了安全控制的目的。這就是智能卡安全體系的基本工作原理, 如圖1 所示。 

智能卡安全體系

    安全機制是安全體系的關鍵, 廣義的安全機制主要涉及到文件操作、認證系統、加/ 解密三大功能模塊。

    2 文件操作

    2. 1 基本文件結構

    文件系統是COS 的基礎模塊, 它負責組織、管理、維護IC卡內存儲的所有數據。根據ISO7816-4, COS 支持的文件類型為: 主文件( Master File, MF) 、目錄文件( Dedicated File, DF) 和基本文件( Elementary File, EF) 。主文件MF為文件系統的根,下面可以有多個目錄文件DF 和基本文件EF。目錄文件DF分為DDF 和ADF 兩種。DDF可以含有下級目錄ADF, 而ADF不能含有下級目錄文件。

    主文件MF 在IC 卡中唯一且必須存在。DDF 是指包含多個應用的DF, 一個ADF則代表一個應用, 任何一個DF 在物理上和邏輯上都保持獨立?;疚募﨓F 用于存放密鑰或用戶數據, 分為密鑰文件和工作基本文件。

    2. 2 文件的訪問控制

    文件的訪問控制可采取鑒別寄存器方式和狀態機方式, 這里以鑒別寄存器方式為例。用兩個四位寄存器來表示安全狀態: 一個寄存器稱為MF 的安全狀態寄存器, 另一個寄存器為當前DF的安全狀態寄存器。每個寄存器的初始值是0, 取值安全狀態員安全狀態圓執行命令符合命令要求的安全屬性鑰命令拒絕安全機制再暈圖員智能卡安全體系范圍是0 ~F 之間的某一個值。文件有兩種不同的訪問控制權限AC0, AC1。AC0 是使用權限, AC1 是修改權限, 分別用一個字節表示。當前安全狀態寄存器的值大于AC 字節的低半字節小于其高半字節時, 該文件的相應讀、寫權限在該安全狀態下被滿足, 則能進行相關操作。COS在建立文件時指定其AC0和AC1 的值來對文件的訪問權限進行設定, 通過口令校驗和外部認證兩條命令可以改變安全狀態寄存器的值, 從而利用安全機制實現對文件的訪問控制。

    3 認證系統

    3. 1 用戶鑒別

    用戶鑒別( Verify) , 也稱為口令校驗, 是指智能卡對其持有者合法性的驗證, 以減少被非法用戶冒用的可能。具體實現上, 由用戶向智能卡出示只有他本人才知道的通行字PIN, 并由智能卡對該Password 的正確性進行判斷。如果正確, 則驗證通過, 改變智能卡當前的安全狀態為PIN后續狀態從而用戶獲得相應使用權限; 如果不正確, 則錯誤計數器的值減1, 若錯誤嘗試次數達到錯誤計數器的上限, 則卡會自動鎖定。

    3. 2 內部認證和外部認證

    內部認證( Internal Authentication) , 是指讀寫設備對智能卡的合法性進行的驗證; 外部認證( External Authentication) , 是指智能卡對讀寫設備的合法性進行的驗證。內、外部認證的原理是合法的讀寫設備和智能卡應該共有相應的內、外部認證密鑰, 偽造的讀寫設備或智能卡無法獲得相應密鑰。具體實現上, 是通過讀寫設備和卡雙方同時用對稱加密算法對一個隨機數進行加密運算, 然后判斷雙方運算結果的一致性或者通過一方對隨機數加密另一方進行解密來達到認證的目的。類似于口令校驗, 外部認證通過后, 當前安全狀態寄存器的值變成外部認證密鑰的后續狀態。

    3. 3 安全報文傳送

    為保證卡與外界傳輸的信息的安全性, 除了明文方式傳遞數據外, COS 提供安全報文傳送方式, 其目的在于保證數據的可靠性、完整性和對發送方的認證。數據完整性和對發送方的認證通過使用消息認證碼MAC( Message Authentication Code)來實現。數據的可靠性通過對數據域的加密得到保證。 

    MAC 是消息內容和秘密鑰的公開函數, 其輸出是定長的短數據塊: MAC = C( M, K) 。其中M是消息內容, K 是通信雙方共享的秘密鑰, C 是MAC 值的生成算法。算法C 要求已知M1 和C( M1 , K) , 無法構造出滿足C( M2 , K) = C( M1 , K) 的報文M2 , 所以MAC 能唯一鑒別原報文。COS支持如下兩種安全報文傳送方式:

    ( 1) 線路認證方式。終端對要發送給卡的整條命令計算MAC 值, 并附加在傳輸的命令數據的尾部, 即A→B: M‖ C( M, K) , 卡收到命令后用秘密鑰K 對接收到的M求MAC 值,并與C( M, K) 比較, 從而驗證MAC 值的正確性, 只有校驗正確的數據才予以接收; 卡如果有返回給終端的應答數據, 也同樣以線路認證方式發送。如果M 被竄改, 收方據此計算出的MAC 值就與發方傳送過來正確值不同; 如果有冒充的非法發送端發送消息, 由于它得不到秘密鑰K, 所以也無法得到正確的MAC 值。因此這種方式能保證傳輸數據的完整性和發送方的真實性。

    ( 2) 線路加密認證方式。終端對要發送給卡的命令數據域加密, 然后再對整條命令( 包括命令頭和加密后的命令數據域) 計算MAC 值, 并附加在被加密了的命令數據的尾部, 即A→B: E( M, K2 ) ‖C( E( M, K2 ) , K1 ) , 卡收到命令后首先用K1驗證MAC 值的正確性, 再用K2 對命令的DATA 域數據解密,恢復命令數據域的明文; 卡如果有返回給終端的應答數據, 也同樣以線路加密認證方式發送。由于傳送的是加密后的密文,僅由收、發雙方共享K2 , 所以線路加密認證方式除了提供線路認證方式的優點外, 還能保證數據的可靠性。

    4 加 / 解密

    4. 1 密鑰管理

    COS 的密鑰管理涉及密鑰的生成、分配、存儲和使用。根據密鑰分級原則, 把智能卡中涉及的密鑰劃分為三級: 主密鑰、二級密鑰、初級密鑰。高級密鑰生成低級密鑰。低級密鑰由高級密鑰管理控制, 可以減少直接保密的密鑰數量, 簡化密鑰管理, 保證密鑰安全。主密鑰由應用管理機構產生和維護, 二級密鑰由主密鑰通過某種算法分散到每張IC 卡中, 過程密鑰由每次交易具體涉及的數據產生。

    根據全程安全原則, 安全管理貫穿密鑰的生成、分配、存儲和使用的過程。

    主密鑰是在安全保密的情況下由管理機構產生的真隨機序列。根據責任分離原則, 一個密鑰專職一種功能, 所以根據COS 應用中涉及的業務種類, 應生成對應個數的主密鑰。子密鑰, 即二級密鑰, 由對應的主密鑰對每張用戶卡唯一的應用序列號進行加密生成。過程密鑰, 即初級密鑰, 由二級密鑰對每次交易的某些具體數據進行加密生成。

     主密鑰采用人工分配的方式, 以確保高安全性。子密鑰在管理機構由主密鑰產生, 再下載到每張卡中。過程密鑰在卡中生成, 采用“一次一密”方式, 只在當次交易有效, 保護該次交易的敏感數據。

    主密鑰存儲在管理機構中, 生存周期長, 安全性要求最高,存儲在高度安全的專用密碼裝置中。子密鑰存儲在MF或DF下的密鑰文件中, 在整個MF或DF的建立到刪除過程中有效。過程密鑰由于只對一次特定的交易有效, 所以生存周期短, 使用時動態產生, 存儲在卡的內存中, 使用完畢即銷毀。子密鑰和過程密鑰在卡中以非可見的形式存放, 任何時候都不能出卡, 不能被顯式讀取。COS 設定了每個密鑰的安全條件, 只有滿足特定的安全狀態, 才能使用或修改該密鑰。當某些密鑰( 如個人PIN) 受到非法攻擊時, 還能夠自動鎖定, 以確保密鑰的抗攻擊性。

    4. 2 密碼算法及應用

    4. 2. 1 對稱密碼算法

    DES, 3DES, AES 是普遍使用的對稱密碼算法。COS 中涉及內外部認證、安全報文、生成過程密鑰等均用到了對稱密碼算法。圖2 說明安全報文傳送中MAC 基于DES 算法的生成過程。其中, D 表示被加密的數據被分成的八字節數據塊, ī表示異或, 最終得到的八個字節結果取左邊四個字節作為MAC 值。

    4. 2. 2 非對稱密碼算法

    利用公開密鑰密碼實現數字簽名方便安全, 如果COS 支持公開密鑰密碼, 由于其具有獨立的數據處理能力和良好的安全性, 則IC 卡可作為數字簽名的安全載體。用來簽名的私鑰保存在卡中, 并且任何情況下不能讀出。簽名的過程在卡中完成, 比在主機上用私鑰實現簽名更安全。目前可用于COS 的非對稱算法有RSA, ECC 等。出于對安全和速度的考慮, 一般不是對數據直接簽名, 而是對其哈希值進行簽名。

    5 金融智能卡COS 的安全性

    金融智能卡操作系統是建立在通用COS 基礎上集成了銀行應用的COS, 其中電子存折和電子錢包是兩種最主要的金融應用, 能支持圈存、圈提、消費、取現和修改透支限額五種類型的交易, 可用來代替流通領域的現金、支票, 成為電子貨幣的方便載體在金額領域使用, 所以對其安全性的要求更高。金融COS作為通用COS 的具體應用, 除了在交易流程上依賴于通用COS的安全體系, 還有金融交易其特有的安全措施。下面結合JETCOS 詳細說明金融COS 的交易流程和應用安全。

    5. 1 交易流程

    圈存是將銀行賬戶上的資金劃轉到電子存折或錢包的交易; 圈提是將電子存折中的資金劃轉到銀行賬戶的交易; 消費是使用電子錢包或電子存折在銀行POS 機上消費的交易; 取現是使用電子存折在銀行終端上支取現金的交易; 修改透支限額是修改電子存折透支限額的交易。以下以JETCOS 的電子存折圈存交易為例說明安全交易的流程( 圖3) 。 

    ( 1) 終端按照應用協議數據單元( Application Protocol DataUnit, APDU) 的格式向IC 卡發圈存初始化命令啟動圈存交易:CLA INS P1 P2 Lc DATA Le80 50 00 01 0B 密鑰標識符+ 交易金額+ 終端機編號10由CLA, INS, P1, P2 共同指定該條命令是電子存折的圈存初始化, Lc 指示DATA 的長度, Le 指示該命令完成后期望返回的數據長度。

    ( 2) IC 卡進行圈存初始化。首先將命令DATA 域中的交易金額加上存折的余額檢查是否超出存折存錢的上限, 如溢出則返回錯誤碼“6985”( 金額上溢) , 否則繼續執行; 然后根據DATA 域中的密鑰標識符查找卡中的圈存密鑰, 利用此密鑰對產生的偽隨機數、聯機交易序號和“8000”加密生成過程密鑰;再用過程密鑰對交易金額、終端機編號等信息生成MAC1, 并向主機發送MAC1 和生成MAC1 的各項, 以供主機驗證IC 卡的合法性。由于每次交易的偽隨機數和交易序號不同, 所以過程密鑰也不同。采用“一次一密”的方式, 確保了當次交易敏感數據的安全性。圈存初始化命令成功執行后返回的響應報文域為:DATA SW1 SW2原余額+ 聯機交易序號+ 密鑰版本號+ 算法標識+ 偽隨機數+ MAC1 90 00其中DATA 域是傳遞給主機的數據, SW 是返回碼, “9000”表示該命令成功執行。

     ( 3) 主機進行主機端的圈存處理。由于主機已經裝載了圈存主密鑰, 所以主機可以根據卡的應用序列號計算出該卡的圈存子密鑰, 再由IC 卡傳遞的DATA 生成過程密鑰和相應的MAC 值與MAC1 比較, 如不相同則返回錯誤碼“9302”( MAC錯誤) , 否則繼續執行, 從而保證了IC 卡傳遞數據的完整性和主機對IC 卡身份的認證。確認有效后主機從銀行賬戶中扣除圈存金額, 并產生報文鑒別碼MAC2, 用于IC 卡對主機進行合法性的認證。

    ( 4) 終端向IC 卡發圈存主過程命令, 其中DATA 域數據由主機端交易生成:CLA INS P1 P2 Lc DATA Le
80 52 00 00 0B 交易日期+ 交易時間+ MAC2 04

     ( 5) IC 卡進行圈存主過程。利用當次交易的過程密鑰和主機傳遞DATA 的相關項生成MAC 值, 從而驗證MAC2 是否有效。確認有效后, 完成實質性交易: 交易金額加在余額上, 更新聯機交易序號, 更新交易明細文件, 并用TAC 密鑰根據交易后的新余額、交易序號、交易時間等當次交易相關信息生成當次交易驗證碼TAC( Transaction Authentication Code) , 用于主機對IC 卡端圈存交易成功與否進行驗證。圈存命令成功執行后返回的響應報文域為:DATA SW1 SW2TAC 90 00

    ( 6) IC 卡將TAC 傳遞給終端, 可供主機以后驗證此次交易成功與否。

    5. 2 應用安全

    ( 1) 交易狀態機。一個完整的金融交易包括交易初始化和交易主過程, 初始化和主過程必須是同一種類型的交易。卡片的狀態有: 空閑狀態, 圈存狀態, 圈提狀態, 消費/ 取現狀態和修改狀態。僅當交易初始化后進入相應的交易狀態, 同一類型的交易主過程才能進行。用內存系統區PSW 這個字的低五位標志五種狀態。例如卡片初始狀態是空閑態, 執行圈存初始化后, PSW 的b1 位被置為1, 即交易狀態為圈存態。執行圈存主過程時, 先檢查該位是否為1, 如果是, 則執行圈存主過程, 執行成功后置PSW 回空閑態; 如果不是, 則返回錯誤碼“6901”( 狀態無效) , 圈存主過程不被執行。表1 說明交易狀態機的各種變化: 交易初始化可以在任何狀態下執行, 執行后交易狀態改變為初始化相應的狀態; 交易主過程必須在相應的交易狀態下才能執行, 執行后返回空閑態; 如果交易主過程的類型和交易狀態不匹配, 則主過程不被執行。取余額和取交易認證可以在任何狀態下執行, 并且不影響當前交易狀態。

     表1 交易狀態變化 

    ( 2) PIN驗證。通用COS 的用戶鑒別是指COS 對用戶身份的認證, 并能改變當前安全狀態, 但用戶鑒別并不是必須的,這里的PIN驗證是特定的金融交易類型要求的對用戶身份的驗證。除了電子錢包消費不用校驗PIN, 其他各種交易類型都必須提交個人密碼( PIN) , 這里也是通過判斷PSW 值來檢查是否已經校驗PIN。PSW 的b9 位作為PINVer_OK 標志位, 當用戶從金融終端輸入合法的個人密碼, 通過口令校驗, 同時置該位為1。交易初始化時檢查該位是否為1, 如果是, 繼續執行, 否則返回錯誤碼“6982”( 安全狀態不滿足) 。

    ( 3) CRC 校驗。交易初始化時從存折/ 錢包文件中讀取相關信息, 交易主過程時更新存折/ 錢包文件都需要讀寫FLASH存儲器, 再讀取前校驗CRC, 更新后重新計算CRC 并寫入FLASH 中相關文件的頭部, 以便下次校驗, 從而保證了讀寫物理過程的安全性和文件的完整性。

     ( 4) 備份寫。智能卡能夠在交易處理時, 包括拔卡或掉電的情況下, 保持數據的完整性, 這需要保證每次交易的所有更新一次性完成。為此JETCOS 中在FLASH 中開辟FL_RESTOREBUF區作為寫入緩沖區, 每次交易需要對FLASH 更新的數據不是直接更新, 而是先寫入FL_RESTOREBUF 區, 并置標志位FL_RESTORETAG 為0; 當交易處理完, 調用RestoreData子過程, 檢查此時FL_ RESTORETAG 為0, 則從FL_ RESTOREBUF區依次更新到FLASH 的相應地址, 如果都更新成功, 則重置標志位FL_RESTORETAG 為1。更新FLASH 的過程中若遇到拔卡或掉電, COS 會在初始化時再次調用Restore-Data。如果第一次RestoreData 未進行成功, 則FL_RESTORETAG為0, 那么重新更新FLASH 的相應地址; 如果第一次RestoreData成功進行, 則FL_RESTORETAG 為1, 那么不必再次恢復數據。這種機制保證了拔卡或掉電時更新數據的一致性。

    6 結束語

    COS 的安全性是基于軟件的安全, IC 卡系統的安全還需要對抗硬件攻擊、分析攻擊、應用攻擊和系統攻擊等。智能卡,尤其是金融IC 卡, 目前在金融系統還未得到廣泛使用, 尚需要從硬件、穩定性、使用環境各方面加強抗攻擊能力, COS 也必須相應加強反調試跟蹤的能力。 

    ( 文/武漢大學計算機學院, 楊帆, 張煥國)