码迷,mamicode.com
首页 > 其他好文 > 详细

【IoT】ISO7816 NFC 之 CPU 卡浅析及操作命令简介

时间:2019-07-07 22:44:25      阅读:585      评论:0      收藏:0      [点我收藏+]

标签:权限   文件类型   交易   环境   命令简介   流程   不同   光照   读写   

CPU 卡浅析:

CPU 卡可适用于金融、保险、*、政府行业等多个领域,具有用户空间大、读取速度快、支持一卡多用等特点,并已经通过中国人民银行和国家商秘委的认证。

CPU 卡又叫智能卡,卡内具有中央处理器(CPU)、随机存储器(RAM)、程序存储器(ROM)、数据存储器(EEPROM)以及片内操作系统(COS)。

金融智能卡:

符合《中国金融集成电路(IC卡)规范》,通过了中国人民银行检测,支持一卡多用,支持多种文件类型,支持中国人民银行认可的 Single DES、Triple DES 算法,支持中国人民银行规定的电子钱包和电子存折功能。

社保卡:

支持一卡多用,各应用之间相互独立。符合《社会保障(个人)卡规范》和《中国金融集成电路(IC)卡规范》,并通过了劳动和社会保障部检测。

电子商务智能卡:

能够快速完成RSA算法的签名、认证、加密、解密运算,可在卡片内生成1024位RSA密钥对,支持一卡多用,各应用之间相互独立。符合《中国金融集成电路(IC)卡规范》,并已通过国家商业密码管理委员会的安全测试。
终端安全控制模块:符合《中国金融集成电路(IC卡)PSAM卡规范》,包括普通PSAM卡和高速PSAM卡。

SAM卡:

安全存取模块SAM是智能卡应用系统中安全控管的核心。 

SIM卡:

移动通讯用户识别卡,符合GSM11.11,手机不但可以传输语音数据,还可以进行金融交易,电子商务等多种应用。

CPU 卡的标准化:

由于当前世界各国经济正在向国际化方向发展,全球化的金融服务系统纷纷建立起来,这就带来了一个卡的互操作性问题。同一张卡,在不同的国家、不同的环境下都要能够使用。要解决这个问题,只有制定一系列国际标准,使CPU卡及其接口设备制造商按照统一的标准,制造统一接口规格的产品,以保证不同国家、不同行业都采用统一的CPU卡软硬件技术规范开发应用系统,这样才能实现不同厂家生产的CPU卡之间的互换性和接口设备的共享。 

国际标准化组织从1987年开始,相继制定和颁布了CPU卡的国际标准。有关CPU卡本身的标准有: 

ISO 10536:识别卡-非接触式的集成电路卡 

ISO 7816:识别卡-带触点的集成电路卡 

ISO7816-1:规定卡的物理特性。卡的物理特性中描述了卡应达到的防护紫外线的能力、X光照射的剂量、卡和触点的机械强度、抗电磁干扰能力等等。 

ISO7816-2:规定卡的尺寸和位置。 

ISO7816-3:规定卡的电信号和传输协议。传输协议包括两种:同步传输协议和异步传输协议 

ISO7816-4:规定卡的行业间交换用命令。包括:在卡与读写间传送的命令和应答信息内容;在卡中的文件、数据结构及访问方法;定义在卡中的文件和数据访问权限及安全结构。 
有关金融领域CPU卡应用的标准有: 

ISO 9992:金融交易卡-集成电路卡与受卡接受设备之间的信息 

ISO 14443:识别卡-非接触卡规范(距离10cm) 

ISO 10202:金融交易卡-使用集成电路卡的金融交易系统的安全结构 

EMV:支付系统的集成电路卡规范和支付系统的集成电路卡终端规范 

中国金融集成电路(IC)卡规范:1998年3月中国人民银行等近十家金融单位在采用国际标准和国外先进技术的原则下,以ISO标准和Europay、Mastercard、Visa三大组织研制的EMV96为基础,结合国内CPU卡的应用实际需要,对我国金融CPU卡的基本应用作出了具体规定。 
ISO和其它组织还有很多标准和规范涉及到CPU卡的应用,可根据需要查阅有关的标准。 

CPU卡生产流程

一张卡从制造出来到销毁的整个过程成为生命周期。IC卡的生命周期一般可分为:

1.芯片制造:IC卡厂家通过特定的制造工艺在硅片上整齐地排列上一个个电路。 
2.模块封装:将许多各种芯片安装在已制造好的有8个触点的印刷电路板上。 
3.卡片制造:将卡的操作系统等卡片控制系统掩模到模块中。 
4.卡片封装:将掩模好的模块镶嵌到塑料基片中。 
5.卡片初始化:设置卡片的基本参数。 
6.安装发行密钥:将发行单位的密钥写到卡上。 
7.卡片个人化:建立应用文件并写入持卡人基本资料。 
8.卡片应用:持卡人用卡完成各种卡的功能。

操作命令示例:

厂家初始设定外部认证密钥为  FF FF FF FF FF FF FF FF

1、外部认证

   1.1、取 4 字节随机数 00 84 00 00 04
  
   1.2、程序用外部认证秘钥 FFFFFFFFFFFFFFFF 和获取的 4 字节随机数加密,生成 8 字节加密数据
  
   1.3、发送 00 82 00 00 08 + 8 字节加密数据

2、删除 MF 下面文件

   80 0E 00 00 00
   
   00 A4 00 00 00
    
4、建立 MF 下密钥文件

   80 E0 00 00 07 3F00B001F0FFFF
    
   //80 E0 00 00 07 3F005001F0FFFF
    
5、增加密钥

   5.1、文件线路保护密钥
    
     80 D4 01 00 0D 36F0F0FF33FFFFFFFFFFFFFFFF
    
   5.2、外部认证密钥 
    
     80 D4 01 00 0D 39F0F0 AA 55 1122334455667788
     
     //80 D4 01 00 15 39F0F0 AA 88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     
     后续状态 AA,错误计算 55

   5.3、解锁口令密钥
    
     80 D4 01 00 0D 37F0F0FF 55 1122334455667788
    
     错误计算 55,密钥 1122334455667788

   5.4、口令密钥
    
     80 D4 01 00 08 3AF0EF 44 55 123456   
     
     后续状态 44,错误计算 55,pin 123456

   5.5、重装密钥
    
     80 D4 01 00 0D 38F0F0FF 55 0102030405060708
     
     错误计算 55,密钥 0102030405060708

   5.6、线路保护
    
     80 D4 01 00 0D 36F0F0FF 55 0102030405060708
     
     错误计算 55,密钥 0102030405060708

6、建立电子钱包 DF

   80 E0 3F 01 0D 38 05 20 F0F095FFFF4444463031
   
   //80 E0 3F 01 11 3804FFF0FA95FFFFA00000000386980701
   
   文件 ID 82,select file 返回为 00 02
   
   文件标示 3F 01 
   
   空间大小 05 20 
   
   DF 名称 DDF01
   
7、选择电子钱包 DF

   00 A4 00 00 02 3F 01 00

8、建立 DF 下密钥文件

   80 E0 00 00 07 3F018F95F0FFFF 

9、增加密钥

   9.1、主控密钥
    
     外部认证密钥 
     
     80 D4 01 00 0D 39F0F0 33 55 1122334455667788
     
     后续状态 AA,错误计算 55 
      
   9.2、圈存密钥
    
     80 D4 01 00 0D 3FF0F000003F023F023F023F02    
      
   9.3、圈提密钥
    
     80 D4 01 00 0D 3DF0F000013D023D023D023D02
      
   9.4、消费密钥
    
     80 D4 01 00 0D 3EF0F000013E023E023E023E02
      
   9.5、透支限额
    
     80 D4 01 00 0D 3CF0F000013C023C023C023C02
      
   9.6、线路保护
    
     80 D4 01 01 0D 36F0F0FF 55 0102030405060708
      错误计算 55,密钥 010203040506070
      
   9.7、重装口令密钥  
    
     80 D4 01 01 0D 38F0F0FF 55 0102030405060708
     
     错误计算 55,密钥 0102030405060708

   9.7、口令密钥
    
     80 D4 01 01 08 3AF0EF 44 55 123456   
     
     后续状态 44,错误计算 55,pin 123455

   9.8、解锁口令密钥
    
     80 D4 01 01 0D 37F0F0FF 55 1122334455667788
     
     错误计算 55,密钥 1122334455667788
 
   9.9、MAC密钥
    
     80 D4 01 01 0D 32F0F000013202320232023202

10、建立钱包文件

     80 E0 00 02 07 2F0208F000FF18

11、建立钱包应用基本数据文件 A8

     80 E0 00 15 07 A8001EF0F0FF02
    
    //80E0001507A8001EF0F0FFFF
      
12、建立钱包持卡人基本数据文件 A8

     80 E0 00 16 07 A80027F0F0FF02
      
     //80E0001607A80037F0F0FFFF
      
13、建立交易明细文件 2E
      
     80 E0 00 18 07 2E0A17F1EFFFFF
    
     //80E00017072A0A10F0F0FFFF

14、MF 下读余额

  14.1、选择电子钱包文件夹
  
    00 A4 00 00 02 3F0100
    
    80 5C 00 02 04
  
  14.2、验证 PIN,PIN 是 123456
    
    00 20 00 01 03 123456
  
  14.3、圈存初始化,圈存密钥为 3F023F023F023F02
    
    执行指令
    
    80 50 00 02 0B 01 00001234 00000000000110
  
    密钥标识 01,交易金额 00001234,终端机编号 000000000001

    返回
    
    00 00 00 00 00 00 00 01 CAB24782 67AE64BA
   
    MAC1=67AE64BA

    过程密钥(SESLK) = 圈存密钥(DLK)和 4随机数 + 2 字节交易序号 + 8000 生成  
    
    也就是 3F023F023F023F02 和 CAB24782+0000+8000 加密
    
    得出 FA0645615347A270 (SESLK1)

    密钥 FA0645615347A270 和余额 + 交易金额 + 交易类型标识 + 终端机编号
   (不足补80)加密
    
    也就是 FA0645615347A270 和 00000000000012340200000000000180
    
    得到 1FB2262D0435B1A3444C2A1A1FAAE7A3  
    
    结果和 MAC1 不一致
---------------------
作者:简一商业
来源:CSDN
原文:https://blog.csdn.net/liwei16611/article/details/83653054
版权声明:本文为博主原创文章,转载请附上博文链接!

【IoT】ISO7816 NFC 之 CPU 卡浅析及操作命令简介

标签:权限   文件类型   交易   环境   命令简介   流程   不同   光照   读写   

原文地址:https://www.cnblogs.com/tianqiang/p/11148329.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!