RSS订阅信息安全技术跟踪与研究:技术、平台、会议、论文、产业
你现在的位置:首页 / 技术积累 / 正文

苹果移动支付:Apple Pay

0 技术积累 | 2015年9月8日
转载申明:本站原创,欢迎转载。但转载时请保留原文地址。
原文地址:http://www.vonwei.com/post/ApplePayConclude.html

1.1.1  简介

         201410月份Apple Pay开始在美国推出,作为一种移动支付解决方案,能同时支持实体店POS支付和在线远程交易。最开始支持的银行比较少,不过到20154月份支持Apple Pay的美国银行增加达到200多个。占据着美国40%的智能手机市场,苹果正在不断改变美国支付观,而且也影响着整个世界移动支付的发展。

         苹果已经和VisaMasterCard等支付网络合作准备提供成套支付解决方案。为了参与进来,发卡行需要建立一个ID&V过程对注册的持卡人(即消费者)进行验证,并且提供一个发卡行的主密钥给支付网络,以便支付网络能为Apple Pay生成Token PAN

         苹果在推出Apple Pay时使用了很多行业经验,如该钱包很容易下载,而且加载支付凭证的过程也很简单。POS机支付体验非常快捷便利,Apple Pay除了支持NFC的终端外不需要商家进行其它任何多余的投资,在像加拿大和澳大利亚等非接触支付已经被普遍接受的国家,零售商基本已经无缝的接受了Apple Pay支付方式。Apple还介绍了一套移动支付流程,与刷卡一样简单方便。消费者忠诚度(loyalty)目前还没有包含到Apple Pay中,不过可以想象在不就将来会实现。

         另一方面,苹果也正在转变在线(远程)支付方式。苹果正在创建自己的接受标志,使得消费者可以在零售商的网站上进行支付,或者在app中进行支付,只需要简单的选择“Apple Pay”方式即可,并通过指纹的方式(即一种CVM)进行支付的授权。由于良好的支付体验,很多移动应用如Uber已经在其应用中部署了Apple Pay支付方法。

         用户可以在iPhone 6iPhone 6 PlusiPad Air 2iPad mini 3,和Apple Watch上使用Apple Pay功能。截至目前,Apple Pay还只能在美国本土使用,不过其移动支付方式和体验正在影响全世界,各个国家也在推出类似的支付产品。Apple Pay还号称会保护用户的个人信息,不会收集与用户绑定的交易信息。

 

1.1.2  相关技术与流程

Apple Pay各组件如下:

ü  安全元素SE:工业标准认证的芯片,运行Java Card Platform,符合电子支付金融行业的要求。

ü  NFC控制器:处理NFC通信协议,应用处理器与安全元素SE之间的路由通信,以及安全元素SEPOS终端之间的路由通信。

ü  Passbook:一个app应用(即钱包app),可以增加和管理信用卡以及借记卡,可以使用Apple Pay进行支付。通过该app,用户可以查看他们的卡以及关于银行的其它信息、银行的隐私策略、最近的交易等信息。相当于Apple PayUI界面。

ü  安全区域Secure Encalve:在iPhoneiPad上,安全区域管理认证过程,使得一个支付操作可以前进。安全区域为Touch ID存储指纹数据。在Apple Watch上,设备需要解锁,用户必须双击侧面按钮,双击操作被检测并直接传送给安全元素SE,不需要经过应用处理器。(即智能手机上靠指纹认证,智能手表上靠用户双击认证)。

ü  服务器(App le Pay Servers:管理passbook中各个卡的状态,以及管理安全元素SE中存储的设备账户号DANDevice Account Numbers)。一方面与设备进行通信,另一方面还与支付网络服务器进行通信。Apple Pay服务器还负责对apps内部的支付凭证进行重加密操作。

 

Apple Pay如何使用安全元素SE

         安全元素上拥有一个特定设计的Java小应用程序(一般称为applet)来管理Apple Pay;还包含一些经过支付网络(如银联等)认证过的支付applets payment applets)。银行卡数据从支付网络或者发卡行加密后发送给这些支付applets,加密使用的密钥只有支付网络以及支付applets的安全域知道。这些数据存储在支付applets中,由安全元素SE的安全特征提供保护。在进行交易时,POS终端直接使用NFC控制器(通过一个专门的硬件总线)与SE通信,不用经过应用处理器。

 

Apple Pay如何使用NFC控制器?

         NFC控制器可以说是通往安全元素SE的网关,保证与设备靠近的POS机终端的非接触式支付能顺利进行。只有在射频范围之内的终端才能被感应。持卡人(或者消费者)对支付的授权有两种方式:手机或者平板上使用Touch ID(即指纹)或者passcode(即口令),二选其一来验证持卡人;Apple Watch上是解锁后进行双击操作。安全元素SE中的payment applets会准备非接触式的支付响应,响应被NFC控制器专门地路由给NFC域。因此,非接触式交易的支付授权详情只会包含在本地NFC域,决不会暴露给外部应用处理器。与之形成对比的是,apps内部进行支付时的支付授权详情会被路由给设备上的应用处理器,以便发送给Apple Pay服务器,不过传送的数据都经过了安全元素SE的加密处理。(猜测:POS机线下支付时,从SE直接传送支付授权信息给NFC域,不一定加密了,全在安全域之内;而通过app或者网页进行线上远程支付时,支付授权等数据都是经过SE中的小应用进行了加密处理)。

 

银行卡信息如何处理与下发

         当用户通过Passbook增加一个信用卡或者借记卡到Apple Pay时,Apple应该负责将卡信息、以及相关的用户账号和设备等信息安全地(这块绑定银行卡传输信息时的安全如何保证?SE应该还没有参与这块)发送给各自对应的银行。通过这些信息,发卡行可以决定是否授权增加该卡到Apple Pay的操作(因此需要与各大银行建立合作关系)。

         Apple Pay使用两个服务端调用来发送和接受与银行(或者支付网络)相关的通信:Check CardLink and Provision。银行或者支付网络使用这些调用来验证、批准和增加卡到Apple Pay的操作。客户与服务端的会话通过SSL进行加密(这回答了上一段标红的问题)。

         完整的银行卡号(即类似主账号PAN)不会直接存储在设备或者Apple Pay服务器中,而是创建一个唯一的设备账户号DAN(即类似Token PAN),加密并存储到安全元素SE。对DAN的加密方式决定了即便苹果也无法使用它,发卡行使用DAN可以防止其在网络上被乱用(其并不是通用的银行卡号)。存储在SE中的DAN也与iOSWatch OS隔离,不会存储到Apple Pay Servers中,更不会被备份到iCloud中。这样说来DAN完全只由发卡行掌控,与动态的令牌PAN还不完全一样。对于智能手表Apple Watch使用银行卡,需要其与iPhone进行蓝牙通信(并没有使用Wi-Fi),iPhone上安装一个Apple Watch app。注意,针对Apple watch使用的银行卡拥有自己的DAN,并且存储在Apple WatchSE上。

         手动增加银行卡到Apple Pay的过程:姓名、卡号、有效期和CVV是需要的,用户可以通过Passbook app(或者Apple Watch app)输入这些信息;或者使用iSight照相机拍摄银行卡,从图片中提取这些信息,苹果声称图片信息不会存储下来(呵呵?不管是手动输入还是拍照获取,这块安全性还是堪忧,无法保证app一定是安全的)。一旦填充了这些信息,Check Card过程就会验证卡号和有效期。这些信息会被加密后发送给Apple Pay Server。如果Check Card过程返回一个条款IDApple会下载对应的发卡行条款信息并显示给用户阅读,如果用户接受了这些条款,Apple会将被接受的条款ID连同CVV一起发送给Link and Provision过程。而且,作为Link and Provision过程的一部分,App还会和发卡行共享设备的一些相关信息(如iTunesApp Store账号活动情况、设备情况(如手机号、模式等)、以及邻近位置信息(需要位置服务开启)。基于这些信息,发卡行可以决定是否批准增加该卡到Apple Pay的操作。Link and Provision过程的结果是,将发生两件事:设备开始下载Passbook pass文件(代表添加的银行卡);设备开始将银行卡与安全元素SE绑定。

         银行还可以决定一张卡是否需要其它额外的验证,具体依赖发卡行的要求,用户可能可以选择不同的可选验证方式,如文本消息、email、短信等等。

 

支付交易是如何进行授权的?

         安全元素SE只有在收到Secure Enclave的授权后才能允许支付交易继续,主要用来确认用户已经通过Touch ID或者passcode的认证。对于存在Touch ID的苹果设备,Touch ID是默认选择的方式,不过passcode可以在任何时刻代替Touch ID使用。一般,没有配置Touch ID或者Touch ID不可用的设备需要使用passcode授权的方式。而且,指纹并不是很稳定,如果三次刷指纹不通过,passcode会自动跳出;如果五次尝试刷指纹不通过,则passcode验证方式就是强制要求的了。

         安全元素SE和安全区域Secure Enclave之间并不直接通信,而是通过NFC控制器连接应用处理器进行。通信的安全性通过一个共享的配对AES密钥建立,该密钥是在设备生成时配置的。配对密钥在Secure Enclave中生成,生成时基于Secure EnclaveUID key和安全元素SE的唯一标识。然后生成的配对密钥被安全地发送给厂商的硬件安全模块HSMHardware Security Module),其拥有所需密钥材料就可以将配对密钥注入安全元素SE中。因此,SESecure Enclave之间的通信是需要加密和认证的,而且认证过程中加入随机nonces防止重放攻击。

         当用户授权一个交易,Secure Enclave发送关于认证的类型以及交易的类型(线上还是线下)的签名数据给安全元素SE,而且还发送一个关联的授权随机值ARAuthorization Random)。AR是在用户第一次配置一个信用卡会在Secure Enclave中生成,只要Apple Pay开启的话,该值是长久存储的,并且受到Secure Enclave的加密和防回滚机制保护。通过配对密钥加密可以安全地发送给安全元素SE。一旦收到一个新的AR值,安全元素会将之前添加的所有卡标记为已删除deleted)。因此,添加新卡时,只有出示使用同样配对密钥和同样AR值的授权信息时,添加的卡才能使用。这种方式使得在一些特殊情况下,允许iOS通过指示Secure Enclave将其AR标记为无效来禁用对应的卡,比如当passcode被禁用时,用户登出iCloud后,用户选择擦除所有内容和设置后,设备刚从恢复模式恢复过来时等等情况。因此,无论是线下非接触式支付,还是线上远程支付,安全元素都会通过配对密钥和当前AR值来验证来自Secure Enclave的授权信息,否则不会允许payment applet进一步操作

         上面授权通过后,payment applet会进一步生成支付交易数据。SEpayment applet生成的支付交易数据包含一个交易相关的特定动态安全码,以及一个设备账户号DAN。动态安全码是一个一次性的码,其计算使用一个计数器counter和一个密钥key完成。计数器针对每个新交易都会递增,密钥key是在个性化阶段下发到payment applet中的,并且与支付网络(或者发卡行)共享该密钥。依赖具体的支付机制,还可以加入数据来计算动态安全码,如payment applet可以生成一个随机数,线下NFC交易时POS终端生成的随机数,线上app内交易时服务器生成的随机数等。这些安全动态码被提交给支付网络和发卡行,以便对每次交易进行认证

 

使用Apple Pay进行非接触式支付的过程(POS机线下支付)

         iPhone开机时会检测NFC域,然后使用设置的默认银行卡显示给用户使用,当然用户也可以进入Passbook app去选择另外一张银行卡进行支付。

         接着,在进一步传输支付信息前,用户必须通过Touch ID或者passcode的认证(注意Apple Watch上是双击)。注意,没有用户的认证授权,交易是没法继续的。

         一旦用户认证成功,安全元素SE中的设备账户号DAN和生成的动态安全码用于进一步处理支付。这样不会提供完整的银行卡号给商家。为了改善Apple PayApple可能收到匿名的交易信息,如交易发生的大概时间或者位置。

 

使用Apple Pay进行线上支付(Apps内集成支付)

         iOS里的各种apps应用都可以使用Apple Pay来进行支付。在这种情况下,Apple收到的是加密的交易信息,并在发送给商家前进行重加密Apple Pay还保留匿名交易信息,如大概的购买数量等,这些信息不会与用户绑定,不会泄露用户的购买信息。

         当一个app请求进行支付时,其调用一个API接口来确定是否该设备执行Apple Pay,是否用户拥有该商家接受的银行卡。App然后请求用户完善交易需要的其它信息,如账单和邮寄地址、联系方式等。接着app就可以要求iOS显示Apple Pay的工作界面(sheet)了。此时,app被提供城市、国家和邮编以便计算最后总的账单。完整的请求信息只有在用户通过Touch ID或者passcode授权后才提供给app。一旦支付被授权,Apple Pay工作界面出现的信息会被传送给商家。

         当用户完成授权,一个请求被发送给Apple Pay Servers以便获得一个随机数nonceNonce会连同其它交易数据一起传给安全元素SESE生成支付凭证并使用一个Apple Key对凭证进行加密。加密的支付凭证从SE出来后被发送给Apple Pay Serviers,其首先解密该凭证,验证nonce的一致性,然后使用商家密钥(与商家ID关联)对支付凭证进行重加密。重加密的信息返回给设备,通过一个API交给appapp给将其传给商家系统进行处理。商家可以解密获得支付凭证,而且还会验证Apple Pay Servers的签名。

 

挂起、擦除等操作

         通过使用“Find My iPhone”,用户可以将设备置于Lost Mode,这样Apple Pay也会被挂起。通过使用“Find My iPhone”iCloud Settings,或者直接在设备上使用Passbook进行操作,用户还可以移除和擦除Apple Pay中的银行卡。这样支付就无法正常进行。

         而且,当用户选择“Erase All Content and Setting”或者刚使用恢复模式,iOS会指示安全元素将所有卡标记为已删除状态。这样可以立即将卡设置为不可用状态,直到能连接上Apple Pay Servers时可以完全从SE中擦除所有的卡。而且,Secure Enclave也会独自地将AR设置为无效状态,使得之前注册的卡无法完成支付授权。注意,当设备连上线后,会试着与Apple Pay Servers联系来保证安全元素中所有卡被擦除了。

 

1.1.3  图解

 

典型支付流程:

 

与其它NFC支付方式对比:(SIM vs Java CardPAN vs DANWallet app vs PassbookTEE vs Secure Enclave

 

线上支付(In-App 支付)组件:

 

Payment token数据结构:

详细参考:(可以参考使用的密钥和算法)

https://developer.apple.com/library/ios/documentation/PassKit/Reference/PaymentTokenJSON/PaymentTokenJSON.html

 


  • ------------------分隔线----------------

  • 如果感兴趣,欢迎关注本站微信号,跟踪最新博文信息,手机微信扫一扫下面的二维码,即可关注!
  • 微月信公众号
  • 推荐您阅读更多有关于“ 移动支付   ”的文章

    请填写你的在线分享代码
    上一篇:动态口令OTP(One-Time Password)下一篇:OATH:强认证开放体系

    猜你喜欢

    评论列表:

    发表评论

    必填

    选填

    选填

    必填,不填不让过哦,嘻嘻。

    记住我,下次回复时不用重新输入个人信息

    本站介绍
    最近发表
    本年最热文章
    本月最热文章
    网站分类
    文章归档