一种基于IC卡的数字软钱包
文献发布时间:2023-06-19 19:21:53
技术领域
本申请涉及数字钱包领域,尤其涉及一种基于IC卡的数字软钱包。
背景技术
数字钱包将逐渐进入人们的消费生活中,目前根据其形态可以将数字钱包分为数字硬钱包和数字软钱包。
数字硬钱包是指通过柜面或电子渠道开立的能够存储数字货币、具有硬件安全元件的数字货币载体。例如:具备SE安全元件的手机、NFC-SIM卡、银行卡、以及可穿戴设备等硬件设备。数字硬钱包可以基于硬件设备的身份认证功能与消费终端直接进行交易,无需与后台或服务端进行通信,因此数字硬钱包是一种可在脱机前提下进行数字货币交易的数字钱包。
但是,实现数字硬钱包的硬件设备需要具有SE安全元件,对硬件设备的要求较高,并且数字硬钱包需要充值后才能实现消费,另外数字硬钱包尤其是非记名的数字硬钱包,还存在丢失无法找回的安全风险。
数字软钱包是指通过支持数字货币的智能应用提供的钱包服务,以App的形式存在。例如:各银行的数字钱包App等。数字软钱包本身只是用于登陆和身份认证,而对于数字货币的交易则是在后台服务端与消费终端之间进行的,因此数字软钱包是一种在联机前提下进行数字货币交易的数字钱包。
但是,数字软钱包的使用是基于智能硬件设备,智能硬件设备自身的性能良莠不齐,例如:智能硬件设备在蓝牙、NFC上的性能和通信稳定性差异较大,从而使得数字软钱包需要适配不同性能的硬件设备,导致数字软钱包开发难度大。
并且,数字软钱包只能在手机等智能设备上使用,无法移植至其他硬件上,而在手机等智能设备上使用,对使用者的操作能力、使用群体的范围都有限制。例如:老年人和儿童等人群可操作性和便捷性不强,受众人群局限性也就显现出来。另外,还有部分群体信赖或习惯于使用IC卡进行支付交易,难以习惯使用数字软钱包,因此导致数字软钱包的推广收到限制。
因此,如何降低数字钱包对硬件设备的要求,并且降低数字钱包的开发难度和推广难度,是目前本领域技术人员急需解决的技术问题。
发明内容
本申请提供了一种基于IC卡的数字软钱包,以降低数字钱包对硬件设备的要求,并且降低数字钱包的开发难度和推广难度。
为解决上述技术问题,本申请提供如下技术方案:
一种基于IC卡的数字软钱包,包括:IC卡和运行于IC卡上的第一数字软钱包和/或第二数字软钱包;其中,第一数字软钱包中存储有钱包ID,第二数字软钱包中存储有关联码;响应于接收到终端发送的读取钱包ID指令请求,IC卡上的第一数字软钱包将其加密的钱包ID发送给终端,以使终端将接收到的钱包ID作为终端与第一数字软钱包所对应的服务器进行交易的凭证;响应于接收到终端发送的令牌获取指令请求,IC卡上的第二数字软钱包生成付款令牌,并且将付款令牌和卡内余额发送给终端,以使终端将接收到的付款令牌作为终端与第二数字软钱包所对应的服务器进行交易的凭证。
如上所述的基于IC卡的数字软钱包,其中,优选的是,钱包ID是发卡方制卡时下发至IC卡内的初始钱包ID,或者是后续更新过的钱包ID。
如上所述的基于IC卡的数字软钱包,其中,优选的是,响应于接收到终端发送的获取随机数指令请求,IC卡上的第一数字软钱包将生成的软钱包随机数发送给终端,以使终端依据软钱包随机数生成数据域中包含新钱包ID的更新钱包ID指令。
如上所述的基于IC卡的数字软钱包,其中,优选的是,响应于接收到终端发送的更新钱包ID指令请求,IC卡上第一数字软钱包依据更新钱包ID指令请求得到新钱包ID,并且用新钱包ID替换当前钱包ID,以更新钱包ID。
如上所述的基于IC卡的数字软钱包,其中,优选的是,响应于接收到终端发送的获取随机数指令请求,IC卡上的第一数字软钱包将生成的软钱包随机数发送给终端,以使终端依据软钱包随机数生成数据域中包含校验值的应用锁定或解锁指令请求。
如上所述的基于IC卡的数字软钱包,其中,优选的是,响应于接收到终端发送的应用锁定或解锁指令请求,IC卡上的第一数字软钱包进行锁定或解锁设置,并将锁定或解锁设置的结果发送给终端,以使终端依据锁定或解锁的设置决定是否进行交易。
如上所述的基于IC卡的数字软钱包,其中,优选的是,若第一数字软钱包接收到的是应用锁定指令请求,则若匹配成功,设置IC卡上的第一数字软钱包为锁定状态,若匹配失败,保持原有状态;若第一数字软钱包接收到的是应用解锁指令请求,则若匹配成功,设置IC卡上的第一数字软钱包为解锁状态,若匹配失败,保持原有状态。
如上所述的基于IC卡的数字软钱包,其中,优选的是,付款令牌是由关联码、付款码、软钱包ATC、终端随机数、MAC校验值组成。
如上所述的基于IC卡的数字软钱包,其中,优选的是,响应于接收到终端发送的交易数据发送指令请求,IC卡上的第二数字软钱包依据交易数据发送指令请求中指示的交易数据更新或保持第二数字软钱包的卡内余额。
如上所述的基于IC卡的数字软钱包,其中,优选的是,若交易数据发送指令请求的数据域中指示的收款结果为成功,则IC卡的第二数字软钱包依据交易金额更新卡内余额,若交易数据发送指令请求的数据域中指示的收款结果为失败,则IC卡的第二数字软钱包则保持卡内余额。
为解决上述技术问题,本申请提供的基于IC卡的数字软钱包可以降低数字钱包对硬件设备的要求,并且降低数字钱包的开发难度和推广难度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的基于IC卡的数字软钱包A的身份认证流程图;
图2是本申请实施例提供的基于IC卡的数字软钱包A的ID更新流程图;
图3是本申请实施例提供的基于IC卡的数字软钱包A的锁定与解锁流程图;
图4是本申请实施例提供的基于IC卡的数字软钱包B的身份认证流程图;
图5是本申请实施例提供的基于IC卡的数字软钱包B的交易流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本申请提供了一种基于IC卡的数字软钱包,包括:IC卡和运行于IC卡上的第一数字软钱包和/或第二数字软钱包;其中,第一数字软钱包中存储有钱包ID,且钱包ID唯一,钱包ID可以是发卡方制卡时下发至IC卡内的初始钱包ID,也可以是后续更新过的钱包ID;第二数字软钱包中存储有关联码,关联码是钱包ID的别名,与钱包ID是一对一关联关系,其由发卡方制卡时下发至IC卡内的用于交易认证的数据,具体的,关联码的长度为8字节,前3位为机构标识,后13位为序列号,格式见下表。关联码格式:
其中,机构标识:3位数字,用于区别不同机构的编号。
序列号:13位数字,与每一张IC卡的钱包ID关联。
发卡方制卡时将第一数字软钱包的数据和第二数字软钱包的数据下发至IC卡中,为了保证初始化时能够区分出第一数字软钱包的数据和第二数字软钱包的数据,本申请中在向IC卡内下发第一数字软钱包的数据和第二数字软钱包的数据时,为第一数字软钱包的数据和第二数据软钱包的数据分别设置不同的配置标识。
响应于接收到终端发送的读取钱包ID指令请求,IC卡上的第一数字软钱包将其加密的钱包ID发送给终端,以使终端将接收到的钱包ID作为终端与第一数字软钱包所对应的服务器进行交易的凭证。
具体的,如图1所示,终端向IC卡发送读取钱包ID指令请求110,IC卡上的第一数字软钱包接收到读取钱包ID指令请求,第一数字软钱包将生成的软钱包随机数(由IC卡生成,长度可以是4字节)、包含有钱包ID信息和随机数的哈希值HASH_A和包含有钱包ID信息的MAC校验值作为加密的钱包ID,将加密的钱包ID作为读取钱包ID指令请求的响应数据发送至终端120,终端通过软钱包随机数、MAC校验值和哈希值HASH_A解密得到钱包ID,以使终端将钱包ID作为交易凭证,和与第一数字软钱包所对应的服务器进行交易。
其中,第一数字软钱包生成软钱包随机数;对钱包ID和生成的软钱包随机数做SM3密码杂凑(哈希、散列)算法,得到哈希值HASH_A;将哈希值HASH_A再用过程密钥B’采用SM4-CBC算法(即国密算法SM4 CBC模式)加密,取其结果的前四字节作为MAC校验值,其中过程密钥B’是根据生成的软钱包随机数生成的,用于MAC校验值计算的密钥。
在上述基础上,将第一数字软钱包生成的软钱包随机数作为密钥分散因子,将密钥B作为密钥,通过SM4-ECB算法(即国密算法SM4 EBC模式)加密密钥分散因子,将得到的结果作为过程密钥B’,其中,密钥B为发卡方制卡时下发至IC卡内的第一数字软钱包用于加密生成过程密钥B’的密钥。
响应于接收到终端发送的获取随机数指令请求,IC卡上的第一数字软钱包将生成的软钱包随机数发送给终端,以使终端依据软钱包随机数生成数据域中包含新钱包ID的更新钱包ID指令。
具体的,如图2所示,终端向IC卡发送获取随机数指令请求210,IC卡上的第一数字软钱包接收到获取随机数指令请求,第一数字软钱包生成软钱包随机数,并且将生成的软钱包随机数作为获取随机数指令请求的响应数据发送至终端220,终端根据软钱包随机数生成数据域中包含新钱包ID的更新钱包ID指令。
响应于接收到终端发送的更新钱包ID指令请求,IC卡上的第一数字软钱包依据更新钱包ID指令请求得到新钱包ID,并且用新钱包ID替换当前钱包ID,以更新钱包ID。
具体的,如图2所示,终端将更新钱包ID指令请求发送给IC卡上的第一数字软钱包230,IC卡上的第一数字软钱包接收到更新钱包ID指令请求后,通过生成的过程密钥A’和过程密钥B’对软钱包随机数采用SM4-CBC算法加密,取其结果前四字节与更新钱包ID指令请求进行MAC校验值的匹配,若匹配成功,则通过过程密钥A’对更新钱包ID指令请求进行解密得到新钱包ID,将新钱包ID替换当前钱包ID,从而更新了第一数字软钱包的钱包ID,若匹配失败,则终止流程。然后,IC卡上的第一数字软钱包返回更新成功或更新失败的标识码,以通知终端更新结果。
其中,对新钱包ID和生成的软钱包随机数做SM3密码杂凑(哈希、散列)算法,得到包含有新钱包ID信息的哈希值HASH_A;将哈希值HASH_A再用过程密钥B’采用SM4-CBC算法(即国密算法SM4 CBC模式)加密,取其结果的前四字节作为包含有新钱包ID信息的MAC校验值,其中过程密钥B’是根据生成的软钱包随机数生成的,用于MAC校验值计算的密钥。
在上述基础上,将第一数字软钱包生成的软钱包随机数作为密钥分散因子,将密钥A作为密钥,通过SM4-ECB算法加密密钥分散因子,将得到的结果作为过程密钥A’,其中,密钥A为发卡方制卡时下发至IC卡内的第一数字软钱包用于对敏感数据加解密的密钥。
响应于接收到终端发送的获取随机数指令请求,IC卡上的第一数字软钱包将生成的软钱包随机数发送给终端,以使终端依据软钱包随机数生成数据域中包含校验值的应用锁定或解锁指令请求。
具体的,如图3所示,终端向IC卡发送获取随机数指令请求310,IC卡上的第一数字软钱包接收到获取随机数指令请求,第一数字软钱包生成软钱包随机数,并且将生成的软钱包随机数作为获取随机数指令请求的响应数据发送至终端320,终端根据软钱包随机数生成数据域中包含MAC校验值的应用锁定或解锁指令请求。
响应于接收到终端发送的应用锁定或解锁指令请求,IC卡上的第一数字软钱包进行锁定或解锁设置,并将锁定或解锁设置的结果发送给终端,以使终端依据锁定或解锁的设置决定是否进行交易。
具体的,如图3所示,终端向IC卡发送应用锁定或解锁指令请求330,IC卡上的第一数字软钱包接收到应用锁定或解锁指令请求,通过生成的过程密钥B’对软钱包随机数采用SM4-CBC算法加密,取其结果前四字节与应用锁定或解锁指令请求进行MAC校验值的匹配。
若第一数字软钱包接收到的是应用锁定指令请求,则若匹配成功,设置IC卡上的第一数字软钱包为锁定状态,若匹配失败,保持原有状态;若第一数字软钱包接收到的是应用解锁指令请求,则若匹配成功,设置IC卡上的第一数字软钱包为解锁状态,若匹配失败,保持原有状态。
第一数字软钱包将设置结果作为响应数据发送给终端340,终端根据设置结果进行相应的交易,即设置结果为锁定状态,则终止后续交易,设置结果为解锁状态,则进行后续交易。
响应于接收到终端发送的令牌获取指令请求,IC卡上的第二数字软钱包生成付款令牌,并且将付款令牌和卡内余额发送给终端,以使终端将接收到的付款令牌作为终端与第二数字软钱包所对应的服务器进行交易的凭证。
具体的,如图4所示,终端向IC卡发送令牌获取指令请求GetData,并且还将终端产生的终端随机数一并发送至IC卡410,其中,终端随机数可以是由令牌获取指令请求GetData的数据域下发至IC卡中的4字节随机数。响应于接收到令牌获取指令请求GetData和终端随机数,IC卡的第二数字软钱包生成包含有关联码付款码、软钱包ATC、MAC校验值和终端随机数的付款令牌Token,并将付款令牌Token和卡内余额一起发送给终端420,以使终端将付款令牌Token作为交易凭证,和与第二数字软钱包所对应的服务器进行交易,并且使终端在卡内余额的基础上减去交易金额,以得到卡内剩余金额。其中,付款令牌Token是第二数字软钱包身份认证的唯一凭证,是由关联码、付款码、软钱包ATC、终端随机数、MAC校验值组成。付款码是交易信息数据,由发卡方制卡时下发至IC卡内的用于交易认证的数据,在第二数字软钱包的生命周期内有效,由后台系统生成制卡的数据与钱包ID建立绑定关系后的数据组成,付款码作为终端交易凭证。软钱包ATC是IC卡交易计数器,长度可以是4字节,IC卡每接收一次令牌获取指令GetData,软钱包ATC的值加1。MAC校验值是用过程密钥C’作为密钥,对关联码、付款码、软钱包ATC、终端随机数进行MAC计算,并取前4字节作为MAC校验值。
在上述基础上,将软钱包ATC和终端生成的终端随机数作为密钥分散因子,将密钥C作为密钥,通过SM4-ECB算法加密密钥分散因子,将得到的结果作为过程密钥C’,其中,密钥C为发卡方制卡时下发至IC卡内的第二数字软钱包用于SM4算法的密钥。
响应于接收到终端发送的交易数据发送指令请求,IC卡上的第二数字软钱包依据交易数据发送指令请求中指示的交易数据更新或保持第二数字软钱包的卡内余额。
具体的,如图5所示,终端向IC卡发送交易数据发送指令请求SendData510,交易数据发送指令请求SendData的数据域中包含有收款结果、交易金额,若交易数据发送指令请求SendData的数据域中指示的收款结果为成功,则IC卡的第二数字软钱包依据交易金额更新卡内余额,若交易数据发送指令请求SendData的数据域中指示的收款结果为失败,则IC卡的第二数字软钱包则不更新卡内余额,即保持卡内余额。IC卡的第二数字软钱包将更新或保持第二数字软钱包的卡内余额的结果作为交易数据发送指令SendData的响应数据发送给终端520,以使终端知晓交易完成。
由于本申请的基于IC卡的数字软钱包是将IC卡作为数字软钱包的硬件载体,因此降低了数字钱包对硬件设备的要求;另外,由于IC卡有着庞大的使用人群,因此将IC卡做为安全稳定的硬件设备,使得数字软钱包更能获得大众的认可,降低了数字钱包的推广难度;并且,由于IC卡的型号单一,从而还降低了数字钱包的开发难度。
另外,还由于基于IC卡的数字软钱包是基于IC卡背后的账户的,交易时仅是终端和基于IC卡的数字软钱包所对应的服务器进行交易,因此相较于数字硬钱包被盗刷的风险更小;还由于IC卡作为较高安全等级和稳定可靠的载体,因此本申请的基于IC卡的数字软钱包相较于APP应用软钱包无需再设置SE安全元件,在成本上占优势。
此外,由于有IC卡形式的数字软钱包的加入,因此丰富了数字软钱包载体硬件的多样性;还由于本申请的基于IC卡的数字软钱包具有第一数字软钱包和第二数字软钱包,并且第一数字软钱包和第二数字软钱包支持不同的支付方式,因此本申请将多种认证方式融合,让使用者在不同应用场景中支付更加便捷。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
- 一种基于双界面IC卡的数字货币硬件钱包
- 一种基于贴膜卡保护数字加密货币钱包数据的方法