APDU协议
APDU协议,即是智能卡与读写器间的应用层协议,在ISO7816-4[7]中定义了该协议的结构格式。APDU数据有两种结构,读写器使用的APDU结构为命令APDU,C-APDU(Command APDU),智能卡方面使用的APDU结构为响应APDU,R-APDU(Reponse APDU)。
命令APDU
必选部分:CLA, INS, P1, P2
可选部分:LC, 数据段, LE
CLA确定APDU的类别,INS确定要执行的指令,P1和P2是参数。
LC确定数据段的长度,数据段是发送到智能卡上的数据,LE确定读写器期待智能卡响应的字节数。
响应APDU
可选部分:数据段
必选部分:SW1, SW2
数据段的长度由命令APDU的LE确定。
SW1和SW2是状态字。
ADPU常用命令
APDU= ApplicationProtocol data unit, 是智能卡与智能卡读卡器之间传送的信息单元, (给智能卡发送的命令)指令(ISO 7816-4规范有定义) CLA INS P1 P2 Lc Data Le
其中CLA为指令类别;INS为指令码;P1、P2为参数;Lc为Data的长度;Le为希望响应时回答的数据字节数,0表最大可能长度。
00A4040000:发送一个空的选择命令,获取卡和主安全域的信息。00A40400是select选择对应的CLA,INS,P1和P2,后面2位是发送的文件名的长度。此命令使用文件名或应用标示符来选择IC卡内DF(专用文件)或EF(基本文件)。
80此命令创建卡片文件系统,80CA9F7F00:获取CPLC信息。8050XXXXX: 双向认证并建立会话密钥。
非接触CPU卡应该支持以下与应用无关的常用指令命令:
编号 |
指令 |
指令类别 |
指令码 |
功能描述 |
|
APPLICATION UNBLOCK |
84 |
18 |
应用解锁 |
|
APPLICATION BLOCK |
84 |
1E |
应用锁定 |
|
CARD BLOCK |
84 |
16 |
卡片锁定 |
|
EXTERNAL AUTHENTICATE |
00 |
82 |
外部认证 |
|
GET CHALLENGE |
00 |
84 |
取随机数 |
|
INTERNAL AUTHENTICATE |
00 |
88 |
内部认证 |
|
PIN UNBLOCK |
84 |
24 |
个人密码解锁 |
|
READ BINARY |
00 |
B0 |
读二进制文件内容 |
|
READ RECORD |
00 |
B2 |
读记录文件指定内容 |
|
SELECT |
00 |
A4 |