自支付宝钱包8.0推出了NFC新功能,仅仅要将支持NFC功能的手机靠近公交卡、银行卡等带有芯片的IC卡上,可迅速读取卡内剩余金额、卡的信息,还能够给卡进行充值,很贴心有用。
可是非常多网友表示担忧,要是别人用手机紧贴着我的银行卡,那么信息不就轻易泄露了,这样会威胁我的资金安全吗?并有不少伪专家宣称,NFC手机有可能成为黑客的“提款机”,能够实现转账操作,风险非常大,网友表示非常操心。真实情况是什么样的呢?让我从专业的角度,给大家道出内幕。
NFC(近场通信,NearFieldCommunication),又称近距离无线通信,是由非接触式射频识别(RFID)及互联互通技术整合演变而来,在单一芯片上结合感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换。由飞利浦半导体(现恩智浦半导体)、诺基亚和索尼共同研制开发,其基础是RFID及互联互通技术。
自从2006年诺基亚推出第一部NFC手机開始,如今越来越多的智能手机已支持NFC技术。比方,诺基亚Lumia系列、三星Galaxy及Note系列、索尼Xperia系列、HTCOne系列以及国内小米手机3、Oppo、魅族等部分手机,均已支持NFC技术。有传言iPhone6将添加该功能。
NFC手机可以读取信息的距离,直接决定了获取银行卡号的难易程度。依据网友的測试,发现仅仅要距离超过5cm,就无法读出银行卡信息。所以假设你操心你的信息被窃,那么建议将卡片装入钱包中,信息被窃的可能性就会减少。
用安装有支付宝钱包的NFC手机,不同的银行卡能够读取的信息不尽同样,依据网友測试,结果例如以下:
银行卡 |
卡号显示 |
卡内剩余金额 |
电子钱包剩余金额 |
近10笔交易 |
身份证号 |
广州银行 |
后4位 |
不可读 |
可读 |
可读 |
不可读 |
建设银行 |
全卡号 |
不可读 |
可读 |
可读 |
开头末尾两位 |
交通银行 |
后4位 |
不可读 |
可读 |
可读 |
不可读 |
招商银行 |
全卡号 |
不可读 |
可读 |
可读 |
开头末尾两位 |
中国银行 |
全卡号 |
不可读 |
可读 |
可读 |
不可读 |
工商银行 |
全卡号 |
不可读 |
可读 |
可读 |
不可读 |
农业银行 |
全卡号 |
不可读 |
可读 |
可读 |
不可读 |
我个人用了多家银行数据測试,发现部分银行卡是无法正常识别,经过重复改动数据发现,支付宝钱包是通过读取0201DGI中的数据,识别银行卡号,发送指令00B2011444,所以仅仅要0201的长度不等于44H,多数卡片都会返回6CXX,就无法正确识别卡片。但这不符合PBOC3.0规范要求的,PBOC3.0第五部分B.12 读记录C-APDU/R-APPDU中要求le为00,或许是支付宝有意而为之,仅仅针对合作伙伴的卡片吧。
那么这些信息,是怎样实现的呢?首先看银行卡号,银行卡号在芯片卡内以5A标签存在,通常会存放在0201DGI中,假设发送指令00B2011400就可以读出这条以70模板開始的记录数据,比如返回7081885F24032412315F25031506225A0A6230910299000378541F9F0702FF008E0E000000000000000042031E031F009F0D05D8609CA8009F0E0500100000009F0F05D8689CF8005F280201569F080200308C1B9F02069F03069F1A0295055F2A029A039C019F37049F21039F4E148D1A8A029F02069F03069F1A0295055F2A029A039C019F37049F2103,依据TLV模板规则解析,就可以得到数据例如以下:
标签 |
定义 |
长度 |
数据 |
5F24 |
应用失效日期 |
03 |
241231 |
5F25 |
应用生效日期 |
03 |
150622 |
5A |
应用主帐号 |
0A |
6230910299000378541F |
9F07 |
应用使用控制 |
02 |
FF00 |
8E |
CVM列表,借贷记 |
0E |
000000000000000042031E031F00 |
9F0D |
IAC默认借贷记 |
05 |
D8609CA800 |
9F0E |
IAC拒绝借贷记 |
05 |
0010000000 |
9F0F |
IAC联机借贷记 |
05 |
D8689CF800 |
5F28 |
发卡行国家代码 |
02 |
0156 |
9F08 |
应用版本 |
02 |
0030 |
………….. |
………….. |
………….. |
………….. |
同理,身份证号9F61标签也能够读取到,一般写入到DGI0102中,能够通过00B2020C00读取,这条记录会返回证件号9F61,姓名5F20,证件类型9F62等。
电子现金剩余金额在卡内用9F79标签标识,长度为6字节,眼下最大值为1000元即000000100000,由卡内数据9F77(电子现金剩余金额上限)限制,单笔交易最大额度由9F78(电子现金单笔交易限额)限制。当你的电子钱包剩余金额小于9F6D(电子现金重置阈值)时,卡片会自己主动从主账户圈存金额至9F79。这里介绍的这些数据都能够通过GET DATA指令获取,比如非接触下发送80CA9F7900,就可以获取电子现金剩余金额。但卡内剩余金额是不能够获取的,仅仅有输入联机PIN码,联机情况下才干够。
再来看看交易日志,银行芯片中假设有9F4D(交易日志入口), 那么卡片将会自己主动记录日志,JR/T 0025推荐此值为0B0A,0B表示循环交易日志文件的SFI,此值范围应在11-30之间,0A表示交易日志文件里的记录个数为10条。在PBOC3.0规范第五部分表B.27中提到9F4D是O(可选的),也就是说假设卡片不须要记录日志,那就不是必需写入9F4D。
交易日志格式在个人化数据中用9F4F标签标识,在银联模板中推荐了多组值,比如此值为9A039F2103 9F0206 9F0306 9F1A02 5F2A02 9F4E14 9C01 9F3602,格式为Tag+Length,表示记录日志中应包括:交易日期(9A),交易时间(9F21),授权金额(9F02),其他金额(9F03),终端国家代码(9F1A),交易货币代码(5F2A),商户名称(9F4E),交易类型(9C),应用交易计数器(9F36)。此值由银行依据须要自己定义。终端能够通过取数据(GET DATA)命令获取9F4F的值,在非接界面下发送80CA9F4F00就可以。
那怎样读出记录呢?终端会通过发送读指令获取日志,记录的读取权限为自由,比如发送指令00B2015C00,获取第一条记录,依据PBOC3.0规范第五部分B.12中定义,前两个字节00B2固定,分别为CLA,INS。第3个字节01表示记录号,也就是须要读取第几条记录。5C为我们读取的记录文件标识,我们9F4D中定义为0B,那么0B*8+4=5C。比如我读取第一条记录返回140708095515000000010000000000000000015601566368696E61756E696F6E7061792E616263643132010003,依据上面所列tag解析得到:
标签 |
定义 |
数据 |
9A |
交易日期 |
140708 |
9F21 |
交易时间 |
095515 |
9F02 |
授权金额 |
000000010000 |
9F03 |
其他金额 |
000000000000 |
9F1A |
终端国家代码 |
0156 |
5F2A |
交易货币代码 |
0156 |
9F4E |
商户名称 |
6368696E61756E696F6E7061792E616263643132 |
9C |
交易类型 |
01 |
9F36 |
应用交易计数器 |
0003 |
眼下PBOC3.0规范第13部分中还添加了圈存日志记录, 圈存日志文件的短文件标识符和记录个数在圈存日志入口数据元(DF4D)中规定。 DF4D的第一个字节定义了圈存日志记录文件的短文件标识符, 圈存日志记录文件的短文件标识符取值范围应在11-30之间,JR/T 0025推荐圈存日志的短文件标识符为12 (即0x0C) ,圈存日志入口数据元应在选择应用的时候返回, 由卡片在ADF的FCI中的BF0C模板中返回,和交易日志数据元返回一样。DF4D的第二个字节定义了圈存日志记录个数。卡片应支持至少存储十条圈存日志。依据系统商数据,眼下除银联提供的数据DF4D为0C14,即最多记录20条日志外,其他系统商提供的数据均为0C0A,即记录10条圈存日志。
圈存日志格式在DF4F中定义,此值能够通过Get Data命令获取,发送指令80CADF4F00。PBOC3.0规范第13部分表11中推荐此值为DF4F0E9A039F21039F1A029F4E149F3602,例如以下:
标签 |
定义 |
长度(字节) |
9A |
交易日期 |
3 |
9F21 |
交易时间 |
3 |
9F1A |
终端国家代码 |
2 |
9F4E |
商户名称 |
20 |
9F36 |
应用交易计数器(AT C) |
2 |
圈存日志提供两种读取方法,能够逐条读取,比如发送00B2016400读取第一条记录,64为我们读取的记录文件标识,我们DF4D中定义为0C,那么0C*8+4=64。也可一次性读取所有圈存日志,此目的是为了在自助设备或者发卡行柜台获取由MAC保护的完整圈存日志,以便发生账户差错时为调账提供參考。发送的指令仅仅需第3字节为00就可以,00B2006400。
所以上表所显示的内容完整性,数据的多少,都是能够由NFC手机软件操控的。金融IC卡中写入的大部分数据都能够自由读取,但不用操心卡片会被复制,由于眼下的金融卡中82(应用交互特征)都支持DDA(动态认证),动态认证中须要卡片私钥參与认证,私钥是不能被读取的,所以卡片不会被完整的克隆。
金融IC卡为了交易方便,快捷,大部分银行在接触电子现金及非接触QPBOC环境下,都选择免输脱机PIN,仅仅需签名或免签就能够完毕交易。持卡人验证方法是由卡内数据8E决定的。
终上所述,假设芯片银行卡被未经授权的人使用NFC手机读取信息,可能导致银行卡号、证件号码,姓名等相关隐私信息被窃取,但这些信息并不能直接导致银行卡资金被盗。眼下BCTC送检已经建议银行个人化数据中尽量避免出现姓名和证件号码等内容,这些信息能够由银行后台去关联。
眼下PBOC3.0卡片已经陆续发行,在14部分添加了Q扩展应用,包含地铁应用,公交应用,快速公路不停车收费,停车收费咪表应用,铁路(高铁)应用等,这些应用的交易日志也是能够自由读取的。随着社会的发展,技术的进步,持有类似NFC手机终端的用户会持续添加,那么用户信息的安全性就显得越来越重要。假设银行还想继续和顾客一起愉快的玩耍,那就必须考虑到顾客的担忧,毕竟他是你的上帝。
2014年3月14日中国人民银行支付结算司叫停了虚拟信用卡和二维码支付业务。主要由于虚拟信用卡,定位监管上存在模糊地带,并且触动了银联的利益。但第三方支付企业仍在茁壮成长,并且在鼓舞发展互联网金融的大背景下,二维码支付和虚拟信用卡仍有恢复的可能。2014年5月27日,支付宝宣布将启动“未来医院计划”,也就是“手机医院”,市民能够在家用手机挂号、支付宝付费,到医院直接进诊室就诊,仅仅需在家关注手机“实时叫号”,就可轻松看病。2014年6月18日,支付宝在首届城市建设信息技术产品博览会上,对外宣布了“未来公交”计划,并联手住房和城乡建设部IC卡应用服务中心, 公布了城市一卡通应用,它能让用户把随身的手机变成一张通行全国35个城市的公交卡。随着电子商务的深入,在线支付需求扩大,促使发行虚拟卡的行业越来越多,虚拟卡时代的到来,也意味着物理卡片的消亡。
本博文刊登在《卡技术与安全》杂志 副刊《支付e时代》8月刊 http://blog.sina.com.cn/s/blog_7f5c42650102uze4.html
文/闫鑫原创