公正彩票的技术方案一例
2015-07-18刘玉成
刘玉成
摘要:目前,彩票开奖一般使用机器吹球等方式进行,并通过公证员和彩民代表现场参与、电视直播等方式证明其公正性。然而,开奖机有无猫腻、开奖现场是否为预先录制等问题常常引起人们的质疑。彩票的销售数据库没有公开,那么会不会存在开奖之后篡改彩票库及伪造彩票的现象?要消除疑虑、自证清白,唯一的办法是让广大彩民参与监督。显然,在传统的开奖方式下,不可能将成千上万的彩民都召集到开奖现场进行监督。为实现大众监督,现提出构建随机数发生器以生成中奖号码的方案,以国际上公认的sha-2哈希函数作为随机数发生器,以每日金融市场行情数据作为输入源。因金融行情变化不断,每日均可获得随机性极强的号码,又因为人人均可从不同渠道获得相关的金融行情,从而将监督机会提供给所有的彩民。对于彩票销售库的监督,则采用电子签名的方式进行。要求彩票中心在开奖前对彩票库哈希值签名并公布,事后,若有人更改了彩票库,其哈希值及签名必定变化,任何人均可通过计算发现问题。
关键词:彩票;公正;哈希函数;随机数;电子签名;监督
中图分类号:TP312 文献标识码:A 文章编号:1009-3044(2015)12-0086-02
An Example of Solution to Fair Lottery
LIU Yu-cheng
(The Peoples Bank of China, HuiZhou Branch, Huizhou 16008, China)
Abstract: At present, the winning numbers of a lottery are drawn by air blowing lottery machine. The performance of the machine is supervised by some notaries and broadcast live, so that puts itself in the clear. Do you believe that the machine is a fair one? How do you tell whether you are watching a live television or an action replay? Could someone alter the lottery sales bank and fake the winning ticket after the drawing? The only way to prove lotterys justice and selflessness is by public supervision.Obviously, you cant call hundreds of thousands of people together to perform site-supervision. How to extend the power of supervision to the public? Construct a random number generator by cryptographic hash function sha-2, which is internationally recognized. The input data are designed to be acquired from financial market which fluctuates unpredictably everyday. Any person could get algorithm from administration authorities and obtain daily original data from a variety of sources, so he is able to supervise the winning number of the lottery.To supervise the sales bank of lottery, we can demand that the lottery sales center create a digital signature of the bank and post it on the internet. Any alteration to the sales bank can easily be revealed by validating the digital signature.
Key words: lottery; fair; hash; random number; electronic signature; supervision
公开、公平、公正是彩票的原则,诚信是彩票的生命。我国的各类彩票自发行以来,各级管理机构努力加强内部管理,采取一系列措施以确保彩票的公正。
然而,“金钱是人性的腐蚀剂”。19世纪末的美国总统哈里森曾将彩票业称为“欺骗行业”。我国曾出现了“2004年陕西宝马彩票案件”[1]、“2009年深圳双色球数据篡改案”[2]等,虽然违法者已经受到严惩,但彩票的公正形象难免受损。在互联网上,有关巨奖真实性的质疑从来没有间断过。
如何才能让彩票摆脱“欺骗”之名成为真正的“公正彩票”?传统做法是,对摇奖机进行检测,对开奖进行现场公证、现场直播。但如何证明检测员和公证员的公正性?如何证明“现场直播”不是“录像回放”?
1 公正彩票的初步思路及用到的基本理论
政界有两句名言:“没有监督的权力必然产生腐败”,“监督是信任的可靠基础”。彩票要获得彩民的信任,就必须接受所有彩民而不是少数人的监督。一是监督中奖号码的生成,以防人为控制;二是监督彩票的发行,以防有人开奖后篡改彩票数据库,伪造中奖彩票。
在传统的摇奖方式下,仅公证员和少数人能进入现场进行监督,对于销售状况和中奖结果更是难以监督。
现利用散列函数sha-2和数字签名rsa算法设计出一套能被所有彩民监督的彩票方案:构建随机数发生器以生成中奖号码,其算法公开、数据采集过程透明;由彩票中心在开奖前对彩票销售文档进行电子签名并公布,以接受监督。
以上方案用到几个基本数学概念,以下简要介绍:
1.1 函数
函数可被简单看作是一个对应关系,数学定义为:在一个变化过程中,对于给定的自变量x值,有唯一的因变量y值与之对应,那么就称y是x的函数,记为:y=f(x)。
1.2 散列函数
散列函数,又名哈希(Hash)函数。它的特点是:自变量x(输入值)可以是任何数字或文本,因变量y(输出值)是一个固定长度的数。
由美国国家安全局(NSA)所设计的散列函数SHA-2受到广泛认可[3-4],其特点是:
1) 如果输入的数据有微小变化,输出值都将有很大的不同。
2) 算法公开,任何人都可对计算结果进行验证。
3) 散列函数不可逆。给定一个散列值y,无法求得输入数据x。
由于sha-2的输出值无法预测,可以被作为随机数使用[5]。2006年,王玉华等提出一种随机数发生器,以热噪声作为输入数据源,以SHA-2函数(512版)对其进行处理,提供了更强的不可预测的随机数。
1.2 数字签名
目前,数字签名一般使用RSA算法[6-7],其算法(或称函数)是公开的,仅密钥(即函数的参数)不同。每个数据主体(如彩票中心、证交所)均有一对密钥:私钥s和公钥p,将其作为参数带入RSA函数中,得到互逆的两个函数Fs和Fp。其中私钥自己保管,对应的函数Fs用于签名;公钥向社会公开,对应的函数Fp用于验证。
签名过程:对原始数据X,通过Fs函数进行计算,得到Y=Fs (X),因私钥s仅数据主体知道,其结果Y也仅有数据主体能获得,故Y被称为数据主体对X的签名;
验证过程:以Y作为输入数据,计算Fp (Y),因Fs和Fp互逆,故计算后会发现 X=Fp (Y),此过程被称为验证。
因私钥仅为数据主体所有,且无法根据公钥推算出私钥,故一旦数据主体对某数据签名并公开,大众就可以利用其公钥验证之,使得数据主体无法抵赖所做的签名。
2 公正彩票的技术原理
2.1对彩票库的监督方案
彩票中心在当期销售截止后,对销售库文件签名,将库文件和签名在网上公布。任何人均可利用彩票中心的公钥验证该文档是否来源于彩票中心,同时,彩票中心亦不能否认该文档的存在,一旦公布就无法再篡改彩票库。
2.2 开奖号码的生成方案
先挑选合适的数据源,再通过散列函数sha-2进行处理生成随机数,最后利用函数将随机数转换为中奖号码(该函数称为号码转换函数)。由于算法的公开性,数据源一旦确定,中奖号码就确定了。因而问题的关键是挑选合适的数据源。
一个简单的办法是选择一个每日变动的金融市场行情作为数据源。散列函数的特点是,原始数据的微小波动将引起散列值的巨大变动,故使用该办法能够获得难以预测的随机数。市场行情每日均被公布,因而能被大众监督。
3 公正彩票的实现方法一例
基本原理同上,为了让中奖号码的随机性更强,理论上需要增加输入源的信息量(或称信息熵),故选择多个金融市场的行情再加上彩票销售库,经过处理后一并作为哈希函数的输入源。因输入源较多,若开奖日有若干金融市场停市,可不采集其数据,只要有一个市场开市即可照常开奖。这里不妨将开奖时间定于下午5点,则要求金融市场在当日下午4点左右停市,以便于数据的采集与利用。
对市场选择另一个要求是:交易资金量巨大,难受人为操控。在这里不妨选定如下数据采集机构,并要求其采集(或提供)如下行情数据:1)上海证交所,提供证券交易行情。2)上海黄金交易中心,采集东京黄金市场行情。(3)中国外汇交易中心,采集悉尼外汇交易市场行情。
开奖由彩票中心主导,参与部门还包括证交所、黄金、外汇交易中心。每个部门均有自己的公私密钥对,公钥向社会公开。
各种数据的选择、精度、文本格式等,由彩票中心提前规定,所用的哈希算法sha-2、签名算法rsa、号码变换函数等,也由彩票中心提前编制好程序,由公证处审核后公布到网上。在此条件下,所有彩民均可对彩票的销售及开奖过程进行监督。
以下是彩票销售及开奖步骤:
1) 彩票销售日,在销售截止后,彩票中心生成彩票库,签名(得到数A),将彩票库和签名公布到网上。
2) 开奖日(即第二日)下午4点,各数据采集机构分别采集行情数据(例如上海证交所采集股票的收盘价及成交量),统一发送给彩票中心,后者将所有的行情数据合并为一个行情文本文件,在网站公布,同时公布该文件的sha-2散列值。
3) 下午4-5点,所有彩民可对彩票中心公布的行情文件进行核实,一旦有疑问,立即通知彩票中心进行校对。
4) 下午5点,核对时间截止,任何人不得再对原始数据进行更改。
注:理论上说,以上步骤得出的散列值已经是合适的随机数了,可直接利用号码变换函数将其转换为中奖号码,但这样做存在如下漏洞:彩票中心可尝试篡改行情文本,以获得不同的散列值,进而得到不同的中奖结果。文本的篡改办法有:半角字符变全角、增加空格或空行、小数点后加减零等(如“10.30”改为“10.3”)。虽然违规,但由于其隐蔽,难以被发现。为堵塞漏洞,本方案增加一个签名环节。增加该环节后,篡改行情文本虽能改变开奖结果,却无法预测开奖结果。
5) 下午5点10分,彩票中心和各数据采集机构分别对行情文本进行签名,得到数B、C、D、E,发送给彩票中心。签名可作为各部门对原始数据的认可。
6) 接着,彩票中心将签名数据A、B、C、D、E按顺序排列作成一个新的文本,作为数据源输入sha-2函数进行处理,输出随机数(称为R)。
7) 通过号码变换函数将随机数R转化为中奖号码。该函数的执行过程是:1. 求出彩票所有可能的组合数,设为M;2. 对每个组合分配一个顺序号;3. 将随机数R除以M,取余数作为顺序号,它指向的组合即为中奖号码。
8) 最后,由彩票中心将B、C、D、E、R及中奖号码一同公布。
(下转第93页)
(上接第87页)
4 彩民监督的流程
1) 彩票销售结束,根据彩票销售数据库和彩票中心公钥,验证其签名A。
2) 开奖日,对彩票中心公布的行情文件进行核实,继而核实其散列值。
3) 根据各相关部门的公钥,验证其签名B、C、D、E。
4) 根据A、B、C、D、E和散列函数计算出随机数R;
5) 根据彩票中心公布的号码变换函数,计算出中奖号码。
6) 根据销售数据库,计算当期中奖情况。
5 结束语
本方案以金融市场信息等作为随机数种子,通过公开的哈希函数、签名函数等处理以获得理想的、随机的中奖号码,整个计算过程均可被彩民验证。同时彩票中心对销售库进行电子签名并公布,低成本地提供了所有彩民对彩票进行监督的途径,实现了彩票的公开、公平和公正。
参考文献:
[1] 西安假彩票案嫌犯落网[N].西安日报,2004-06-02.
[2] 深圳福彩就3305万致歉[N].北京青年报,2009-08-31 .
[3] Handshuh H. Gilbert H. Evaluation Report Security Level of Cryptography SHA-256[R]. Technical Report, Issy-les-Moulineaux, 2002.
[4] Gilbert H, Handschuh H. Security Analysis of SHA-256 and Sisters. Selected Areas in Cryptography, 2003: 175-193.
[5] 王玉华.SHA-2(512)热噪声随机数发生器[J].计算机工程,2006,32(23).
[6] 武亚宁.RSA公钥算法的新探讨及改进[J].信息安全与技术,2012(9).
[7] 潘承洞,潘承彪. 初等数论[M].2版. 北京:北京大学出版社,1992.