歡迎您訪問鄭州興邦電子股份有限公司官方網站!
    阿里巴巴誠信通企業
    全國咨詢熱線:40000-63966
    興邦電子,中國水控機第一品牌

    聯系興邦電子

    全國咨詢熱線:40000-63966

    售后:0371-55132951/55132952

    工廠:河南省 鄭州市 高新區蓮花街電子電器產業園

    智能卡操作系統的補丁機制研究

    文章出處:http://www.xujuanpiju.com 作者:張李靜, 張秋燕   人氣: 發表時間:2011年09月30日

    [文章內容簡介]:簡要介紹智能卡操作系統的基本概念及操作系統的文件結構; 以接觸式51智能卡為例,說明補丁在智能卡操作系統中的應用,并針對當前補丁下載方法的不足,提出一種操作系統的補丁管理機制,以實現發卡后可以實時更新卡片應用程序,或者修改卡片操作系統中存在的問題。 文中給出具體的實例,并進行分析,給出實現方法和步驟,同時驗證了此補丁下載方法的可行性。 本文中提出的補丁管理機制,較一般的補丁下載具有很強的靈活性,可以一次下載多個補丁,并方便對多個補丁進行管理。

        隨著科學技術的不斷進步,智能卡的應用已涉及到人類生活的各個領域,如商業、醫療、保險、交通、社會公共事業等多種領域。同時,用戶手里的智能卡數量也越來越多,特別是同種類的卡由于要升級卡片信息往往需要換一張新卡。 所以,如何高效利用智能卡,即如何設計智能卡的補丁機制,以實現發卡后更新卡片應用程序或者修改卡片操作系統BUG是十分重要的課題。

        1 智能卡操作系統概述

        智能卡操作系統,簡稱COS。COS一般是緊緊圍繞著它所服務的智能卡的特點而開發的。與那些常見的微機上的操作系統相比較而言, COS在本質上更加接近于監控程序。智能卡和終端進行通信是以命令的形式進行的。根據規范要求,系統所采用的都是命令應答對的方式,由讀寫設備發出命令,智能卡則接收命令,進行處理,處理完畢后送出相應的應答。所以,COS所需要解決的最根本問題是對外部的命令如何進行處理、響應的問題。

        整個COS是通過文件來實現存儲和管理數據的,文件結構系統類似于DOS的目錄管理方式,可以實現多級目錄,每個目錄下面可以創建多種類型文件。文件系統是由專有文件DF (Dedicated File)和基本文件EF (Elementary File)組成的. 根目錄的DF稱為MF,任何一個文件組織均是以MF開頭的結構.所有的其余文件(DF、EF)均是MF的分支, DF下可以創建DF和EF分支, EF是末端,不能在EF下創建文件,文件系統結構如圖1所示。 

    智能卡操作系統的文件結構

    圖1 智能卡操作系統的文件結構

    Fig. 1 File structures of COS

        智能卡操作系統COS在設計主函數時比較通用的方式是設計成一個循環的方式. 循環實現智能卡接收命令, 進行處理, 處理完畢后送出相應的應答。

        主程序在接收到終端發來的指令會經過傳輸管理模塊,首先判斷是什么樣的指令,以及要對那些文件進行操作,操作后再返回主程序進行處理,返回相應的數據和執行結果. 智能卡和終端的交互過程是通過對卡內文件的連續操作進行的。

        2 智能卡操作系統補丁機制的應用背景

        2. 1 補丁在智能卡操作系統中的使用

        通常,智能卡操作系統COS的下載方式是由芯片提供商決定的. 在下載COS之前,卡片的狀態為BootLoader狀態. 卡片BootLoader有一套自己的操作指令. 本文中的補丁機制研究以51系列智能卡為例, 實際操作時,采用的編譯器是Keil編譯器,程序編譯后會產生一個. hex文件. 下載程序時把. hex文件中地址信息和對應的數據信息解析出來,然后用BootLoader的下載指令即可。

        一般情況下,在下載完COS后,如果發現COS中有程序錯誤或者需要增加新的功能而需要修改某些函或文件,最簡單的辦法就是重新發卡,即回收卡片,重新下載COS. 但是當卡片已經在用戶手中,這時,不僅要回收卡片,還要經歷COS下載、個人化等階段. 這就顯的非常麻煩。 所以,我們在設計卡操作系統時最好能給出一個補丁( PATCH)的接口,這樣的話,當卡片需要增加新的功能或是修改BUG時,只需將補丁程序下載到卡片這一個步驟。

        2. 2 補丁的實現方式

        傳統的補丁設計方法是直接在程序中預留一段或者多段代碼. 這樣,當需要下載補丁時,只需將補丁程序寫到預留的地址中去即可. 但是,由于在預留代碼時一般不能確定未來下載補丁的大小和個數,所以,這種實現方法有一定的局限性,而且,在需要下載的補丁較大或者較多時,比較容易出現代碼重疊的情況,使COS在執行過程中出現異常錯誤。

        基于以上問題,下面結合51系列智能卡研究出一套補丁機制,這種方案適合任意的51系列智能卡的補丁下載. 該方法通過建立PATCH函數表和在操作系統主程序中設計調用補丁的接口來實現補丁的下載和管理,可以根據不同的補丁分類索引進行補丁下載,而且不再受補丁大小的限制,同時支持多個補丁的下載。

        3 智能卡操作系統補丁機制方案設計

        3. 1 實現機制

        本文中智能卡操作系統的補丁機制采用地址映射表的方式實現. 即在EEPROM /FLASH ( ram)放置一個PATCH函數表(或者創建一個內部管理文件存儲). 數據記錄格式如表1所示. 其中, Patch ID值為自定義或運營商定義. Patch屬性字節定義如表2所示。 

     

        3. 2 實現方式

        1)在卡片中的系統數據區預先創建Patch索引表,預留足夠的表空間。

        2)在固化程序中預留可能會調用補丁的接口。

        調用方式舉例: 

        Judge_Patch函數位于固化程序中,它可以解析Patch索引表,根據Patch ID來確定是否有Patch需要執行,及獲得Patch程序首地址. Judge_Patch函數中會自動將補丁程序的首地址賦給一個全局函數指針,所以如果存在Patch程序,可以直接調用函數指針實現對補丁函數的調用. 如果Judge_Patch函數返回0,表示沒有找到相關的補丁函數,則繼續執行原來的處理流程。

        3)執行補丁程序, COS直接轉到獲得的Patch程序首地址開始執行. 補丁程序執行之前內部實現保護目前的程序地址和寄存器等。

        4 實例分析

        若智能卡操作系統的兩個補丁函數為: AP I_FindDfEf_patch,即找到當前DF文件下的EF文件;Update_Record_Patch,即更新記錄文件,下面給出具體進行補丁函數下載時的詳細步驟: 

        1)編寫補丁函數,并將這段代碼下載到芯片的代碼區空余位置(可以從COS編譯后生成的文件中獲取地址) ,并記錄下載的首地址。
        2)為當前補丁設置在補丁索引表中的位置和相關屬性,如表4所示。 


        3)卡片復位,重新上電后,COS會通過Judge _Patch函數進行對判斷是否要執行補丁函數以及執行哪個補丁,根據屬性字節可知要執行的補丁是第一個補丁,即找到當前DF文件下的EF文件,Judge_Patch會送出補丁的起始地址,在接下來補丁程序,實現如下: 

        4)是補丁功能驗證,卡片復位,執行選擇DF下某EF文件指令。 因為該指令內部是通過前面下載的補丁來實現的。 所以,從指令的執行結果就能觀察出本文中下載補丁的正確與否, 本例中,卡片返回正確的狀態碼以及所選EF的相關信息。

         5 結 論

        本文首先介紹智能卡操作系統的基本概念,其次結合接觸式51系列智能卡芯片說明補丁下載在智能卡操作系統中的應用背景。并針對當前補丁下載方法的不足,提出了一種補丁管理機制。文中給出具體的實例,并進行分析,給出實現方法和步驟,同時驗證了此補丁下載方法的可行性,本文中提出的補丁管理機制適合任意的51系列智能卡的補丁下載,而且不再受補丁大小的限制,并可根據不同的補丁分類索引進行補丁下載,因此,該方案具用很好的應用價值。

        (文/天津理工大學計算機與通信工程學院, 張李靜, 張秋燕)

    本文關鍵詞:操作系統,智能卡,應用程序,補丁
    回到頂部