小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Java Card應(yīng)用程序體系結(jié)構(gòu)概述

 bluecrystal 2007-04-02

Java Card應(yīng)用程序體系結(jié)構(gòu)概述

Java Card Technology概述

高鴻 gaohong@neusoft.com

 

前言:Java Card 技術(shù)是把Java編程語(yǔ)言的一個(gè)子集同一個(gè)優(yōu)化的運(yùn)行時(shí)環(huán)境結(jié)合在一起的技術(shù)。這種優(yōu)化是專門針對(duì)小存儲(chǔ)量的嵌入式設(shè)備的,例如智能卡。 Java Card 技術(shù)的目標(biāo)是讓那些資源受限的智能卡等設(shè)備受益于Java語(yǔ)言開發(fā)的軟件。本文主要介紹Java Card應(yīng)用程序的體系結(jié)構(gòu)以及與Java Card Applet的通信方式。

 

Java Card技術(shù)是專門為那些內(nèi)存和計(jì)算能力比J2ME設(shè)備更為受限的智能卡和其它設(shè)備提供的一個(gè)平臺(tái)。圖1Java CardJ2ME平臺(tái)的對(duì)照。它為應(yīng)用程序提供了一個(gè)安全的運(yùn)行環(huán)境。它允許多個(gè)應(yīng)用程序同時(shí)在一個(gè)卡片上運(yùn)行,并且可以對(duì)已發(fā)放到用戶手中的卡片進(jìn)行更新。用Java編寫的應(yīng)用程序可以安全的運(yùn)行在不同提供商的卡片上。

 

從上圖可以看出,CDCCLDC配置以及它們相關(guān)的簡(jiǎn)表是J2ME平臺(tái)的一部分,而Java Card是一個(gè)單獨(dú)創(chuàng)建來(lái)用于智能卡環(huán)境的平臺(tái)。

 

在目前的版本中(2.2.1),Java Card技術(shù)的規(guī)范包括一些三部分:

1.Java Card Virtual Machine規(guī)范:該規(guī)范定義了Java語(yǔ)言的一個(gè)子集和適用于智能卡的虛擬機(jī)。

2.Java Card Runtime Environment規(guī)范:該規(guī)范更進(jìn)一步定義了基于Java的智能卡的運(yùn)行時(shí)行為。

3.Java Card API規(guī)范:該規(guī)范定義了為智能卡應(yīng)用程序量身定制的核心框架以及各種包和類。

 

一個(gè)典型的Java Card設(shè)備有一個(gè)816位的運(yùn)行在3.7MHz中央處理器,帶有1KRAM和多于16K的非易失性存儲(chǔ)器(可編程只讀存儲(chǔ)器或者閃存)。高性能的智能卡帶有單獨(dú)的處理器和加密芯片,以及用于加密的內(nèi)存,并且有一些還帶有32的中央處理器。

 

Sun還提供了Java Card開發(fā)工具箱(JCDK) ,可在以下站點(diǎn)獲取:

http://java./products/javacard/。它包含了Java Card運(yùn)行時(shí)環(huán)境(JCRE)Java Card虛擬機(jī)(JVVM)的引用實(shí)現(xiàn),以及其它幫助開發(fā)Java Card小應(yīng)用程序的工具。

 

一個(gè)Java Card應(yīng)用程序的結(jié)構(gòu)如圖2所示。

 

從圖中可以看出,Java Card應(yīng)用程序并不是孤立的,而是包含卡端、讀取端和后端程序等元素。

 

下面將分別描述各個(gè)組成元素。

 

后端應(yīng)用程序及系統(tǒng)

后端應(yīng)用程序提供了支持卡上Java Applet的服務(wù)。 例如,一個(gè)后端應(yīng)用程序利用卡片上的證書可以提供與安全系統(tǒng)的連接,從而提供強(qiáng)大的安全性。在一個(gè)電子付款系統(tǒng)中,后端應(yīng)用程序可以提供到信用卡及其他交易信息的訪問。

 

讀卡器端主應(yīng)用程序

主應(yīng)用程序駐留于例如個(gè)人計(jì)算機(jī)、電子付款終端、手機(jī)或者一個(gè)安全子系統(tǒng)中。它處理用戶、Java Card Applet和供應(yīng)商的后端應(yīng)用程序之間的通信。

傳統(tǒng)的讀取端應(yīng)用程序是使用C語(yǔ)言編寫的。近來(lái)J2ME技術(shù)的廣泛使用使得用Java語(yǔ)言來(lái)實(shí)現(xiàn)主應(yīng)用程序成為可能;例如,它可以在一臺(tái)支持MIDP和安全信賴服務(wù)應(yīng)用編程接口(Security and Trust Services API)的手機(jī)上運(yùn)行。

 

卡片接受設(shè)備(CAD)

卡片接受設(shè)備(CAD)是處于主應(yīng)用程序和Java Card設(shè)備之間的接口設(shè)備。一個(gè)CAD為卡片提供電源,而且可以與之進(jìn)行電子或者射頻通信。一個(gè)CAD可能是一個(gè)使用串行端口連接于臺(tái)式計(jì)算機(jī)的讀卡器,或者可能被集成到例如飯店或商場(chǎng)內(nèi)的電子付款終端。CAD可以在主應(yīng)用程序和卡片之間傳遞命令APDUApplication Protocol Data Unit,簡(jiǎn)稱APDU)以及響應(yīng)APDU。一些CAD有用于輸入個(gè)人識(shí)別號(hào)碼(PIN)的鍵盤,有的可能還有顯示屏。

 

卡片端應(yīng)用程序

Java Card平臺(tái)是一個(gè)多應(yīng)用程序環(huán)境。在圖2中我們可以看到,卡片上可能存在一個(gè)或多個(gè)Java Card Applet,還有相應(yīng)的支持軟件——卡片的操作系統(tǒng)和Java Card運(yùn)行時(shí)環(huán)境(JCRE)。JCREJava Card虛擬機(jī)、Java Card FrameworkAPI以及一些擴(kuò)展的API組成。

所有的Java Card Applet都需要擴(kuò)展Applet基本類,并且必須實(shí)現(xiàn)install()process()方法;JCRE在安裝Applet的時(shí)候調(diào)用其install()方法,并且在每次有命令APDU進(jìn)入的時(shí)候調(diào)用其process()方法。

 

下面將描述主應(yīng)用程序和Java Card Applet之間的通信方式。

 

二者之間的通信有兩種方式。第一是使用基本的消息傳遞模型;第二是使用基于Java Card的遠(yuǎn)程方法調(diào)用(JCRMI)該方法是J2SE RMI分布式對(duì)象模型的一個(gè)子集。下面分別并主要闡述這兩種方式。

 

消息傳遞模型是所以Java Card通信的基礎(chǔ)。它的核心就是應(yīng)用程序協(xié)議數(shù)據(jù)單元(APDU),就如圖2所示,它是CADJava Card框架之間交換的一個(gè)邏輯數(shù)據(jù)包。Java Card框架接收任何來(lái)自CAD中轉(zhuǎn)的命令APDU并將其前傳給相應(yīng)的Applet。當(dāng)Applet處理完命令APDU后將返回一個(gè)響應(yīng)APDU。APDU的格式遵從ISO/IEC 7816-37816-4。圖3是使用消息傳遞的模型。

 

讀卡器和卡之間的通信通?;谙旅鎯煞N連接協(xié)議的一種,面向字節(jié)的T = 0方式,或者面向數(shù)據(jù)塊的T = 1方式。還可能會(huì)用到被稱為T = USBT = RF的替換協(xié)議。

 

下面簡(jiǎn)要敘述命令APDU和響應(yīng)APDU

 

命令APDU的格式通常如圖4所示:

 

一個(gè)命令APDU包含一個(gè)必需的頭的和一個(gè)可選的體。其中:

²       CLA1字節(jié)):這個(gè)必需的字段識(shí)別指令的一個(gè)特定應(yīng)用程序類。有效的CLA值在ISO 7816 - 4規(guī)范中定義。

²       INS1字節(jié)):這個(gè)必需的字段指明CLA字段中標(biāo)示的指令類中的一個(gè)特定的指令。ISO 7816 - 4標(biāo)準(zhǔn)指定用于訪問卡上的數(shù)據(jù)的基本指令。附加功能已經(jīng)在這個(gè)標(biāo)準(zhǔn)中的其它地方說明,其中一些是安全功能。只有當(dāng)使用一個(gè)相應(yīng)的CLA字節(jié)值時(shí),才可以根據(jù)標(biāo)準(zhǔn)定義自己的特定應(yīng)用程序的INS值。

²       P11字節(jié)):這個(gè)必需的字段定義指令參數(shù)1??梢允褂眠@個(gè)字段來(lái)檢驗(yàn)INS字段,或者用于輸入數(shù)據(jù)。

²       P21字節(jié)):這個(gè)必需的字段定義指令參數(shù)。可以使用這個(gè)字段來(lái)檢驗(yàn)INS字段,或者用于輸入數(shù)據(jù)。

²       Lc1字節(jié)):這個(gè)可選的字段指定數(shù)據(jù)字段的字節(jié)數(shù)。

²       Data Field(可變的,由Lc指定字節(jié)數(shù)):包含了命令數(shù)據(jù)。

²       Le1字節(jié)):這個(gè)可選的字段指定在期望響應(yīng)的數(shù)據(jù)字段中的最大字節(jié)數(shù)。

 

響應(yīng)APDU格式通常如圖5所示:

 

²       和一個(gè)APDU命令相似,響應(yīng)APDU有可選擇的和必要的字段:
Data Field:
(可變長(zhǎng)度,由命令APDU中的Le確定):這個(gè)可選擇的字段包含小應(yīng)用程序返回的數(shù)據(jù)。

²       SW11字節(jié)):這個(gè)必要的字段是狀態(tài)字1。

²       SW21字節(jié)):這個(gè)必要的字段是狀態(tài)字2

這些狀態(tài)字的值在ISO 7816 - 4規(guī)范中定義。

第二種方式是Java Card RMI(JCRMI)通訊模型,它依賴于J2SE RMI分布式對(duì)象模型的一個(gè)子集。在RMI模型中,一個(gè)服務(wù)器應(yīng)用程序創(chuàng)建并生成可訪問的遠(yuǎn)程對(duì)象.客戶應(yīng)用程序要獲得到遠(yuǎn)程對(duì)象的遠(yuǎn)程引用,然后調(diào)用它們的遠(yuǎn)程方法。在JCRMI中,Java Card Applet是服務(wù)器,而主應(yīng)用程序(Host Application)是客戶端。
JCRMI
由類RMIService提供,并放在擴(kuò)展程序包javacardx.rmi中。JCRMI消息被封裝到傳遞給RMIService方法的APDU對(duì)象中。換句話說,JCRMI提供了一個(gè)基于APDU消息傳遞模型的分布式對(duì)象模型機(jī)制。通過這個(gè)機(jī)制,服務(wù)器和客戶端可以來(lái)回傳送方法信息、參數(shù)和返回值。

由于接觸的時(shí)間不長(zhǎng),研究的也不夠深刻,所以以上文字顯得有些粗枝大葉。大家可以在以下站點(diǎn)獲得相關(guān)的參考:http://java./products/javacard/

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多