一种基于公钥签名的数字型彩票销售、开奖及兑奖方法与流程

文档序号:14686037发布日期:2018-06-14 22:49

本发明涉及数字签名以及数字彩票领域,特别涉及RSA签名算法以及基于离散对数困难问题的签名算法,如ECDSA、国密2及Elgamal等。

技术背景

随着信息技术的发展,越来越多的交易借助互联网实现,数字型彩票因其方便快捷而受到关注,但同时也容易产生一些不规范的现象:(1)如售彩者可以隐瞒部分的彩票销售额,使这些资金不纳入奖池和公益金;(2)售彩者可以获得弃奖者的奖金。另一方面,彩票的摇奖依然需要借助于传统的彩球摇号机。

本发明旨在通过一种销售、开奖、兑奖数字协议,使得彩票摇奖不需要借助于彩球机,降低了摇奖的运营和监督成本,同时实现了对彩票售卖者一定程度的约束,使其在隐瞒销售额及操控彩票摇奖结果过程中承担更大的风险和代价,让数字型彩票更加透明。



技术实现要素:

本发明提供了一种基于公钥签名的数字型彩票销售、开奖及兑奖方法。

流程包括三个阶段:

一、销售阶段,彩票购买者在完成彩票下单后,售彩者将该彩票售卖的凭据传输给彩票购买者,凭据中需要包含的信息有:(1)彩票购买凭据的编号或者足以与其他彩票购买凭据区分的信息;(2)足以验证彩票购买者投注内容的信息;(3)数字签名。

所述足以验证彩票购买者投注内容的信息至少包括下述四类信息中的一类:A、投注内容的编码;B、投注内容的编码的特征值;C、给定彩票购买者公钥的情况下,投注内容的可验证性函数验证码;D、投注内容的比特承诺形式;

进一步的,所述彩票购买支付过程如下:彩票购买者下单后将相应的费用转至第三方,并附加购彩信息,所述购彩信息包含投注内容或足以证明投注内容的信息;售彩者出示彩票凭据后,第三方对凭据进行验证,验证通过则将相应的费用转入售彩者的账户下。

进一步的,凭据中包含的信息有:用于兑奖的信息。

进一步的,用于兑奖的信息可以是:A、能够取款或转账或支付的账户,若彩票购买者中奖,则可以将资金转入该账户;B、足以核实彩票购买者者本人身份的信息,若彩票购买者中奖,可以凭借能够证明身份信息的凭证进行兑奖;C、彩票购买者的公钥或公钥的压缩形式或公钥的散列值,若彩票购买者中奖,可以通过公布某个账户或者某种支付方式并附加公钥签名以用于兑奖;D、彩票购买者的编号,编号和兑奖方式的信息(如银行账户)相联系;E、上述信息的特征值,或比特承诺的验证比特串,或密文形式。

二、摇奖阶段,该阶段需要至少两个主体的参与,主体可以是售彩者,也可以是监督者,或者二者的组合。各主体发布对指定的信息或信息组进行验证的比特串,然后根据指定映射规则将公布的比特串作为参数生成摇奖结果。

公布的比特串为以下两个方案中的一种:

方案1、公钥签名;

方案2、针对某个事先发布的比特串B2的原象B1,其中B1与B2的关系为下列4种类型中的一类:

A、散列映射的关系;

B、某个可验证性随机函数的随机数明文与验证比特串的关系;

C、某种比特承诺协议的明文与比特承诺的验证比特串之间的关系;

D、上述关系的组合;

方案2中原象的象B2应该在该期彩票销售结束之前发布;

所述比特串中至少有一个是公钥签名;

所述信息M应该包含某种在彩票销售结束之前无法确认的信息。

较优的,方案2中预先发布的比特串B2附带与彩票期号相关的信息。

较优的,方案2中预先发布的比特串B2附带数字签名。

较优的,方案2中预先发布的比特串B2应在该期彩票开始销售之前发布。

较优的,鉴于销售数据在彩票销售结束前是不确定的,信息M中包含彩票的销售数据。

进一步的,信息M中包含售彩者的销售额。

进一步的,摇奖过程中所述比特串全部作为生成摇奖结果的直接或者间接生成参数,或者即作为直接参数又作为间接参数;

所述直接生成参数指摇奖结果的生成函数的参数;

所述间接生成参数则作为另一个签名对象信息的生成参数,且该签名生成的比特串也作为摇奖结果的直接或者间接生成参数;具体的,所述间接参数对签名对象信息的影响方式为:(1)该比特串作为签名对象信息的部分或者全部;(2)该比特串的某种映射作为签名对象信息的部分或者全部;(3)以该比特串与其他比特串为参数的映射所生成的比特串作为签名对象信息的部分或者全部。

进一步的,鉴于数字签名的签名及验证过程需要较大的运算量,摇奖模式可以采用监督者公布散列映射的原象作为间接参数,售彩者公布数字签名作为直接参数进行摇奖。

进一步的,所述作为摇奖结果生成参数的比特串即作为直接参数也作为间接参数。

进一步的,信息M也作为摇奖结果的直接参数。

进一步的,所述签名体系为NTRU签名体系、多变量签名体系、RSA签名体系、基于离散对数困难问题的签名体系。

较优的,售彩者在开奖过程中使用的签名公钥与销售中提供彩票购买凭据使用的签名公钥相同;或者开奖中的公钥为销售CA证书颁发签名。

较优的,至少有一个作为摇奖结果生成因子的签名具备映射唯一性,即同一个或一组公钥对指定信息或信息组M的签名S,存在一种映射f(S),使得不存在两个或者两组按指定规则可以通过验证签名S1,S2,使得f(S1)≠f(S2)。

较优的,至少有一个作为摇奖结果生成因子的签名具备唯一性,即同一个或一组公钥对指定信息或信息组M的签名S,不存在两个或者两组按指定规则可以通过验证签名S1,S2,使得S1≠S2。

较优的,所有作为摇奖结果生成因子的数字签名具备唯一性。

具体的,签名唯一性的实现方法为:选择RSA签名体系或者基于离散对数困难问题的公钥体系。

具体的,对于基于离散对数困难问题的公钥体系而言,无论是Elgamal、DSA、国密2、ECDSA等,签名过程中需要选择一个随机数r,且签名的比特串随着所选择的随机数r的改变而改变。因此加入签名时r是可以随意选取的,则签名不具备映射唯一性。而本发明提出的解决方法为:在该期彩票销售结束前,事先选择一个或一组随机数r,并选择一种映射方式将r转换成比特串Z并将Z发布。签名阶段,签名者使用预先选择的数值r进行签名,下文将Z称之为离散对数签名比特承诺。

较优的,离散对数签名比特承诺Z在该期彩票开始销售之前公布。

较优的,离散对数签名比特承诺Z附带销售者的签名,且签名对象信息中应包含有彩票期号和售彩者的相关信息。

进一步的,验证签名阶段,除了需要验证签名本身,还需要验证签名和预先公布的离散对数签名比特承诺Z是否匹配。

较优的,对于椭圆曲线、圆锥曲线及超椭圆曲线,选择基点的阶为素数。

较优的,对于Elgamal、DSA以及其他以有限数域或者扩域为基础的离散对数公钥体系,选择底数的阶为素数。

进一步的,对于离散点群,选择离散对数签名比特承诺Z的内容为基点G关于r的点乘获得的点Gr;或者其二次映射,如压缩或散列映射等。

进一步的,对于素数域或者扩域,选择离散对数签名比特承诺Z为对底数G作r的幂模运算获得的整数Gr;或者其二次映射,如压缩或散列映射等。

进一步的,基于离散对数困难问题的公钥体系中ELGAMAL、DSA、国密2、ECDSA,可根据签名(z,s)、公钥PA和签名对象信息M还原出Gr,并检查Gr和离散对数签名比特承诺Z是否匹配,其中:

(1)对于Elgamal和DSA,Gr为签名(z,s)中的z;

(2)对于ECDSA,则Gr=[u]G+[v]PA;其中u=HASH(M)·s-1(modn),v=z·s-1(modn),n为椭圆曲线的阶,符号[u]G表示点G的u倍点,[v]PA表示点PA的v倍点;

(3)对于国密2签名算法而言,Gr=[s]G+[z+s]PA。

更加普遍的,对于签名比特串s,关于私钥dA、公钥PA、随机数r及其映射Gr,离散群底数或者基点的阶n,若符合下述表达式:

s=(a1·r+a2·dA+a3)-1·(a4·r+a5·dA+a6)(modn);

若gcd(s·a1-a4,n)=1,则存在一个整数t满足t·(s·a1-a4)=1(modn),可以还原出Gr,其中a1,a2,a3,a4,a5,a6至少有一个值与Gr相关,且至少有一个参数与签名对象信息M相关,其余的变量为定值或者为由指定参数映射生成的比特串,所述参数为:(1)签名对象信息M;(2)公钥PA;(3)签名者信息U;(4)参数(1)、参数(2)、参数(3)的组合;

对于椭圆曲线、超椭圆曲线、圆锥曲线有:

Gr=[t]([(a5-s·a2)]PA+[a6-s·a3]G);

对于有限数域或者有限数域的扩域,有:

Gr=((PA^(a5-s·a2))·(G^(a6-s·a3)))^t(modp);

其中p为有限数域或者有限数域的扩域的模;

特别的,上述检验方式在对于gcd(s·a1-a4,n)≠1的情况下失效。因此更加严谨的,在比特签名承诺Z可以还原出Gr情况下,若遇到该状况,先从Z获得Gr,然后使用如下方式验证签名:

对于椭圆曲线、超椭圆曲线、圆锥曲线,检查下式成立与否:

[s]([a1]Gr+[a2]PA+[a3]G)=[a4]Gr+[a5]PA+[a6]G;

若不成立则验证通不过;

对于有限数域或者有限数域的扩域,检查下式成立与否:

((Gr^a1)·(PA^a2)·(G^a3))^s=(Gr^a4)·(PA^a5)·(G^a6)(modp);

若不成立则验证通不过。

进一步的,对于形如(z,s)的签名形式,若存在映射F(Z,M,PA)→z,则签名阶段可以省略输出比特串z。例如,对于Elgamal,选择离散对数签名比特承诺Z为底数G关于r的幂同余Gr=G^r(modp),则有z=Z,其中p为Elgamal的素数模;对于ECDSA,选择事先公布的比特串Z为基点G与r作点乘获得的椭圆曲线点Gr,则有z=x(modn),其中x是Gr为x轴坐标,n为椭圆曲线的阶;对于国密2签名算法,选择事先公布的比特串Z为基点G与r作点乘获得的椭圆曲线点Gr,则有z=x+HASH(M,U)(modn),其中M为签名的信息,U为签名者的相关信息,x是Gr为x轴坐标,n为椭圆曲线的阶。

进一步的,由于签名的随机数是在签名对象信息确定之前就给定的,因此可能遇到(z,s)中有一个数为0的情况;尽管发生该状况的概率非常低,但严谨的,应当由相应的应对方案,本发明提出的方法是:签名阶段,检验z,s是否为0,如果有一个为0,则输出与签名长度相同的零比特串;检验阶段,可以分成如下两步:(1)由于z可以直接从签名对象信息、签名者的信息及签名承诺Z可以得出,因此若遇到z=0的情况,可以直接检验签名生成的比特串是否为0;(2)若z不为0而签名比特串为0,则进一步对s进行检查;

对于椭圆曲线、超椭圆曲线、圆锥曲线,检查下式是否为零点:

[a4]Gr+[a5]PA+[a6]G

若不为零点则验证通不过;

对于有限数域或者有限数域的扩域,检查下式成立与否:

(Gr^a4)·(PA^a5)·(G^a6)=1(modp);

若不成立则验证通不过。

进一步的,离散对数签名比特承诺Z可以是多个随机数映射生成的比特串组的集合。

较优的,离散对数签名比特承诺Z需要附带数字签名。签名的对象信息中还包含与彩票期号相关的数据。

较优的,将所有签名作为生成摇奖结果的直接参数。

较优的,摇奖流程使用多轮签名。

进一步的,摇奖流程中每个签名者需进行多次签名,所述签名流程如下:

有m个签名者,则每个签名者进行m次签名,第一轮签名中,所有签名者将同一个指定信息M作为签名对象信息进行签名,获得签名组{S1,S2……Sm};第2轮签名则为各签名者对除自己以外的第一轮签名中生成的m-1个比特串进行逐个签名;

所述签名算法基于离散对数困难问题,且各签名者均预先选择m个随机数作为m次签名的参数,并预先公布随机数组映射比特串{Z1,Z2……Zm},其中Zi为第i个签名者预先公布离散对数签名比特承诺;

所述第2轮签名,为非盲签名,即签名者必须在完全知晓签名对象信息的前提下才能够提供正确的签名。

特别的,本发明提出的实现非盲签名的方法为:选择一种可逆映射替代签名过程中用到的散列函数。具体而言,将传统的签名映射F(dA,HASH(M),r),改为为F’(dA,h(M),r);其中r为随机参数,dA为私钥,M为签名对象信息,h(M)为某种对于签名者而言,在离散对数签名比特承诺{Z1,Z2……Zm}已知的情况下的可逆映射。特别需要说明的是,本方法在信息M的比特长度或M的压缩形式的比特串长度大于输出比特串F’(dA,h(M),r)的长度的情况下,需要对签名对象信息进行分段,然后进行多次签名。

三、在该期彩票销售结束后,指定期限内,各个售彩者需要上传或公布销售数据,以提供彩票购买者和其他监督者的检查。若彩票购买者发现购买的彩票不在销售数据记录之中或者虽然有记录但是不匹配,可公布或上传彩票购买的凭据作为售彩者作弊的证据。

进一步的,售彩者公布的销售数据附加有数字签名。

进一步的,摇奖结束后,根据奖池奖金、各售彩者公布的销售数据及各等级的中奖数量按指定规则进行奖金分配。

进一步的,售彩者或售彩者之外的主体为彩票购买者提供销售数据查询服务。

四、兑奖阶段,中奖者在指定期限内根据销售凭据进行兑奖,若凭据被否定,则将购彩凭据公开或者上传给指定监管者。

进一步的,若发放奖金由售彩者执行,售彩者需要将已兑奖的凭据公布或者上传给监管者,以免售彩者冒领弃奖者的奖金。兑奖期结束后,根据弃奖的状况对资金进行配置。

技术原理:

本发明基于的技术原理如下:

1、摇奖结果的生成因子包含了某种在该期彩票销售结束前未知的因子,因此摇奖结果在彩票销售结束前是未知的。

2、摇奖流程需要多个主体参与,且主体公布的比特串最终成为摇奖结果的直接或者间接参数。因此,若要提前得知摇奖结果,必须得到参与摇奖流程的所有主体的配合。

3、摇奖流程中保证至少有一个数字签名作为摇奖结果的直接生成因子,虽然数字签名与验证签名较之于其他方案更加消耗运算量,但该方案能够实现以下效果:(1)即使在其他比特串原象非主动泄露的情况下,若要对彩票摇奖结果进行操控,也需要得到签名者的配合;(2)签名本身意味着售彩者或者监管者对彩票生成结果的认可,进一步增加了摇奖结果的不可抵赖性。

4、较佳的方案中,一旦彩票销售数据确定,后续摇奖的流程中各主体发布的比特串具备唯一性,而摇奖结果又是由具备唯一性的比特串映射生成,因此一旦彩票销售数据确定,摇奖结果唯一。

5、较佳的方案中,彩票销售数据为摇奖结果的直接或者间接的影响因子,而销售数据中包含了由彩票购买者选择的数据,因此彩票购买者的选择能够影响开奖结果。

6、较佳的方案中,彩票销售数据为摇奖结果的直接或者间接的影响因子;即使在某种状况下,有主体提前获得了摇奖结果,也无法通过购买彩票获益,因为一旦购买新的彩票,销售数据的改变将导致摇奖结果的改变。

7、彩票销售数据在销售结束后需要公开,且每份彩票购买凭据都附带不可抵赖的数字签名,因此售彩者如果隐瞒部分彩票的销售额就必须承担产生作弊证据的风险,且证据无法抵赖。

8、较佳的方案中,彩票购买凭据都附带彩票购买者提供的兑奖方式,因此提高了冒领奖金的难度。

9、较佳的方案中,多个主体使用基于离散对数困难问题的公钥签名体系对包含销售数据的信息进行签名,且在彩票开售之前选择摇奖过程中用于签名随机数或随机数组,并发布对应的离散对数签名比特承诺以提供验证。假定所有摇奖主体试图对销售数据进行修改以实现操控彩票结果,就需要使用同一个随机数和同一个公钥对至少两个不同的比特串进行签名;另一方面,对于形如s=f(r,M,dA)的离散对数困难问题的签名模式,对于签名者以外的主体而言,随机数r和私钥dA为未知数,信息M,s为已知数,而两次使用同一个随机数r进行签名就会构成拥有两个未知数和两个有效方程的方程组,使得签名者的私钥可以被还原。因此对于部分签名者而言,存在着签名私钥泄露的风险。

10、较佳的方案中,多个主体使用基于离散对数困难问题的公钥签名体系对包含销售数据的信息进行一轮签名,且将签名发送给其他的主体再进行非盲签名,且彩票摇奖的生成因子中包含所有非盲签名的比特串;因此,如果通过修改销售数据来操控彩票开奖结果,就会使得同一个随机数和同一个公钥对至少两个不同的比特串进行签名,进而被所有参与摇奖签名的主体知晓,进一步加大了作弊风险。

11、较佳的方案中,售彩者负责对中奖者进行兑奖,而售彩者在开奖过程中使用的签名公钥与销售中提供彩票购买凭据使用的签名公钥相同;或者开奖中的公钥为销售CA证书颁发签名。而一旦私钥泄露,其他人可以伪造购彩凭据对并进行领奖,使得售彩者需要对私钥泄露承担实际代价。

具体实施方式及实现效果:

下面以具体实施案例阐述整个流程运作(但不是对本发明的限制):

假定某彩种有售彩者三名,采用国密2公钥算法,使用中国国家商用密码管理办公室提供的256位推荐参数。此外为了方便说明,彩种为传统的乐透型彩票,无特色球,每份彩票仅有一注。兑奖由售彩者负责。

彩票开始销售之前,各售彩者选择0至n之间的三个整数r1、r2、r3,其中n为椭圆曲线的阶,对椭圆曲线基点G做r1、r2、r3的点乘操作生成G1、G2、G3,将上述点附加彩种信息、售彩者编号、彩票期号以及对上述信息的签名作为离散对数签名比特承诺发布。彩票购买者和第三方保存公布的数据。

售彩阶段,售彩者的对成功下注的彩票购买者发放凭证,并经由第三方验证后获得彩票购买者的购彩费用。凭证的内容包含:彩种、彩票期号、售彩者的编号、彩票购买者投注内容编码汇总、彩票购买者给出的公钥以及数字签名。其中彩票购买者投注内容编码以从小到大排列。为了方便说明,假定凭证中的签名所用的公钥和摇奖阶段中所用的公钥相同。

摇奖阶段:(1)三名售彩者将各自售卖出的投注内容以及彩票购买者给出的公钥进行汇总、排序后生成散列值;(2)将彩种的编码、彩票期号、三名售彩者的编号及先前发布的共9个椭圆曲线点及步骤1中获得散列值合并成信息M;(3)三名售彩者先对信息M进行一轮预签名,以表示对数据的认可,预签名获得的比特串不作为生成摇奖结果的因子;(4)三名售彩者对信息M进行第一轮正式签名,并发布签名比特串,签名所用的随机数为各售彩者预先选择的第一个随机数r1;(5)第二轮正式签名:售彩者1对售彩者2的第一轮签名的比特串进行签名,售彩者2对售彩者3的第一轮签名的比特串进行签名,售彩者3对售彩者1在第一轮签名中的比特串进行签名,所用的签名随机数为各售彩者先前选择的第二个随机数;售彩者1对售彩者3的第一轮签名的比特串进行签名,售彩者2对售彩者1的第一轮签名的比特串进行签名,售彩者3对售彩者2在第一轮签名中的比特串进行签名,所用的签名随机数为各售彩者先前选择的第三个随机数;其中第二轮签名为非盲签名;(6)检验全部的签名后,使用信息M和9个正式签名生成的比特串生成伪随机数,并使用伪随机数摇奖;(7)公布摇奖全过程的信息。

上述的第一轮签名过程为:(1)z=(x+HASH(M,U))(modn),其中x为各售彩者在开售前发布的椭圆曲线点G1的x轴坐标,M为签名内容,U为与签名者相关信息,n为椭圆曲线的阶,HASH为相关的散列算法;(2)计算s=(1+dA)-1·(r1-z·dA)(modn),其中dA为私钥,r1为售彩者在该期彩票开售前预先选择的第一个随机数;(3)对s进行编码并发布。

特别的,上述使用国密2的签名中,若遇到下列状况(后文称零点状况),则签名直接输出256位的0:(1)z=0;(2)s=0;(3)(z+s)=0(modn)。

对应的,第一轮验证签名步骤如下:

首先,对零点状况进行判定:(1)根据先前发布的点G1的x值计算z’=x+HASH(M,U)(modn)是否为0,若成立则为零点状况,其中点G1为该售彩者在彩票开售前发布的第一个椭圆曲线点;(2)查看P=[z’]PA是否成立,若是则为零点状况,其中PA为售彩者的公钥;(3)根据事先发布的点G1检查P=-z’·G是否成立,若成立则为零点状况。若符合零点状况而s不为0则验证通不过。

其次,若未遇到零点状况,则按如下步骤操作:

(1)检验0<z’<n-1及0<s<n-1是否成立,若不成立则验证通不过;

(2)计算e=HASH(M,U);

(3)计算t=z’+s(modn),若t=0则验证通不过;

(4)计算椭圆曲线点(x,y)=[s]G+[t]PA;

(5)计算(e+x)=z’(modn),是否成立,若不成立则验证通不过。

(6)查看点(x,y)是否与该售彩者事先发布的点G1相同,若不同则验证通不过;

上述验证过程中,步骤1至步骤5为常规的国密2检验,步骤6开奖流程中额外增加的对离散对数签名比特承诺的检验,以检验签名者使用的随机数是否与先前预选的相同。

进一步的,由于预先公布了椭圆点G1,且需要对零点状况进行预先检查,上述6个步骤可以压缩为3个步骤:

(1)检验0<z’<n及0<s<n是否成立,若不成立则验证通不过;

(2)计算t=z’+s(modn);

(3)计算椭圆曲线点(x,y)=[s]G+[t]PA,并考察其与事先公布的点G1是否相同,若不相同则验证通不过。

第二轮签名方法必须为非盲签名,因此需要对国密2签名流程进行一定的修改:

(1)z’=x+s’(modn),其中s’为第一轮签名中获得的比特串,x为签名所用的随机数对应的椭圆曲线点P的x轴坐标,U为与签名者相关信息,n为椭圆曲线的阶;

所述椭圆曲线点P与s’的关系为:

对于第二轮签名者1而言,s’若是签名者2在第一轮的签名,则P为签名者1预先公布的点G2,否则P点为签名者1预先公布的点G3;

对于第二轮签名者2而言,s’若是签名者3在第一轮的签名,则P为签名者2预先公布的点G2,否则P点为签名者2预先公布的点G3;

对于第二轮签名者3而言,s’若是签名者1在第一轮的签名,则P为签名者3预先公布的点G2,否则P点为签名者3预先公布的点G3;

(2)计算s=(1+dA)-1·(r-z·dA)(modn);其中dA为私钥,r为售彩者按摇奖阶段步骤5的方法选择的随机数;

(3)检查零点状况,若遇到零点状况则s为256位的0;

(4)对s进行编码并发布。

对应的,第二轮验证签名步骤如下:

首先,对零点状况进行判定:(1)根据发布的点P的x值计算z’=x+s’(modn)是否为0,若是则为零点状况,其中s’为签名对象信息,即其他签名者在第一轮签名中公布的签名比特串;(2)查看P=[z’]PA是否成立,若成立则为零点状况,其中PA为售彩者的公钥;(3)根据事先发布的点P检查P=[-z’]G是否成立,若成立则为零点状况。若符合零点状况而s不为0则验证通不过。

其次,若未遇到零点状况,则按如下步骤操作:

(1)检验0<z’<n及0<s<n是否成立,若不成立则为非法;

(2)计算t=z’+s(modn);

(3)计算椭圆曲线点(x,y)=[s]G+[t]PA,并考察其与事先公布的点P是否匹配,若不匹配则验证通不过。

摇奖结束后,根据彩票购买者投注数据算出各个等级的中奖数量,及本期销售总额、奖池金额、返彩率等数据计算出各个售彩者该期应当上交或者接收的金额,其中中奖者的奖金寄存在对应的售彩者账户中;同时各个售彩者应在指定时间内公布自己销售数据和对销售数据的数字签名,销售数据的内容为售彩者在该期发送给彩票购买者的凭据汇总。

第三方网站根据售彩者的发布销售数据检查摇奖阶段公布的散列值、彩票销售额以及各个等级的中奖量是否匹配,如果不匹配则说明有售彩者作弊;若匹配则建立彩票ID——彩票凭据索引,而彩票购买者则从第三方网站查询自己的彩票数据是否记录在案。特别的,本例假设彩票购买者使用的软件会自动向第三方网站核对自己的购彩记录。

中奖者在指定时间内用购彩凭据中留下的公钥对自身的银行账号及彩票单号进行签名,并将信息发送给售彩者;售彩者将奖金转入对应的银行账户,同时保存中奖者发送的信息。兑奖期限满,监管部门根据售彩者该期的销售数据和兑奖的信息进行比对,来确定需要上交的弃奖金额。同时售彩者还需要公布兑奖信息以便公众监督。

考察上述案例,容易看出,由于摇奖结果的伪随机数和销售数据中的彩票购买者投注选择及公钥相挂钩,导致开奖结果在售彩结束之前是不确定的。另一方面,一旦售彩记录确定,信息M是唯一的;同时在预先发布随机数对应的离散点的情况下,国密2具备签名唯一性,因此所有签名具有唯一性;从而使得生成摇奖结果是唯一的;但直到所有签名结束之前,摇奖结果未知。

下面以售彩者试图作弊的角度出发,考察上述例子:

作弊者若要从彩票中获得非法利益,有如下方法:(1)隐瞒部分销售额;(2)使自己中奖;(3)冒领奖金。

关于第一种方法,需要在摇奖阶段中将销售额改低。而由于摇奖结束后需要公布全部的销售数据,因此若不将一部分销售凭据从时候需要公布的销售数据中删除,则销售数据中的销售额和摇奖阶段公布的销售额不等,因此作弊被发现;而如果将一部分销售凭据从销售数据中删除,则部分彩票购买者在查询自己的购彩记录时会发现记录不存在或者不匹配,进而导致彩票购买者将购彩凭据公布或上传,且凭据中的数字签名使得作弊证据无法抵赖。

关于第二种方法,若要使自己中奖,则要么在开奖后伪造彩票购买凭据,要么在开奖前买彩票。

就前一种情况,对于售彩者而言,可以做到伪造彩票购买凭据,但因为伪造彩票必须在摇奖结果出现之后,所以不能将销售数据中记录该彩票凭据,否则会导致销售数据的散列值和摇奖阶段公布散列值不同而产生无可抵赖的作弊证据。而若在摇奖结束后的资金配置阶段多报中奖名额,则会导致销售数据中的中奖名额和公布的中奖名额不匹配,产生无可抵赖的证据;而若在摇奖结束后的资金配置阶段没有多报中奖名额,则实质上是用售彩者自己的存款给自己发奖金,并没有实际的获益。另一种办法是售彩者或者监督者在彩票销售结束后按照摇奖结果向自己或者其他售彩者购买彩票,再进行摇奖,则由于销售数据不同,导致散列值不同,进一步的使得最后一个签名和生成的伪随机数会不同,因此会产生另一个摇奖结果,导致其购买的彩票可能不再是中奖彩票。

如果在开奖前购买彩票,由于彩票销售结束前,摇奖结果是不确定的,因此需要在彩票销售结束后进行对摇奖结果的进行操控,然而,由于一旦售彩结束,摇奖结果就是唯一的,因此若要改变摇奖结果,就必须改变信息M或者签名者的签名。而要变更签名,根据签名映射唯一性,必须修改签名对象信息的正文。其中彩种、彩期信息、售彩者的ID显然无法修改;若修改售彩者先前发布的椭圆曲线点,则会产生两组不同的椭圆曲线点,且先前发布的点有附带数字签名,将产生不可抵赖的作弊证据;若修改或者删除一般彩票购买者的数据,如前文所述,会产生不可抵赖的作弊证据。

因此剩下的方法就是通过事先向自己购买彩票,与其他售彩者合作,进行试探性地摇奖,如果不中则修改彩票投注内容或者再购买彩票使得最后一个签名得到改变,直至摇出合适的结果。这种方法是具有隐蔽性的,不会直接留下不可抵赖的作弊证据,但是只要其他售彩者中有一名不愿意参与作弊,则显然该方法不可行。退一步的,所有售彩者均参与了作弊,则使用基于离散对数困难问题公钥系统的主体将面临着私钥彼此泄露的风险。这是因为若只试探性地摇奖一次,则没有意义;而如果试探性地摇奖两次及以上,就必然要用事先选择的随机数来对不同的信息进行两次或两次以上的签名,而另一方面,对两个不同的正文使用同一个随机数r进行签名,就会使得r和dA可解。以本案例的第一轮签名为例,假如签名者对两个不同的正文M1,M2用同一个随机数进行签名,则根据国密2的签名公式,有:

s1=(1+dA)-1·(r-z1·dA)(modn);

s2=(1+dA)-1·(r-z2·dA)(modn);

其中z1,z2为与正文M1,M2有关的散列值。结合上述两个方程,就可以还原售彩者的私钥:

dA=(s1-s2)·(z2-z1+s2-s1)-1(modn);

私钥泄露将使得他人可以伪造中奖彩票,给售彩者带来亏损,因此,该方法增加了售彩者对彩票摇奖结果操控所需承担的代价。

关于第三种方法,由于售彩凭据中记录有彩票购买者的公钥,因此在彩票购买者私钥没有泄露的情况下,售彩者无法伪造签名对彩票购买者的奖金进行冒领。另外一种方法是伪造购彩凭据,但因为不在自己发布的销售记录中,该部分奖金只能向售彩者自己领取,而非从奖池中获得,无法减少其他中奖者的奖金或者对弃奖的彩票进行替代,因此并不能实际获益。

至此,本发明的实现的效果可以总结如下:1、摇奖结果是可验证的;2、只要有一个主体不愿意参与对作弊,则彩票开奖结果是无法被操控的;3、彩票购买者的选择可以影响彩票开彩的结果;4、售彩者一旦将彩民购买的彩票金费归为己有,就会产生无可抵赖的作弊证据;5、售彩者无法否认中奖者的兑奖资质或者将弃奖的资金归为己有;6、售彩者未作弊的情况下,一旦彩票销售结束,彩票的开奖结果唯一;7、如果参与摇奖的全部主体试图对彩票摇奖结果进行操控,则会面临具有不可抵赖性的作弊证据被公众发现的风险或者面临私钥相互泄露的风险;8、保证了售彩者的销售数据在开奖之后无法更改;9、上述功能的实现不依赖于可信第三方对彩票销售数据进行实时记录。

显然,本领域的技术人员可以对本发明进行部分的技术替代或润饰而不脱离本发明的思路。因此如果对本发明的这些修改属于权利要求及等价技术范畴之内,则本发明也意图覆盖各种修改和等同布置。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1