[0047] 实施例:
[0048] 本发明的一种公钥体制下的双介质双认证快速离线支付方法,具体实施步骤如下:
[0049] 建立一套可见光通信VLC和Barcode公钥体制双介质离线支付装置,包括:电子钱包1、消费机2、服务器3。
[0050] 电子钱包1,包括:控制模块11、输入模块12、显示模块13、数据接口14、条码扫描模块15、钱包模块16、可见光发射模块17、密码处理模块18。
[0051] 可见光发射模块17,用于根据控制模块11输入的信息,生成并发送可见光信号。
[0052] 条码扫描模块15,用于扫描识别条码,并将识别的结果输出给控制模块11。
[0053] 控制模块11,用于:1、将待发送的信息进行处理,生成数据包,并输出给可见光发射模块17,驱动可见光发射模块17发送可见光信号;2、接收条码扫描模块15的扫描结果输出,并对扫描结果进行验证;3、与钱包模块16进行消费、充值、余额查询、操作日志信息的读写操作;4、根据收到的信息和生成的支付信息,生成需要通过可见光发射模块17发送的信息;5、能够通过数据接口14与服务器3进行数据交互。
[0054] 钱包模块16,用于保存包括:用户账号信息、钱包余额、消费权限、查询密码、支付密码、操作日志、生产发行机构在内的信息;并可以验证输入的密码是否与钱包密码模块内保存的密码一致;该模块使用手机sim卡实现。
[0055] 输入模块12,用于向控制模块11输入支付金额、查询密码、支付密码、操作指令。
[0056] 显示模块13,用于显示支付金额、密码输入界面、操作指令以及提示信息。
[0057] 密码处理模块18,用于保存消费机的公钥环,电子钱包自身的私有密钥,以及对输入的信息,根据模块内置的密码处理单元,采用公开密钥或者私有密钥进行加密,以及采用公开密钥或者私有密钥进行解密;并输出加密或者解密后的信息。
[0058] 数据接口14,用于提供电子钱包1的联网功能,提供与服务器3连接并进行数据交换、数据维护和升级的功能。
[0059] 电子钱包1采用配置了闪光灯和摄像头的智能手机实现。
[0060] 消费机2,包括:可见光接收模块24、条码显示模块22、读写控制模块21、收银箱模块23、键盘模块25、显示器26、通信模块27、密码协处理器28。
[0061] 可见光接收模块24,用于接收可见光信号,并处理还原成对应的数字信号,还原成数据包。
[0062] 条码显示模块22,用于根据读写控制模块21的输入信息,生成并显示出条码。
[0063] 读写控制模块21,用于:1、接收可见光接收模块24的输出,并予以认证;2、将待发送的信息进行处理,输出给条码显示模块22;3、与收银箱模块23进行消费、充值、余额查询、操作日志信息的读写操作;4、提供通信接口,通过通信模块27与服务器3进行交易信息、用户信息的上传和下载。
[0064] 收银箱模块23,用于保存包括:操作日志、收款消费权限、黑名单、收银余额、操作密码、有效期、生产发行机构在内的信息。
[0065] 键盘模块25,用于向读写控制模块21输入交易金额、交易密码、操作指令。
[0066] 显示器26,用于显示交易金额、密码输入界面、操作指令以及提示信息。
[0067] 密码协处理器,用于保存电子钱包的公钥环,消费机自身的私有密钥,以及对输入的信息,根据密码协处理器内置的密码处理单元,采用公开密钥或者私有密钥进行加密,以及采用公开密钥或者私有密钥进行解密;并输出加密或者解密后的信息。
[0068] 通信模块27,用于通过有线或者无线的方式,连接上位机或者接入网络,从而与服务器相连。
[0069] 服务器3,用于:1、与消费机2通过通信模块27建立上传、下载的数据连接;2、与电子钱包1通过数据接口14建立上传、下载的数据连接;3、提供本离线支付方法的后台服务支持;4、提供整个离线支付装置与金融系统的资金流动的接口;5、为消费机2、电子钱包1发放或取消授权,提供包括:密钥更新、算法更新和升级、使用权限调整、有效期调整、电子钱包充值、消费机缴款在内的服务;6、保存包括:授权用户清单、黑名单、操作日志汇总、消费机清单在内的信息。
[0070] 授权用户清单,用于保存包括:已经授权可以进行离线支付的电子钱包身份标识、使用权限、有效期、电子钱包持有者的身份信息、各个电子钱包的公开密钥。
[0071] 黑名单,用于保存授权用户清单中,因欠费、挂失、有不正当使用记录而被拒绝支付交易的那部分用户信息。
[0072] 支付接口,用于提供整个离线支付装置与金融系统的资金流动的接口。
[0073] 操作日志汇总,用于保存包括所有消费机、电子钱包的查询、充值、消费的操作的时间、支付金额、支付过程数据参数在内的信息。
[0074] 消费机清单,用于保存包括:已经授权可以进行离线支付交易的消费机身份标识、使用权限、有效期、各个消费机的公开密钥。
[0075] 一组服务器3、不少于一个消费机2、不少于一个电子钱包1,共同组成一个完整的离线支付装置系统;服务器3可以给包括本发明中消费机2的模块及其功能的设备发放权限,使其可以具备接受装置内的电子钱包1进行支付的功能;服务器3可以给包括本发明中电子钱包1的模块以及功能的设备发放权限,使其可以具备向装置内的消费机2进行支付的功能。
[0076] 电子钱包1的发行过程包括:由服务器3给用户发放一个授权,授权方式可以是发放一个授权实体硬件设备,也可以是为用户已有的配备本发明的设备提供一个授权号;并为设备充值,写入电子钱包身份标识、使用权限、有效期、电子钱包的支付密码和查询密码、电子钱包持有者的身份信息。
[0077] 消费机2和电子钱包1的发行和授权,由一个单位负责实施,从而保证:1、所有经过授权的消费机上的公钥环包含所有经过授权的电子钱包的公开密钥;2、所有经过授权的电子钱包的公钥环包含所有经过授权的消费机的公开密钥;3、每个消费机都有各自唯一的私有密钥,每个电子钱包都有各自唯一的私有密钥;4、所有经过授权的电子钱包和消费机都可以在联网时,升级或者扩展公钥环上的公开密钥;5、电子钱包1和消费机2都可以在联网时,升级或者扩展本身的私有密钥。
[0078] 任何一个电子钱包根据公钥密码算法的加密算法fun(),都可以用其私有密钥S加密的信息m得到的密文M,同时可以由消费机利用公钥环上的相对应的该电子钱包的公开密钥G和公钥密码算法的解密算法gun(),解密密文M得到信息m;但消费机不能通过采用公钥环上的任何一个公开密钥或者其他除电子钱包的私有密钥之外的其他密钥对同一个信息m加密而得到电子钱包用私有密钥加密得到的密文M。
[0079] 在本实施例中,用一个授权的电子钱包1向一个授权的消费机2进行支付,支付由电子钱包1主动发起,支付流程处理包括如下:
[0080] ZD1,在电子钱包1,输入支付金额和支付密码,并进入ZD1.1。
[0081] ZD1.1,钱包模块16验证支付密码是否正确,如果正确则进入ZD1.2;如果不正确,则退出支付流程,并在显示模块13上显示密码错误的提示。
[0082] ZD1.2,电子钱包1查询钱包模块16的余额,如果余额充足,则进入ZD1.3;否则,退出流程,提示余额不足。
[0083] ZD1.3,电子钱包1生成支付邀请码YQM1,支付邀请码YQM1包括:支付随机码ZFR1、支付金额ZFK1、电子钱包身份标识QID1;并采用电子钱包私有密钥QS和加密算法fun()对支付邀请码YQM1进行加密得到密文qsYQM1;再将密文qsYQM1和QID1发送出去。
[0084] ZD2,消费机2收到密文qsYQM2和QID2,根据电子钱包身份标识QID2,选择该电子钱包的公开密钥QS2和解密算法gun()解密密文qsYQM2,如果通过解密qsYQM2得到支付邀请码YQM2,并从中提取出支付随机码ZFR2、支付金额ZFK2、电子钱包身份标识QID2-1,则解密成功,进入ZD2.1;如果解密无法进行,表示解密失败,则退出支付流程,并在显示器26上显示处理失败的提示信息。
[0085] ZD2.1,对比消费机2收到的QID2和解密qsYQM2提取出的电子钱包身份标识QID2-1,如果一致则进入ZD2.2;如果不一致,则退出支付流程,并在显示器26上显示电子钱包身份标识错误的提示。
[0086] ZD2.2,消费机2提供两种操作,可以在使用前设定好:1、在显示器26上显示支付金额ZFK2,并提供是否同意接收支付的选择,如果选择同意就进入ZD2.3,如果不同意就退出支付;2、不需要确认支付金额ZFK2,默认接收,直接进入ZD2.3。
[0087] ZD2.3,消费机2生成一个收款随机码SKR2和收款确认码SKM2,收款确认码SKM2包括:收款随机码SKR2、支付邀请码YQM2、消费机身份标识XID2;由该消费机的私有密钥XS和加密算法fun(),加密SKM2得到密文xsSKM2,再由身份标识为QID2的电子钱包的公开密钥QS2加密xsSKM2和消费机身份标识XID2,得到密文qgxsSKMXID2,再根据密文qgxsSKMXID2生成一个条码,显示在显示器26上。
[0088] ZD3,电子钱包1扫描显示器26上的条码,识别得到qgxsSKMXID3,并进入ZD3.1。
[0089] ZD3.1,电子钱包1用其私有密钥QS和解密算法gun()对qgxsSKMXID3进行解密,如果解密得到xsSKM3和消费机身份标识XID3;则解密成功,进入ZD3.2;如果解密无法进行,表示解密失败,则退出支付流程;由此保证,有且只有发出支付邀请,且身份标识为QID1的电子钱包,才能进入后面的支付流程,避免电子钱包的伪造或者在支付过程中,被其他非法的电子钱包替换。
[0090] ZD3.2,再根据身份标识XID3,用电子钱包里的该消费机的公开密钥XG3对密文xsSKM3进行解密,如果解密得到SKM3,并能从中提取出收款随机码SKR3、支付邀请码YQM3、消费机身份标识XID3,则解密成功,进入ZD3.3;如果解密无法进行,表示解密失败,则退出支付流程;由此保证,有且只有身份标识为XID3的消费机,才能对xsSKM3进行解密,并能够进入后面的支付流程。
[0091] ZD3.3,对比ZD1.3中电子钱包1生成的支付邀请码YQM1和在ZD3.2中提取的支付邀请码YQM3,当分别一致时,消费机进入ZD4,否则提示对比验证,并退出支付流程。
[0092] ZD4,电子钱包1更新钱包模块16的钱包余额,用操作时间SJ、支付金额ZFK1、支付邀请码YQM3、收款确认码SKM3生成操作日志,并通过显示模块显示付款成功的提示信息。
[0093] ZD4.1,电子钱包1生成一个完成支付的确认码QRM4,确认码QRM4包括:收款确认码SKM3、支付金额ZFK1、支付邀请码YQM3。
[0094] ZD4.2,由该电子钱包私有密钥QS和加密算法fun(),加密QRM4得到密文xsQRM3,再使用身份标识为XID3的消费机的公开密钥XG3和加密算法fun(),加密xsQRM3和电子钱包身份标识QID1,得到密文qgxsQRMQID3,再根据密文qgxsQRMQID3生成一个可见光通信号,通过可见光发射模块17发送出去。
[0095] ZD5,消费机2收到密文qgxsQRMQID5;由消费机公开密钥QG和解密算法gun()解密密文qgxsQRMQID5,如果通过解密qgxsQRMQID5得到xsQRM5和电子钱包身份标识QID5,则解密成功,进入ZD5.1;如果解密无法进行,表示解密失败,则退出支付流程,并在显示器26上显示处理失败的提示信息。
[0096] ZD5.2,根据电子钱包身份标识QID5,选择该电子钱包的公开密钥QS5,用解密算法gun()解密密文xsQRM5,如果解密xsQRM5,并从中提取出收款确认码SKM5、支付金额ZFK5、支付邀请码YQM5,则解密成功,进入ZD5.3;如果解密无法进行,表示解密失败,则退出支付流程,并在显示器26上显示处理失败的提示信息。
[0097] ZD5.3,消费机2进行如下对比验证:
[0098] 1)对比ZD2.3中消费机2生成的收款确认码SKM2和在ZD5.2中收到并解密得到的收款确认码SKM5。
[0099] 2)对比ZD2中消费机2从qsYQM2解密得到的支付金额ZFK2和在ZD5.2中收到并解密得到的支付金额ZFK5。
[0100] 3)对比ZD2中消费机2从qsYQM2解密得到的支付邀请码YQM2和在ZD5.2中收到并解密得到的支付邀请码YQM5。
[0101] 当以上3个对比都分别一致时,消费机2生成一个流程成功完成的标识,显示在显示器26上。
[0102] 消费机2更新收款箱模块23的余额,用本次支付的操作时间SSJ、收款确认码SKM5、支付邀请码YQM5生成操作日志,消费机2生成一个流程成功完成的标识,显示在显示器26上。
[0103] 在支付流程中,从电子钱包1接收消费机2发送的数据,以及从消费机2接收电子钱包1发送的数据,都可能在收发过程中存在无法识别的可能,在支付流程中,对于无法识别的数据,以及因为无法接收数据而导致无法识别的情况,装置都会在一个设定的等待时间超时后,单方面结束支付流程。