双方参与的随机数生成和验证方法

文档序号:10471669阅读:215来源:国知局
双方参与的随机数生成和验证方法
【专利摘要】本发明公开了一种双方参与的随机数生成和验证方法。所述方法包括:随机数生成方和随机数使用方双方各提供一个中间随机数作为最终随机数的生成参数,最终的随机数由随机数生成方生成。当使用方对生成方提供的随机数产生质疑时,可以向生成方请求验证,生成方发送验证信息给使用方,使用方根据接收到的验证信息重新计算随机数并与接收到的原随机数进行对比,一致则说明双方共同参与了该随机数的生成,并且生成方没有恶意窜改随机数。本发明不仅能满足随机数使用方随时验证随机数的随机性和真实性,还可以保证双方的公平性,有效保障了各方的利益,是一种非常实用的随机数生成方案。
【专利说明】
双方参与的随机数生成和验证方法
技术领域
[0001]本发明属于密码学与信息安全技术领域,具体涉及一种双方参与的随机数生成和验证方法。
【背景技术】
[0002]电子商务的发展加速了密码技术在商业活动中的应用,使得随机数在生活中使用的频率越来越高。但是现在随着科技的发展,使用face to face的通信方式来确立随机数的生成具有时间和地域上的限制,早已无法满足需求,于是出现了各种超越了时域限制的关于随机数的应用,并且渗透到生活的方法面面。网上购物,彩票摇号,火车和飞机车票的预定和购买,微信、支付宝支付,各类软件的注册、登录或是其他的消费场合都会出现随机数提供给我们使用。
[0003]目前存在的关于随机数的商业应用,其随机数的生成方案都是不公平的。在现有的随机数的生成方案当中,随机数由商业活动中的主办方,即商家生成,对随机数具有绝对控制权。而随机数的使用者,即客户只能被动的接收商家提供的随机数,没有参与权,无法参与到随机数的生成中,更无法对其进行验证,这样商家可以轻易利用这一不公平性构造有利于商家利益的随机数的数值,从中谋取利益,使得客户的利益受到损害。

【发明内容】

[0004]本发明提供一种双方参与的随机数生成和验证方法,随机数生成方(例如商家)和随机数使用方(例如客户)双方能够共同参与随机数的生成并进行验证,随机数的生成是不可控的,不受双方任何一方的控制,能够有效保障交易双方的公平性,同时验证机制还能有效防止窜改,提高随机数使用方的信任度。通过这种双方参与生成并验证的生成方式生成的随机数,不仅能满足随机数使用方随时验证随机数的随机性和真实性,还可以保证在交易过程中交易双方的公平性,有效保障了消费者的利益,是一种非常实用的随机数生成方案。
[0005]本发明的技术方案包括两个阶段,随机数生成阶段和验证随机数阶段。
[0006]随机数生成阶段主要步骤如下:
[0007](I)随机数使用方与随机数生成方首先建立通信。
[0008](2)随机数使用方选择一个任意参数P生成一个随机数ri = MD5(p),并将ri发送给随机数生成方。
[0009](3)随机数生成方接收随机数使用方发送的随机数Γ1。
[0010](4)随机数生成方生成唯一的序列号S,保存与该序列号对应的时间t。
[0011 ] (5)随机数生成方将r1、s、t作为参数生成随机数Γ2,即:? =MD5(η,s,t)。
[0012](6)随机数生成方根据(η,Γ2)生成最终的随机数R = h(ri,r2)mod m+1。
[0013](7)随机数生成方发送R和t给随机数使用方。
[0014]验证随机数阶段主要步骤如下:
[0015](a)随机数使用方接收随机数生成方发送的R和t。
[0016](b)若随机数使用方对R产生质疑则向随机数生成方发送t请求验证。
[0017](C)随机数生成方根据随机数使用方的验证请求在数据库中查找与t对应的序列号s并发送给随机数使用方。
[0018](d)随机数使用方接收随机数生成方发送的序列号S计算出r2=MD5(ri,s,t)和R’= h(ri,r2)mod m+1,判断R’ =R是否成立,对R进行验证。
【具体实施方式】
[0019]下面通过一个具体实施例进一步详细阐述本发明的技术方案。
[0020]商家作为随机数生成方,客户作为随机数使用方,双方各提供一个中间随机数作为最终随机数的生成参数,最终的随机数由商家生成。当客户对商家提供的随机数产生质疑时,可以向商家进行请求验证,商家发送验证信息给客户,客户根据接收到的验证信息重新计算随机数并与接收到的原随机数进行对比,看是否一致,一致则说明双方共同参与了该随机数的生成,并且商家没有恶意窜改随机数。具体步骤如下:
[0021]A.客户与商家首先建立通信。客户和商家建立通信的方式是客户通过商家的IP地址与其在局域网内进行通信。
[0022]B.客户选择一个任意参数P生成一个随机数n=MD5(p)的生成并将η发送给商家。客户通过MD5算法生成一个128比特的字符串,截取前32比特将其转换成一个位于一定范围的随机数,在此将范围定于[0,30)。
[0023]C.商家接收客户发送的随机数η。
[0024]D.商家生成唯一的序列号s,保存与该序列号对应的时间t。商家使用通用唯一识别码生成函数来生成序列号s和系统时间获取函数来获取与该序列号对应的系统时间t,并将s和t保存在数据库中。
[0025]E.商家将n、s、t作为参数生成随机数r2,S卩:Γ2=Μ05(η,8,?)。商家将n、s、t作为参数同样通过MD5算法生成一个128比特的字符串,截取前32比特将其转换成一个位于一定范围的随机数,在此将范围定于[0,30)。
[0026]?.商家根据(1'1^2)生成最终的随机数1? = 11(1'1,12)1110(1 !11+1。商家将(1'1,12)作为参数通过512比特的SHA安全hash函数生成一个512比特的字符串,截取前32比特将其转换成一个位于[O,30)区间的随机数作为最终的随机数R。
[0027]G.商家发送的R和t给客户。
[0028]H.客户接收商家发送的R和t。
[0029]1.若客户对R产生质疑则向商家发送t请求验证。
[0030]J.商家根据客户的验证请求在数据库中查找对应的序列号s并发送给客户。
[0031 ] K.客户接收商家发送的序列号s计算出r2 = MD5(ri,s,t)和R’ =h(ri,r2)mod m+1,判断R’ =R是否成立,对R进行验证。
[0032]符号说明:
[0033](I) “MD5(x)”为消息摘要算法。
[0034](2) “mod”为求余运算,例如a (mod d)=a mod d表示a用N去除的余数。
[0035](3) “h(y)”为512比特的SHA安全hash函数。
[0036]通过使用长度为512比特的SHA安全hash函数生成随机数R,其中参数^是通过MD5算法计算并截取生成的,是随机的;K是由多个参数控制生成的,更是不可控的;序列号8是由唯一识别码生成函数来生成的,具有唯一性。因此无论是参数还是随机数R本身,产生的方式都是随机并且不可控的,保障了随机数的随机性和不可控性。此外,随机数的产生是由交易双方共同参与生成的,使得交易能够公平地进行,同时还提供了验证机制进行实时验证,防止了商家本身或是第三方窜改随机数的可能。
[0037]系统实现方式:
[0038]系统架构主要分为服务端跟客户端两个部分,在客户端主要包括以下功能:
[0039](I)与服务器端建立通信;
[0040](2)实现随机数η的生成并将^发送到服务端;
[0041 ] (3)接收服务器端发送的R和时间t;
[0042](4)向服务器端发送验证请求;
[0043](5)接收服务器端发送的序列号s计算出r2并对R进行验证。
[0044]在服务器端主要包括以下功能:
[0045](I)接收客户端发送的随机数η;
[0046](2)生成唯一的序列号s和与该序列号对应的时间t;
[0047](3)将n、s、t作为参数生成随机数K;
[0048](4)根据(ri,r2)生成最终的随机数R;
[0049](5)接收客户端发送的R和t;
[0050](6)接收客户端的验证请求并向其发送系列号S。
【主权项】
1.一种双方参与的随机数生成和验证方法,所述方法包括随机数生成阶段和验证随机数阶段;所述随机数生成阶段包括如下步骤: (1)随机数使用方与随机数生成方首先建立通信; (2)随机数使用方选择一个任意参数P生成一个随机数ri= MD5(p),并将ri发送给随机数生成方; (3)随机数生成方接收随机数使用方发送的随机数η; (4)随机数生成方生成唯一的序列号s,保存与该序列号对应的时间t; (5)随机数生成方将r1、s、t作为参数生成随机数?,即:r2=MD5(ri,s,t); (6)随机数生成方根据(ri,r2)生成最终的随机数R=h(ri,r2)modm+l; (7)随机数生成方发送R和t给随机数使用方; 所述验证随机数阶段包括如下步骤: (a)随机数使用方接收随机数生成方发送的R和t; (b)若随机数使用方对R产生质疑则向随机数生成方发送t请求验证; (c)随机数生成方根据随机数使用方的验证请求在数据库中查找与t对应的序列号s并发送给随机数使用方; (d)随机数使用方接收随机数生成方发送的序列号s计算出r2= MD5(ri,s,t)和R’ =h(ri,r2)modm+l,判断R’ =R是否成立,对R进行验证。2.根据权利要求1所述的方法,其中步骤(I)中,随机数使用方和随机数生成方建立通信的方式是随机数使用方通过随机数生成方的IP地址与其在局域网内进行通信。3.根据权利要求1所述的方法,其中步骤(2)中,随机数使用方通过MD5算法生成一个128比特的字符串,截取前32比特将其转换成一个位于[0,30)区间的随机数。4.根据权利要求1所述的方法,其中步骤(4)中,随机数生成方使用通用唯一识别码生成函数来生成序列号s和系统时间获取函数来获取与该序列号对应的系统时间t,并将s和t保存在数据库中。5.根据权利要求1所述的方法,其中步骤(5)中,随机数生成方将n、s、t作为参数同样通过MD5算法生成一个128比特的字符串,截取前32比特将其转换成一个位于[0,30)区间的随机数。6.根据权利要求1所述的方法,其中步骤(6)中,随机数生成方将(n,r2)作为参数通过512比特的SHA安全hash函数生成一个512比特的字符串,截取前32比特将其转换成一个位于[O,30)区间的随机数作为最终的随机数R。
【文档编号】G06Q20/40GK105825383SQ201610156104
【公开日】2016年8月3日
【申请日】2016年3月18日
【发明人】刘忆宁, 梁露曦, 赵全玉, 赵曦
【申请人】桂林电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1