拉卡拉电签版
您当前的位置:主页 > 行业资讯 >

基于USIM卡内身份认证的手机支付和手机pos实现

2020-07-21 来源:电信工程技术与标准化 作者:杨琳

  手机支付,包括NFC、二维码扫码等极为便捷,但缺点是易受木马、黑客攻击,造成用户信息被盗和资金损失。众所周知,USIM卡安全性非常高,如能在USIM卡内实现对用户身份的运算,同时又能将手机作POS机用,那么在增强手机支付安全性的同时,将极大地降低业务的运营成本。就现状而言,非授权用户很难穿过手机操作系统及USIM卡密保体系访问卡内文件,因此如何能从手机操作系统访问USIM卡文件,以实现在卡内对用户身份鉴权运算是讨论的重点。

  1、研究的方法及结论

  本文基于3GPP及ISO/IEC 7816和GSM11.11规范展开论述,对植入Java USIM卡内的Applet应用再挖掘,实现USIM卡内对用户身份鉴权运算的目标。手机APP将云端服务器下发的用户身份认证数据转换为手机号码,然后将这些号码存入卡内通讯录,在卡内定制的运行环境(JCRE)“指令分发器”触发Applet应用对这些数据运算和加密,最后手机APP再将加密数据读出并发往云服务器进行身份鉴权。本方法实现了第三方数据在手机与USIM间双向传送,赋予了USIM卡金融级U-key的安全特质。但需特别注意的是,木马/黑客也可以利用GSM11.11指令对卡内敏感数据篡改、伪造或替换,为此,卡内设计了一套特殊的计时进程、限时认证和数据加密机制。本文的密保系统采用对称加密算法体系,其既不需要数字证书及认证中心,也不需公钥私钥基础设施(PKI),且较Diffie-Hellman等提出的公开密钥密码体系运算速度提高近千倍。

  2、密码学相关知识

  2.1 哈希函数及其特性

  (1)单向性:对任何散列码h,找到满足H(x)=h的x在计算上是不可行的。

  (2)抗弱碰撞性:对任何消息x,找到满足y≠x且H(x)=H(y)的y在计算上是不可行的。

  (3)抗强碰撞性:找到任何H(x)=H(y)的偶对(x,y)在计算上是不可行的。

  系统采用美国国家安全局发布的安全散列函数SHA-2,算法的输入是最大长度小于2128 bit的消息,输出是512 bit的散列值,如图1所示。

  图2的F模块对以1024 bit分组的消息序列进行80轮运算,每一轮都把512 bit缓冲区中分别为64 bit的ABCDEFGH值作为输入,第一轮运算缓冲区是中间的哈希值Hτ-1,每一轮的64 bit值Wt(0≤t≤79)由当前被处理的1024 bit消息分组Yτ导出。每一轮还将使用常数Kt(0≤t≤79),这些常数从前面80个素数取3次根并取小数部分的前64 bit.第80轮的输出和第一轮的输入Hτ-1相加产生Hτ。缓冲区里的8个字和Hτ-1里的相应字独立进行模264的加法运算。

  2.2 带密钥的消息认证码(HMAC)

  哈希函数不具备密钥特性,为此需把一个密钥和报文一同放进哈希函数中运算,其输出的数据块为HMAC.

  2.3 高级加密算法(AES)

  AES是迭代式的块加密结构,属对称加密算法体系,其算法体系涉及字节替代、行移位、列混淆、轮密钥加、轮密钥扩展操作,通过字节代换变换表和字节逆代换逆变换表运算完成对数据的加/解密。

SHA-2运算原理图

图1 SHA-2运算原理图

SHA-2每步运算流程

图2 SHA-2每步运算流程

  3、前期相关工作

  文中所述的云端服务器及USIM卡预植入同样的ID号、用户身份认证数据和加密算法及鉴权、认证流程等关键数据,实体USIM卡通过销售渠道发放给用户。用户首先需在云端服务器完成注册,设置与云服务器的接入码以及绑定银行卡号。

  4、系统构架及双向鉴权

  文中所述系统至少包括云端服务器、收付款终端、网联平台及金融功能服务器等要素成员,本文仅对云端服务器和收付款终端的功能体进行构建及论述。

  4.1 系统构架

  云端服务器一方面与收款终端交互数据,另一方面还与行业应用传递信息,其既对交易用户鉴权,又对行业应用传达指令。收付款用户通过其手机提交近场支付申请,在云服务器完成身份鉴权和交易数据的处理。网联平台是汇聚及监控交易数据流的现有平台,其链接相应的金融服务器,如图3所示。用户需更换Java USIM卡才具备系统的手机支付功能。当手机用作收款POS时,其扫码支付手机经蓝牙与支付手机交互身份认证数据,它的作用是充当向云端服务器发送双方身份信息和交易数据的中转站。支付手机无需上网。

云端服务器与交易成员组成网图

图3 云端服务器与交易成员组成网图

  4.2 关于双向鉴权

  双向鉴权指收款终端对云端服务器身份认证,以及云服务器对交易用户的身份认证。

  4.2.1 云端服务器对交易用户鉴权

  云端服务器既是用户身份的集中鉴权平台,又是连接用户终端和第三方应用平台的枢纽,它需对发起交易申请的终端进行鉴权。此环节,为缩短交易时间,系统设定对用户身份的鉴权放在交易的最后环节进行,即在云服务器收到全部的交易数据后才一起对收付款用户身份进行鉴权,而没有设置单独的鉴权环节。若用户身份通过鉴权,则再对交易数据进行相应的处理。

  交易初始,收款用户首先点击APP“收款”图标启动收款模块并向云服务器申请交易,同时将USIM卡ID1和APP生成的随机码rand‘发往云服务器,并要求服务器反馈鉴权信息。云服务器将该ID1对应的身份密钥Ki与该随机码rand’经鉴权算法HMAC运算得到鉴权响应Sers.云服务器生成随机码rand,以预植入的与卡片ID1对应的加密密钥K1通过加密算法AES,对rand加密后与鉴权响应Sres一同发给收款手机。云服务器生成的随机码rand贯穿收付款终端及交易的始终,其既是云服务器对收付款用户身份鉴权的灵魂数据,又是对交易数据加密解密的至尊法宝,对用户身份的鉴权体现在收付款终端对该随机码rand的鉴权运算响应值上,如果鉴权响应值错,则在交易的最后环节不能通过对用户的身份鉴权,相应地终止交易。

  4.2.2 收款手机及对云服务器鉴权

  收款手机在向云端服务器申请交易时,也需对云服务器进行鉴权,如上所述,系统设定收款手机先执行对云服务器鉴权。

  收款手机在向云服务器发起交易申请的同时,还将所述随机码rand‘以手机号码格式存入卡内通讯录,卡内JCRE定制的“指令分发器”激活Applet应用,Applet将随机码rand’同卡内用户身份密钥Ki经算法HMAC算得的鉴权响应Sres‘存于Applet内。收款手机将云端服务器反馈的鉴权信息以电话号码格式存入卡内通讯录(包括加密的rand),开启摄像头。被激活的卡内Applet比对Sres’与Sres,若相同,则云服务器通过身份鉴权,其后Applet用预植入卡内的加/解密钥K1和加密算法AES对服务器反馈的加密信息解码,将解码所得的rand与其身份密钥Ki异域得另一加/解密钥K1',将K1‘存于Applet,rand存于卡内短信后开启蓝牙。若不相同,则终止交易流程。

  5、手机近场支付实例

  本文设计的近场支付系统是通过手机扫码并以蓝牙交互信息来完成支付。用户手机为支付手机,商户手机为收款手机,其充当POS机。支付手机并不需要上网,由收款手机(手机POS)将所有信息上传云服务器。

  5.1 支付手机及相关随机码

  交易开始,支付用户点击APP的“支付”图标启动支付模块,随后屏幕显示二维码信息(包括支付手机APP随机生成的本次近场通信加/解密钥、随机生成的本次蓝牙连接码以及支付用户USIM卡的ID2),开启蓝牙设备。收款手机扫码后便与支付手机建立蓝牙连接,接收收款手机APP通过蓝牙转发通过近场通信密钥加密随机码rand给支付手机,支付手机APP以同样的近场通信密钥对其解码,将解码所得的rand以手机号码格式存入卡通讯录,卡内定制的“指令分发器”侦听并激活Applet,其将rand与卡内用户身份密钥Ki′经算法HMAC运算得鉴权响应Sres“,其后将rand再与用户身份密钥Ki’异域得另一加/解密钥K2',存K2‘于Applet内,存Sres”于卡内短信。支付手机APP读短信并筛选出数据Sres“,以近场通信密钥对Sres”加密后通过蓝牙发往收款手机。支付手机APP接收并解码收款手机APP以蓝牙发送的、经近场通信密钥加密的支付金额确认信息,若支付用户确认支付金额,则支付手机将支付金额以电话号码格式存入卡内通讯录。卡内被激活的Applet将该金额与用户身份密钥Ki’经算法HMAC算得含有支付用户签名的数字摘要2,即“数字签名2”.Applet用K2‘通过AES加密算法对“数字签名2”、支付金额加密形成“加密信封2”,存其于卡内短信。支付手机APP读卡内短信筛选“加密信封2”,经近场通信密钥加密后通过蓝牙发给收款手机。按相关规定,若交易金额超500元需输入银行卡支付密码,则该“数字签名2”和交易金额还需银行卡和其支付密码变换值并连同用户与服务器的接入码一并加密形成“加密信封2”,然后以该近场通信密钥加密后通过蓝牙发给收款手机。期间,若支付用户取消交易或不确认支付金额,则终止流程。

  5.2 收款手机及扫码蓝牙连接

  收款手机扫描支付手机二维码后便与支付手机建立一对一蓝牙连接,该连接一旦建立收款手机便将扫描获取的支付用户USIM卡ID2发往云服务器。此时服务器便将收款用户与支付用户的卡片ID1和ID2唯一关联,以防附近的黑客用其ID抢先关联支付用户ID2,切断其想偷偷与支付手机蓝牙连接而实施盗款的念想。随后收款手机APP读取卡内短信并筛选出所述随机码rand,并以近场通信密钥加密后通过蓝牙传给支付手机。此处获取rand的读短信事件被卡内Applet侦听到,由此触发特别设计的Applet的计时进程,以能框定从读取该次短信事件到支付手机返回鉴权响应Sres“的时间,考虑到USIM卡的数据吞吐率、卡片CPU处理速度以及通过网络远程盗取数据的往返时间,系统设定该往返时间5~10 ms.在支付手机的鉴权响应Sres”返回收款手机后,一方面收款手机将该鉴权响应Sres“存于卡内通讯录指定地址,当Applet在计时进程结束后即刻读取存于卡内通讯录指定地址的数据,即鉴权响应Sres”;另一方面收款手机屏幕弹出收款金额框,在收款用户输入收款金额后,收款手机将该金额以电话号码格式存入卡内通讯录,卡内被激活的Applet将该输入金额值和收款用户身份密钥Ki经算法HMAC运算得到含有收款用户签名的数字摘要1,即“数字签名1”.其后,Applet用所述加/解密钥K1’经加密算法AES对“数字签名1”及该金额和鉴权响应Sres“一道加密形成”加密信封1“,存卡内短信。与此同时,收款手机还将支付金额以近场通信密钥加密后通过蓝牙发给收款手机。收款手机读卡内短信并筛选出”加密信封1“,随后将”加密信封1“及”加密信封2“并附上USIM卡标识ID1后一同发往云服务器进行身份鉴权及交易数据的解码处理。此处,鉴权响应Sres”的作用,一方面用于云服务器鉴权支付用户身份,另一方面杜绝智能木马或黑客通过移动网络在用户手机上以GSM11.11指令远程调用USIM卡接口并激活卡内Applet.如Applet在计时进程结束时而鉴权响应Sres“仍没存入卡通讯录指定地址,那么Applet读取该指定地址的数据便为”空“,或为黑客干扰的错误数据,则云服务器直接判定本次交易无效,终止流程。

  5.3 云端服务器相关流程

  云端服务器是集中认证平台,其依据ID1、ID2对收款手机(手机POS)上传的交易数据进行反向运算,先对收/付款用户进行身份鉴权运算,若均通过身份认证,则在其对银行卡图标作转换后与银行服务器交互信息,并与金融机构交互执行扣款流程;若任一用户没通过鉴权,则终止交易。如图4所示。

手机近场支付身份鉴权流程图

图4 手机近场支付身份鉴权流程图

  如上所述,系统同样可用于远程环境下的用户身份认证。

  6、核心技术及安全特性

  智能木马或黑客也能调用标准指令及接口对卡内数据实施攻击,因此必须保障系统数据的机密性、完整性及可用性,做到防篡改、防重放和防抵赖。系统安全特性如下。

  (1)用户身份双向鉴权。收款手机与服务器彼此鉴权,防止伪服务器及不法终端盗取用户数据、泄漏用户隐私。

  (2)防重放攻击。由于与收款用户USIM卡ID关联的随机码rand每次均不相同,因此木马及”山寨“APP无法利用留存的历史数据实施重放攻击。

  (3)防盗款攻击。鉴于云端服务器生成的rand已将收/付款终端USIM卡ID临时关联,由于卡片ID不同,因此盗号木马将盗得的交易数据无法以其它USIM卡上实施盗款。

  (4)防”肉鸡“木马攻击。近场交易的距离短,收/付款终端间的通信时间为纳秒级(ns),而通过网络远端盗取用户数据往返时间为秒级(s),因此若智能木马通过网络驱动远端用户终端APP及其Java USIM卡Applet进行身份运算以盗取身份数据,则其往返时间远超过系统的设定时间,如图5所示。

  (5)防篡改。系统的关键数据全在Applet内进行运算并在其内经AES加密后传送,因此木马或黑客无法篡改交易金额。

网络盗取数据与蓝牙通信时间比较

图5 网络盗取数据与蓝牙通信时间比较

  (6)防抵赖。交易数据在收/付款手机Applet内以用户专有、类似私钥的身份密钥及加/解密钥完成”数字签名“及”加密信封“,因此具有不可否认的特性。

  7、结束语

  本文研究了基于Java USIM卡的运算实现用户身份鉴权的方法及机理,凿通了”机-卡“通道,仅更换USIM卡便能达到金融级U-key的安全级别。本文的成果可广泛用于生活的方方面面,如手机支付、物联网及交通ETC等业务,也可以免密码登陆网站。