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 不一致

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

  1. Android Studio NFC读取CPU卡信息

    今天接到一个NFC读CPU卡的需求,做个总结. 总结之前,吐槽一下,一定要查一下测试机支不支持NFC功能,我拿乐视S3开发了一上午,以为哪里出了BUG或者权限没加,查了无数资料,下了十几个demo,死 ...

  2. 【IoT】NFC CPU 卡在实际产品中的应用

    1.目前不同厂家采用的 CPU 卡方案分为四类 1.1.ID 方案 使用 CPU 卡的序列号来识别卡,这种方案与 ID 卡方案没有本质区别,在门禁.考勤.停车场系统中较多见,消费系统中采用这种方案需要 ...

  3. 【IoT】加密与安全:NFC 读写 IC 卡以及密码安全验证

    虽然 IC 卡本身的加密安全性能一般,但仍然有必要了解一下. 1.主要指标 1.1.S50 非接触式 IC 卡性能简介(M1) 参考:IC 卡 S50 简介 1)容量为 8K 位 EEPROM(1K ...

  4. c语言读写nfc,Android NFC M1卡读写芯片卡读写(CPU卡读写)(RFID读写)

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/sgn5200/article/deta ...

  5. NFC开发 —————ID卡、IC卡(M1卡、CPU卡)的区别(三)

    Android NFC开发(一) NFC开发 -----实现NFC手机做门禁卡的方法(二) NFC开发 -----实用工具以及开发文档(四) IC卡的定义 : IC(Integrated Circui ...

  6. 使用NFC模拟校园卡门禁功能 【Mac, Windows, Android, 手环】

    COVID-19期间,我们学校实行通行证制度,只有具有通行证的同学的卡才可以自由进出校园,他而没有通行证的人下人出校只能是一种奢望.在这种无理取闹的制度之下,我试想通过NFC模拟出那些可以自由进出的同 ...

  7. ID|IC|CPU卡|国密卡|二代证|防复制门禁一体机门禁读卡器带触摸键盘(不带二维码)选型必备

    一张表带你了解IC卡.ID卡.CPU卡.二代证.防复制卡各类型韦根26.韦根34.网络通信的门禁一体机的性能参数与差异,让我们在门禁设备选型方面能快速匹配到自己需要的相关设备. 普通IC卡 HX86K ...

  8. 关于HCE——Android手机NFC模拟刷卡成果和心得(上)

    关于HCE--Android手机NFC模拟刷卡成果和心得 一.前言 在最近,开始研究了手机模拟NFC刷卡的一些内容,想是自己实现一次手机模拟刷卡. NFC大家应该都了解,这两年的安卓手机基本都是支持了 ...

  9. Android使用NFC模拟M卡实现 (一)

    Android使用NFC模拟M卡实现 (一) Android使用NFC模拟M卡实现 (二) Android使用NFC模拟M卡实现 (三) 在百度找一遍,没有一篇,讲的比较通俗易懂的文件.讲解Andro ...

最新文章

  1. 浙江大学软件学院2020年保研上机模拟练习 7-4 Shopping With Coupons
  2. Android之从Camera捕获图像讲解
  3. Spring Boot 2.x基础教程:使用Spring Data JPA访问MySQL
  4. Failed to find byte code for java/util/function/BiConsumer
  5. Python 抖音用户粉丝(公开)--分析与实现
  6. python遗传算法最短路径问题有几种类型_遗传算法求最短路径 - osc_tn8uhjgi的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. java控制单元测试_java – 当单元测试控制器时,模拟一个Spring Validator
  8. 机器学习1---基本概念
  9. androidStudio导入库文件
  10. 【微型计算机原理与接口技术】计算机中的信息表示
  11. mPaaS 小程序新手指南 | 《mPaaS 小程序自定义开发》
  12. log公式如何用计算机,log计算-计算器怎么算log,如何使用科学计算器中的对数log...
  13. 用DEV-C++制作狼人杀
  14. Matlab模拟傅里叶变换
  15. 在移动开发快捷推广方式
  16. 【python列表插入函数】append() extend() insert() 三者区别与使用方法
  17. 信号完整性分析系列2——什么是信号完整性及何时遇到
  18. vue统一或单独控制接口请求时间
  19. 关于VERIFY_OCTAL_PERMISSIONS权限检查
  20. “有效沟通”-你的团队做到了吗?

热门文章

  1. C语言实现一个先进先出的队列
  2. windows常见后门隐藏和权限维持方法及排查技术
  3. Java开发SDK详解->SDK开发
  4. R语言实战应用精讲50篇(四)-多重线性回归系列之适用条件验证
  5. python 统计单词音节数
  6. 暑期项目实训7.19 论文复现+寻找并阅读新论文
  7. 接收用户输入的一个5位数,求个位数、十位数、百位数、千位数、万位数的和
  8. 两个月后,84年工龄的财团天王也要谢幕了
  9. 冬奥会开幕式背后的科技语言,是中国人对话世界的独特方式
  10. SpringBoot使用@Value读取Application.yml为null(疯狂踩坑)