
信息世界給我們帶來(lái)了很多便利,同時(shí)也沒(méi)有給我們少添麻煩。物理世界中能輕松辦到的事,在信息世界中卻能讓人傷透腦筋。讓我們來(lái)考慮這樣一個(gè)場(chǎng)景:兩個(gè)人在電話中為一件小事?tīng)?zhēng)執(zhí)不休,最后雙方?jīng)Q定通過(guò)拋擲硬幣來(lái)解決爭(zhēng)端。在沒(méi)有第三者的幫助下,通話雙方有辦法在電話里模擬拋擲一枚公平的硬幣嗎?
一些不太理想的方案
最容易想到的方案便是,A 先拋擲一枚硬幣,然后在電話中把結(jié)果告訴 B。這種方案給了 A 很大的權(quán)力——A 完全可以選擇謊報(bào)硬幣拋擲結(jié)果,反正 B 也看不到真實(shí)的情況。如果通話雙方彼此不信任的話,這種方案是不可行的。
另一種常用的方法就是兩人在電話上玩語(yǔ)音版的“石頭剪子布”——雙方同時(shí)喊出“剪刀”、“石頭”、“布”中的一個(gè)。可惜這種方案的公正性同樣值得商討:我們不能忽略兩人玩心理游戲?qū)嵙^(guò)于懸殊,或者一方可以不被察覺(jué)地延遲出招等不公平情況的出現(xiàn)。
下面這個(gè)方案則多少讓人感覺(jué)更公正一些 :A 隨便考 B 一道題,比方說(shuō)“果殼網(wǎng)有多少個(gè)主題站”;如果 B 回答對(duì)了,就算 B 贏得這場(chǎng)爭(zhēng)執(zhí),否則就算 A 獲勝。這種方案似乎更靠譜,但難免還是漏洞百出。首先,公平性依然是老大難:B 有可能非常博學(xué),沒(méi)有什么答不上來(lái)的;或者 A 知道 B 的“弱點(diǎn)”,故意考 B 一道他不會(huì)的題目。其次,A 仍然有耍賴皮的空間—— A 可以出一道有多個(gè)答案的腦筋急轉(zhuǎn)彎,比如說(shuō)“樹上七(騎)只猴,樹下一只猴”,無(wú)論 B 回答什么,A 都可以判 B 答錯(cuò)。另外還有一種不太要命,但也不容忽視的隱患:出于某種目的,B 可以故意裝作答不上來(lái)。也就是說(shuō),如果 B 知道題目的答案,B 就擁有了故意輸?shù)舻臋?quán)力,這不符合拋擲硬幣的精神——聽(tīng)天由命。
一個(gè)幾乎完美的方案
不過(guò),雖然漏洞多多,思路卻值得借鑒。為了避免上述漏洞,A 提出的問(wèn)題最好是二選一的問(wèn)題,兩個(gè)選項(xiàng)都有可能成為答案,概率各占 50%;回答它沒(méi)有任何技巧,只能憑借猜測(cè);而答案則必須是唯一的,并且很容易驗(yàn)證答案的正確性。細(xì)心想想,這樣的問(wèn)題倒也不少——比方說(shuō)今天的某某報(bào)紙頭條新聞中句號(hào)的個(gè)數(shù)是奇數(shù)還是偶數(shù),或者圓周率前 51 位中小于 5 的數(shù)字多還是大于等于 5 的數(shù)字多。A 提出這樣的問(wèn)題后,要求 B 立即作答;面對(duì)這樣的問(wèn)題,B 沒(méi)有任何答題技巧可言,只能瞎猜一個(gè)。之后兩人便可花時(shí)間驗(yàn)證答案的正確性:如果 B 正好猜對(duì)了,視硬幣拋擲結(jié)果為正,B 贏得這場(chǎng)爭(zhēng)執(zhí);如果 B 猜測(cè)有誤,則硬幣拋擲結(jié)果為反,A 最終獲勝。
這樣的方案幾乎是完美的了,我們只差一點(diǎn)了——這個(gè)方案不具有可重復(fù)性。之前出過(guò)的題目是不能重復(fù)使用的,一是為了避免 B 事先作弊,二也是考慮到通話雙方所處環(huán)境得有驗(yàn)證答案的工具。因此,每次需要拋擲硬幣時(shí),A 都要想出一個(gè)全新的“公平問(wèn)題”來(lái)。于是我們想到,能否構(gòu)造出一套數(shù)學(xué)規(guī)則,讓我們產(chǎn)生出無(wú)窮無(wú)盡的、純數(shù)學(xué)形式的公平問(wèn)題呢?
公平的電子拋幣協(xié)議
在數(shù)學(xué)中,有一個(gè)非常典型的“正則易、逆則難”的問(wèn)題:你很容易算出兩個(gè)數(shù)的乘積是多少,卻沒(méi)法迅速找出一個(gè)大數(shù)等于哪兩個(gè)數(shù)的乘積。
有些數(shù)能夠表示成更小的數(shù)的乘積,比如 8 可以寫成 2×4,35 可以寫成 5×7。這樣的數(shù)就被稱為“合數(shù)”。另一些數(shù)則比較特殊,它不能寫成更小的數(shù)的乘積,比如 7、23、67、191 等等,這樣的數(shù)就叫做“素?cái)?shù)”。素?cái)?shù)擁有很多美妙的性質(zhì),它們不但讓數(shù)學(xué)家們?nèi)绨V如醉,在信息安全領(lǐng)域也有很多漂亮的應(yīng)用。
選取兩個(gè)素?cái)?shù),比方說(shuō) 23 和 67,然后把它們乘在一起,能夠得到一個(gè)新的數(shù) 1541。不過(guò),除非一個(gè)數(shù)一個(gè)數(shù)地去試,否則你沒(méi)辦法判斷出 1541 可以分成哪兩個(gè)數(shù)之積。也就是說(shuō),對(duì)于“1541 能分成哪兩個(gè)數(shù)的乘積”這個(gè)問(wèn)題,回答起來(lái)相當(dāng)困難,驗(yàn)證答案的正確性卻很容易。
利用這個(gè)思路,我們能得到很多公平的電子拋幣方案。比方說(shuō),先讓 A 拋擲一枚硬幣,如果正面朝上,就選擇兩個(gè) 1000 左右的素?cái)?shù);否則就選擇三個(gè) 100 左右的素?cái)?shù)。然后 A 把選出的素?cái)?shù)乘起來(lái),把結(jié)果告訴 B,讓 B 猜猜看這個(gè)數(shù)是兩個(gè)數(shù)的乘積還是三個(gè)數(shù)的乘積。要想獲得正確答案,B 沒(méi)有什么更高明的手段,只能隨便猜一個(gè)。然后,A 向 B 揭曉答案,并告訴 B 他剛才選了哪幾個(gè)素?cái)?shù),讓 B 驗(yàn)證答案的真實(shí)性。
理論上說(shuō),這種做法是絕對(duì)公平而隨機(jī)的,不過(guò)過(guò)程卻太麻煩了一些,在現(xiàn)實(shí)生活中沒(méi)法普及。不過(guò),在信息世界中,類似的方案已經(jīng)得到了廣泛的應(yīng)用。利用計(jì)算機(jī),我們可以得到幾十上百位的素?cái)?shù),并能迅速算出這些大素?cái)?shù)的乘積,但要想把乘積分解開來(lái)幾乎是一件不可能完成的任務(wù)??梢哉f(shuō),大素?cái)?shù)分解不但是電子拋幣協(xié)議的理論依據(jù),也是消息加密、電子簽名、身份驗(yàn)證等一切信息安全的根基。在人們?yōu)樾畔⑼ㄓ嵉母鞣N麻煩事兒而頭疼時(shí),古老的數(shù)論重新綻放光彩,這可以說(shuō)是數(shù)學(xué)與科技的又一次漂亮的結(jié)合。