劉玉成
摘要:目前,彩票開獎一般使用機器吹球等方式進行,并通過公證員和彩民代表現(xiàn)場參與、電視直播等方式證明其公正性。然而,開獎機有無貓膩、開獎現(xiàn)場是否為預先錄制等問題常常引起人們的質(zhì)疑。彩票的銷售數(shù)據(jù)庫沒有公開,那么會不會存在開獎之后篡改彩票庫及偽造彩票的現(xiàn)象?要消除疑慮、自證清白,唯一的辦法是讓廣大彩民參與監(jiān)督。顯然,在傳統(tǒng)的開獎方式下,不可能將成千上萬的彩民都召集到開獎現(xiàn)場進行監(jiān)督。為實現(xiàn)大眾監(jiān)督,現(xiàn)提出構(gòu)建隨機數(shù)發(fā)生器以生成中獎號碼的方案,以國際上公認的sha-2哈希函數(shù)作為隨機數(shù)發(fā)生器,以每日金融市場行情數(shù)據(jù)作為輸入源。因金融行情變化不斷,每日均可獲得隨機性極強的號碼,又因為人人均可從不同渠道獲得相關(guān)的金融行情,從而將監(jiān)督機會提供給所有的彩民。對于彩票銷售庫的監(jiān)督,則采用電子簽名的方式進行。要求彩票中心在開獎前對彩票庫哈希值簽名并公布,事后,若有人更改了彩票庫,其哈希值及簽名必定變化,任何人均可通過計算發(fā)現(xiàn)問題。
關(guān)鍵詞:彩票;公正;哈希函數(shù);隨機數(shù);電子簽名;監(jiān)督
中圖分類號: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
公開、公平、公正是彩票的原則,誠信是彩票的生命。我國的各類彩票自發(fā)行以來,各級管理機構(gòu)努力加強內(nèi)部管理,采取一系列措施以確保彩票的公正。
然而,“金錢是人性的腐蝕劑”。19世紀末的美國總統(tǒng)哈里森曾將彩票業(yè)稱為“欺騙行業(yè)”。我國曾出現(xiàn)了“2004年陜西寶馬彩票案件”[1]、“2009年深圳雙色球數(shù)據(jù)篡改案”[2]等,雖然違法者已經(jīng)受到嚴懲,但彩票的公正形象難免受損。在互聯(lián)網(wǎng)上,有關(guān)巨獎真實性的質(zhì)疑從來沒有間斷過。
如何才能讓彩票擺脫“欺騙”之名成為真正的“公正彩票”?傳統(tǒng)做法是,對搖獎機進行檢測,對開獎進行現(xiàn)場公證、現(xiàn)場直播。但如何證明檢測員和公證員的公正性?如何證明“現(xiàn)場直播”不是“錄像回放”?
1 公正彩票的初步思路及用到的基本理論
政界有兩句名言:“沒有監(jiān)督的權(quán)力必然產(chǎn)生腐敗”,“監(jiān)督是信任的可靠基礎”。彩票要獲得彩民的信任,就必須接受所有彩民而不是少數(shù)人的監(jiān)督。一是監(jiān)督中獎號碼的生成,以防人為控制;二是監(jiān)督彩票的發(fā)行,以防有人開獎后篡改彩票數(shù)據(jù)庫,偽造中獎彩票。
在傳統(tǒng)的搖獎方式下,僅公證員和少數(shù)人能進入現(xiàn)場進行監(jiān)督,對于銷售狀況和中獎結(jié)果更是難以監(jiān)督。
現(xiàn)利用散列函數(shù)sha-2和數(shù)字簽名rsa算法設計出一套能被所有彩民監(jiān)督的彩票方案:構(gòu)建隨機數(shù)發(fā)生器以生成中獎號碼,其算法公開、數(shù)據(jù)采集過程透明;由彩票中心在開獎前對彩票銷售文檔進行電子簽名并公布,以接受監(jiān)督。
以上方案用到幾個基本數(shù)學概念,以下簡要介紹:
1.1 函數(shù)
函數(shù)可被簡單看作是一個對應關(guān)系,數(shù)學定義為:在一個變化過程中,對于給定的自變量x值,有唯一的因變量y值與之對應,那么就稱y是x的函數(shù),記為:y=f(x)。
1.2 散列函數(shù)
散列函數(shù),又名哈希(Hash)函數(shù)。它的特點是:自變量x(輸入值)可以是任何數(shù)字或文本,因變量y(輸出值)是一個固定長度的數(shù)。
由美國國家安全局(NSA)所設計的散列函數(shù)SHA-2受到廣泛認可[3-4],其特點是:
1) 如果輸入的數(shù)據(jù)有微小變化,輸出值都將有很大的不同。
2) 算法公開,任何人都可對計算結(jié)果進行驗證。
3) 散列函數(shù)不可逆。給定一個散列值y,無法求得輸入數(shù)據(jù)x。
由于sha-2的輸出值無法預測,可以被作為隨機數(shù)使用[5]。2006年,王玉華等提出一種隨機數(shù)發(fā)生器,以熱噪聲作為輸入數(shù)據(jù)源,以SHA-2函數(shù)(512版)對其進行處理,提供了更強的不可預測的隨機數(shù)。
1.2 數(shù)字簽名
目前,數(shù)字簽名一般使用RSA算法[6-7],其算法(或稱函數(shù))是公開的,僅密鑰(即函數(shù)的參數(shù))不同。每個數(shù)據(jù)主體(如彩票中心、證交所)均有一對密鑰:私鑰s和公鑰p,將其作為參數(shù)帶入RSA函數(shù)中,得到互逆的兩個函數(shù)Fs和Fp。其中私鑰自己保管,對應的函數(shù)Fs用于簽名;公鑰向社會公開,對應的函數(shù)Fp用于驗證。
簽名過程:對原始數(shù)據(jù)X,通過Fs函數(shù)進行計算,得到Y(jié)=Fs (X),因私鑰s僅數(shù)據(jù)主體知道,其結(jié)果Y也僅有數(shù)據(jù)主體能獲得,故Y被稱為數(shù)據(jù)主體對X的簽名;
驗證過程:以Y作為輸入數(shù)據(jù),計算Fp (Y),因Fs和Fp互逆,故計算后會發(fā)現(xiàn) X=Fp (Y),此過程被稱為驗證。
因私鑰僅為數(shù)據(jù)主體所有,且無法根據(jù)公鑰推算出私鑰,故一旦數(shù)據(jù)主體對某數(shù)據(jù)簽名并公開,大眾就可以利用其公鑰驗證之,使得數(shù)據(jù)主體無法抵賴所做的簽名。
2 公正彩票的技術(shù)原理
2.1對彩票庫的監(jiān)督方案
彩票中心在當期銷售截止后,對銷售庫文件簽名,將庫文件和簽名在網(wǎng)上公布。任何人均可利用彩票中心的公鑰驗證該文檔是否來源于彩票中心,同時,彩票中心亦不能否認該文檔的存在,一旦公布就無法再篡改彩票庫。
2.2 開獎號碼的生成方案
先挑選合適的數(shù)據(jù)源,再通過散列函數(shù)sha-2進行處理生成隨機數(shù),最后利用函數(shù)將隨機數(shù)轉(zhuǎn)換為中獎號碼(該函數(shù)稱為號碼轉(zhuǎn)換函數(shù))。由于算法的公開性,數(shù)據(jù)源一旦確定,中獎號碼就確定了。因而問題的關(guān)鍵是挑選合適的數(shù)據(jù)源。
一個簡單的辦法是選擇一個每日變動的金融市場行情作為數(shù)據(jù)源。散列函數(shù)的特點是,原始數(shù)據(jù)的微小波動將引起散列值的巨大變動,故使用該辦法能夠獲得難以預測的隨機數(shù)。市場行情每日均被公布,因而能被大眾監(jiān)督。
3 公正彩票的實現(xiàn)方法一例
基本原理同上,為了讓中獎號碼的隨機性更強,理論上需要增加輸入源的信息量(或稱信息熵),故選擇多個金融市場的行情再加上彩票銷售庫,經(jīng)過處理后一并作為哈希函數(shù)的輸入源。因輸入源較多,若開獎日有若干金融市場停市,可不采集其數(shù)據(jù),只要有一個市場開市即可照常開獎。這里不妨將開獎時間定于下午5點,則要求金融市場在當日下午4點左右停市,以便于數(shù)據(jù)的采集與利用。
對市場選擇另一個要求是:交易資金量巨大,難受人為操控。在這里不妨選定如下數(shù)據(jù)采集機構(gòu),并要求其采集(或提供)如下行情數(shù)據(jù):1)上海證交所,提供證券交易行情。2)上海黃金交易中心,采集東京黃金市場行情。(3)中國外匯交易中心,采集悉尼外匯交易市場行情。
開獎由彩票中心主導,參與部門還包括證交所、黃金、外匯交易中心。每個部門均有自己的公私密鑰對,公鑰向社會公開。
各種數(shù)據(jù)的選擇、精度、文本格式等,由彩票中心提前規(guī)定,所用的哈希算法sha-2、簽名算法rsa、號碼變換函數(shù)等,也由彩票中心提前編制好程序,由公證處審核后公布到網(wǎng)上。在此條件下,所有彩民均可對彩票的銷售及開獎過程進行監(jiān)督。
以下是彩票銷售及開獎步驟:
1) 彩票銷售日,在銷售截止后,彩票中心生成彩票庫,簽名(得到數(shù)A),將彩票庫和簽名公布到網(wǎng)上。
2) 開獎日(即第二日)下午4點,各數(shù)據(jù)采集機構(gòu)分別采集行情數(shù)據(jù)(例如上海證交所采集股票的收盤價及成交量),統(tǒng)一發(fā)送給彩票中心,后者將所有的行情數(shù)據(jù)合并為一個行情文本文件,在網(wǎng)站公布,同時公布該文件的sha-2散列值。
3) 下午4-5點,所有彩民可對彩票中心公布的行情文件進行核實,一旦有疑問,立即通知彩票中心進行校對。
4) 下午5點,核對時間截止,任何人不得再對原始數(shù)據(jù)進行更改。
注:理論上說,以上步驟得出的散列值已經(jīng)是合適的隨機數(shù)了,可直接利用號碼變換函數(shù)將其轉(zhuǎn)換為中獎號碼,但這樣做存在如下漏洞:彩票中心可嘗試篡改行情文本,以獲得不同的散列值,進而得到不同的中獎結(jié)果。文本的篡改辦法有:半角字符變?nèi)?、增加空格或空行、小?shù)點后加減零等(如“10.30”改為“10.3”)。雖然違規(guī),但由于其隱蔽,難以被發(fā)現(xiàn)。為堵塞漏洞,本方案增加一個簽名環(huán)節(jié)。增加該環(huán)節(jié)后,篡改行情文本雖能改變開獎結(jié)果,卻無法預測開獎結(jié)果。
5) 下午5點10分,彩票中心和各數(shù)據(jù)采集機構(gòu)分別對行情文本進行簽名,得到數(shù)B、C、D、E,發(fā)送給彩票中心。簽名可作為各部門對原始數(shù)據(jù)的認可。
6) 接著,彩票中心將簽名數(shù)據(jù)A、B、C、D、E按順序排列作成一個新的文本,作為數(shù)據(jù)源輸入sha-2函數(shù)進行處理,輸出隨機數(shù)(稱為R)。
7) 通過號碼變換函數(shù)將隨機數(shù)R轉(zhuǎn)化為中獎號碼。該函數(shù)的執(zhí)行過程是:1. 求出彩票所有可能的組合數(shù),設為M;2. 對每個組合分配一個順序號;3. 將隨機數(shù)R除以M,取余數(shù)作為順序號,它指向的組合即為中獎號碼。
8) 最后,由彩票中心將B、C、D、E、R及中獎號碼一同公布。
(下轉(zhuǎn)第93頁)
(上接第87頁)
4 彩民監(jiān)督的流程
1) 彩票銷售結(jié)束,根據(jù)彩票銷售數(shù)據(jù)庫和彩票中心公鑰,驗證其簽名A。
2) 開獎日,對彩票中心公布的行情文件進行核實,繼而核實其散列值。
3) 根據(jù)各相關(guān)部門的公鑰,驗證其簽名B、C、D、E。
4) 根據(jù)A、B、C、D、E和散列函數(shù)計算出隨機數(shù)R;
5) 根據(jù)彩票中心公布的號碼變換函數(shù),計算出中獎號碼。
6) 根據(jù)銷售數(shù)據(jù)庫,計算當期中獎情況。
5 結(jié)束語
本方案以金融市場信息等作為隨機數(shù)種子,通過公開的哈希函數(shù)、簽名函數(shù)等處理以獲得理想的、隨機的中獎號碼,整個計算過程均可被彩民驗證。同時彩票中心對銷售庫進行電子簽名并公布,低成本地提供了所有彩民對彩票進行監(jiān)督的途徑,實現(xiàn)了彩票的公開、公平和公正。
參考文獻:
[1] 西安假彩票案嫌犯落網(wǎng)[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)熱噪聲隨機數(shù)發(fā)生器[J].計算機工程,2006,32(23).
[6] 武亞寧.RSA公鑰算法的新探討及改進[J].信息安全與技術(shù),2012(9).
[7] 潘承洞,潘承彪. 初等數(shù)論[M].2版. 北京:北京大學出版社,1992.