社保系列5——基本指令

本部分的指令是ISO/IEC 7816定义的基本指令,包括:

?  APPLICATION BLOCK(应用锁定)

?  CARD BLOCK(卡片锁定)

?  CHANGE PIN(修改个人密码)

?  EXTERNAL AUTHENTICATION(外部鉴别)

?  GET RESPONSE(获取响应)

?  GET CHALLENGE(获取随机数)

?  INTERNAL AUTHENTICATION(内部鉴别)

?  PIN CHANGE/UNBLOCK(个人密码修改/解锁)

?  READ BINARY(读取二进制数据)  

?  READ RECORD(读取记录内容)

?  SELECT(选择文件)

?  UPDATE BINARY(更新二进制数据)

?  UPDATE RECORD(更新记录内容)

?  VERIFY(校验个人密码)

1. 内部认证

INTERNALAUTHENTICATE 命令要求卡向接口设备提供认证数据,以使接口设备对卡进行认证。

用途:使用IRK对发卡方进行验证,IC卡有效性检查

随机数1(终端)||随机数2(终端)||密钥版本号(如果有)

[cpp] view
plain
copyprint?

  1. CPURESET()
  2. 00A4000002DDF1
  3. IRK=00000000000000000000000000000000//主内部认证密钥:00
  4. 0084000008(RAM+9000)
  5. ECB_3DES_EN(RAM,IRK,PROCESSK)//过程密钥
  6. ECB_SDES_EN(0102030405060708,PROCESSK,AUTHD)//产生鉴别数据
  7. 0088000010+RAM+0102030405060708
  8. 0088000011+RAM+0102030405060708+01 //密钥版本号(如果有)
  9. 00C0000008(AUTHD_+9000)

If( AUTHD == AUTHD_) 校验成功,否则IRK错误。

2. PIN修改,解锁

PIN CHANGE/UNLOCK命令为发卡者提供了修改PIN、重装PIN和解锁PIN的功能。重装后PIN文件的错误限制数恢复到建立时的初值。

CHANGE PIN命令允许持卡人将当前个人密码修改为新的密码。

[cpp] view
plain
copyprint?

  1. //个人PIN码解锁,修改,首先需要认证PUK,然后用STK计算过程密钥进行解锁,修改
  2. CPURESET()
  3. 00A4000002DDF1
  4. //认证PUK
  5. PUK=00000000012430000000000888011100
  6. 0084000008(RAMD+9000)
  7. ECB_3DES_EN(RAMD,PUK,ENDATA)
  8. ECB_SDES_EN(0102030405060708,ENDATA,ENDATA1)
  9. 0082000610+ENDATA1+0102030405060708 //标识:06
  10. //修改PIN
  11. 0084000008(RAMDOM+9000)
  12. STK=0002200001243000 //PIN信息中STK-KID指向密钥STK
  13. ECB_SDES_EN(RAMDOM,STK,SESSIONK) //产生过程密钥
  14. ECB_SDES_EN(03888888+80000000,SESSIONK,ENCDATA)//计算密文
  15. 3DES_MAC(0000000000000000+842400010C+ENCDATA+800000,SESSIONK,MAC)
  16. 842400010C+ENCDATA+MAC(9000) //P2:01更改PIN,尝试计数器重置,同时修改PIN
  17. //认证PIN
  18. 0020000003888888
  19. //解锁PIN
  20. ECB_SDES_EN(RAMDOM,STK,SESSIONK) //产生过程密钥
  21. 3DES_MAC(0000000000000000+8424000004+800000,SESSIONK,MAC)
  22. 8424000004+MAC(9000) //P2:00解锁PIN,尝试计数器重置,但不修改PIN
  23. //CHANGE PIN
  24. 00A4000002DDF1
  25. 805E010007+888888FF123456  //当前PIN ||FF|| 新的PIN
  26. //认证PIN
  27. 0020000003888888

3. 应用锁定

APPLICATION BLOCK命令使当前被选择的应用失效。失效后的应用仍可以选择(选择后返回SW1_SW2_6A81),但是该应用下的文件则是不可访问的,任何试图的访问都将返回SW1SW2=6A81。对失效的应用在返回6A81后,仍然可以用GetResponse命令来得到应用的FCI信息。对永久锁定的应用返回9303。

注:如果BL-KID为00h,则使用主控密钥(用途为00h)验算MAC;如果BL-KID不为00h,则使用传输密钥(用途为01h)验算MAC。

例如:80E0000213DF0205DB000000000039000208D15600000501(9000)BL-KID:用途01,标识02------->STK

STK:100102010100DD0000Access-Right:DD

LK,BK:1800030100000003DD  SSB:DD

CARD BLOCK命令后,卡被锁定,除GET INFO命令外,卡拒绝执行任何命令,返回状态信息?6A81

[cpp] view
plain
copyprint?

  1. //首先认证LK,然后用STK计算过程密钥计算MAC
  2. 00A4000002DDF1
  3. 00A4000002DF04
  4. //认证LK,BK
  5. LK=00000000000000000000000000000000
  6. 0084000008(RAM+9000)
  7. ECB_3DES_EN(RAM,LK,ENDATA)
  8. ECB_SDES_EN(0102030405060708,ENDATA,ENDATA1)
  9. 0082008310+ENDATA1+0102030405060708(9000)// 标志03
  10. //用STK锁应用
  11. STK=0000000000000000
  12. 0084000008(RAMD+9000)
  13. ECB_SDES_EN(RAMD,STK,SSK)
  14. 3DES_MAC(0000000000000000+841E000104+800000,SSK,MAC)
  15. 841E000104+MAC //8416000104(BK)

4. 外部认证

EXTERNAL AUTHENTICATE命令的目的是IC卡验证外部接口设备的有效性,使接口设备对IC卡获得某种操作授权。

例如:更新文件信息UK(UPDATAKEY),读取文件信息RK(READKEY)

[cpp] view
plain
copyprint?

  1. 0084000008(RAM+9000)
  2. ECB_3DES_EN(RAM,00000000000000000000000000000000,ENDATA)
  3. ECB_SDES_EN(0102030405060708,ENDATA,ENDATA)
  4. 0082000111+ENDATA+0102030405060708+VERSION(9000)
  5. P2:
  6. 0  x  x x  x  x  x  x  全局密钥标识(认证MF或DDF下的密钥)
  7. 1  x  x x  x  x  x  x  局部密钥标识 (ADF下的密钥)
  8. 0  0  0 0  0  0  0  0  当前DF下的MK
  9. Lc:
  10. 金融环境:08
  11. 社保环境:10,11,00(检验P2参数所指密钥是否存在(6A88[NO]),计数器当前的值(63Cx))

5. 读写记录文件

READ RECORD(00B2或04B2)命令读记录文件中指定的记录。

UPDATE RECORD(00DC或04DC)命令用给定的数据代替记录文件中指定的纪录。

[cpp] view
plain
copyprint?

  1. CPURESET()
  2. 00A4000002DDF1
  3. 00A4000002DF04
  4. 00A4000002EF05
  5. 0084000008(RAM+9000) //满足读权限
  6. ECB_3DES_EN(RAM,88657368201020122336060719830728,ENDATA) ECB_3DES_EN(0102030405060708,ENDATA,ENDATA)
  7. 0082008510+ENDATA+0102030405060708(9000)
  8. //读记录 01(第一条记录)+04(P1记录号)+01(期望返回值长度)
  9. 00B2+01+04+03 //满足写权限
  10. 0084000008(RAM+9000)
  11. ECB_3DES_EN(RAM,88657368201020122336060719830728,ENDATA) ECB_SDES_EN(0102030405060708,ENDATA,ENDATA) 0082008811+ENDATA+0102030405060708+01(9000)
  12. //更新记录 01(第一条记录)+04(P1记录号)+03(更新记录的长度,必须和之前写的长度一致,如果之前未写入数据,可以任意更新)
  13. 00DC010403+C1011

文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/38389289

社保系列5——基本指令

时间: 2024-10-25 06:41:41

社保系列5——基本指令的相关文章

ED/EP系列5——消费指令

1. 消费交易 消费交易允许持卡人使用电子存折或电子钱包的余额进行购物或获取服务. 特点: 1) --可以在销售点终端(POS)上脱机进行 2) --使用电子存折进行的消费交易必须提交个人识别码(PIN),使用电子钱包则不需要 步骤: 1) --参考复合应用消费交易 CPURESET() JE=00000001//消费金额 DPK= 00000000000000000000000000000055 00A40000021001 805C000204(消费前金额+9000) //(见JR/T 00

社保系列8——送检测试项

1.  PIN的格式是否正确 2.  卡复位信息是否规范 3.  响应报文数据域是否规范 4.  一级分散因子.二级分散因子的构成是否正确 5.  数据项"卡的标识码"中的应用城市代码是否正确 6.  数据项"规范版本"是否正确 7.  数据项"初始化机构编号"的内容是否正确 8.  规范要求的DF文件是否存在 9.  规范要求的EF文件是否存在 10. 线性记录是否以TLV格式存储 11. B-TLV记录的记录格式是否正确 12. 循环记录的记

社保系列7——PSAM卡

PSAM卡用于商户POS.网点终端.直联终端等端末设备上,负责机具的安全控管.PSAM卡具有一定的通用性.经过个人化处理的PSAM卡能在不同的机具上使用. PSAM卡支持多级发卡的机制,各级发卡方在卡片主控密钥和应用主控密钥的控制下创建文件和装载密钥. 1. 文件结构 社会保障DES算法环境: FID=3F00,AID=7378312E73682EC9E7BBE1B1A3D5CF:FID = DF01,AID = D15600000590 社会保障SSF33算法环境: FID=DDF1,AID=

社保系列10——返回值速查表

9000 命令执行成功 6006 依据传输模式,所要读取的字节长度错 61xx 正常处理.'xx'表示可以通过后续 GET RESPONSE命令得到的额外数据长度 6281 回送数据可能出错 6282 文件长度<Le 6283 选择文件无效 6284 FCI格式与P2指定的不符 6300 认证失败 63Cx 验证失败,x =0 表示不提供计数器 x !=0 表示重试次数 6581 EEPROM损坏,导致卡锁定 6700 Lc或Le长度错 6900 无信息提供 6901 命令不接受(无效状态) 6

TinyOS系列——服务器远程指令多跳实现过程中问题及解决方案

开发经验: 1.嵌入式程序,调试可能比较麻烦,一定要有耐心,戒骄戒躁 2.开发之前一定要理清自己的逻辑框架,不然只能越写越乱 3.代码开发与测试迭代进行,一步一步,如果代码量过大,很难跟踪找到问题出错的点 开发步骤: 模块开发必须理清自己的思路以及逻辑,学会分步进行: 1.测试节点C[i]是否能够正常接收.发送数据,全部需要测试一遍,确定节点能否正常使用,否则后续工作无法正常进行2.测试发送模块A向基站B广播消息后,基站B能否正常接收3.修改发送模块与节点程序,测试发送模块A->节点c[0]->

社保系列2——文件系统

卡片允许在可用空间内建立自己的文件系统.支持多层目录结构.在同层目录中文件不能有相同的ID(标识符). 数据文件中数据元以记录方式或二进制方式存储,文件结构及引用方式由文件的用途决定.除目录文件外,数据文件的内容和布局在<社会保障(个人)卡规范>第6部分:应用数据结构中说明,也可由发卡方补充定义. 1. 文件类型 三种专用文件(DF)类型: ?  MF:根目录,是整个文件系统的根,同属应用环境类.MF下可以有EF(基本文件).SF(安全文件).DDF(目录文件).ADF(应用文件): ?  D

社保系列1——介绍

社会保障系统环境SSSE的应用标识符为7378312E73682EC9E7BBE1B1A3D5CF (sx1.sh.社会保障). SSSE可以位于MF,也可以位于MF下的DDF. 社会保障应用各个具体应用的标识符(AID)必须采用由国IC卡注册中心颁发的RID,并通过RID选择该应用:对尚未获得RID的应用则采用规定的应用标签,并通过应用标签选择该应用. 基本数据文件的选择可以通过两种方式来实现:隐式选择,使用READ或UPDATE命令并采用SFI:显式选择,使用SELECT命令并采用文件标识符

社保系列6——账户划入交易

通过账户划入交易,持卡人可将其在基本医疗保险个人账户上的资金划入卡内基本医疗保险个人账户中. 特点: 1)   终端上联网进行 2)   提交个人密码(PIN)(如持卡人设置) 步骤: 1)   终端:启动账户划入交易(INITIALIZEFOR LOAD) 2)   IC卡:处理INITIALIZEFOR LOAD命令 3)   检查是否支持命令中提供的密钥(DLK)索引号(NO:9403). 4)   产生过程密钥(SESPK):伪随机数(ICC)||基本医疗保险个人帐户划入交易序号||'8

社保系列9——密钥速查表

分类 密钥 用途 适用的应用范围 (内部认证密钥) IRK 鉴别发卡方的密钥 应用提供者 (外部认证密钥)- PUK 个人密码解锁密钥 发卡方 应用维护密钥 (传输密钥) STK 发卡方或应用提供方用于产生应用锁定.卡片锁定和更新二进制或记录命令的MAC 发卡方 STKDF01 公共应用 STKDF02 就业与失业应用 STKDF03 社会保险应用 STKDF04 医疗保险应用(联网.脱网) 卡片或应用锁定控制密钥 (外部认证密钥) BK 发卡方或应用提供方控制锁定卡片或应用操作的密钥 发卡方