Java CardTM 基础
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– Perform any initialization – Check the state and condition of the applet – Returns true if the applet is ready to process the subsequent APDUs – Return false if the applet declines to participate
• Determine the applet data
– data type, value range, lifetime
Specify AIDs
Application Identifier (AID) National registered application provider (RID) 5 bytes Proprietary application identifier extension (PIX) 0 to 11 bytes
Java Card APIs(续4)
• javacardx.crypto package:其中包含了关 于加密与安全。 • javacardx.crypto Enc package:其中包含 了关于加密与安全。 • Javacardx.framword package 有关文件操 作。
Java Card 的生命期
• Define what tasks that the applet performs
– A Wallet Applet
• Debit, Credit, GetBalance
• Specify the Level of Security
– PIN protection – Secure Messaging
• IOS7816 abstract interface - 提供了ISO7816所使用 的常数值 • PIN abstract interface - 使其 subclass能透过此一介 面能够做检验 PIN及验证 PIN是否为有效 等功能
Java Card APIs(续1)
• javacard.framework 包括:
INSTALL APDUs
APDU Generator
Response APDUs
Off card installer
CAP
Thevoid install(byte[] bArray, install method public static
byte bOffset, byte bLength)
– An Applet must implement the install method
– 芯片 – 卡片 – 平台
• 开发工具多样化
– 开发人员可以任意选用Java开发工具
Java Card 结构
Applet … File system
Key File Applet
BYTECODE
EEPROM
Applet Heap User Data
Industry add-on Class Java Virtual Machine APIs&Frame work ROM
• Create an applet instance • Register the applet instance with the JCRE
– An Applet’s constructor performs the following tasks
• Create new objects • Initialize the applet instance
Smart Ca 缺点
– 卡特性固定 – 移植性差 – 编程复杂 – 兼容性差
Java Card 概述
• Java Card 基本概念 • Java Card 的特点 • Java Card 结构 • Java Card 系统要求
Java Card 基本概念
• Java Card 是Java平台中的最小子集 • Java Card 规范主要包括:
public static void install(byte[] bArray, byte bOffset, byte bLength) { new WalletApp(bArray, bOffset, bLength); }
The install method
The Constructor
private WalletApp(byte[] bArray, short bOffset, byte bLength) { pin = new OwnerPin(…); pin.update(bArray, bOffset, bLength); register(); }
– – – – Java 语言子集规范 Java Card 虚拟机规范 Java Card编程接口(API) Java Card运行时环境规范
Java Card技术特性
• 一卡多用
– 同时存在多个不同的应用程序 – 应用程序可以来自不同的供应商
• 重用
– 卡片发行后,可以动态下载新的应用
• 应用程序独立性
• 卡片的生命期
– 物理损坏 – 锁死 – 卡的应用过期
• JCVM 的生命期
– 永远运行,与Java Card的生命起一致
• Applet的生命期
– 开始于Applet被安装并在卡的注册表中注册。 – 终止于Applet被从注册表中注销
Applet 基本概念
• 用Java语言编写运行在智能卡中的 小程序 • 需要JCRE的支持 • 必须从javacard.framework.Applet扩 展 • 每个Applet必须有一个唯一的标识 (AID)
•
不支持
large primitive types: long, double, float Chars and Strings Arrays (multi-D) Dynamic class loading and GC Object serialisation & cloning Multi-threading
Java Card APIs(续2)
• Applet class - 每一个 Applet 都必须继承在此类下。 • JCSystem class - 负责管理 applet与Java Card 的系 统资源,如AID 的管理 • OwnerPIN class - 继承自PIN interface,负责维护 卡片持有人的PIN,并提供相关检验与更新等 • Util class - 是一个提供常用工具的class ,如byte array copy与compare等
– EEPROM 8KB
• 用于储存我们所下载至 Java Card的 applets,并且做为 object heap存放之处。
– 8-bit Processor
• Java Card必须至少支持8bit的处理器
Java Card 语言集
支持
• small primitive types: boolean, byte, short, int • packages, interfaces, classes and exceptions • Arrays (1D) • inheritance, overloading, virtual methods, dynamic object creation, access scope and binding rules
– install, select, deselect, process, etc.
Applet Installation
On card installer 1 Load and link CAP file 2 Invoke the install method to create an applet instance Applet
• Specify the Applet Functions • Specify AIDs • Define the Class Structure and Method Functions of the Applet • Specify APDU commands
Specify Applet Functions
Applet时执行状态
install() process()
select() inactive deselect() active
Applet 开发流程
Source (*.java)
Java Card Converter
Standard Java Compiler
CAP file Verifier
• An applet class must extend from the class javacard.framework.Applet • An applet class overrides methods defined in the class Applet to implement the applet functions
Java
TM Card
基础
结构与编程
议题
• Smart Card 基础 • Java Card 概述 • Applet 编程
Smart Card 基础
• Smart Card 结构
File System 只能由卡商改变 Soft Mask Card Card OS 固定的, Hard 固定的,不可更改Mask CPU I/O
• A set of PROCESS commands
– define the commands that the applet supports – they are defined in accordance to the functions of the applet
Define Classes & Methods
Applet Selection & Deselection
SELECT APDU
JCRE
Response APDU 1 2
APDU Generator
deselect
Applet
select
Applet inactive
currently selected
The select method
• Method public boolean select()
Java Byte codes (*.class)
Java Card
JCRE Simulator
Applet Programming
• Develop a Java Card Applet • APDU Processing • Using Cryptographic Services
Architect Applet
java语言子集规范javacard虚拟机规范javacard编程接口apijavacard运行时环境规范javacard技术特性开发人员可以任意选用java开发工具javacard结构处理器硬件io接口osnativefunctionjavavirtualmachineapisframeworkindustryaddonclassfilesystemkeyfileappletbytecodeappletheapuserdataappleteepromromjavacard系统要求ram512bytes主要用于存放applet执行时的stack暂存资料以及做为io的缓冲区rom24kb主要用于存放系统的程序以及runtimeenvironment如jvmnativefunctionseeprom8kb用于储存我们所下载至javacard的applets并且做为objectheap存放之处
• Shareable abstract interface - 使得不同的applets能 够透过实现此接口来达到互相沟通的功能 • AID class - AID(Application Identifier)是用来唯一 表示Applet的标识,使得JCRE能够通过一个AID table来识别或选择我们所要执行的applet • APDU class – 通过一个 缓冲区来接收与传送 terminal端的指令与回传applet执行的结果与状态 的标准格式
• • •
•
•
Java Card APIs
• ng
– JDK ng 的最小子集 – 包括 Object, Throwable , various exception classes
• javacard.framework
– 生成并执行Applets的APIs – 提供系统功能如:处理 APDU,原子操作等。
OS&Native Function 硬件IO接口 处理器
Java Card 系统要求
• 最小硬件配置:
– RAM 512 Bytes
• 主要用于存放Applet执行时的stack、暂存资料以及做为I/O 的缓冲区
– ROM 24KB
• 主要用于存放系统的程序以及 Runtime Environment,如 JVM,Native Functions 等
On a Java Card
• Each Package is identified and linked via an AID • Each Applet is identified and selected by an AID
Define APDUs
• One SELECT Command
– instruct the JCRE to select the applet on card
• Determine the applet data
– data type, value range, lifetime
Specify AIDs
Application Identifier (AID) National registered application provider (RID) 5 bytes Proprietary application identifier extension (PIX) 0 to 11 bytes
Java Card APIs(续4)
• javacardx.crypto package:其中包含了关 于加密与安全。 • javacardx.crypto Enc package:其中包含 了关于加密与安全。 • Javacardx.framword package 有关文件操 作。
Java Card 的生命期
• Define what tasks that the applet performs
– A Wallet Applet
• Debit, Credit, GetBalance
• Specify the Level of Security
– PIN protection – Secure Messaging
• IOS7816 abstract interface - 提供了ISO7816所使用 的常数值 • PIN abstract interface - 使其 subclass能透过此一介 面能够做检验 PIN及验证 PIN是否为有效 等功能
Java Card APIs(续1)
• javacard.framework 包括:
INSTALL APDUs
APDU Generator
Response APDUs
Off card installer
CAP
Thevoid install(byte[] bArray, install method public static
byte bOffset, byte bLength)
– An Applet must implement the install method
– 芯片 – 卡片 – 平台
• 开发工具多样化
– 开发人员可以任意选用Java开发工具
Java Card 结构
Applet … File system
Key File Applet
BYTECODE
EEPROM
Applet Heap User Data
Industry add-on Class Java Virtual Machine APIs&Frame work ROM
• Create an applet instance • Register the applet instance with the JCRE
– An Applet’s constructor performs the following tasks
• Create new objects • Initialize the applet instance
Smart Ca 缺点
– 卡特性固定 – 移植性差 – 编程复杂 – 兼容性差
Java Card 概述
• Java Card 基本概念 • Java Card 的特点 • Java Card 结构 • Java Card 系统要求
Java Card 基本概念
• Java Card 是Java平台中的最小子集 • Java Card 规范主要包括:
public static void install(byte[] bArray, byte bOffset, byte bLength) { new WalletApp(bArray, bOffset, bLength); }
The install method
The Constructor
private WalletApp(byte[] bArray, short bOffset, byte bLength) { pin = new OwnerPin(…); pin.update(bArray, bOffset, bLength); register(); }
– – – – Java 语言子集规范 Java Card 虚拟机规范 Java Card编程接口(API) Java Card运行时环境规范
Java Card技术特性
• 一卡多用
– 同时存在多个不同的应用程序 – 应用程序可以来自不同的供应商
• 重用
– 卡片发行后,可以动态下载新的应用
• 应用程序独立性
• 卡片的生命期
– 物理损坏 – 锁死 – 卡的应用过期
• JCVM 的生命期
– 永远运行,与Java Card的生命起一致
• Applet的生命期
– 开始于Applet被安装并在卡的注册表中注册。 – 终止于Applet被从注册表中注销
Applet 基本概念
• 用Java语言编写运行在智能卡中的 小程序 • 需要JCRE的支持 • 必须从javacard.framework.Applet扩 展 • 每个Applet必须有一个唯一的标识 (AID)
•
不支持
large primitive types: long, double, float Chars and Strings Arrays (multi-D) Dynamic class loading and GC Object serialisation & cloning Multi-threading
Java Card APIs(续2)
• Applet class - 每一个 Applet 都必须继承在此类下。 • JCSystem class - 负责管理 applet与Java Card 的系 统资源,如AID 的管理 • OwnerPIN class - 继承自PIN interface,负责维护 卡片持有人的PIN,并提供相关检验与更新等 • Util class - 是一个提供常用工具的class ,如byte array copy与compare等
– EEPROM 8KB
• 用于储存我们所下载至 Java Card的 applets,并且做为 object heap存放之处。
– 8-bit Processor
• Java Card必须至少支持8bit的处理器
Java Card 语言集
支持
• small primitive types: boolean, byte, short, int • packages, interfaces, classes and exceptions • Arrays (1D) • inheritance, overloading, virtual methods, dynamic object creation, access scope and binding rules
– install, select, deselect, process, etc.
Applet Installation
On card installer 1 Load and link CAP file 2 Invoke the install method to create an applet instance Applet
• Specify the Applet Functions • Specify AIDs • Define the Class Structure and Method Functions of the Applet • Specify APDU commands
Specify Applet Functions
Applet时执行状态
install() process()
select() inactive deselect() active
Applet 开发流程
Source (*.java)
Java Card Converter
Standard Java Compiler
CAP file Verifier
• An applet class must extend from the class javacard.framework.Applet • An applet class overrides methods defined in the class Applet to implement the applet functions
Java
TM Card
基础
结构与编程
议题
• Smart Card 基础 • Java Card 概述 • Applet 编程
Smart Card 基础
• Smart Card 结构
File System 只能由卡商改变 Soft Mask Card Card OS 固定的, Hard 固定的,不可更改Mask CPU I/O
• A set of PROCESS commands
– define the commands that the applet supports – they are defined in accordance to the functions of the applet
Define Classes & Methods
Applet Selection & Deselection
SELECT APDU
JCRE
Response APDU 1 2
APDU Generator
deselect
Applet
select
Applet inactive
currently selected
The select method
• Method public boolean select()
Java Byte codes (*.class)
Java Card
JCRE Simulator
Applet Programming
• Develop a Java Card Applet • APDU Processing • Using Cryptographic Services
Architect Applet
java语言子集规范javacard虚拟机规范javacard编程接口apijavacard运行时环境规范javacard技术特性开发人员可以任意选用java开发工具javacard结构处理器硬件io接口osnativefunctionjavavirtualmachineapisframeworkindustryaddonclassfilesystemkeyfileappletbytecodeappletheapuserdataappleteepromromjavacard系统要求ram512bytes主要用于存放applet执行时的stack暂存资料以及做为io的缓冲区rom24kb主要用于存放系统的程序以及runtimeenvironment如jvmnativefunctionseeprom8kb用于储存我们所下载至javacard的applets并且做为objectheap存放之处
• Shareable abstract interface - 使得不同的applets能 够透过实现此接口来达到互相沟通的功能 • AID class - AID(Application Identifier)是用来唯一 表示Applet的标识,使得JCRE能够通过一个AID table来识别或选择我们所要执行的applet • APDU class – 通过一个 缓冲区来接收与传送 terminal端的指令与回传applet执行的结果与状态 的标准格式
• • •
•
•
Java Card APIs
• ng
– JDK ng 的最小子集 – 包括 Object, Throwable , various exception classes
• javacard.framework
– 生成并执行Applets的APIs – 提供系统功能如:处理 APDU,原子操作等。
OS&Native Function 硬件IO接口 处理器
Java Card 系统要求
• 最小硬件配置:
– RAM 512 Bytes
• 主要用于存放Applet执行时的stack、暂存资料以及做为I/O 的缓冲区
– ROM 24KB
• 主要用于存放系统的程序以及 Runtime Environment,如 JVM,Native Functions 等
On a Java Card
• Each Package is identified and linked via an AID • Each Applet is identified and selected by an AID
Define APDUs
• One SELECT Command
– instruct the JCRE to select the applet on card