李智聰, 凌力
(復旦大學 通信科學與工程系, 上海 200433)
智能卡(Smart Card)是內嵌集成電路芯片的卡片的通稱,廣泛應用于金融、電信、公安、交通、稅務、電子政務等領域[1]。傳統(tǒng)的Native卡的操作系統(tǒng)(Chip Operating System,COS)和硬件平臺緊密相關,應用的開發(fā)和底層COS密不可分。由Sun公司主導的Java智能卡則與之不同,卡片具有通用的API接口,應用的開發(fā)與硬件平臺無關,通用性更好。雖然國內市場仍然是Native卡占據主導地位,但在國外,Java智能卡已經廣泛應用于用戶身份識別、交通、數字內容發(fā)行、通訊以及金融等領域。下文將對Java Card技術進行詳細的探討,并著重分析Java Card技術在移動支付領域的潛在應用優(yōu)勢。
Java Card是基于Java語言的智能卡技術,在傳統(tǒng)的智能卡平臺上實現(xiàn)了一個Java程序安裝和運行的軟硬件環(huán)境,與傳統(tǒng)的智能卡相比,Java智能卡具有以下的優(yōu)點:
(1)平臺無關性。符合Java Card規(guī)范的Java Card應用程序可以運行在不同的芯片設計或者不同制造商的智能卡上。
(2)多應用支持和動態(tài)性[2,3]。同一服務提供商或者不同服務提供商的多個應用可以安全地運行在同一張卡上,并且在片發(fā)行后,支持應用的動態(tài)下載、更新和刪除,更具多用途性和靈活性。
(3)開放性和通用性。Java Card技術規(guī)范兼容ISO 7816、EMV等智能卡國際標準和GP(Global Platform)、ETSI(European Telecommunications Standards Institute)等工業(yè)規(guī)范。
(4)安全性[4]。既繼承了Java語言的安全特性,又具備如事務、防火墻、字節(jié)碼驗證、分離的Java虛擬機等Java Card平臺獨有的安全特性,在Java Card 3平臺中,安全性又得到了進一步的加強。
1.1 Java Card平臺的系統(tǒng)結構
1.1.1 Java Card硬件系統(tǒng)
主要包括智能卡CPU與各種協(xié)處理器、存儲器(ROM、RAM、EEPROM)和IO模塊,硬件的各項指標需要符合ISO/IEC 7816國際標準。
1.1.2 Java Card片上操作系統(tǒng)
COS與智能卡硬件系統(tǒng)緊密耦合,不同的硬件平臺COS差異很大,與一般意義的微機操作系統(tǒng)有很大區(qū)別,COS解決的基本問題包括:對外部通信命令的接收和處理、存儲管理、平臺硬件驅動管理等。
1.1.3 本地方法模塊
本地方法模塊由與硬件相關的語言編寫,負責底層通信協(xié)議實現(xiàn)以及存儲管理等硬件相關的功能,為上層應用使用硬件資源提供接口。
1.1.4 Java Card運行時環(huán)境
Java Card運行時環(huán)境(Java Card Runtime Environment,JCRE)由Java Card虛擬機(Java Card Virtual Machine,JCVM)、Java Card框架(Java Card Framework)、Java Card應用程序編程接口(Java Card API)、企業(yè)專用的擴展類庫等模塊構成。JCRE實際上等同于Java Card的操作系統(tǒng),對卡內系統(tǒng)服務進行封裝,對外提供統(tǒng)一的應用接口。
1.1.5 Java Card Applet
Applet是運行在Java Card平臺上的小應用程序,為用戶提供服務,JCRE通過AID(Application Identifier)識別并管理Applet,Applet的生命周期包括install、select、process、deselect和uninstall,如圖1所示。
圖1 Java智能卡的系統(tǒng)結構
Sun公司定義了一系列的Java Card技術規(guī)范,將Java技術應用于智能卡及其它可用資源有限(存儲資源和計算能力)的設備。Java Card技術規(guī)范的最新版本是3.0.5,包括3部分:Java Card虛擬機規(guī)范、Java Card運行環(huán)境規(guī)范和Java Card API規(guī)范。Java Card 3平臺包含兩個不同的版本,分別是Classic版本和Connected版本,Classic版本是Java Card 2平臺的改進版本,兼容Java Card 2平臺,而Connected版本是面向高端智能卡應用的,如圖2所示。
圖2 Java Card 3平臺的技術架構
2.1 JCRE規(guī)范
JCRE規(guī)范[5]由Java Card虛擬機、Java Card API(包括企業(yè)專用的擴展)和系統(tǒng)服務等組成。JCRE規(guī)范定義了Java Card虛擬機生命周期、Applet生命周期、Applet隔離和對象共享、事務和原子性、遠程方法調用、API調用、Java虛擬機以及Applet的安裝與卸載等相關內容。JCRE建立在底層硬件和片上操作系統(tǒng)之上,負責卡片資源的管理、網絡通信、Applet的執(zhí)行、卡內系統(tǒng)和Applet的安全,同時封裝系統(tǒng)服務,對外提供與平臺無關的接口。
2.2 JCVM規(guī)范
JCVM規(guī)范[6]定義了Java編程語言的子集和用于智能卡的Java虛擬機,包括二進制數據表示、文件格式以及JCVM指令集。Java Card平臺的虛擬機實現(xiàn)分為兩部分:卡外虛擬機和卡上虛擬機。卡上的Java虛擬機負責解釋字節(jié)碼、管理類和對象等工作??ㄍ馓摂M機是一個開發(fā)工具,也稱為Java Card轉換器工具,負責加載、驗證和準備Java類,為Applet在卡上運行做準備。JCVM使得用Java編寫的應用程序可以運行在不同的智能卡平臺上,實現(xiàn)了“一次編寫,到處運行”。
2.3 Java Card API規(guī)范
Java Card API規(guī)范[7]定義了傳統(tǒng)Java編程語言API的小型子集,甚至比J2ME的CLDC(Connected, Limited Device Configuration)子集還要小,除此之外,Java Card框架定義了Java Card平臺的核心類以便專門支持Java Card開發(fā)。由于智能卡的存儲資源和計算能力比較有限,所以Java Card并不支持Java的全部功能。
Java Card 3平臺的Connected版本為高端智能卡開發(fā)提供高級功能,如多線程、并發(fā)、豐富的連接功能、支持ISO 7816-4協(xié)議的接觸式和ISO 14443協(xié)議的非接觸式高速IO。Connected版本中的Java虛擬機基于在智能手機中廣泛使用的J2ME的CLDC(Connected Limited Device Configuration)虛擬機,具備更豐富的Java語言特性,能提供更安全的執(zhí)行環(huán)境。
3.1 增強的Java虛擬機
Java Card 3平臺的Connected版本增強了Java虛擬機的功能和性能,并且實現(xiàn)了部分了J2SE平臺的最新功能。Connected版本支持多線程、卡上字節(jié)碼驗證、自動垃圾回收、更多的數據類型(Char、Long、String)、多維數組、基本的包裝類(Boolean、Integer)、字符串操作類(StringTokenizer、StringBuffer、StringBuilder)、多線程支持類(Thread)、I/O類(Reader、Writer、Stream)、容器類(Vector、HashTable、Iterator)、日期時間使用類(Calendar、Date、TimeZone)、本地化和國際化支持類(Locale、ResourceBundle)等Classic版本不具備的特性[8]。而且還具備泛型、注解、斷言、循環(huán)增強、可變參數、靜態(tài)導入等J2SE技術的高級特性。
3.2 增強的編程模型
Java Card 3平臺的Connected版本提供更接近主流Java編程環(huán)境的編程體驗,支持如下的Web應用開發(fā)、持久化、多線程等新功能[9]:
(1)Web應用。Web應用由卡上的Web應用容器管理,Web應用通過HTTP或者HTTPS協(xié)議與卡外客戶端通信,Web應用容器可并發(fā)處理HTTP請求。Java Card 3平臺實現(xiàn)了servlet、filter、listener、靜態(tài)資源(如html文件、圖片)、Web應用程序部署描述符(Web Application Deployment Descriptor)等基本Web應用組件,融合了Web服務架構。
(2)擴展的Applet應用模型。Applet是擴展的Applet應用模型中處理APDU命令的組件,一個擴展的Applet應用可包含多個Applet。擴展的Applet應用由卡上Applet容器管理。與Classic版本的Applet應用模型不同,在擴展的Applet應用模型中,源碼可包含多個類包,可以調用Connected版本的類庫,可以多線程并發(fā)處理APDU命令。
(3)多線程。Java Card虛擬機支持應用的多線程和并發(fā)執(zhí)行,并提供J2SE中的部分多線程API,前面提到的Web應用和擴展的Applet應用模型的以及異步的事件通知模型等都是多線程執(zhí)行環(huán)境。
(4)持久化。存儲空間分為易失性內存(如DRAM)和非易失性內存(如ROM、EEPROM和flash),分別存放生命周期短的瞬態(tài)對象和生命周期長的持久化對象,JCVM通過對象可達性分析策略控制瞬態(tài)對象向持久化對象轉換。
(5)增強的事務。Connected版本的事務機制除了具備原子性、一致性和持久性等一般特性外,還支持并發(fā)事務、內嵌事務、注解事務等新特征。
(6)可重復的任務。允許Web應用和擴展的Applet應用在獨立的線程中注冊并運行周期性的任務,這些任務可在平臺重啟時自動重新執(zhí)行。
(7)增強的內部應用間通信。除了原有的共享接口機制(Shareable Interface Mechanism)外,還包括基于共享接口對象的服務機制和事件通知機制兩種擴展的應用間通信機制。
(8)豐富的網絡通信功能??ㄉ系膽貌粌H可以為卡外客戶端提供服務,還可以作為客戶端訪問網絡服務。網絡連接功能由通用連接框架(Generic Connection Framework)提供,支持TCP、UDP、TLS、HTTP、HTTPS協(xié)議,如圖3所示。
圖3 Java Card 3平臺連接層及協(xié)議棧
Java Card技術是Sun公司通過與來自金融機構、通信運營商、智能卡制造商、半導體生產商、軟件開發(fā)等智能卡行業(yè)相關領域的專家廣泛合作,基于J2SE技術開發(fā)而來。Java Card平臺已廣泛應用于各個行業(yè),經受了真實世界的安全考驗。Java Card平臺是唯一一個經過所有主要金融支付協(xié)會安全評估的平臺,且通過了美國國防部和美國國家安全局這樣的政府機構的安全評估并已實現(xiàn)兼容FIPS 140-1標準[10]。
4.1 Java編程語言的安全性
與其它專有的智能卡片上操作系統(tǒng)相比,Java Card技術具備面向對象、作用域管理機制、契約式編程、強類型、嚴格的Java字節(jié)碼規(guī)范、不支持指針、數組邊界檢查、透明的內存分配和管理機制等一些Java語言的安全特性,這些特性體現(xiàn)了Java Card技術在編程語言層面的安全性。
4.2 Java Card平臺的安全特性
JCRE通過以下一些重要的機制為Java Card平臺上的應用運行和管理提供安全保護:
(1)事務和原子性。JCRE對程序的執(zhí)行提供事務操作,對于一個事務中的多次數據更新操作,如果事務成功完成,則所有更新被執(zhí)行,否則,所有更新被撤銷。即使發(fā)生斷電或程序錯誤,原子性也能確保數據完整性和狀態(tài)一致性。
(2)Applet防火墻 。Java Card平臺通過Applet防火墻為同一個智能卡上的Applet提供隔離的安全執(zhí)行環(huán)境,Applet防火墻機制為Applet的執(zhí)行提供了透明的私有內存,保護了Applet中的數據安全,Applet的執(zhí)行錯誤或者惡意行為并不影響智能卡上的其它Applet,如圖4所示。
圖4 Java Card防火墻和數據共享
(3)代碼隔離和包訪問控制。通過類裝載器委托機制,實現(xiàn)不同的命名空間,保證一個應用的代碼不影響其它應用的代碼,并且不被其它應用覆蓋或者直接訪問。此外還能防止系統(tǒng)類被用戶代碼覆蓋,支持標準的Jar包封裝機制,防止已加載的包被覆蓋或者擴展。
(4)分離的Java虛擬機架構。Java Card平臺的分離虛擬機架構是Java Card平臺獨有的,在保證安全的前提下,減少了下載到卡上的Applet大小和降低了卡上運行時環(huán)境對內存的要求??ㄍ馓摂M機負責類的連接、引用解析、源碼的轉換和安全校驗,卡上虛擬機負責Java字節(jié)碼的解析執(zhí)行。卡外虛擬機確保了Applet的可執(zhí)行代碼的格式正確性和數據完整性,卡上虛擬機保證了程序運行時的安全性。
(5)安全和加密類。Java Card平臺的安全和加密包允許類似于J2SE的安全類加載器的應用程序管理,可實現(xiàn)Applet的安全下載和校驗。安全和加密包支持對稱密鑰算法、非對稱密鑰算法、密鑰接口、簽名的生成和驗證、信息摘要、隨機數據生成以及PIN管理等。
(6)獨立的應用命名空間。支持統(tǒng)一的命名機制(Unified Naming Scheme),對Java Card 3平臺上的應用及其資源唯一命名,應用由URI(Uniform Resource Identifier)標識,應用的資源路徑相對于應用的URI。獨立的應用命名空間更利于多應用的安全發(fā)布與管理。
(7)完善的安全策略。Java Card平臺支持基于權限和基于角色的安全策略,根據應用類型劃分不同的安全域,支持多重的用戶驗證和授權,兼容如GlobalPlatform的卡應用管理框架。
(8)網絡安全。通過安全通信協(xié)議(SSL、TLS、HTTPS)、加密服務和認證授權等方式保證實現(xiàn)點對點的安全通信。Web應用還可以指定專用的安全端口和特定的安全策略。
(9)可擴展的加密框架。Java Card 3平臺的實現(xiàn)者為每種加密服務提供多種算法及實現(xiàn),開發(fā)人員可以選擇最合適的加密算法及實現(xiàn),例如可以選擇特定的提供者的加密算法實現(xiàn)。
在移動互聯(lián)網時代,移動支付已經融入到人們生活的方方面面,Apple Pay的面世極大地推動了NFC移動支付的發(fā)展。隨著移動支付行業(yè)的發(fā)展,更安全可靠、功能更豐富、使用更便捷的支付體驗是隨之而來的需求,如何整合多樣化的服務,完善支付生態(tài)圈是移動支付服務提供者需要考慮的問題。我們可以考慮利用Java Card技術實現(xiàn)NFC移動支付,幫助提升支付服務的質量。
目前在NFC移動支付的實現(xiàn)方案中,一般由安全單元為用戶信息和交易數據提供加密保護,安全單元通常內置于智能手機硬件平臺中,應用起來不夠靈活,可擴展性差,而且安全單元沒有統(tǒng)一的開發(fā)規(guī)范,支付應用通用性差。我們可以考慮將安全單元集成到手機SIM卡上,并在SIM卡上運行Java Card平臺,使傳統(tǒng)的SIM卡成為一個Java智能卡,在提供常規(guī)的手機通信功能的同時,實現(xiàn)移動支付功能?;诳刹灏蔚腏ava智能SIM卡的移動支付方案具備以下一些優(yōu)勢:
(1)靈活性好。SIM卡是手機可拆卸部分,可以自由地更換,降低了支付應用對具體手機平臺的依賴,應用起來更靈活;可以在不更換手機的情況下,對支付應用的硬件進行升級;支付應用可在符合標準的不同Java智能卡平臺中移植,通用性更強。
(2)安全性高。Java智能卡不僅具備一般智能卡的硬件層面的安全保護,而且還進一步在軟件層面為支付應用的運行提供安全保護。Java Card平臺的安全特性為支付應用的整個生命周期提供更多的保護,而且應用的易開發(fā)性好,能很好地適應移動支付領域的快速發(fā)展。
(3)更快的執(zhí)行速度。Java Card平臺的多線程和并發(fā)特點,可以提高移動支付應用處理任務的能力,可以在不影響響應時間的情況下,應用更復雜的加密算法,執(zhí)行多重的認證,增強支付安全性。
(4)更豐富的網絡通信功能。相比于傳統(tǒng)SIM卡的OTA技術[11],Java智能卡支持加密通信、點對點通信,兼容成熟的Web技術,更能滿足移動互聯(lián)網時代對終端網絡連接性的要求。除了通過移動終端的加密和認證保護支付流程,還可以通過網絡連接云端服務器,進行動態(tài)的加密和多重認證,進一步提高支付操作的安全性。而且Java智能卡可直接進行點對點通信,無需借助移動終端,從而降低移動終端的安全漏洞對支付應用的威脅。
(5)動態(tài)管理。在發(fā)卡后,仍可通過網絡對卡上的應用執(zhí)行漏洞修復、更新升級等操作。使用過程中出現(xiàn)的問題和威脅可及時地報告云端服務器,由云端服務器進行分析并處理,以應對不斷變化的安全挑戰(zhàn)。
(6)多服務融合。不同服務提供商的應用可在通過授權和驗證后安裝到卡片上,支付應用可以為這些應用提供充值、繳費、支付等服務,在Java智能卡的安全環(huán)境中,搭建一個以支付功能為基礎的多功能支付生態(tài)圈,促進多服務融合,打通線上線下支付領域,為用戶提供更加智能、更加多樣化的金融服務,如圖5所示。
本文主要分析了Java Card的技術特點,并探討了Java Card技術應用于NFC移動支付的潛在優(yōu)勢。在移動支付多服務融合、高安全性的發(fā)展趨勢下,Java Card技術作為一項開放、安全的智能卡技術,應用于NFC移動支付,能發(fā)揮其在功能和性能方面的優(yōu)勢,為用戶提供高質量的支付服務。本文對于Java Card技術的應用只是作了簡要的分析,更具體的研究工作還有待深入。
圖5 Java智能SIM卡應用示意圖
[1] Raja Naeem Akram, Konstantinos Markantonakis. Smart cards: State-of-the-art to future directions[C]//IEEE International Symposium on Signal Processing and Information Technology, 2013:12-15.
[2] 董威. 多應用智能卡新技術研究[D]. 北京:北京郵電大學,2008.
[3] 柴洪峰. 智能卡多應用操作系統(tǒng)的發(fā)展趨勢及研究[J]. 計算機應用與軟件,2012,29(2):199-205.
[4] Mohammad R Eletriby, Mohamed Sobh, Ayman M, et al. High Performance Java Card Operating System[C]//2014 Eighth International Conference on Software Security and Reliability (SERE), 2014:30-39.
[5] Sun Microsystems, Inc.Specifications for the Java Card 3 Platform Version 3.0.5, Classic Edition[P]. 2015.
[6] Sun Microsystems, Inc. Java Card 3 Platform Virtual Machine Specification, Classic Edition Version 3.0.5[P]. 2015.
[7] Sun Microsystems, Inc. Java Card Platform Security White Paper[P]. 2001.
[8] Sun Microsystems, Inc. Java Card 3 Platform Virtual Machine Specification, Connected Edition Version 3.0.1[P]. 2009.
[9] Sun Microsystems, Inc. Java Card 3 Platform Runtime Environment Specification, Connected Edition Version 3.0.1[P]. 2009.
[10] Sun Microsystems, Inc. Java Card 3 Platform White paper[P]. 2008.
[11] 基于OTA技術的手機錢包的安全機制研究[D]. 成都:成都理工大學,2014.