本公开是基于申请号为201810931100.4,申请日为2018年08月15日,发明创造名称为“一种二维码支付的安全控制方法和装置”的中国发明专利申请的分案申请。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种二维码支付的安全控制方法和装置,以提高二维码支付的安全性。
具体地,本说明书一个或多个实施例是通过如下技术方案实现的:
第一方面,提供一种二维码支付的安全控制方法,所述方法由支付安全控制系统执行,所述支付安全控制系统包括:安全芯片SE管理服务模块和二维码服务模块;所述安全控制方法包括:
所述二维码服务模块接收二维码支付请求,所述二维码支付请求中携带:由二维码显示设备上的SE芯片私钥加密后的二维码值;所述二维码支付请求是通过对二维码显示设备上显示的二维码进行扫码发起,且所述二维码值包括经二维码服务模块签名过的支付账号的账号标识;
所述二维码服务模块根据存储的账号标识与SE芯片的芯片标识的对应关系,获得所述账号标识对应的芯片标识;
所述二维码服务模块请求所述SE管理服务模块对所述二维码值进行解密,并将所述芯片标识和二维码值发送至所述SE管理服务模块;
所述SE管理服务模块根据存储的芯片标识和数字证书的对应关系,获得所述芯片标识对应的数字证书中的公钥,并使用所述公钥对二维码值进行解密;
所述二维码服务模块接收SE管理服务模块解密后的二维码值,并对所述二维码值进行签名验证;
在签名验证通过后,所述二维码服务模块将所述支付账号的账号标识发送至业务处理模块执行支付业务处理。
第二方面,提供一种支付安全控制系统,所述系统包括:安全芯片SE管理服务模块和二维码服务模块;
所述二维码服务模块,用于:接收二维码支付请求,所述二维码支付请求中携带:由二维码显示设备上的SE芯片私钥加密后的二维码值;所述二维码支付请求是通过对二维码显示设备上显示的二维码进行扫码发起,且所述二维码值包括经二维码服务模块签名过的支付账号的账号标识;根据存储的账号标识与SE芯片的芯片标识的对应关系,获得所述账号标识对应的芯片标识;请求所述SE管理服务模块对所述二维码值进行解密,并将所述芯片标识和二维码值发送至所述SE管理服务模块;接收SE管理服务模块解密后的二维码值,并对所述二维码值进行签名验证;在签名验证通过后,将所述支付账号的账号标识发送至业务处理模块执行支付业务处理;
所述SE管理服务模块,用于:根据存储的芯片标识和数字证书的对应关系,获得所述芯片标识对应的数字证书中的公钥,并使用公钥对二维码值进行解密。
第三方面,提供一种二维码支付系统,所述系统包括:二维码显示设备和支付安全控制系统;
所述二维码显示设备包括:SE芯片和嵌入式应用;
所述支付安全控制系统包括:SE管理服务模块和二维码服务模块;
所述嵌入式应用,用于由二维码服务模块请求获取二维码值,所述二维码值根据支付账号的账号标识、时间戳和二维码服务模块的签名得到;
所述SE芯片,用于对所述二维码值利用芯片中的证书私钥进行加密,并将加密的二维码值返回给嵌入式应用,以使得嵌入式应用进行显码;
所述二维码服务模块,用于接收二维码支付请求,所述二维码支付请求中携带:SE芯片私钥加密后的二维码值;并将该二维码值发送至SE管理服务模块进行解密,并对解密后的二维码值签名验证,以在验证通过后进行支付处理;
所述SE管理服务模块,用于对加密的二维码值用私钥对应的公钥进行解密。
本说明书一个或多个实施例的二维码支付的安全控制方法和装置,通过在二维码显示设备中使用SE芯片来加密和存储二维码值,保证了二维码值在设备本地的安全;并且,在支付安全控制系统侧,通过由SE管理服务模块进行公钥解密、以及二维码服务模块的签名验证,在验证通过后才允许进行支付业务,进一步保证了二维码支付的安全性。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
近年来,扫码支付几乎渗透到人们生活中的各个角落,现在很多商店,超市,零售商店,街边摊位和生活用品的小商贩,他们都有着自己的收款码,买东西的人也早已经习惯了这种方便快捷的付钱方式。商家在收款时一般采用静态粘贴的收款码。通过扫描二维码完成收付款的支付方式,都称之为条码支付。
然而,条码支付本身存在一定的技术风险,并且随着市场日益壮大,安全问题也越发凸出。为了提高条码支付的安全性,本说明书至少一个实施例提供了一种二维码支付系统,该系统使用了包括数字证书和电子签名在内的方式对交易进行验证,并且还在收款码的生成中使用了安全芯片(Secure Element,安全元件,通常以芯片形式提供),以保证条码支付的安全。
在本说明书至少一个例子的应用场景中,可以由商家出示收款码,通过本说明书至少一个实施例中的二维码支付系统生成收款码,付款方可以扫描该收款码付款;并且,该商家出示的收款码是可以动态变化的动态码。可以理解的是,该方法同样也可以应用于付款码的生成。在如下的描述中,是以收款码的生成为例进行描述。
图1示例了本说明书至少一个实施例的二维码支付系统的架构图,如图1所示,该二维码支付系统可以包括:二维码显示设备11和支付安全控制系统12。该二维码显示设备11可以是用于生成和显示二维码的设备,例如,该设备可以是具有显示屏的支付盒子,盒子可以生成二维码并在显示屏上显示,当商家使用该盒子时,生成的二维码可以是收款码,付款方可以扫描该收款码进行付款。而支付安全控制系统12可以是位于云端的一个系统,负责在云端进行校验,当付款方扫码支付时,支付安全控制系统12可以在付款前先校验二维码中信息的安全性,确认没有问题后再进行支付。
其中,二维码显示设备11可以包括SE芯片111和嵌入式应用112。SE芯片111可以从物理上保证二维码相关数据的安全,嵌入式应用112可以与SE芯片111进行交互,将数字证书和二维码相关的数据写入SE芯片111,详细交互流程后续详述。SE芯片111和嵌入式应用112两者配合来负责二维码在设备侧的存储安全和二维码的显示。
支付安全控制系统12可以包括但不限于:SE管理服务模块121、认证中心模块(Certificate Authority,CA)122、二维码服务模块123和商家服务模块124。该支付安全控制系统12还可以包括其他模块,例如,还可以包括业务处理模块(未图示),该业务处理模块可以具体执行账号之间的转账付款等支付操作。
其中,SE管理服务模块121可以用来对SE芯片的属性进行管理,例如,每个二维码显示设备上都可以设置SE芯片,SE管理服务模块121可以管理各个SE芯片的芯片标识(即芯片ID)、芯片的生产厂商等属性。
认证中心模块122是一个证书授权机构,作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
二维码服务模块123可以承载具体业务服务的转发功能,比如,付款方扫描二维码显示设备上的二维码付款时,二维码支付请求先发给该二维码服务模块123,由该二维码服务模块123负责对二维码中信息的安全性校验。校验安全通过后,二维码服务模块123可以将二维码中包含的支付账号的账号标识转发给业务处理模块执行支付业务处理,比如,由付款方账号转账给收款方账号。
商家服务模块124可以负责记录二维码显示设备绑定的账号标识、二维码显示设备的设备标识以及设备上的SE芯片的芯片标识三者的对应关系,其中的账号标识可以是使用二维码显示设备进行收款的商家的支付账号的标识。
图1中的手机APP125可以是付款方在扫码支付时使用的APP,例如,付款方用户可以打开手机上的支付应用,并使用支付应用中的扫一扫功能扫描收款方的二维码,该二维码可以是显示在作为收款方的商家使用的盒子设备上。手机APP125与其他模块之间的交互流程,后续详述。
请继续参见图1,还示例了基于二维码支付系统执行的二维码支付的安全控制方法,该方法可以用于保证二维码支付的安全性。需要说明的是,如下对安全控制方法的流程描述,实际实施中并不限制各个流程的执行顺序。
设备侧的SE芯片申请证书
步骤200至步骤212,描述了SE芯片申请证书并且存储证书的过程。
在步骤200中,嵌入式应用读取SE芯片的芯片标识。
本步骤中,每个SE芯片在生产后都会有一个全球唯一的标识,即芯片ID。设备初次激活使用时,嵌入式应用可以由SE芯片中读取芯片标识。
其中的设备初次激活使用,例如可以是,商家购买了用于收款的二维码显示设备,可以是一个支付盒子。商家要使用时,可以激活该盒子,激活方式可以是商家用手机扫描设备上显示的一个激活二维码(有别于后续收款时显示的二维码),该激活二维码中可以包括支付盒子的设备标识和盒子中的SE芯片的芯片标识。商家扫描该激活二维码可以触发将盒子与商家的支付账号绑定,这样盒子显示的二维码中才能携带商家账号的账号标识。
也就是说,设备初次激活使用时,可以将盒子设备与商家的支付账号绑定,并且还触发芯片的初始化,所述的芯片初始化就包括去申请证书存储在芯片中。本步骤的嵌入式应用读取SE芯片的芯片标识就是为了通过芯片标识去申请证书。
在步骤202中,SE芯片将芯片标识返回给嵌入式应用。
在步骤204中,嵌入式应用向SE管理服务模块发送证书申请请求。
本步骤中,嵌入式应用向SE管理服务模块申请证书时,可以携带在步骤202中获取到的SE芯片的芯片ID。
在步骤206中,SE管理服务模块向认证中心模块申请证书,携带芯片ID。
在步骤208中,SE管理服务模块接收认证中心模块下发的证书,该证书是芯片ID对应的证书。证书中可以包括公钥和对应的私钥。
在步骤210中,SE管理服务模块存储芯片标识和公钥的对应关系。
例如,SE管理服务模块可以管理着多个SE芯片,每个SE芯片可以位于一个二维码显示设备上。每个SE芯片都有自己的芯片ID,SE管理服务模块可以存储各个SE芯片的芯片标识和公钥的对应关系,因此,可以存储有多个对应关系,每个对应关系可以包括一个SE芯片的芯片标识和对应该芯片标识的公钥。
在步骤212中,SE管理服务模块将证书中的私钥下发至嵌入式应用。
在步骤214中,嵌入式应用将证书写入SE芯片。
本步骤中,SE芯片可以存储数字证书中的私钥,以在后续步骤中使用该私钥对二维码值进行加密。
设备与支付账号绑定,该支付账号即设备上显示的二维码对应的账号
如上面提到的,商家购买了用于收款的支付盒子后,要激活该盒子,将盒子与商家的支付账号绑定,这样盒子显示的二维码中才能携带商家账号的账号标识。请继续参见图1,步骤216至步骤226描述了该绑定过程。
在步骤216中,嵌入式应用在设备上显示激活二维码。
例如,嵌入式应用可以在设备上显示一个激活二维码,该激活二维码中可以包括支付盒子的设备标识和盒子中的SE芯片的芯片标识。当然,激活二维码的显示处理也可以由盒子中的其他模块控制。
商家可以打开自己手机上的支付应用APP,扫描该激活二维码。这样支付应用APP可以获取到激活二维码中包含的设备标识和芯片标识,并携带上支付应用自己对应的支付账号的账号标识,向商家服务模块发送设备绑定请求,请求将支付账号与该盒子设备绑定,以使得盒子可以用于该支付账号的收款。
在步骤218中,商家服务模块接收设备绑定请求。
所述设备绑定请求中携带:所述二维码显示设备的设备标识、支付账号的账号标识和设备中的SE芯片的芯片标识。
在步骤220中,商家服务模块存储设备标识、账号标识和芯片标识之间的对应关系。
在步骤222中,商家服务模块将账号标识和芯片标识的对应关系发送至二维码服务模块。
在步骤224中,二维码服务模块存储芯片ID和支付账号的账号标识的关系。
在步骤226中,商家服务模块通知嵌入式应用完成设备绑定。
本步骤中,商家服务模块通知嵌入式应用完成设备绑定,可以使得嵌入式应用知晓二维码服务模块已经记录了芯片ID和账号标识的对应关系。例如,商家服务模块可以在二维码服务模块完成了步骤224中的对应关系存储以后,向嵌入式应用通知完成设备绑定。
当二维码服务模块记录了芯片ID和账号标识的对应关系后,嵌入式应用就可以去向二维码服务模块请求要写入该SE芯片的二维码值,二维码值中可以包括该芯片ID对应的账号标识。不同的二维码显示设备具有不同的SE芯片和嵌入式应用,不同的嵌入式应用申请二维码值时,由于芯片ID的不同,二维码服务模块生成的二维码值中包括的账号标识也不同。
向SE芯片写入二维码值
在步骤228中,嵌入式应用向二维码服务模块发送二维码请求。
本步骤中,嵌入式应用请求二维码服务模块生成二维码值,可以在该二维码请求中携带SE芯片的芯片ID。所请求的二维码值后续要写入到SE芯片中。
在步骤230中,二维码服务模块根据芯片标识找到对应绑定的账号标识。
如上所述,在步骤224中,二维码服务模块存储了芯片ID和支付账号的账号标识的关系,相当于商家的支付账号已经绑定了芯片ID的SE芯片所在的支付盒子。本步骤中,二维码服务模块可以根据二维码请求中携带的芯片ID,查找对应关系,获得对应芯片ID的账号标识。
在步骤232中,二维码服务模块根据账号标识生成二维码值。
本步骤中,二维码服务模块可以根据支付账号的账号标识、时间戳和二维码服务模块的签名,生成二维码值。例如,该二维码值中可以包括商家的支付账号的账号标识,还可以包括时间戳以及二维码服务模块的签名。
此外,二维码显示设备上显示的二维码可以是动态二维码,可以变化,例如,可以是定期的每隔一定时间就更新一次;或者,还可以是每当付款方进行一次扫描支付后就更新一次二维码。而每次更新二维码都要依据一个新的二维码值来生成更新的二维码。
那么,为了提高动态二维码的更新效率,二维码服务模块可以在向嵌入式应用返回二维码值时,一次性返回多个二维码值。例如,可以一次性返回十个二维码值,可以供设备侧显示十个二维码,完成多次二维码的更新。
相应的,本步骤中,二维码服务模块可以生成多个二维码值。该多个二维码值之间的账号标识相同,即不论哪个二维码值,都要包含商家的账号标识。而所述时间戳和签名中的至少一个可以不相同。比如,二维码服务模块在更新二维码值时,可以更新时间戳或签名中的至少一个,再根据更新后的时间戳和签名,再加上账号标识,生成更新的二维码值。
当二维码显示设备侧将上述多个二维码值使用完后,可以再向二维码服务模块请求新的一批二维码值。
在步骤234中,二维码服务模块将二维码值返回给嵌入式应用。
在步骤236中,嵌入式应用将二维码值写入到SE芯片中。
例如,嵌入式应用可以通过调用SE芯片的API指令,将二维码值写入到芯片中。其中,当嵌入式应用接收了多个二维码值时,可以一次性写入芯片;或者,也可以是暂时存储在嵌入式应用,后续逐个写入芯片,比如,当后续显码步骤中嵌入式应用由SE芯片中读取了一个二维码值以后再写入一个二维码值。
设备上显示二维码
在步骤238中,SE芯片使用证书中的私钥对二维码值进行加密后存储。
在步骤240中,嵌入式应用由SE芯片读取加密后的二维码值。
在步骤242中,嵌入式应用将二维码值渲染成二维码进行显示。
在二维码显示设备上显示二维码后,付款方就可以扫码支付了。
二维码扫码支付
在步骤244中,付款方扫描二维码显示设备上的二维码。
在步骤246中,手机APP向二维码服务模块发送二维码支付请求,携带加密的二维码值,该二维码值中包括支付账号的账号标识。
在进行支付前,可以先请求二维码服务模块进行二维码的解析和校验。
在步骤248中,二维码服务模块根据存储的账号标识与SE芯片的芯片标识的对应关系,获得所述账号标识对应的芯片标识。
本步骤中,手机APP扫码得到的二维码信息中,可以包括:未加密的支付账号的账号标识、以及SE芯片加密后的二维码值信息。二维码服务模块可以根据该未加密的账号标识查找对应关系得到对应的芯片标识,该芯片标识可以用于SE管理服务模块据以查找对应的公钥。此外,加密后的二维码值信息中也可以包括账号标识、时间戳和签名字符串这些信息。
在步骤250中,二维码服务模块请求SE管理服务模块对二维码值进行解密,并将所述芯片标识和二维码值发送至所述SE管理服务模块。
在步骤252中,SE管理服务模块根据存储的芯片标识和数字证书的对应关系,获得所述芯片标识对应的数字证书中的公钥,并利用公钥解密。
本步骤中,SE管理服务模块可以利用公钥对加密的二维码值信息进行解密。
在步骤254中,SE管理服务模块向二维码服务模块返回解密后的二维码值。
本步骤中,SE管理服务模块可以通知二维码服务模块,二维码值已经公钥验证通过了,并将解密得到的二维码值信息返回给二维码服务模块。解密得到的二维码值信息中的账号标识与未加密的账号标识一致。
在步骤256中,二维码服务模块对二维码值进行签名验证。
其中,二维码服务模块在生成二维码值时,对二维码值进行了签名,本步骤中,可以对二维码值进行签名验证。签名验证通过后,所述二维码服务模块将所述支付账号的账号标识发送至业务处理模块执行支付业务处理。
如上所述的,该二维码支付系统为了保证二维码的支付安全,一方面,在二维码显示设备中使用SE芯片来加密和存储二维码值,保证了二维码值在设备本地的安全;另一方面,在支付安全控制系统侧,通过由SE管理服务模块进行公钥解密、以及二维码服务模块的签名验证,在验证通过后才允许进行支付业务,进一步保证了二维码支付的安全性。
此外,本说明书至少一个实施例提供的二维码显示设备,生成和显示了动态二维码,保证了二维码交易的安全性。
图2示例了本说明书至少一个实施例的支付安全控制系统,如图2所示,该系统可以包括:SE管理服务模块21和二维码服务模块22。
二维码服务模块21,用于:接收二维码支付请求,所述二维码支付请求中携带:由二维码显示设备上的SE芯片私钥加密后的二维码值;所述二维码支付请求是通过对二维码显示设备上显示的二维码进行扫码发起,且所述二维码值包括经二维码服务模块签名过的支付账号的账号标识;根据存储的账号标识与SE芯片的芯片标识的对应关系,获得所述账号标识对应的芯片标识;请求所述SE管理服务模块对所述二维码值进行解密,并将所述芯片标识和二维码值发送至所述SE管理服务模块;接收SE管理服务模块解密后的二维码值,并对所述二维码值进行签名验证;在签名验证通过后,将所述支付账号的账号标识发送至业务处理模块执行支付业务处理;
所述SE管理服务模块22,用于:根据存储的芯片标识和数字证书的对应关系,获得所述芯片标识对应的数字证书中的公钥,并使用公钥对二维码值进行解密。
在一个例子中,所述系统还包括:认证中心模块;
所述SE管理服务模块22,还用于:在所述二维码服务模块接收二维码支付请求之前,接收二维码显示设备上的嵌入式应用发送的证书申请请求,该请求中携带:所述嵌入式应用读取的SE芯片的芯片标识;根据该证书申请请求,向认证中心模块申请证书,并接收所述认证中心模块下发的与芯片标识对应的数字证书,所述数字证书包括:公钥和对应的私钥;存储芯片标识和公钥的对应关系,并将所述私钥下发至所述嵌入式应用,以使得所述嵌入式应用将私钥写入到所述SE芯片。
在一个例子中,所述系统还包括:商家服务模块;
所述商家服务模块,用于:在所述二维码服务模块接收二维码支付请求之前,接收设备绑定请求,所述设备绑定请求中携带:所述二维码显示设备的设备标识、支付账号的账号标识和所述芯片标识;存储上述设备标识、账号标识和芯片标识之间的对应关系,并将账号标识和芯片标识的对应关系发送至二维码服务模块。
在一个例子中,所述二维码服务模块,还用于:接收二维码显示设备上的嵌入式应用发送的二维码请求,用于请求二维码值,所述二维码值用于生成二维码;对二维码值进行签名后,返回给所述嵌入式应用,以使得嵌入式应用将二维码值写入到二维码显示设备中的SE芯片;所述嵌入式应用由二维码显示设备上的SE芯片读取私钥加密后的二维码值,渲染成二维码进行显示。
上述方法实施例中所示流程中的各个步骤,其执行顺序不限制于流程图中的顺序。此外,各个步骤的描述,可以实现为软件、硬件或者其结合的形式,例如,本领域技术人员可以将其实现为软件代码的形式,可以为能够实现所述步骤对应的逻辑功能的计算机可执行指令。当其以软件的方式实现时,所述的可执行指令可以存储在存储器中,并被设备中的处理器执行。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书一个或多个实施例可提供为方法、系统、或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据采集设备或者数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。