SE:Secure Element,安全元件。手机中的一块独立芯片,被硬件级别的加密保护着,其中的信息无法被破解或非法读取。
NFC:Near Field Communication,近场通讯。非接触式连接技术的一种。
PAN:Primary Account Number,主账号。一般指银行卡号。
PIN:Personal Identification Number,个人身份识别码,一般指密码。
CVM:Cardholder Verification Method,持卡人身份验证手段,签名、密码、指纹等都是属于CVM。
POS:Points Of Sales,零售店电子转账终端,就是商家的刷卡机啦。每台刷卡机对应着商家在某个银行的一个账户。实际上每一笔刷卡交易银行都会收取一定比例的手续费,这也是一些商品购买时如果刷卡要多付几个百分点的原因。
Token:令牌,用于代表用户已通过身份验证的东西。
比如乘火车时,乘务员会要求你出示火车票(相当于用户名)和身份证(相当于密码),确认无误会换给你一个卧铺的铁牌。持有此铁牌,就意味着乘务员已经验证过车票和身份证了。Token技术其实在互联网领域很常见,比如你用浏览器登录邮箱、微博之类的网页勾选了“记住密码”,那么服务器在验证了你的账号和密码之后会生成一个字符串存在你的浏览器里,这个字符串就是Token。不管你刷新网页、重启浏览器甚至重启电脑,只要浏览器出示这个字符串给服务器,服务器就会认为你已经通过了账号和密码验证,允许你进行登录后的各种操作。
MST: Magnetic SecureTransmission,安全磁力传输。
是一种磁道模拟技术,三星前段时间在S6手机上加了这个功能,这个功能需要硬件的支持,手机在靠近POS机的时候会发现磁模拟信号,POS机上的磁条刷卡器会感应到,整个过程就像是刷一张磁条卡。
CBP:cloud basedpayments,云端SE。
传统的CPU卡都是基于安全芯片的,这个芯片就是一个SE。HCE要模拟卡片,手机上硬件理论上也应该有这么一个SE,但是因为安卓手机的操作系统是开源的,容易被ROOT,很难在本地建立这样的安全环境。于是有人提出了基于token技术的云端SE概念,也就是把保密的数据放在云服务器端,每次交易时都去获取,这样的一个云服务器端就是一个CBP。
在一开始,让我们假设这样一个平行宇宙,在这个宇宙中的地球上只有一家银行。在这种情况下,所有消费者的信用卡、储蓄卡和所有商家的POS机都属于这家银行。而这种情况下,每个人的账户实际上是这家银行数据库中的一行,而某个账户内的余额/剩余额度则是这一行中其中一项。在这种情况下,交易的进行非常简单,当某个消费者在某个商家处买了10元钱的东西并刷卡付款时,银行只需要将该消费者账户上的数字减10,然后把这个10加到商家的账户数字上就可以了,数据库的数值之和保持不变。
而我们身处的宇宙显然复杂得多,地球上存在着数不清的银行,每家银行都有自己独立的数据库。这时,持有A银行信用卡的消费者要在某商家消费,而该商家的POS机对应商家在B银行的账户,那么A银行就必须和B银行沟通,A银行从自己的数据库中扣掉相应的数字,然后B银行在自己的数据库中增加相应的数字,然后两家定期结算(比如一天一次),真实的钱才会在银行间转移。而地球上那么多银行,让银行彼此之间点对点地沟通显然是不科学的,于是信用卡组织这个机构充当了银行之间的交流桥梁,A银行只需要和信用卡组织沟通,然后让卡组织传达给对应的银行就可以了。常见的信用卡组织有Visa(维萨)、MasterCard(万事达)、AE(AmericanExpress,美国运通)、Diners Card(大莱)、JCB(JapanCredit Bureau,日本信用卡株式会社)和中国的银联(UnionPay)等。
缩写说明中说的刷卡手续费,实际上会在消费者的发卡行(A银行)、商家的POS机收单行(B银行)和卡组织之间按照一定的比例瓜分。比如刷卡手续费是0.1%,消费者刷卡1000元,商家实际上只能从银行拿到999元,剩下的一元手续费中7毛归发卡行,2毛归收单行,1毛归银联。
银行发出的卡数量巨大,如何确定某笔交易要记在哪个人的账上呢?这就需要PAN来发挥作用,也就是你的卡号;而如何验证要求把这笔交易记在你账上的人是你本人呢?这就需要只有你知道的信息——PIN,也就是密码来验证了。这两个概念类似于QQ号和密码,在互联网时代很容易理解了。
假设不存在银行卡这种实体,那么你在消费时就要输入冗长的银行账号外加密码,不仅十分不便,更是十分不安全;银行账号作为一串信息可以很轻易地被别有用心的人记录和复制,从而发生盗用的情况。而银行卡的意义就在于此:卡片作为实物,被盗取和复制的难度要远大于记住一串数字。制作一张银行卡,上面印有你的独一无二的PAN,那么这张卡片就成为你的账户所有人身份的实体证明。
在最开始,银行卡的使用并不是刷卡的。没有磁条的时代,银行卡只是一个塑料片,上面有凸起的卡号。消费时,商家把卡片放在自带复写性的账单下用力压过,卡片上突起的卡号就会拓印在账单上,经由持卡人签名后账单就生效了,商家拿带有签名的账单去银行就可以换成钱了。这也是为什么现在大部分银行卡都用印刷卡号取代了凸起的卡号,因为手工压单的记账方式已经被淘汰啦。
既然银行卡代表了账户所有权,那么保证这张卡片的唯一性和不可复制性就变得非常重要了。实体的塑料片虽然不那么容易复制,但也并不是完全不可能的(只要做出对应的模具就可以了),而卡号信息就明明白白的在卡上呢。于是紧接着,磁条卡取代了这种银行卡。
就像磁带一样,磁条用磁迹代表信息,比如某个位点上有磁性是1,没有磁性是0,那么一连串10组成的二进制字符就可以用来存储信息了,上面就是我国磁条卡存储信息的格式,其中的主账号就是最重要的PAN啦。银行卡的磁条需要对应的刷卡机才能读取,因此大大增加了卡片的复制难度。但道高一尺魔高一丈,市面上又出现了磁条复制器,它同样可以读取磁条信息,将读取的信息按照相同的规则写到空白磁条中,一张复制卡就被制造出来了。现在ATM机的插卡口都装有一个奇怪的嘴巴,就是为了避免坏人在上面安装磁条复制器盗取消费者的银行卡信息。
技术继续进步,半导体技术的发展使得集成电路越做越小,小到可以做成一张小小的金属芯片贴在卡片上,这就是IC卡(IntegratedCircuit Card,集成电路卡),上面的金属片实际上是一个微型计算单元,可以像计算机一样进行一些简单的运算。IC卡的应用相当广泛,最典型的比如SIM卡就是其中一种。IC卡这种形式也很快造福了银行业,Visa、MasterCard等卡组织联合起来制定了新的银行卡标准,名为EMV(EMV是当初参与制定标准的三家卡组织首字母缩写:Europay、MasterCard、Visa)。在国内,银联也推出了类似的自主标准,名称为PBOC(中文名叫《中国金融集成电路(IC)卡规范》,大概是The People's Bank of China 中国人民银行的缩写?),这种IC银行卡在国内被称为「芯片卡」。
由于芯片是计算单元,因此可以在内部定制一些算法,在每次交易的时候生成一个一次性的随机数,当作加密PAN的密钥。这种算法由于是固化在芯片上的电子线路,每张卡片都不同,并且只有发卡的银行才知道。进行交易的时候,加密后的PAN传输到银行,银行会用相同的算法生成密钥,把加密信息解码转换成真实的卡号。得益于加密和动态随机数,EMV芯片卡几乎无法被破解、复制,达到了相当安全的程度。
既然芯片上是一个拥有计算功能的单元,那么就可以用它实现更多的功能,就像智能手机可以装很多App一样。在EMV和PBOC中都规定了芯片卡的更多用法,比如芯片中可以同时存储多个账号,除了银行卡PAN之外还可以记录社保账号、医保账号等,甚至可以用作门禁卡等等。银联在最开始推出的「挥卡闪付」,实际上就是在芯片中设立一个单独的子账户,银行允许POS在读写这个子账户的时候不必与银联进行通讯验证(即离线交易),因此这个子账户没有密码,也因此有额度限制(子账户上最多可以放1000块)。钱从银行账户转到这个子账户上需要通过ATM圈存,就像你把银行卡里的钱圈存进校园卡或者公交卡一样,圈存的时候需要在ATM上输入交易密码。之后就可以在支持NFC的POS机上像刷公交卡一样刷卡付费,钱会直接从这个子账户扣除,不需要密码。由于子账户里的钱在圈存的时候已经验证过交易密码了,因此不存在卡丢了被别人捡到,先转到子账户再花掉的情况。你可以这样想:你的公交卡和银行卡放在一起,然后两张一起掉了,捡到的人能把银行卡里的钱转到你的公交卡里,然后刷公交卡花掉么?显然是不能的。
银行卡交易安全中有两个重要的概念,叫做“盗卡交易”和“伪卡交易”。伪卡交易指的是坏人复制并伪造别人的银行卡拿去消费,这种情况在芯片卡的安全机制下基本不可能了。而盗卡交易则是指坏人偷走消费者的银行卡,用这张真实的卡去消费。为了避免这种情况发生,银行就要求在进行交易时验证持卡人身份,这就是CVM的作用了。
国外有着悠久的信用卡使用历史,所以签名是主流的验证方式。这就是卡片背面那个「持卡人签名」区域的作用:办理银行卡的时候需要办理者本人在这里签名,而持卡进行消费时,商家有责任对比账单上的签名是否和卡片背面的签名相似,如果不同商家可以拒绝接受;而如果坏人盗用别人的银行卡进行消费而商家没有核对签名,持卡人在收到银行的月结账单时可以要求核对这笔交易的签名,如果签名不是自己的可以拒绝支付,银行就不会把这笔交易的钱给商家。而我国信用卡业务起步较晚,因此直接一步到位使用了密码(PIN)作为验证手段。这也是为什么各种信用卡攻略建议大家不设密码的原因,因为原则上密码是你自己设的只有你自己知道,而商家是无法在这笔交易时验证知道这个密码的人是不是你本人,所以万一被盗刷,责任都是你自己的。
而随着技术的发展,更难破解而且使用更方便的指纹也成为新的验证方式。在盗刷现象严重的巴西,指纹已经成为相当普遍的身份验证手段,成为金融安全的有力保障。
这里需要补充一点的是,上一篇我们说到指纹其实不比密码安全,而这里又说指纹比密码更可靠的原因是:1.手机上的指纹识别其实是把密码用指纹保存起来,最终实际的身份验证过程还是验证密码,只是增加了一道环节,而多一道程序就多一道风险;而巴西的银行业则是银行端知道你的指纹信息,在交易时直接验证指纹是否相符,而银行可以使用更严格的指纹对比算法让指纹被蒙对的概率小于密码被蒙对的概率。2.密码在发生泄漏后可以修改,但指纹是不可改变的,因此一旦泄漏后的损失更严重;在ATM上盗取密码远比盗取指纹简单(安装一个针孔摄像头或者在键盘上装一个密码记录器就可以了),而一个可以高精度读取指纹同时还不影响ATM机本身指纹识别功能的指纹盗取设备制造难度非常高。
三星S6有两种充电方式,可以接数据线充电,也可以用无线充电。无论哪种方式,电量都是输入到同一块内置电池中。类似的,EMV/PBOC规范中也包含了两种与卡片中芯片的通讯方式:接触式的芯片读取,由读卡器直接接触芯片为其计算供电,同时与其通讯;非接触式的无线读取,读卡器产生磁场,磁场在卡片内的线圈内感应生成电流,线圈连接着芯片,电流驱动芯片进行计算,计算结果再通过操纵线圈的电流变化产生电磁波,进而与读卡器通讯。这种无线的通讯方式就是被称为NFC的技术。打开支持NFC功能的手机,你会发现它的背面同样有一些线圈,这些线圈就是用来产生与读卡时类似的电磁波,进而进行通讯的。
无论接触式还是非接触式,进行运算的是同一块芯片,因此对于银行来说是一样的。而NFC这种无限通讯方式相比之前的芯片直接接触更方便,并且可以兼容手机,因此成为新的推广热点。各大卡组织都给这种新的刷卡方式起了洋气的名字,比如Visa的叫payWave,MasterCard的叫payPass,而银联的则叫做QuickPass(闪付)。
二维码和磁条有些类似,磁条是把信息通过一定的规律变成磁迹,而二维码则是把信息变成图形。读取磁条是通过读卡器读磁迹,然后转换回原始信息,而二维码则是通过摄像头读取图形,然后转换回原始信息。这些都只是通讯的渠道而已,对安全性起决定性作用的,还是通过这些通讯渠道传输的数据是如何被保护的。
用一张表格来简单总结一下前面的内容:
既然银行卡只是一个存储着PAN信息的芯片,那么只要把PAN信息存储到手机里,手机就变成银行卡了。那么问题就来了:首先为了避免PAN在传输过程中泄露,必须要将其加密,而解密的方法只能由手机和银行两方知道;其次PAN信息在手机中存放必须要保证安全,不能被别人偷走;再有就是手机内存储的PAN信息以何种方式和POS机沟通。这就是NFC大显身手的地方了。
手机上的NFC功能一共有三种模式,与手机支付相关的只有一种,就是卡模拟模式(Card emulation mode)。在这种模式下,手机会通过NFC线圈以类似NFC芯片卡的方式与POS机通讯,POS机会认为手机是一张银行卡。而用于代替银行卡芯片的,就是手机中的SE(安全元件)了。SE可以像EMV芯片一样存储PAN信息,以及在交易时生成用于加密PAN信息的动态随机数。和银行卡不同,手机的功能更丰富,也就有更多被破解(比如越狱、Root等)的可能,因此SE被设计为与手机系统完全独立而且以硬件级别的加密保护,无法被系统以任何方式读取,以此来保护其中PAN信息的安全。即使真的有人破解了SE、提取了其中的PAN信息也无法使用,因为SE生成动态随机数的算法和EMV芯片一样是固化在芯片中的电子线路,每张芯片、每块se都不同,而且这个算法只有被银行认可才有效。而SE芯片也是要单独花钱买的,根据愿意掏钱的厂商不同,手机内置SE的方式有三种方案:
1)eSE(embeddedSecure Element,嵌入式安全元件)。这种方案把安全元件安装在手机内部,主板上,成本自然由手机制造商承担。Apple Pay、SamsungPay是这个方案。银行在允许手机的eSE存储PAN信息之前,必须要检测SE的安全性是不是万无一失的,而检测结果只对单一机型有效。像Apple这种一年只一款机型的厂商还好,像三星这种采取机海战术、一年几十款新机的厂商就需要逐一送审,进程非常缓慢。(这也是为什么目前Samsung Pay只支持GalaxyS旗舰系列的两款产品的原因,其他机型要等银行慢慢审核)。
2)TSM(TrustedService Manager,可信服务提供商)。这种方案把安全元件安装在可替换介质中,然后将介质插入手机。典型的介质是SIM卡和MicroSD卡。三大运营商在推广的手机钱包就是采用这种方案,印着NFC-SIM字样的SIM卡即为内置SE的SIM卡。这种方案同样需要运营商把SIM卡芯片送到银行检测,因此普及也很艰难。
3)HCE(Host-basedCard Emulation,基于主机的卡模拟)。前面两种方案都需要银行以外的厂商参与,普及非常地缓慢和高成本。于是在Android 4.4推出的时候,Google提出了一种名为HCE的技术方案。HCE只需要银行在自己的服务器上进行技术部署,在交易时向手机的银行App下发一次性的交易信息,完全不需要手机制造商以及运营商参与,因此推广的速度和普及的成本都明显优于另外两种方案。
HCE方式不需要SE安全模块,由在手机中运行的一个应用或云端的服务器完成SE的功能,也就是说NFC芯片所接收到的数据会由操作系统发送至手机应用里,或者通过移动网络发送至云端服务器中来完成交互。无论是本机应用还是云端服务器都绕过了手机内置SE的限制。
到这个阶段为止无论是eSE、TSM还是HCE,这三种方案都只是把手机当作银行卡。在使用手机支付的时候相当于原先的刷卡支付,因此还是需要延续对应银行卡所采用的CVM(签名或者密码)。想想看这是是多麻烦的体验:消费的时候刷了手机还要在POS机上输密码,那还不如直接刷卡呢……
尽管芯片卡和SE几乎不存在被破解的可能,但万一真的发生了就必须作废PAN换一个新的,连带用户需要更新所有绑定了这个卡号的登记信息(比如要和公司沟通登记新的卡号作为工资转入卡、需要和水电煤公司更新账单自动扣款的卡、需要在支付宝和微信之类的支付渠道重新绑定新的卡等等)。并且在用手机支付的时候还要输密码实在太麻烦了,有没有什么方法可以保护如此重要的PAN呢?这就轮到文章一开始说的Token出场了。
如果可以用某个特定的数字序列代替PAN+PIN,那么手机送出这串序列就会被银行认为等同于刷卡+输密码,从而不需要再在POS输入密码。银行收到这个序列会翻译成对应的PAN进行记账操作,而整个支付流程中除银行以外的环节完全无法获知真实的PAN,实现了最大限度的安全。这样同时解决了PAN和CVM两个方面,真正让手机支付变得可用。
这种技术叫做Tokenization(令牌化),是由EMVCo机构在2014年加入EMV规范的。应用这项技术之后,手机绑定银行卡时,银行向SE发送的不再是真实PAN信息,而是一个由银行生成的、价值等同于PAN+PIN的特定数字序列,这个序列就是Token(令牌)。这个序列在银行内部会被翻译成某个银行卡号,但在银行以外的环节中则只是一个无意义的数字。而由于这串序列是银行生成的,银行可以自行决定它的有效性,通过加上一系列限定来增强安全性,比如限定这串序列只在开户行所在城市的POS上有效,只能在大商场的POS机有效,只能用于线下的实体交易,有效期只有一个月过期自动失效等等,相比PAN要灵活得多。
举个粗劣的例子:你用豆瓣账号买一张电影票,得到一串序列号。在取票机上输入这串序列号,豆瓣的服务器就知道是哪个账户买了什么票,从而吐票给你,整个过程中除了你和豆瓣服务器,没有任何人知道你的豆瓣账号和密码是多少。而如果不幸这个序列号被别人知道了,你只需要联系豆瓣,豆瓣的服务器会自动作废这个序列号,并且生成新的序列号给你。同时如果你买了多张票,豆瓣也可以生成多个序列号。也就是说,一个银行账号可以对应不止一个Token,而Token的启用与作废对原卡号没有影响。
Tokenization可以和前面三种手机支付安全方案任何一种搭配,只需要银行在手机绑定银行卡的时候把下发给手机的信息从PAN换成Token就可以了。银行会把下发的Token信息和设备绑定,一个Token只有由绑定的设备送出时才会被认为有效,并且在送出前同样会经过SE产生的随机数加密,因此即使万一别人偷走了Token也完全没有任何用处。在手机新增绑定银行卡的时候,银行会通过PAN+手机号+短信验证码验证这项操作是由持卡人要求的(在支付宝、微信绑定过银行卡的你一定不会陌生这个步骤),因此安全性有保障。
银行卡的支付流程是这样的:消费者刷A银行的卡,加密的PAN和PIN经由商家的B银行POS机传输到B银行,B银行转给卡组织,卡组织向A银行提出扣款申请,A银行确认扣款,扣款成功的信息回传给POS机,POS机打单。
而手机支付的流程是:消费者刷绑定了A银行卡的手机,手机送出来自本地SE或者云端SE的Token信息,经由商家的B银行POS机传输到B银行,B银行转给卡组织,卡组织将Token翻译成卡号,然后向卡号对应的A银行提出扣款申请。A银行可以直接确认扣款(或者向POS机要求PIN进行二次验证),扣款成功的信息回传给POS机,POS机打单。
而在进行交易的时候如果银行对Token的使用有质疑(比如这个Token上午10点才在上海久光用过,下午3点又通过北京国贸的POS机送过来了;或者要求一笔2000块的记账),可以要求POS机输入PIN进行二次确认。而银联给各大银行的建议是,为了方便手机支付的使用执行小额免密策略,单笔300元以下的消费可以不要求输密码(这个额度可以由各银行自行设定);而为了进一步保障手机支付的安全性,央行规定任何形式的手机支付都要设定额度上限,这就是网上流传Apple Pay单笔限额600元,单日限额3000元的由来(具体数额有待确认,ApplePay现在还没正式启用)。同时,为了保护更易被盗窃的手机,如果手机绑定的信用卡不设密码(凭签名交易),那么在绑定时银行会要求设定一个专门用于刷手机支付的交易密码,以便加强保护。
手机支付这样的交易逻辑其实仍然是实体卡片的交易流程,因此只要接受银行卡的地方就是可以使用手机支付的(当然POS机需要支持NFC,而根据现有数据,全国1700万传统POS机在今年10月前已经至少有80%支持NFC了);并且由于Token在银行端会被翻译成PAN,因此你银行卡原有的刷卡优惠和积分方案都会无条件地继承到手机上。而最重要的支付安全方案,延续自实体卡片交易的手机支付的安全性至少是不弱于当前银行卡体系的;而一张银行卡最多可以绑定三个移动设备,设备丢失或者不想再使用手机支付了,消费者随时可以致电银行卡的发卡行作废Token,手机就立即失去支付能力了。
实际上在国外有一种“无卡银行”,就是用户开卡的时候只会得到一个PAN并开通手机支付,自始至终不会有实体银行卡的存在,也就避免了卡号泄漏的风险。只可惜在国内虽然各大银行也愿意做这样的尝试,但央行叫停了无卡银行的探索。希望当手机支付普及、刷手机消费的理念深入人心之后,国家能开放更多的成长空间吧。
SE发出的Token同时代替了卡号和密码,那么如何保证手机不被别人盗用呢?这就是Touch ID发挥作用的时候了。上篇关于指纹识别的文章里已经介绍过了:手机感应到POS机的NFC信号会启动支付流程,但保存Token的SE经由Touch ID高强度保护,只有指纹验证通过才能激活SE以送出加密Token信息。这样也许比较好理解:当银行卡绑定到iPhone里的时候,就像微信账户登录到某台手机上;而要使用支付手机中的支付信息,就使用打开了登录锁的微信,要先解除手机自身的锁定(比如指纹、锁屏密码或者解锁图案)才行。而Touch ID或者iPhone本身被破解的可能性……呵呵。
除了银行卡,Apple Pay还可以用于模拟任何基于IC芯片的NFC卡(SE性能比IC芯片强那么多,一个顶它好几个也是应该的),比如各种超市的购物卡、咖啡连锁店的储值卡等等。之前传出Apple正在与公交卡公司谈判将ApplePay用于公交刷卡的消息,就是因为公交卡本身就是一张NFC的芯片卡。也许再过几个月你就可以刷iPhone乘地铁啦。
实际上很可能Tokenization技术就是Apple怂恿EMVCo机构扶正的。早在2008年,苹果就提出了类似Tokenization的专利申请,并且于2011年正式通过。这些幕后消息无从验证,但在ApplePay发布的当天Visa等6家机构就同时推出了将Token与PAN相互翻译的VisaToken Service等服务,说Apple没有和他们开小灶才奇怪吧。
特别要注明的是,Apple Watch是可以独立完成移动支付的。苹果并没有把Apple Watch当作一个配件,而是一个可以独立使用的支付设备;苹果在它身上装载了SE(用于存储Token信息)、NFC(用于与POS机通讯)和佩戴者身份验证机制(防止盗用,手段包括:手表一旦被摘下就会关闭SE使其失去支付能力,重新戴上后需要输入手表的锁定密码以认证使用者身份等)。单说支付功能,Apple Watch和iPhone6是完全一模一样的,这使得ApplePay的适用范围大大拓展了:iPhone 5或者5s这种不支持ApplePay的老机型,可以不用换手机,而是买一只AppleWatch搭配使用,支付完全使用手表来进行就是了。
也许一个月之后,你出门跑步健身的时候就可以把手机留在家里,需要在便利店买水时直接刷Apple Watch了。
Samsung Pay的技术原理几乎和Apple Pay是一样的,而三星则在通讯方式上玩出了新花样。 Apple Pay和其他手机支付方案技术都选择了NFC,这种通讯方式需要POS机的支持(还记得前面提到卡组织给这种方式起的各种名称吗),而POS机的升级更替需要相当长的时间,很多小店(比如偏远地区的小商店、国外的各种流动餐车)不愿意掏钱更换,因此消费者在这些地方就无法使用任何需要NFC的支付手段了,而SamsungPay正是瞄准了这个痛点。
SamsungPay在NFC通讯之外,额外拥有一种独特的通讯技术,叫做MST(MagneticSecure Transmission,磁性安全传输)。手机内部的元件会通过线圈产生特定的磁场,使得POS机认为这是一张磁条卡的磁迹(但是送出的信息仍然是加密的Token,因为Token翻译成PAN+PIN是POS后面的卡组织负责)从而在老式POS机上完成支付。MST并不是三星自己开发的,而是来自于其去年收购的一家叫做LoopPay的公司(话说在被收购之前,LoopPay推出的基于MST的外设实际上可以在iPhone和Android上通用……三星收购后肯定就只给自家手机用啦。当年垄断了指纹识别一整年的Apple风水轮流转啊)。
进行支付的时候,Samsang Pay会同时激活NFC和MST,就看POS机接受哪种通讯方式啦。根据央行的红头文件,国内目前所有的POS机已经不能降级交易(见2014年5月14日,人民银行印发《关于逐步关闭金融IC卡降级交易有关事项的通知》),意思是说如果POS机同时支持芯片卡和磁条卡,那么在刷卡时会拒绝读磁条强制要求插卡读芯片,除非银行卡没有芯片只有磁条。内置SE的SamsungPay会被认为是NFC的芯片卡,因此在这种情况下会优先走NFC渠道。
SamsungPay同样会使用指纹或者锁屏密码来保护手机不被盗用,加上可以兼容老式刷卡机,竞争力反而超越了打头阵的Apple,后生可畏啊。
SE作为单独的硬件,无法简单加装,那不想换手机的消费者就不能用手机支付了吗?并不是,前面介绍的HCE方案把SE转移到云端,每次支付时由设备向云端SE申请一次性支付信息的方式完全免去了设备的负担,只需要设备支持NFC就可以了——因为这是手机与POS机通讯的唯一方式。这使得所有支持NFC的手机瞬间拥有了移动支付能力,潜在用户群体远超过Apple Pay和SamsungPay。
Google在国外推行的可适用于任何拥有NFC功能的手机的AndroidPay和银联今年双十二正式开始启用的「云闪付」就是基于HCE+Tokenization了。Google仍然被挡在国门外就不提了。银联的云闪付则是由各家银行的App担任Android Payapp相同的功能,只是由于各家App只管自己家银行的Token信息(银联把这个一次性的Token信息称作「云卡」),因此如果消费者想在同一台手机上使用多家银行的云闪付功能就要安装多个App,相对来讲比较繁琐。
HCE方案提出的原因是,Google假设所有Android设备都可以被Root(很有自知之明嘛),因此如果Token储存在本地无论如何都可能被读取。而通过将SE芯片转移到云端,每次支付时由App向云端服务器申请一次性的解密密钥,使得手机内存储的支付信息有效性仅限于当此支付,因此即使不幸被盗取,被盗的信息也完全没有用处。当然,为了方便使用,银行服务器可以自行指定手机获取到的临时密钥的数量及有效期,在兼顾安全性的同时是非常灵活的。
Apple Pay和Samsung Pay尚未正式开放,而银联的云闪付也仅仅开通不足半月。但实际上在大陆地区,有一种手机支付方案已经开通了两年之久,这就是移动运营商主推的手机钱包。
移动、联通和电信主推的手机钱包都是基于TSM方案,即SE芯片被放置在SIM卡中,借助手机的NFC与POS机通讯。如果SIM卡是包含SE的NFC-SIM卡,那么消费者可以下载运营商的手机支付App,向SIM卡中的SE写入PAN/Token信息,即可让手机变成一张NFC芯片卡啦。不过问题是,SE真的是不便宜的元件呀……采用这种TSM方案做得最好的是移动(客户端App叫做「和包」),获得了包括招商和浦发在内的多家银行的支持,还可以把手机当成公交卡乘坐上海的公交车和地铁。但移动正常发出的SIM卡都是不含SE的,支持SE的NFC-SIM要办理相关业务并支付额外20块的SIM卡换卡费才行,这就是为啥移动默默推广手机钱包两年了,没看到几个人在地铁刷手机的原因……
说到移动的手机支付,顺带提一下移动走过的歪路吧。支持SE的NFC-SIM需要借助手机本身的NFC元件与POS机进行通讯,而一些没有NFC功能(点名小米,为了推广手环采取的去NFC策略砸了自己的脚)或者iPhone这种不允许第三方应用使用NFC的手机怎么办呢?于是移动在早期采取的方案叫做RFID-SIM(RadioFrequency IDentification,射频识别),RFID和NFC在技术上比较相似,但使用的通讯频率是2.4Ghz(NFC使用的是13.56Mhz),因此信号有很强的穿透力,而且不需要额外的天线,即使SIM卡在手机内部、手机外壳是金属壳(比如iPhone)也可以使用。深圳地铁的中国移动地铁手机钱包专属通道闸机就支持这个频率的信号读取。但是RFID-SIM在这个好处之外有一个劣势,就是由于发射信号的频率高,需要更高的能量,因此必须要手机向SIM卡供电才行,如果手机是关机或者没电的状态就不能用了,但NFC-SIM则可以利用手机的NFC线圈从闸机读卡器上获取电能来驱动,因此无论手机是关机还是开机、亮屏还是锁屏都是可以使用的。
手机支付的困境在于,由于是移动运营商主导的,因此运营商和银行的谈判非常艰难,而云闪付则是由银联推广,其号召力是无可比拟的。TSM方案实际上是兼顾安全性和成本的方案,但使用起来并不容易,最终落得如此下场也再次证明了,移动世界永远是用户体验为王。
支付宝和微信支付是已经在生活中相当普及的支付手段了,由于其通讯是基于二维码,因此完全对手机没有任何硬件上的要求,加上隔三差五的推广补贴,相信大部分人都有使用过这两种支付方式的体验了。
但是深究其背后,支付宝和微信这种二维码支付方案,和前面介绍的Apple Pay、SamsangPay和云闪付支付是完全不同的。前面的几种实质上只是传统银行卡的技术改良,最终的交易流程仍然需要发卡行、卡组织和收单行的参与,而这些机构都是可以从中获利的。但支付宝和微信呢?实际上它是完全打破了这种支付流程。消费者提供二维码,商家扫描二维码,交易的金额实际上是从消费者的支付宝账户直接流向商家的支付宝账户,中间不经过任何银行和卡组织。这也是银行和银联对支付宝们百般为难、甚至曾经出现过禁止二维码支付的红头文件的原因。还记得本文最开始所假设的“全世界只有一家银行”的平行宇宙吗?支付宝们其实就是在向那种情况发展。无论钱怎么流转,都是一直留在支付宝的平台上,而即使以一个非常小的比例计算,这些留在支付宝平台上的钱会产生巨额的利息收益,更不用说支付宝们拿走了原本属于银行们的手续费。这就是支付宝和微信肯下血本巨额补贴推广的动力所在,而他们的野望,是直接取代银行,这也是银联挑了双十二这天发布云闪付阻击扫码支付,向支付宝们宣战的原因。
从技术层面讲,支付宝和微信的安全策略要远比前面几种简单,因为前面的所有支付方案都是基于硬件的,而支付宝们仅仅是在App中内置了某个随机数生成算法而已(每个账户的算法都不同),这个算法的成果就是每分钟生成一个新随机数、随机数扫描一次即失效。支付宝们的服务器端同样是运行着这些算法,商家扫描到的条码形式的数字序列被送往支付宝们的服务器进行对比验证,如果一致则被认可为这是某个账户的支付凭证,进而完成支付。
这种支付方式的危险性在于,首先支付码是对人可见的(显示在屏幕上呢),有被其他人获取到的可能;其次这是基于软件的算法,既然是软件层面的就存在着被破解的可能,电脑上各种付费软件的算号器一直层出不穷,而电脑的计算能力可是比手机强大得多了啊。还有一个最重要的因素是,这种支付方式的身份验证是先验的,也就是在你打开二维码支付界面之前,你已经对这个支付码的权限进行授权过了(通过账户的登录密码、通过App本身的锁定密码等),而此时你根本不知道收款方将要收取你多少钱。这相当于你开了一张空白支票给商家并提前签了字,商家是否会如实填写收款数额呢?如果商家不小心手抖点错小数点了呢?亦或者这张支票在商家填写之前被其他人偷走了呢?如果你曾经有过和支付宝、微信进行沟通的经历,相信你会明白将这些非你本意的交易取消要花多少精力。
在现在的推广阶段,云闪付的手续费要比传统刷卡支付低一些,因此可能会促进商家尽快支持;而银联同样对刷卡和手机支付给出了补贴来拉拢消费者(比如自进入12月以来银联推出的刷62开头的银行卡满20减10的活动,磁条卡、芯片卡、拍卡联机闪付还是手机云闪付都有效)。只是这样的补贴是否能说服已经非常习惯扫码支付的消费者们还有待观察,更不用说银联和银行相比支付宝们可是小气得多了……
实际上根据最新数据,我国非刷卡交易(含网上交易、扫码支付、手机支付等)的交易额仅占交易总额的10%左右,还有相当大的增长空间。像买车、买房等大宗消费仍然是以银行卡线下支付为主。希望乘着互联网+的东风,互联网商务和手机支付能尽快进入消费者们的生活,让技术真正带来便利和安全。
总结前面所有支付方式,本文可以缩略成这张最终的表格:
按照不同的用户选择,这里给出对应的方案选择推荐:
对于iPhone用户,你们唯一的选择显然就只有Apple Pay了。如果是iPhone6/6s用户,直接使用手机即可体验ApplePay;对于iPhone 5/5c/5s用户,只需要额外搭配一只Apple Watch同样可以实现。
对于其他Android用户,首推选择云闪付。这种方式对手机的唯一要求就是NFC,现在不带NFC的手机都难找了吧(再次点名作茧自缚的小米)。虽然银联列出了云闪付的手机支持列表,但实际上云闪付的技术本身对支持NFC的Android手机来说是没有任何区别的,无论国行水货,无论高端低端。
对于身处三四线小城市、身边商家尚未普及闪付POS机的用户,Samsung Pay将是完美的选择,只需要记得下次手机选择最新款的三星Galaxy旗舰,或者2016版的A系列(A5、A7、A9)即可。
同时,对于打算使用移动支付的用户,建议您指定一张信用卡专门用于手机支付使用。手机支付的最佳应用情景是小额高频次消费(直击支付宝命门),因此专用的银行卡可以方便你确认交易安全性,方便排查疑问交易。
最重要的,由于手机相当于银行卡,因此请务必为手机设置锁屏密保,避免手机丢失后造成额外损失。对于密保方式,首推指纹或图案锁,方便快捷;如果你习惯使用密码,将重要的人的名字按照K9键盘(比如各种九宫格拼音输入法)转换成数字,将会是兼顾易记和安全的好密码。
1)安全单元和模拟安全单元
尽管基于SE的NFC技术已经使用了很多年,它仍然有很多可提升的空间。它有如下两个缺点:
第一,这种方式下,发卡行发布应用时要依赖设备厂商或者运营商,因为他们拥有对SE的控制权(比如NFC-sim卡的方案,SE集成在sim卡中,移动或者电信这样的运营商拥有控制权)。
第二,后续升级,同样要继续依赖设备厂商或者运营商提供支持,最终会导致用户体验很差。
即使最近android pay和apple pay,对像银行这样的金融机构也不是很方便,而且还要手续费。(android pay和apple pay是NFC全终端方案,这种方案对银行来说也要依赖手机厂商)。基于这些情况,HCE这种在云服务端模拟的虚拟SE技术有如下的好处:
第一,可以保护卡片信息,密钥等数据,同时金融机构又对SE有绝对的控制权。
第二,交易更新灵活方便,不用和设备厂商或者运营商再扯上关系。
第三,银行可以使用自己的令牌,而不是用卡组织的。(visa,mastercard等)
2)基于云端的支付
HCE方案依赖于云服务器端的安全,而并不是像传统的NFC支付一样依赖本地的硬件安全单元。传统的支付模式下,最重要的元素是卡号。HCE架构下银行可以把用户的卡数据转换成安全的令牌存储在云端。这种模式可以为发卡行和其它金融机构带来更高的灵活性并且应用在更广阔的领域。
在HCE的模式下,整个交易发生在发卡行拥有的一个安全的云服务端。避免了本地入侵的风险,同时对数据的传输起到一个保护作用。这些都得益于银行本身可以对控制整个安保环节。
SimplyTapp的解决方案正是基于此,移动端可以从发卡行的云端取受信的令牌并用它和POS终端进行数据交互。
3)HCE对支付行业的影响
在目前消费都已经持有多张卡的情况下,基于手机的移动支付要获得较高的接受度必须要做到操作简单,使用成本低。
基于HCE的移动支付方案被大多数卡组织推崇,不光安全,它的架构非常灵活可以适应未来多变的支付需求。
HCE可以使发卡行改变原有的基于硬件的安全方案,改为银行可以控制的云端安全方案。这将会影响整个支付生态并提高移动支付的可接受度。
摆脱了对设备厂商和手机运营商的依赖后,HCE的接受度变得更高。对开发者来说,他们开发和发布移动支付应用也变得更加容易。
NFC无疑是未来的支付趋势,而在安卓平台引入的HCE技术无疑会让这种支付方式渗透到各个细分的市场领域。