具有可验证性的互联网彩票中奖生成方法技术领域
本发明涉及信息系统领域,具体涉及一种具有可验证性的互联网彩票中奖生
成方法。
背景技术
根据中国市场调研网发布的中国彩票行业调研分析及市场前景预测报告认
为:2014年全国彩票总销量达3802.78亿元,比2013年增长730.53亿元,增
长23.6%。2014年,我国居民人均可支配收入20167元,比2013年增长10.1%。
按亚洲366.2元左右,2014年,我国彩票销售额是3823亿元,同比增长32%,
人均购票为274元。目前,中国彩票业正处于快速发展时期,众多文化的人口,
悠久的历史传统,持续快速增长的经济,为彩票市场提供了巨大的发展空间。
但是互联网彩票发行应该满足公平性、可验证性、以及封闭性的基本性质。
除了以上三项最基本的性质,具有实用性的互联网彩票发行还应该具有安全性、
正确性、匿名性、随机性、不需要延迟函数。而在现实中,延迟函数的设计存在
一定的困难,主要在于对攻击者的计算能力的预测存在一些困难,使得延迟函数
要延迟多长时间,难以控制。延迟时间短了,有可能会失去作用,延迟时间长了,
有可能会影响发行的实用性。
发明内容
为了抵抗彩票的发行机构有可能与不诚实的彩票购买者合谋攻击,破坏协议
的公平性,本发明提供一种基于可验证随机数的从n个随机数中随机选t的彩票
协议,在中奖结果的产生过程,所有参与者的影响力相同,有效的阻止了合谋攻
击。另外,协议保障所有的参与者或旁观者在不需要他人协助的情况下,均可验
证结果是否公平。
本发明包括五个阶段:初始化阶段、销售阶段、摇奖阶段、兑奖阶段和验证
阶段。互联网彩票发行的整个流程如下:
1.彩民从彩票发行机构处购买互联网彩票;
2.彩票发行机构公布彩票中奖结果;
3.彩民查看彩票中奖结果;
4.彩民可以验证中奖结果公平性。
本发明实现了一系列性质,包括:安全性、正确性、匿名性、隐私性、便利
性等。基于已知的安全基础如中国剩余定理、盲签名、可验证随机数等,协议具
有计算上的安全性。与现有的互联网彩票相比,本发明最主要的特点是保证所有
的参与者对中奖数字的生成具有平等的影响力并且可以验证。
具体实施方式
A.初始化阶段:
1.彩票发行机构(LotteryAgent,以下简称LA)公布安全素数p,选择LA发布的
n个彩票中奖数字ai和LA最初选择的n对数据(di,dj),n表示自然数。其中di>ai,
1<i<n、1<j<n;di,dj,(j≠i)是两两互素的。
2.LA计算中间变量n是自然数。其中(e,N)是
LA的公钥,同时LA计算中间变量
3.LA计算方程组 C = a 1 ( mod d 1 ) . . . C = a n ( mod d n ) ; ]]>中间变量 C = Σ i = 1 n ( D / d i ) y i a i ( mod D ) , ]]>其中
C虽然是一个中间变量,但是它是根据中国剩
余定理计算出来的,其中yi在中国剩余定理中表示一个中间变量。
4.LA将(ai,Di),(i=1,…,n)和C公布在公告栏上。
B.销售阶段:
假设彩民购买当期销售的第f注彩票,步骤如下:
1.彩民从公布的n对数据(a1,d1),…,(an,dn)中,选取t对,记为
(a′j,D′j),(j=1,…,t),t表示自然数;
彩民随机选择t个随机数r1,…,rt,计算 a 1 = r 1 ∂ mod N . . . a t = r t ∂ mod N ; ]]>
用LA的公钥加密(a1,…,at,rA1,rA2)并发送给LA,其中rA1,rA2是随机数。
2.LA对收到的密文解密,并用自己的私钥(d,N)对(a1,…,at)签名,得到
β 1 = a 1 d mod N . . . β 2 = a t d mod N ; ]]>其中d是LA使用的一个私钥;β表示一个中间量。
3.彩票发布中心LA随机定一个已知量Countf并且计算
Countf=Countf-1+rA1(modf),向彩民发放彩票收据
LT f = { Count f , f , E k f ( Count f , f , β 1 , . . . , β t ) } ; ]]>LA公布(f,Countf);其中:表
示使用密钥kf=H(rA2||Countf||f)实现对称加密;H表示Hash函数。
4.彩民解密并验证收到的收据。
C、摇奖阶段
在此阶段,销售系统已关闭,没有人能从销售系统买到彩票。中奖结果的生
成过程如下:
1.彩民计算并公布xf=H(r1||…||rt)。
2.假设在上一阶段共有m张彩票被销售,LA通过构造
(xi,Counti),(i=1,…,m)的多项式A(x)=a0+a1x+…+am-1xm-1,并且计算
w=hash(a0||a1||…||am-1);然后,w作为种子输入预先设定的随机数发生器
Raw(),得到Raw(w)=CW={cw1,cw2…cwt};其中CW表示LA通过计算生成的一
组彩票数字。
3.LA公布{cw1,cw2,…,cwt}为中奖结果,另外公布A(x)和w供公众验证使用。
D.兑奖阶段
如果彩民的选择{a′1,a′2,…,a′t}={cw1,cw2,…,cwt},中奖,彩民按如下步
骤向LA兑奖:
1.彩民发送LTf,r1,…,rt给LA;LA认证彩民的彩票LTf,并计算:
d 1 ′ = β 1 / r 1 mod N . . . d t ′ = β t / r t mod N ; ]]>其中d′i表示中间量(i=1…t)。
2.LA计算 b 1 = C mod d 1 ′ . . . b t = C mod d t ′ ; ]]>这其中C表示跟A阶段中的中间变量C是同一数;
如果{b1,b2,…bt}={cw1,cw2,…cwt},LA确信彩民是中奖彩票的拥有者。
E.验证阶段
如果彩民对结果的公平性有怀疑,可以检查等式Countf=A(xf)是否成立。
如果成立,彩民确信她的参与确实被计入了中奖数字的生成,且与其他所有参与
者有共同的影响力,可以相信结果是公平公正的。
实施例中的符号说明:
(1)“mod”为求余运算,例如a(modd)=amodd表示a用N去除的余数。
(2)“||”表示前后两个符号的二进制状态首尾相连,比如a为二进制0001,b
为二进制1000,a||b为二进制00011000。
(3)表示di到dn的乘积。
(4)表示连加符号。