1.一种公钥体制下的双介质双认证快速离线支付方法,其特征在于具体步骤为:
(1) 建立一套VLC和Barcode公钥体制双介质离线支付装置,包括:电子钱包、消费机和服务器;
电子钱包,包括:可见光发射模块、条码扫描模块、控制模块、钱包模块、输入模块、显示模块、密码处理模块和数据接口;可见光发射模块,用于根据控制模块输入的信息,生成并发送可见光信号;条码扫描模块,用于扫描识别条码,并将识别的结果输出给控制模块;控制模块,用于:1、将待发送的信息进行处理,生成数据包,并输出给可见光发射模块,驱动可见光发射模块发送可见光信号;2、接收条码扫描模块的扫描结果输出,并对扫描结果进行验证;3、与钱包模块进行消费、充值、余额查询、操作日志信息的读写操作;4、根据收到的信息和生成的支付信息,生成需要通过可见光发射模块的信息;5、能够通过数据接口与服务器进行数据交互;钱包模块,用于保存包括:用户账号信息、钱包余额、消费权限、查询密码、支付密码、操作日志、生产发行机构在内的信息;并可以验证输入的密码是否与钱包密码模块内保存的密码一致;每一条操作日志,对应一项支付金额或者一项充值金额;该模块能够使用包括手机sim卡、NFC在内的介质作为钱包模块的载体;输入模块,用于向控制模块输入包括支付金额、查询密码、支付密码、操作指令在内的信息;显示模块,用于显示支付金额、密码输入界面、操作指令以及提示信息;密码处理模块,用于保存消费机的公钥环,电子钱包自身的私有密钥,以及对输入的信息,根据模块内置的密码处理单元,采用公开密钥或者私有密钥进行加密,以及采用公开密钥或者私有密钥进行解密;并输出加密或者解密后的信息;数据接口,用于提供电子钱包的联网功能,提供与服务器连接并进行数据交换、数据维护和升级的功能;
消费机,包括:可见光接收模块、条码显示模块、读写控制模块、收银箱模块、键盘模块、显示器、密码协处理器和通信模块;可见光接收模块,用于接收可见光信号,并处理还原成对应的数字信号,还原成数据包;条码显示模块,用于根据读写控制模块的输入信息,生成并显示出条码;读写控制模块,用于:1、接收可见光接收模块的输出,并予以认证;2、将待发送的信息进行处理,输出给条码显示模块;3、与收银箱模块进行消费、充值、余额查询、操作日志信息的读写操作;4、提供数据接口,通过通信模块与服务器进行包括交易信息、电子钱包信息、消费机信息在内的数据的上传和下载;收银箱模块,用于保存包括:操作日志、收款消费权限、黑名单、收银余额、操作密码、有效期、生产发行机构在内的信息;每一条操作日志,对应一项收款金额;键盘模块,用于向读写控制模块输入交易金额、交易密码、操作指令;显示器,用于显示交易金额、密码输入界面、操作指令以及提示信息;密码协处理器,用于:1、保存电子钱包的公钥环,消费机自身的私有密钥;2、对输入的信息,根据密码协处理器内置的密码处理单元,采用公开密钥或者私有密钥进行加密,以及采用公开密钥或者私有密钥进行解密;并输出加密或者解密后的信息;通信模块,用于通过有线或者无线的方式,连接上位机或者接入网络,从而与服务器相连;
服务器,用于:1、与消费机通过通信模块建立上传、下载的数据连接;2、与电子钱包通过数据接口建立上传、下载的数据连接;3、提供本离线支付方法的后台服务支持;4、提供整个离线支付装置与金融系统的资金流动的接口;5、为消费机、电子钱包发放或取消授权,提供包括:密钥更新、算法更新和升级、使用权限调整、有效期调整、电子钱包充值、消费机缴款在内的服务;6、保存包括:授权用户清单、黑名单、操作日志汇总、消费机清单在内的信息;7、以电子货币的形式,保存有本装置中,服务器存管的资金;8、保存有本装置中,所有电子钱包的可用资金额度数;9、在消费机连接上服务器时,收缴消费机收取的各个电子钱包的资金;10、在电子钱包连接上服务器时,核对电子钱包内的余额和服务器上保存的该电子钱包记录的可用资金数,当两者不一致时,进行支付流程仲裁,避免因为消费机或电子钱包的故障、非正常操作、伪造、支付信息篡改造成的损失;11、冻结黑名单中列出的电子钱包,以及电子钱包有故障、非正常操作、伪造、支付信息篡改情况;
授权用户清单,用于保存包括:已经授权可以进行离线支付的电子钱包身份标识、使用权限、有效期、电子钱包持有者的身份信息、各个电子钱包的公开密钥;黑名单,用于保存授权用户清单中,因欠费、挂失、有不正当使用记录而被拒绝支付交易的那部分用户信息;支付接口,用于提供整个离线支付装置与金融系统的资金流动的接口;操作日志汇总,用于保存包括所有消费机、电子钱包进行查询、充值、消费的操作日志在内的操作记录信息;消费机清单,用于保存包括:已经授权可以进行离线支付交易的消费机身份标识、使用权限、有效期、各个消费机的公开密钥;
服务器用于给充值消费机发放权限,使其具备接受装置内的电子钱包进行支付的功能;服务器用于给电子钱包发放权限,使其具备向装置内的消费机进行支付的功能;由服务器给用户发放一个授权,授权方式是发放一个授权实体硬件设备,或者是为已有设备的用户提供一个授权号;并为设备充值,写入电子钱包身份标识、使用权限、有效期、电子钱包的支付密码和查询密码、电子钱包持有者的身份信息;消费机和电子钱包内的加密解密采用同一个公钥密码算法;消费机和电子钱包的发行和授权,由一个单位、组织或者一个联合机构负责实施,从而保证:1、消费机上的公钥环包含所有电子钱包的公开密钥;2、每一个电子钱包的公钥环包含所有消费机的公开密钥;3、每个消费机都有各自唯一的私有密钥, 每个电子钱包都有各自唯一的私有密钥;4、电子钱包和消费机都可以在联网时,升级或者扩展公钥环上的公开密钥;5、电子钱包和消费机都可以在联网时,升级或者扩展本身的私有密钥;
电子钱包根据公钥密码算法的加密算法fun(),能够用其私有密钥S加密的信息m得到的密文M,同时能够由消费机利用公钥环上的相对应的该电子钱包的公开密钥G和公钥密码算法的解密算法gun(),解密密文M得到信息m;但消费机不能通过采用公钥环上的任何一个公开密钥或者其他除电子钱包的私有密钥之外的其他密钥对同一个信息m加密而得到电子钱包用私有密钥加密得到的密文M;
(2)在步骤(1)建立的VLC和Barcode公钥体制双介质离线支付装置中,用一个授权的电子钱包向一个授权的消费机进行支付,支付由电子钱包主动发起,支付流程处理包括如下:ZD1,在电子钱包,输入支付金额和支付密码,并进入ZD1.1;
ZD1.1,钱包模块验证支付密码是否正确,如果正确则进入ZD1.2;如果不正确,则退出支付流程,并在显示模块上显示密码错误的提示;
ZD1.2,电子钱包查询钱包模块的余额,如果余额充足,则进入ZD1.3;否则,退出流程,提示余额不足;
ZD1.3,电子钱包生成支付邀请码YQM1,支付邀请码YQM1包括:支付随机码ZFR1、支付金额ZFK1、电子钱包身份标识QID1;并采用电子钱包的私有密钥QS和加密算法fun()对支付邀请码YQM1进行加密得到密文qsYQM1;再将密文qsYQM1和QID1发送出去;
ZD2,消费机收到密文qsYQM2和QID2,根据电子钱包身份标识QID2,选择该电子钱包的公有密钥QS2和解密算法gun()解密密文qsYQM2, 如果通过解密qsYQM2得到支付邀请码YQM2,并从中提取出支付随机码ZFR2、支付金额ZFK2、电子钱包身份标识QID2-1,则解密成功,进入ZD2.1;如果解密无法进行,表示解密失败,则退出支付流程,并在显示器上显示处理失败的提示信息;
ZD2.1,对比消费机收到的QID2和解密qsYQM2提取出的电子钱包身份标识QID2-1,如果一致则进入ZD2.2;如果不一致,则退出支付流程,并在显示器上显示电子钱包身份标识错误的提示;
ZD2.2,消费机提供两种操作,可以在使用前设定好:1、在显示器上显示支付金额ZFK2,并提供是否同意接收支付的选择,如果选择同意就进入ZD2.3,如果不同意就退出支付;2、不需要确认支付金额ZFK2,默认接收,直接进入ZD2.3;
ZD2.3,消费机生成一个收款随机码SKR2和收款确认码SKM2,收款确认码SKM2包括:收款随机码SKR2、支付邀请码YQM2、消费机身份标识XID2;由该消费机的私有密钥XS和加密算法fun(),加密SKM2得到密文xsSKM2,再由身份标识为QID2的电子钱包的公开密钥QG加密xsSKM2和消费机身份标识XID2,得到密文qgxsSKMXID2,再根据密文qgxsSKMXID2生成一个条码,显示在条码显示模块上;
ZD3,电子钱包扫描条码显示模块上的条码,识别得到qgxsSKMXID3,并进入ZD3.1;
ZD3.1,电子钱包用其私有密钥QS和解密算法gun()对qgxsSKMXID3进行解密,如果解密得到xsSKM3和消费机身份标识XID3;则解密成功,进入ZD3.2;如果解密无法进行,表示解密失败,则退出支付流程;由此保证,有且只有发出支付邀请,且身份标识为QID1的电子钱包,才能进入后面的支付流程,避免电子钱包的伪造或者在支付过程中,被其他非法的电子钱包替换;
ZD3.2,再根据身份标识XID3,用电子钱包里的该消费机的公开密钥XG3对密文xsSKM3进行解密,如果解密得到SKM3,并能从中提取出收款随机码SKR3、支付邀请码YQM3、消费机身份标识XID3,则解密成功,进入ZD3.3;如果解密无法进行,表示解密失败,则退出支付流程;由此保证,有且只有身份标识为XID3的消费机,才能对xsSKM3进行解密,并能够进入后面的支付流程;
ZD3.3,对比ZD1.3中电子钱包生成的支付邀请码YQM1和在ZD3.2中提取的支付邀请码YQM3,当分别一致时,消费机进入ZD4,否则提示对比验证,并退出支付流程;
ZD4,电子钱包更新钱包模块的钱包余额,用操作时间SJ、支付金额ZFK1、支付邀请码YQM3、收款确认码SKM3生成操作日志,并通过显示模块显示付款成功的提示信息;
ZD4.1,电子钱包生成一个完成支付的确认码QRM4,确认码QRM4包括:收款确认码SKM3、支付金额ZFK1、支付邀请码YQM3;
ZD4.2,由该电子钱包的私有密钥XS和加密算法fun(),加密QRM3得到密文xsQRM3,再使用身份标识为XID2的消费机的公开密钥QG和加密算法fun(),加密xsQRM3和电子钱包身份标识QID1,得到密文qgxsQRMQID3,再根据密文qgxsQRMQID3生成一个可见光通信号,通过可见光发射模块发送出去;
ZD5,消费机收到密文qgxsQRMQID5;由消费机的公开密钥QG和解密算法gun()解密密文qgxsQRMQID5,如果通过解密qgxsQRMQID5得到xsQRM5和电子钱包身份标识QID5,则解密成功,进入ZD5.1;如果解密无法进行,表示解密失败,则退出支付流程,并在显示器上显示处理失败的提示信息;
ZD5.2,根据电子钱包身份标识QID5,选择该电子钱包的公有密钥QS5,用解密算法gun()解密密文xsQRM5, 如果解密xsQRM5,并从中提取出收款确认码SKM5、支付金额ZFK5、支付邀请码YQM5,则解密成功,进入ZD5.3;如果解密无法进行,表示解密失败,则退出支付流程,并在显示器上显示处理失败的提示信息;
ZD5.3,消费机进行如下对比验证:
1)对比ZD2.3中消费机生成的收款确认码SKM2和在ZD5.2中收到并解密得到的收款确认码SKM5;
2)对比ZD2中消费机从qsYQM2解密得到的支付金额ZFK2和在ZD5.2中收到并解密得到的支付金额ZFK5;
3) 对比ZD2中消费机从qsYQM2解密得到的支付邀请码YQM2和在ZD5.2中收到并解密得到的支付邀请码YQM5;
当以上3个对比都分别一致时,消费机生成一个流程成功完成的标识,显示在显示器上;
消费机更新收款箱模块的余额,用本次支付的操作时间SSJ、收款确认码SKM5、支付邀请码YQM5生成操作日志,消费机生成一个流程成功完成的标识,显示在显示器上;
(3)服务器给每一台消费机设定一个有效期,如果超出有效期则无法使用,无法完成支付;有效期过后,要求消费机必须连接服务器,向服务器上传操作日志、收款金额,并再次由服务器为消费机重新延展有效期;
在支付流程中,从电子钱包接收消费机发送的数据,以及从消费机接收电子钱包发送的数据, 都可能在收发过程中存在无法识别的可能,所以在支付流程中,对于无法识别的数据,以及因为无法接收数据而导致无法识别的情况,装置都会在一个设定的等待时间超时后,单方面结束支付流程;
在支付流程中,从电子钱包向消费机发送的数据,以及从消费机向电子钱包发送的数据, 可能在收发过程中存在数据的丢失、被篡改、伪造的风险,因此在支付流程中,对每次收到的关键数据,都假定当前收到的数据与支付流程的前面的步骤生成的或者接收到的数据不一样,需要对比验证,由此保证收发数据的真实、完整。