專利名稱:一種在Java Card中應(yīng)用補丁程序的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及智能卡領(lǐng)域,尤其涉及一種在Java Card中應(yīng)用補丁程序的方法及裝置。
背景技術(shù):
智能卡的存儲器體系主要是由讀寫存儲器(RAM)、只讀存儲器(ROM)以及可擦寫 編程存儲器(EEPROM)組成。Java Card是可以運行Java程序代碼的智能卡。保存在Java Card上EEPROM中的應(yīng)用程序可以通過GlobalPlatform標(biāo)準(zhǔn)指令(簡稱GP指令)進行下 載、安裝和刪除的操作。
現(xiàn)有技術(shù)中,如果在Java Card使用過程中發(fā)現(xiàn)原應(yīng)用程序存在缺陷,可以通過刪 除原應(yīng)用程序,下載并安裝新的應(yīng)用程序來解決問題。但是,該方法會導(dǎo)致用戶使用過程中 的數(shù)據(jù)丟失。同時,如果Java Card上的應(yīng)用程序本身占用的空間較大,但是需要對其所進 行的修改較少,則整個應(yīng)用程序需要在修改后重新下載,這就需要占用較長的時間,從而降 低了發(fā)卡效率。
綜上所述,需要尋求一種替換Java Card應(yīng)用程序的方法,能夠避免更新應(yīng)用程序 所造成得用戶數(shù)據(jù)丟失,并提高發(fā)卡效率。發(fā)明內(nèi)容
本發(fā)明提供一種在Java Card中應(yīng)用補丁程序的方法及裝置,以避免更新應(yīng)用程 序所造成的用戶數(shù)據(jù)丟失,并提高發(fā)卡效率。
本發(fā)明實施例提供的具體技術(shù)方案如下
一種在Java Card中應(yīng)用補丁程序的方法,包括
判斷Java Card應(yīng)用程序的補丁程序的狀態(tài)是否為激活狀態(tài);
若確定補丁程序的狀態(tài)為激活狀態(tài),則獲取所述補丁程序的唯一標(biāo)識,并根據(jù)所 述補丁程序的唯一標(biāo)識獲取相應(yīng)的補丁程序并運行;
若確定補丁程序的狀態(tài)為未激活狀態(tài),則運行所述原應(yīng)用程序。
一種在Java Card中應(yīng)用補丁程序的裝置,包括
第一處理單元,用于判斷Java Card應(yīng)用程序的補丁程序的狀態(tài)是否為激活狀 態(tài);
第二處理單元,用于確定補丁程序的狀態(tài)為激活狀態(tài)時,獲取所述補丁程序的唯 一標(biāo)識,并根據(jù)所述補丁程序的唯一標(biāo)識獲取相應(yīng)的補丁程序并運行;
第三處理單元,用于確定補丁程序的狀態(tài)為未激活狀態(tài)時,運行所述原應(yīng)用程序。
基于上述技術(shù)方案,本發(fā)明實施例中,通過判斷Java Card應(yīng)用程序的補丁程序的 狀態(tài)是否為激活狀態(tài),在確定補丁程序的狀態(tài)為激活狀態(tài)時,獲取補丁程序的唯一標(biāo)識,并 根據(jù)補丁程序的唯一標(biāo)識獲取相應(yīng)的補丁程序并運行。從而無需更新Java Card原應(yīng)用程 序,采用運行補丁程序的方式,實現(xiàn)對原應(yīng)用程序的修復(fù)或補充,避免了更新原應(yīng)用程序造成的用戶數(shù)據(jù)丟失,并且提高了發(fā)卡效率。同時,通過設(shè)置補丁程序唯一標(biāo)識,保證了安全 性。
圖1為本發(fā)明實施例中在Java Card中應(yīng)用補丁程序的系統(tǒng)架構(gòu)圖2為本發(fā)明實施例Java Card上應(yīng)用補丁程序的裝置結(jié)構(gòu)圖3為本發(fā)明實施例中在Java Card中應(yīng)用補丁程序的方法流程圖。
具體實施方式
為了避免更新應(yīng)用程序所造成的用戶數(shù)據(jù)丟失,并提高開發(fā)效率,本發(fā)明實施例 提供了一種在Java Card中應(yīng)用補丁程序的方法及裝置,能夠有效地避免更新應(yīng)用程序所 造成的用戶數(shù)據(jù)丟失,并提高發(fā)卡效率。該方法為判斷Java Card應(yīng)用程序的補丁程序的 狀態(tài)是否為激活狀態(tài),若確定補丁程序的狀態(tài)為激活狀態(tài),則獲取補丁程序的唯一標(biāo)識,并 根據(jù)補丁程序的唯一標(biāo)識獲取相應(yīng)的補丁程序并運行,若確定補丁程序的狀態(tài)為未激活狀 態(tài),則運行原應(yīng)用程序。
下面結(jié)合附圖對本發(fā)明優(yōu)選的實施方式進行詳細說明。
參閱附圖1所示,本發(fā)明實施例中,在Java Card中應(yīng)用補丁程序的系統(tǒng)主要包括 卡片接受設(shè)備10和Java Card設(shè)備11,其中,
卡片接受設(shè)備10,用于向Java Card設(shè)備11下發(fā)相應(yīng)的應(yīng)用程序協(xié)議數(shù)據(jù)單元 (APDU)命令,以將補丁程序下載至Java card設(shè)備11,以及設(shè)置補丁程序的激活密鑰和唯 一標(biāo)識;
Java Card設(shè)備11,用于判斷Java Card應(yīng)用程序的補丁程序的狀態(tài)是否為激活 狀態(tài),若確定補丁程序的狀態(tài)為激活狀態(tài),則獲取該補丁程序的唯一標(biāo)識,并根據(jù)補丁程序 的唯一標(biāo)識獲取相應(yīng)的補丁程序并運行,若確定補丁程序的狀態(tài)為未激活狀態(tài),則運行原應(yīng)用程序。
參閱附圖2所示,本發(fā)明實施例中,Java Card設(shè)備11,即Java Card設(shè)備上應(yīng)用 補丁程序的裝置主要包括以下處理單元
第一處理單元111,用于判斷Java Card應(yīng)用程序的補丁程序的狀態(tài)是否為激活 狀態(tài);
第二處理單元112,用于確定補丁程序的狀態(tài)為激活狀態(tài)時,獲取補丁程序的唯一 標(biāo)識,并根據(jù)上述補丁程序的唯一標(biāo)識獲取相應(yīng)的補丁程序并運行;
第三處理單元113,用于確定補丁程序的狀態(tài)為未激活狀態(tài)時,運行原應(yīng)用程序。
基于上述系統(tǒng)架構(gòu),參閱附圖3所示,本發(fā)明實施例中,在Java Card中應(yīng)用補丁 程序的詳細方法流程如下
步驟301 判斷Java Card應(yīng)用程序的補丁程序的狀態(tài)是否為激活狀態(tài)。
其中,判斷Java Card應(yīng)用程序(Applet)的補丁程序的狀態(tài)是否為激活狀態(tài)之 前,設(shè)置補丁程序的激活密鑰,并設(shè)置補丁程序的唯一標(biāo)識。較佳地,在原應(yīng)用程序的起始 部分設(shè)置補丁程序的激活密鑰,并設(shè)置補丁程序的唯一標(biāo)識。
補丁程序的激活密鑰可以是任意形式的密鑰。例如,對稱密鑰和非對稱密鑰。
本發(fā)明實施例中,設(shè)置補丁程序的唯一標(biāo)識時,可以將包含指定長度字節(jié)的隨機 數(shù)設(shè)置為上述補丁程序的唯一標(biāo)識;或者,將Java Card芯片的唯一標(biāo)識與任意隨機數(shù)進 行運算,并將運算結(jié)果中指定長度字節(jié)設(shè)置為補丁程序的唯一標(biāo)識。上述指定長度字節(jié)的 隨機數(shù)是指隨機數(shù)需要符合Java Card規(guī)范要求的長度,例如,5至16字節(jié)長度為Java Card規(guī)范要求的長度。補丁程序的唯一標(biāo)識設(shè)置方法包括但不限于以上兩種,實際應(yīng)用中, 若存在其他設(shè)置方法,本發(fā)明也將其包含在內(nèi)。
例如,將Java Card芯片唯一標(biāo)識與任意隨機數(shù)進行異或運算后,截取其中的前 10個字節(jié)作為補丁程序的唯一標(biāo)識。
其中,在判斷補丁程序的狀態(tài)是否為激活狀態(tài)時,首先判斷與補丁程序的唯一標(biāo) 識相匹配的補丁程序是否已下載至Java Card,若已下載至上述JavaCard,則采用補丁程序 的激活密鑰進行認(rèn)證,若認(rèn)證通過,則確定補丁程序為激活狀態(tài),若認(rèn)證未通過,則確定補 丁程序的狀態(tài)為未激活狀態(tài);若未下載至上述Java Card,則確定補丁程序的狀態(tài)為未激活 狀態(tài)。
卡片接受設(shè)備10通過下發(fā)相應(yīng)的應(yīng)用程序協(xié)議數(shù)據(jù)單元(ApplicationProtocol Data Unit,APDU)命令將補丁程序下載至Java Card,以及設(shè)置補丁程序的激活密鑰和補丁 程序的唯一標(biāo)識。
步驟302 若確定補丁程序的狀態(tài)為激活狀態(tài),則獲取上述補丁程序的唯一標(biāo)識, 并根據(jù)該補丁程序的唯一標(biāo)識獲取相應(yīng)的補丁程序并運行。
其中,根據(jù)補丁程序的唯一標(biāo)識獲取相應(yīng)的補丁程序并運行,具體為根據(jù)上述補 丁程序的唯一標(biāo)識,通過防火墻共享接口獲取相應(yīng)的補丁程序,并運行該補丁程序,本發(fā)明 實施例中,在補丁程序中通過Java Card規(guī)范提供的API實現(xiàn)防火墻共享接口,原應(yīng)用程 序通過該防火墻共享接口調(diào)用補丁應(yīng)用程序。
本發(fā)明實施例中,原應(yīng)用程序和補丁程序相對獨立,可以分開進行維護,兩者通過 Java Card運行環(huán)境提供的防火墻機制進行安全通信。
步驟303 若確定補丁程序的狀態(tài)為未激活狀態(tài),則運行原應(yīng)用程序。
本發(fā)明實施例中,可以在設(shè)置補丁程序激活密鑰的同時設(shè)置去活密鑰,該去活密 鑰用于在補丁程序運行結(jié)束或無需使用該補丁程序時,采用去活密鑰對接收到的用于指示 將補丁程序設(shè)置為未激活狀態(tài)的APDU命令進行認(rèn)證,并在認(rèn)證通過后,根據(jù)該APDU命令將 補丁程序設(shè)置為未激活狀態(tài),以保證安全性。該去活密鑰可以是與激活密鑰相對應(yīng),也可以 是任意約定密鑰。除了去活密鑰的方式屏蔽補丁程序,也可以采用在運行結(jié)束后根據(jù)相應(yīng) 的APDU命令將補丁程序刪除的方法。例如,Java Card在接收到相應(yīng)的APDU命令后,采用 約定的去活密鑰,對該APDU命令進行認(rèn)證,并在認(rèn)證通過后,將補丁程序設(shè)置為未激活狀 態(tài)。
基于上述實施例,通過APDU命令將補丁程序下載至Java Card上,該補丁程序本 身為符合Java Card規(guī)范的應(yīng)用程序,可以采用通用方式進行管理,并在Java Card中設(shè)置 補丁程序的激活密鑰以及補丁程序的唯一標(biāo)識,在判斷補丁程序是否為激活狀態(tài)時,通過 唯一標(biāo)識判斷與原應(yīng)用程序相匹配的補丁程序是否下載至Java Card,以及在確定補丁程 序已下載至Java Card后,進一步采用激活密鑰進行認(rèn)證,以確定補丁程序的狀態(tài)是否為激 活狀態(tài),若是則運行補丁程序,否則,則執(zhí)行原應(yīng)用程序。這樣,需要補丁程序的唯一標(biāo)識和激活密鑰共同滿足條件時,才能夠激活并運行補丁程序,從而保證了運行補丁程序的安全 性。本發(fā)明實施例中,補丁程序和原應(yīng)用程序是相對獨立的,兩者可以分開維護,原應(yīng)用程 序接收到APDU指令后,若判斷補丁程序為激活狀態(tài),只需通過防火墻接口調(diào)用補丁程序, 由補丁程序處理APDU指令后返回,即可實現(xiàn)補丁程序的功能,實現(xiàn)簡單,并且,由于補丁程 序和原應(yīng)用程序的獨立性,補丁程序的安裝和卸載,并不影響原應(yīng)用程序;補丁程序不僅可 以提供替換原始程序的舊功能,而且完全可以作為一個新的應(yīng)用承擔(dān)其他的功能。再者, 補丁程序的下載和激活不局限于Java Card的開發(fā)階段,通過激活補丁程序?qū)υ瓚?yīng)用程序 的功能進行修復(fù)或補充,無需更新原應(yīng)用程序,避免了更新原應(yīng)用程序所造成的用戶數(shù)據(jù) 丟失。并且,補丁程序本身是符合Java Card規(guī)范的Apple應(yīng)用程序,具有平臺無關(guān)性,可 以在不同平臺上運行,提高了開發(fā)效率。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種在Java Card中應(yīng)用補丁程序的方法,其特征在于,包括判斷Java Card應(yīng)用程序的補丁程序的狀態(tài)是否為激活狀態(tài);若確定補丁程序的狀態(tài)為激活狀態(tài),則獲取所述補丁程序的唯一標(biāo)識,并根據(jù)所述補 丁程序的唯一標(biāo)識獲取相應(yīng)的補丁程序并運行;若確定補丁程序的狀態(tài)為未激活狀態(tài),則運行所述原應(yīng)用程序。
2.如權(quán)利要求1所述的方法,其特征在于,在判斷JavaCard應(yīng)用程序的補丁程序的狀 態(tài)是否為激活狀態(tài)之前,包括設(shè)置補丁程序的激活密鑰,并設(shè)置補丁程序的唯一標(biāo)識。
3.如權(quán)利要求2所述的方法,其特征在于,設(shè)置所述補丁程序的唯一標(biāo)識時,包括將包含指定長度字節(jié)的隨機數(shù)設(shè)置為所述補丁程序的唯一標(biāo)識;或者,將Java Card芯片的唯一標(biāo)識與任意隨機數(shù)進行運算,并將運算結(jié)果中指定長度字節(jié) 設(shè)置為所述補丁程序的唯一標(biāo)識。
4.如權(quán)利要求1所述的方法,其特征在于,在運行所述補丁程序之前,包括對所述補 丁程序進行認(rèn)證。
5.如權(quán)利要求2、3或4所述的方法,其特征在于,判斷JavaCard應(yīng)用程序的補丁程序 的狀態(tài)是否為激活狀態(tài),包括判斷與所述補丁程序的唯一標(biāo)識相匹配的補丁程序是否已下載至所述Java Card ;若已下載至所述Java Card,則采用所述補丁程序的激活密鑰進行認(rèn)證,若認(rèn)證通過, 則確定所述補丁程序為激活狀態(tài);若認(rèn)證未通過,則確定所述補丁程序的狀態(tài)為未激活狀 態(tài);若未下載至所述Java Card,則確定所述補丁程序的狀態(tài)為未激活狀態(tài)。
6.如權(quán)利要求1所述的方法,其特征在于,根據(jù)所述補丁程序的唯一標(biāo)識獲取相應(yīng)的 補丁程序并運行,包括根據(jù)所述補丁程序的唯一標(biāo)識,通過防火墻共享接口獲取相應(yīng)的補丁程序,并運行該 補丁程序。
7.一種在Java Card中應(yīng)用補丁程序的裝置,其特征在于,包括第一處理單元,用于判斷Java Card應(yīng)用程序的補丁程序的狀態(tài)是否為激活狀態(tài);第二處理單元,用于在確定補丁程序的狀態(tài)為激活狀態(tài)時,獲取所述補丁程序的唯一 標(biāo)識,并根據(jù)所述補丁程序的唯一標(biāo)識獲取相應(yīng)的補丁程序并運行;第三處理單元,用于在確定補丁程序的狀態(tài)為未激活狀態(tài)時,運行所述原應(yīng)用程序。
8.如權(quán)利要求7所述的裝置,其特征在于,所述第一處理單元在執(zhí)判斷JavaCard應(yīng)用 程序的補丁程序的狀態(tài)是否為激活狀態(tài)之前,設(shè)置補丁程序的激活密鑰,并設(shè)置補丁程序 的唯一標(biāo)識。
9.如權(quán)利要求8所述的裝置,其特征在于,所述第一處理單元設(shè)置所述補丁程序的唯 一標(biāo)識時,將包含指定長度字節(jié)的隨機數(shù)設(shè)置為所述補丁程序的唯一標(biāo)識;或者,將Java Card芯片的唯一標(biāo)識與任意隨機數(shù)進行運算,并將運算結(jié)果中指定長度字節(jié)設(shè)置為所述補 丁程序的唯一標(biāo)識。
10.如權(quán)利要求7所述的裝置,其特征在于,所述第二處理單元在運行所述補丁程序之前,對所述補丁程序進行認(rèn)證。
11.如權(quán)利要求8、9或10所述的裝置,其特征在于,所述第一處理單元判斷JavaCard 應(yīng)用程序的補丁程序的狀態(tài)是否為激活狀態(tài)時,判斷與所述補丁程序的唯一標(biāo)識相匹配的 補丁程序是否已下載至所述Java Card;若已下載至所述Java Card,則采用所述補丁程序的激活密鑰進行認(rèn)證,若認(rèn)證通過, 則確定所述預(yù)設(shè)的補丁程序為激活狀態(tài);若認(rèn)證未通過,則確定所述補丁程序的狀態(tài)為未 激活狀態(tài);若未下載至所述Java Card,則確定所述補丁程序的狀態(tài)為未激活狀態(tài)。
12.如權(quán)利要求7所述的裝置,其特征在于,所述第二處理單元根據(jù)所述補丁程序的唯 一標(biāo)識獲取相應(yīng)的補丁程序并運行,具體為根據(jù)所述補丁程序的唯一標(biāo)識,通過防火墻共享接口獲取相應(yīng)的補丁程序,并運行該 補丁程序。
全文摘要
本發(fā)明公開了一種Java Card中應(yīng)用補丁程序的方法及裝置,以避免更新應(yīng)用程序所造成的用戶數(shù)據(jù)丟失,提高開發(fā)效率。該方法為判斷Java Card應(yīng)用程序的補丁程序的狀態(tài)是否為激活狀態(tài),若確定補丁程序的狀態(tài)為激活狀態(tài),則獲取所述補丁程序的唯一標(biāo)識,并根據(jù)所述補丁程序的唯一標(biāo)識獲取相應(yīng)的補丁程序并運行,若確定補丁程序的狀態(tài)為未激活狀態(tài),則運行所述原應(yīng)用程序。該方法能夠有效地避免更新應(yīng)用程序所造成的用戶數(shù)據(jù)丟失,提高開發(fā)效率。本發(fā)明同時公開了一種Java Card中應(yīng)用補丁程序的裝置。
文檔編號G06F9/445GK102033771SQ201010605958
公開日2011年4月27日 申請日期2010年12月24日 優(yōu)先權(quán)日2010年12月24日
發(fā)明者王飛 申請人:北京握奇數(shù)據(jù)系統(tǒng)有限公司