CCC3.0的NFC技术中,除车端,手机端需包含NFC功能外,另外一般还会配置一个NFC卡,用于备份使用。本文主要介绍NFC卡相关的基础知识。
NFC卡是一种智能卡,其与信用卡大小相同,可通过嵌入到其塑料基体中硅片上的电子电路来存储和处理信息。
智能卡按使用时是否和读卡器接触可分为接触式智能卡和非接触式智能卡.
接触式智能卡上有6-8个触点,使用时插在卡座上,典型的如手机SIM卡以及以前的公用电话卡。
非接触式智能卡没有触点,卡上也没有电源,通过读卡器产生的电磁场获得能量并与读写器交换信息。
由于非接触式智能卡的无源和免接触特性,卡的使用寿命和安全性大大提高,目前应用越来越广泛。典型的如NFC卡片。
根据嵌入的芯片类型,智能卡可分为存储器卡、逻辑加密卡和CPU卡。
CPU卡的安全强度最高,CCC数字钥匙采用的NFC卡就是CPU卡。
如下展开详细描述。
存储器卡:卡内的集成电路是电擦除的可编程EEPROM,只有数据存储功能,没有数据处理能力。该卡本身不提供硬件加密功能,只能存储通过系统加密的数据,很容易被破解。
逻辑加密卡:卡内的集成电路包括加密逻辑电路和可编程EEPROM,但没有完整的微处理器。加密逻辑电路在一定程度上保护卡及卡中数据的安全,但只是低层次的保护,无法防止恶意攻击。
逻辑加密卡通常用于保护重要的机密信息,如加密密钥和数字证书等。
CPU卡和逻辑加密卡的区别在于前者具有完整的微处理器和通信能力,后者则专注于加密和保护重要的机密信息。
CPU卡:CPU卡也称智能卡,卡内的集成电路包括中央处理器CPU、可编程EEPROM、随机存储器RAM、固化的卡内操作系统COS(Chip Operating System)和ROM等。
该卡相当于一台没有显示器和键盘的微型计算机,可以像计算机一样运行复杂的程序和算法。CPU卡可以存储大量数据,并且可以与外部设备进行通信,例如智能手机或POS终端。
卡中数据分为外部读取和内部处理两部分,以确保卡中数据的安全、可靠。
因具有安全性高、可以离线操作、可以运算编程等突出优点,因此广泛用于金融、电信、运输等领域的安全身份验证和支付应用。CCC数字钥匙采用的NFC卡也是CPU卡。
有网友将存储器卡、逻辑加密卡、CPU卡做了一些形象的比喻,有助理解,具体如下:
1) 存储器卡就像一个无人看守且大门敞开的仓库,什么人都可以随便在卡中存取数据;
2) 逻辑加密卡相当于给仓库加了一把锁,只有有钥匙(密码)的人才能打开使用。
3) CPU卡则如同安排了专人看守仓库,卡里面有CPU芯片,存储数据要验证口令,且可能不同的应用有不同口令,存取数据受到更加严格的控制,安全性最高。
ISO/IEC 14443包含物理特性、频谱功率和信号接口、初始化程序、防冲突算法、通信协议等部分内容。它定义了两种卡类型:Type A和Type B。两种卡均在13.56MHz无线频率下工作。
TypeA卡和B卡主要区分体现在物理特性上,具体如下:
当NFC Reader发送数据给NFC卡时,通过13.56MHz的射频载波传送信号。其采用方案为同步、改进的Miller编码方式,通过100%ASK传送;
当NFC卡发送数据给NFC Reader时,是通过调制载波传送信号。使用847kHz的副载波传送Manchester编码。
当NFC Reader发送数据给NFC卡时,也是通过13.56MHz的射频载波信号,但采用的是异步、NRZ编码方式,通过用10%ASK传送的方案;
当NFC卡发送数据给NFC Reader时,则是采用的BPSK编码进行调制。
对比两种卡型,可以看出,Type B有以下优势:
1) 芯片具有更高的安全性。接收信号时,不会因为能量损失而使芯片内部逻辑及软件工作停止。
2) 支持更高的通讯速率。Type A最大的数据通讯速率为150Kbit/s -200Kbit/s ,应用10%ASK技术的Type B至少可支持400Kbit/s 的速率。
3) 外围电路设计简单。读写机具到卡以及卡到读写机具的编码方式均采用NRZ方案,电路设计对称,设计时可使用简单的UARTS。
4) 抗干扰能力强。负载波采用BPSK调制技术,较Type A方案降低了6dB的信号声。
NFC的基本标签类型有四种,以1至4来标识,各有不同的格式与容量。
这些标签类型格式的基础是:ISO 14443的A与B类型、FeliCa,前者是非接触式智能卡的国际标准,而后者符合ISO 18092被动式通讯模式标准。
Type1 Tag:
基于ISO14443A标准,具有可读、重新写入的能力,用户可将其配置为只读。存储能力为96字节,内存可被扩充到2k字节。此类NFC标签的通信速度为106 kbit/s。
此类标签简洁,故成本较优,适用于许多NFC应用。
Type2 Tag:
基于ISO14443A标准,具有可读、重新写入的能力,用户可将其配置为只读。其基本内存大小为48字节,但可被扩充到2k字节。通信速度也是106 kbit/s。
Type3 Tag:
基于Sony FeliCa体系,目前具有2k字节内存容量,数据通讯速度为212 kbit/s。此类标签适合较复杂的应用。
Type4 Tag:
此类标签被定义为与ISO14443A、B标准兼容。
制造时被预先设定为可读/可重写、或者只读。内存容量可达32k字节,通信速度介于106 kbit/s和424 kbit/s之间。
具体总结如下表:
CCC规范要求车端和手机端均必须支持Type A格式,而对Type B和Type F的支持都是可选的。
结合Type1没有数据冲突保护,Type 2安全性较低,个人分析认为CCC数字钥匙一般应该采用Type4的标签。
当NFC Reader发送数据给NFC Type A卡时,采用的是Miller编码方式,之前没用过Miller码,所以专门研究了下,具体如下。
Miller码也称延迟调制码,是一种变形双相码。其编码规则:
对原始符号“1”码元起始不跃变,中心点出现跃变来表示,即用10或01表示。
对原始符号“0”则分成单个“0”还是连续“0”予以不同处理。
1)单个“0”时,保持0前的电平不变,即在码元边界处电平不跃变,在码元中间点电平也不跃变。
2)对于连续“0”,则使连续两个“0”的边界处发生电平跃变。
示例:
NRZ: 1 0 0 0 0 1 1
Miller:10 00 11 00 11 10 01
自己总结成如下三句话:
1) 每个逻辑位包含两个原始位。
2) 逻辑0:中心不跳变;逻辑1:中心跳变。
3) 单个0,保持0前电不变;连续0,两个0的边界跃变。
虽都是免接触,但不同卡的有效操作距离是不一样的。
1) 有些卡操作距离非常短,只有0-2厘米,被称为CICC卡(Close-Couple ICC),中文称密耦合卡;
2) 有些卡的操作距离远一点,可以达到10厘米,被称为PICC卡(Proximity ICC),中文称接近卡;
3) 还有一种更远的,至少可以达到半米或更远,被称为VICC卡(Vicinity ICC),中文称疏耦合卡。
目前常见的NFC卡通常采用Java Card,是一种能运行Java 程序的智能卡。
非CPU卡的访问一般是通过调用函数直接完成的。而CPU卡除了设备命令(测卡、上下电、选卡座等)和卡的复位命令以外,所有卡命令都是通过通用的命令函数执行的。
当两台计算机彼此进行通信时,它们交换根据一系列协议构造的数据包。类似地,NFC卡也使用自己的数据包---称作APDU 。
APDU包含一条指令或响应信息。在智能卡的世界里采用的是主从模式,而智能卡永远扮演从动的角色。
换句话说,智能卡总是在等待来自终端(如手机)的命令APDU。随后,它执行APDU规定的动作,并以一个 应答APDU向终端作出回答。
智能卡与终端(如手机)之间互相交换命令APDU(终端发送)和应答APDU(智能卡发送)。
卡操作命令有统一的格式:CLA(命令类别Class)、INS(命令指令Instruction)、P1(参数1)、P2(参数2)、Lc(命令数据域Data长度)、Data和Le(应答数据域长度)。
关于Java Card及APDU,后面再另外文章研究说明。
1) 智能卡可分为:存储器卡、逻辑加密卡和CPU卡。
2) NFC是一种智能卡,CCC数字钥匙采用的NFC卡是CPU卡。
3) NFC卡从物理特性可分为TypeA、TypeB、TypeF等类型。
4) NFC标签从格式和容量上可分为Type1、Type2、Type3、Type4。
5) NFC卡通常采用Java Card,是一种能运行Java 程序的智能卡。
6) NFC采用APDU数据包进行通信交互。
7) CCC规范要求车端和手机端均必须支持Type A格式,而对Type B和Type F的支持都是可选的。