APDU 内部认证,外部认证

  1. 简述

APDU: Application Protocol data unit,,是智能卡与智能卡读卡器之间传送的信息单元, (向智能卡发送的命令)指令(ISO 7816-4规范有定义):CLA INS P1 P2 Lc Data Le。

CLA:指令类别;INS:指令码;P1、P2:参数;Lc:为Data的长度;Le:为希望响应时回答的数据字节数,0表最大可能长度。
在这里插入图片描述
必选部分:CLA, INS, P1, P2
可选部分:Lc, 数据段: Le
CLA 确定 APDU 的类别,INS 确定要执行的指令,P1 和 P2 是参数。

Case1
命令中没有数据送到卡( Lc)中,也没有数据从卡中返回( Le)。
不含安全报文的命令: CLA | INS | P1 | P2
含安全报文的命令: CLA | INS | P1 | P2 | Lc | MAC

注: Lc = MAC 的长度, 4 字节。

Case2
命令中没有数据送到卡( Lc)中,有数据从卡中返回( Le)。
不含安全报文的命令: CLA | INS | P1 | P2 | Le
含安全报文的命令: CLA | INS | P1 | P2 | Lc | MAC | Le

注: Lc = MAC 的长度, 4 字节。

Case3
命令中有数据送到卡( Lc)中,没有数据从卡中返回( Le)。
不含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data
含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data+MAC

注: Lc = 数据的长度 + MAC 的长度( 4 字节)。

Case4
命令中既有数据送到卡( Lc)中,也有数据从卡中返回( Le)。
不含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data | Le
含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data+MAC | Le

注: Lc = 数据的长度 + MAC 的长度( 4 字节)。
————————————————

SW1SW2 解释
9000 执行成功
6100 数据被截断
6200 警告,信息未提供
6281 警告,回送数据可能出错
6282 警告,文件长度小于Le
6283 应用无效
6284 FCI格式与P2指定的不符
6300 认证失败
63Cx 校验失败(x-允许重试次数)
6400 原因不明
6581 内存失败
6700 长度不对
6900 不能处理
6901 命令不接受(无效状态)
6981 命令与文件结构不相容,当前文件非所需文件
6982 要PIN验证
6983 文件无效,PIN被锁定
6984 数据无效,随机数无效,引用的数据无效
6985 条件不满足
6986 不允许该命令
6982 安全条件不满足
6987 安全消息丢失
6988 安全消息不正确
6999 应用选择失败
6A80 数据错误
6A81 功能不支持
6A82 文件找不到
6A83 记录找不到
6A84 没有足够的空间
6A86 不正确的参数(P1,P2)
6A88 引用数据没找到
6B00 错误的参数 (P1,P2)
6C00 长度错误 (Le)
6D00 INS不支持
6E00 CLA 不支持
6F00 未知错误
9301 资金不足
9302 MAC无效
9303 应用被永久锁定
9401 交易金额不足
9402 交易计数器达到最大值
9403 密钥索引不支持
9406 所需MAC不可用

指令名称CLAINS解释
READ BINARY00/04B0读出带有透明结构的EF内容的一部分
WRITE BINARYD0将二进制值写入 EF
UPDATE BINARY00/04D6启动使用在命令 APDU 中给出的位来更新早已呈现在EF中的位
ERASE BINARY0E顺序地从给出的偏移开始,将 EF 的内容的一部分置为其逻辑擦除的状态
READ RECORD00/04B2给出了EF的规定记录的内容或EF的一个记录开始部分的内容
WRITE RECORDD2WRITE RECORD命令报文启动下列操作之一:a. 写一次记录;b. 对早已呈现在卡内的记录数据字节与在命令 APDU 中给出的记录数据字节进行逻辑“或”运算;c. 对早已呈现在卡内的记录数据字节与在命令 APDU 中给出的记录数据字节进行逻辑“和”运算
APPEND RECORD00/04E2启动在线性结构 EF 的结束端添加记录,或者在循环结构的 EF 内写记录号 1
UPDATE RECORD00/04DC启动使用命令 APDU 给出的位来更新特定记录
GET DATACA可在当前上下文(例如应用特定环境或当前 DF )范围内用于检索一个原始数据对象,或者包含在结构化数据对象中所包含的一个或多个数据对象
PUT DATADA可在当前上下文(例如应用特定环境或当前 DF )范围内用于存储一个原始数据对象,或者包含在结构化数据对象中的一个或多个数据对象正确的存储功能(写一次和/或更新和/或添加)通过数据对象的定义和性质来引出
SELECT FILE00A4设置当前文件后续命令可以通过那个逻辑信道隐式地引用该当前文件
VERIFY00/0420启动从接口设备送入卡内的验证数据与卡内存储的引用数据(例如口令)进行比较
INTERNAL AUTHENTICATE0088启动卡使用从接口设备发送来的询问数据和在卡内存储的相关秘密(例如密钥)来计算鉴别数据,当该相关秘密被连接到 MF 时,命令可以用来鉴别整个卡当该相关秘密被连接到另一个 DF 时命令可以用来鉴别那个 DF。
EXTERNAL AUTHENTICATE0082使用卡计算的结果(是或否)有条件地来更新安全状态而该卡的计算是以该卡先前发出(例如通过 GETCHALLENGE 命令)的询问在卡内存储的可能的秘密密钥以及接口设备发送的鉴别数据为基础的
GET CHALLENGE0084要求发出一个询问(例如随机数)以便用于安全相关的规程(例EXTERNAL AUTHENTICATE 命令)
MANAGE CHANNEL70打开和关闭逻辑信道
GET RESPONSE00C0用于从卡发送至接口设备用可用的协议不能传送的那一些的 APDU (或APDU的一部分)
ENVOLOPE80C2用来发送那些不能由有效协议来发送的 APDU 或 APDU 的一部分或任何数据串

PSAM卡 对应操作指令
https://max.book118.com/html/2017/1130/142163647.shtm
``
/';
现在用的是复旦微的FM1216卡,之前用的是握奇的卡,先说下握奇的外部认证步骤

1、选择IC卡MF目录 00A4 0000 02 3F00 00
2、给IC卡发送命令取随机数  0084000008 获取8位随机数1
3、选择PSAM卡MF目录 00A4000002 3F00 00
4、选择PSAM卡应用目录 00A4000002 1001 00
5、PSAM卡初始化DES加密 801A 27 01 08 8位IC卡序列号
6、PSAM卡DES加密 80FA 00 00 08 8位随机数1
7、IC卡外部认证 0082 0001 08 8位随机数1

801A 59 03 10 FFFFFFFFFFFFFFFFC2B7CDF8C2B7CDF8
801A 标识
59 秘钥用途
03 秘钥标识
10 2级分散 / 00 0级分散 /08 1级分散/ 18 3级分散

80FA 80 00 607E94D0B5382432FC777FD4005DF295BB059A4040363169850EA4A6A4ECFAF31115CFA12AE681422150E87680CD822CEB7AE09B31366E08F747F86F3F91CB0C54888E71747CEEB0BD7C271F732490A9AF7C271F732490A9AF0000000000000000
80FA 标识
80 无后续块解密 / 08 MAC计算 / 00 加密
00 P2

8072 校验MAC2

8070 计算MAC1
8070 00 00 24 AC2EC4 9F00 2200000000 09 20140909 1201010100FFFFFFFFFFFFFFFFC2B7CDF8C2B7CDF8
8070 标识
00 P1
00 P2

秘钥分散
代码 值
CLA ‘80’
INS ‘1A’
P1 密钥用途
P2 密钥标识
Lc
分散数据长度
‘00’ 分散级数为 0 时
‘08’,分散级数为 1 时
‘10’,分散级数为 2 时
‘18’,分散级数为 3 时
‘20’,分散级数为 4 时
‘28’,分散级数为 5 时
‘30’,分散级数为 6 时
‘38’,分散级数为 7 时
其他值保留
DATA LC = 00 时不存在
分散因子

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

IC卡内部认证流程:
1、进入ic卡指定目录空间:00A404000F+ 文件标识
2、取2个8字节随机数:rand1 (0102030405060708 ), rand 2(0807060504030201)
3、CPU卡调用命令内部认证命令:0088000010 +0102030405060708 +0807060504030201得到8字节认证数据:(jbsj:)11223344E9060208
4、将2个8字节随机数 rand1 和 rand 发送到PSAM卡或在线加密机 得到验证数据 result1: 16字节
5、比对 result1 和 jbsj 是否一致

IC卡外部认证流程:
1、进入IC卡指定目录:00A4000002+文件标识
2、使用指令卡片内缓存并返回8字节随机数:0084000008 返回 rand1
3、将rand1 和 算法因子 发送到在线接口或PSAM。得到外部认证数据: result2:16字节
4、对卡片进行外部认证:0082000A10 返回 9000 成功
5、取加锁信息:00B2080014 返回信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值