認識密碼學的第一本書
〈前言〉學習密碼學之前,請想一想……
我們用我們個人的隱私作為貨幣,來換取網路的「免費服務」。
我們需要真正意識到目前正發生在我們身上的隱私問題,了解免費的代價,認識網路定義隱私、個人空間及「人」的方式。
你相信網路嗎?
電腦的出現,讓密碼研究與應用成為一門重要學科,密碼不再止於推理與狹隘的數字遊戲,而是與現代的科技生活息息相關。
《西遊記》中齊天大聖孫悟空憑藉著金箍棒與筋斗雲兩樣利器,斬妖除魔完成了艱鉅的取經任務。我們現今同樣面臨嚴峻多變的考驗,資訊與挑戰複雜且多元,面對各項任務,網路就好比筋斗雲,一翻十萬八千里,讓我們不出門也能得知天下事,即時即地掌握訊息。電腦則如同金箍棒,協助你我完成各種工作。正因為知識的傳遞更便利,現代人生活、工作中的一切幾乎全面仰賴電腦及網路,不容易察覺其中的危機,使得密碼成為傳遞所有訊息時關鍵的第一道防線。
一般人所不熟知的是,網路最初始的發明與運用,其實與祕密的隱藏與傳遞有關。
一九六○年代,美國國防部各單位的電腦及通訊設備因規格不盡相同,造成彼此間交換資訊的困難,妨礙了軍事機密訊息的傳遞。除了需要解決這個問題外,美國國防部也針對國家軍事防衛系統的連線提出「確保永不斷線」的要求,讓系統連線不會因為某部電腦故障而無法進行,而這種技術的研發,就是網際網路的起源。
想想看,生活中沒有了電腦與網路,造成的影響會有多大!透過智慧型手機和行動通訊設備,工作不再限制於辦公室內;GPS系統使我們能在陌生的環境依然悠閒自得;只要連上網路,在家就能購物,不必在大賣場人擠人,還能多方比價,甚至買遍全世界!「滑世代」可說是以指尖在過生活,用來打發剩餘時光的數位娛樂更是五光十色,應有盡有。
網路的發展為食、衣、住、行、育、樂添入了不同的元素,使生活多采多姿,我們得以突破時間與空間的限制,運用龐大資源解決生活問題。不過,網路卻如雙面刃,正確與錯誤的訊息同樣因網路而流通迅速,不想傳遞、不該傳遞的資料也可能遭有心人蓄意廣傳。太過於依賴,反而容易遭到網路的制約,造成遺憾。
網路確實能為我們帶來更好的生活品質及更多的可能性。但在使用的拿捏上,我們必須拉出一條界線。
不設防的便利之下,潛藏的危機
雖然隨時都能自由徜徉於浩瀚的資訊之洋,但你可曾理性權衡過,便利的代價是什麼?
「電子郵件」讓我們可以在彈指之間完成訊息的交換,但也協助了病毒的傳播。「網路購物」的方便成為非法人士覬覦的目標,產生了「網路釣魚」的詐騙手法。開設「部落格」可在世界的一角為自己發聲,卻也可能難以掌控公開發言引起的爭端,甚至因情緒性的發言而觸法。「社交網路」服務網站促進與朋友間的互動,竟成為歹徒蒐集個人資料的天堂。「全球資訊網」的技術讓知識的傳播更容易,卻助長了網路色情的發展。網際網路的技術,可以是知識傳播的媒介,也可能應用在各式非法網站的建置。
隨著網路發展所興起的科技犯罪,便是我們所需面對的課題,藉由網路而生的許多方便,誘發犯罪叢生。例如成長快速的電子商務,網路購物、網路銀行、網路拍賣等虛擬交易中,消費者只要輸入帳號、密碼、信用卡卡號等資訊,便可進行金融交易,無需親自到實體店面。龐大的消費者,成為非法人士覬覦的目標。
國際間層出不窮的網路詐騙中,透過詐騙網站與誘騙郵件的「網路釣魚」,是非法人士最常使用的一種手法。歹徒製作與知名網站相仿、幾可亂真的假網站,發送偽造的電子郵件,偽裝成某銀行或重要入口網站,如假借土地銀行「landbank」之名行騙改造成「1andbank」(前者為「L的小寫l」,後者為「阿拉伯數字1」)。詐騙信件則以使用者帳號有問題、提醒更換密碼、帳號驗證、系統更新、贈送禮物等,防不勝防的各式恐嚇與利誘,誘騙使用者登入假網站以獲取其資訊。由於製作釣魚網站與發送釣魚垃圾郵件都相當容易,而且使用者不易察覺,因此成為網路犯罪的大宗,造成大量金融損失。
還有另一種經常發生在個人身上的金融犯罪手法。例如銀行帳戶出現一筆不明消費,而買受人的身分竟是本人,很可能是身分被盜竊了。想像一下,若是出現與你擁有一模一樣身分的人,姓名、身分證字號、出生年月日、電話、信用卡號碼、印章、簽名、指紋等,這些代表自己的資訊,卻有另一個人正使用著,會是怎樣的情景?
在數位生活下,身分是虛擬的,我們靠著帳號、密碼或者一串數碼,用以證明身分,所以當身分遭他人竊用,甚至有詐騙取財、申請或盜刷信用卡、貸款、毀謗他人等犯罪行為時,根本無法判斷「虛擬身分」所代表的人是真是假。由於網路的匿名性,加上許多人缺乏個人資料保護的概念,尤其是在社交網路服務網站,容易成為犯罪者蒐集個人資料的平臺。
另一方面,近期成為網友制裁利器的「人肉搜索」,藉由為數眾多的網友,對新聞事件主角或特定對象、事件進行資訊蒐集比對,試圖找出真相或個人資料。群眾在網路時代有了具體的力量,但這樣的力量究竟伸張了正義還是侵害隱私,頗有爭議,有時更淪為有心人士炒作知名度的手段。
網路真的是免費的嗎?
網路真的免費嗎?在回答這個問題前,我們先討論另一個問題:「一個陌生人付多少錢,你會給他看你的日記?」需要付多少的代價,以了解你的宗教、政治甚至性傾向,或是你的身體狀況、交往情形?這些資訊是用金錢買得到的嗎?實際上,這些看似「無價」的私密資訊,卻是我們每天大方、大規模提供的訊息。
網路可說是有史以來與人類關係最為密切的技術,不斷推陳出新,功能強大且方便,但在使用的同時,我們也透露出大量個人訊息給第三方。我們對於自己所釋放的訊息幾乎毫無意識,我們只專注於更新的功能、更方便的使用方式,而嚴重忽略我們個人資料的外洩。而在過去,這些資料是企業必須花上百倍甚至上千倍的力量才能取得的。
今天,絕大多數網際網路的功能都是免費的。我們免費用網路與家人連絡、視訊,看新聞、看影片、收發電子郵件、使用搜尋引擎。但實際上,只有少數人知道我們真正的付費方式。
每一天,Google藉由億萬個關鍵字來微調搜尋引擎,使他們能更針對性的提供廣告;藉由小型文字檔案「cookie」,企業能清楚了解我們的需求,並從中提供更符合我們需求的產品。過去,企業需要藉由無數次的電話訪問、問卷調查,才能勉強得到些不一定正確的資料,但現在,所有網路的使用者卻選擇將自己的個人資料完全雙手奉上而無自覺。
韓國電視劇《幽靈》中有一段引人深思的情節:知名女星從大樓墜下死亡,搜查隊藉由死者的搜尋關鍵字,推測出女星可能懷孕,並從中找出調查的方向。看似平常的搜尋關鍵字,卻可能藏有我們心中的祕密。每個人都有不願與人分享的祕密,但在使用搜尋引擎時,卻可能完全沒有戒心。電影《失控的陪審團》中,軍火商的辯護人因掌握陪審團的隱私,進而影響判決結果。假設你不幸染上愛滋病,你是否敢讓其他人知情?你是否願意告訴你的伴侶、朋友或是父母?不論願不願意,一旦使用Google搜尋相關資訊,「雞尾酒療法」「AIDS」「愛滋病」「醫院快篩」等關鍵字,就足以令不能說的祕密洩漏出來。
使用電腦與智慧型手機時,我們以為我們是在安全、私密的空間裡,但實際上只要使用網路,我們永遠是處於開放的空間。每一天,我們用我們個人的隱私作為貨幣,來換取網路的「免費服務」。
我們需要真正意識到目前正發生在我們身上的隱私問題。並非就此遠離或摧毀網路,而是必須了解免費的代價,意識到風險與機會是並存的,水能載舟亦能覆舟,真正去認識網路定義隱私、個人空間及「人」的方式。科技終究是身外之物。人,才是根本。
在這層意識之下,也就會深切思考在危機四伏的網路環境中守住個人的祕密、安全傳遞資訊的必要性,而這也正是「密碼學」的意義。從個人帳號密碼的祕密、身分的祕密、私密相簿的祕密,甚至大如戰爭的祕密、外交與軍事的祕密……一旦遭人竊取或揭露,後果都不堪設想。
無論過去、現在、未來,也無關傳統與科技,都需要最高等級的安全與保護,必須保有永恆以及唯一的「祕密」,會是一切看似免費、公開,容易流於虛實難辨、價值混淆的數位時代,最重要的課題。
第1章 遲來二十年的情書
‧繩結/羅馬數字系統/古巴比倫數字系統/阿拉伯數字系統
想了解一個人,最直接的方式或許就是面對面,開誠布公地說出彼此內心的想法;但如果其中一方總是閃躲,甚至早已無法觸手可及,那又該怎麼了解對方呢?
麒哥邁著有些不靈活的腿,打開家門。家裡空無一人。他不意外,兒子阿智應該已經去上課了;就算是假日,也很少待在家裡。麒哥把沙發上的雜物堆到一旁,給自己挪了個位子坐下,一抬眼,剛好看到放在櫃子上的照片:那是阿智小時候,全家一起出遊時拍的。那時候,他的腳還沒跛、妻子還在世,這個家仍然幸福美滿又安康……
一場車禍,讓麒哥差點再也站不起來。雖然拚命復健,可惜效果不如預期,好不容易存下的一點積蓄,也因為住院的緣故花得差不多了。麒哥一向充滿自信,受到的打擊也更深,整個人變得意志消沉,開始封閉自己的內心,無論誰勸都沒有用。妻子除了要照顧阿智、照顧麒哥,還要照顧店裡的生意,在分身乏術、心力交瘁之下,年紀輕輕便撒手人寰。
麒哥完全無法接受這個打擊。他和妻子是大學社團的同學,感情一向好到叫人又羨又妒。他們一畢業就結婚,而麒哥決定自己開店創業時,妻子也從來沒有任何怨言。誰都沒想到,以為會一直美滿下去的家庭,竟然接二連三遭到厄運侵襲。
整理妻子遺物時,麒哥發現妻子留了一封信給他,但內容就只是一連串莫名其妙的英文字母,他左看右看,怎麼想都想不透怎麼回事。妻子想對他說什麼呢?是怨恨他讓全家陷入不幸嗎?是責備他沒有盡到為人夫和為人父的責任嗎?為什麼要用這種看都看不懂的方式寫呢?
為了好好扶養阿智成人,麒哥把店關了,頂下一間早餐店,希望能有更多時間陪伴孩子。只是他心裡始終帶著對妻子的歉疚、對自己不爭氣的痛恨、解不開密碼信的挫敗,以及許多複雜難解的情緒,一靜下來,就覺得空氣沉悶得幾乎讓人窒息。於是他開始用酒精麻醉自己。雖不到誤事的程度,但是看在漸漸成人的阿智眼裡,卻讓他擔心得不得了。
對阿智來說,麒哥其實是個溫柔的好爸爸,只是一沾了酒就像變個人似的;而且只要提到「媽媽」和「戒酒」,爸爸馬上就會暴走發火。隨著年齡漸長,阿智有了自己的生活圈,也懂得迴避衝突,而且他討厭看到爸爸喝酒的樣子,乾脆眼不見為淨,減少待在家裡的時間。
麒哥在沙發上坐了一會兒,站起身來,想到廚房倒杯水,眼光瞄到飯廳桌上的一封信,上面寫著「給爸爸」。
麒哥滿腦子疑問,打開了信。「又是密碼!」他大吼出聲。「你媽寫密碼信給我,連你也這樣搞我?」麒哥正想把信揉進垃圾筒,但他心念一轉:他已失去了妻子,失去問清那封密碼信的機會,難道他要再一次錯過兒子嗎?
麒哥拿著那封密碼信研究了半天,一、兩個鐘頭過去,依然理不出頭緒。這時電話響起,是麒哥的國中同學、幾十年的死忠兼換帖,而且也是妻子的大學同班同學—法老王。自從麒哥家發生變故後,法老王就一直很努力地想讓麒哥走出自己的殼,不但時常幫麒哥照顧家裡,也三不五時打電話約他出門走走,就是不想讓麒哥和酒太親密。
「又走走啊?你沒看我的腳,這副德性還能走到哪裡去?」麒哥打趣說著。他突然想到,法老王不是在大學裡教數學嗎?說不定他可以幫忙解開阿智留下的密碼信!
一進法老王家,麒哥就迫不及待地拿出阿智的信:「快點幫我看看!」
那封信是這樣的:
「88:8179,7954,88179,8437,94320,0506,1.181,1.91817,88520。」
法老王接過那封寫滿數字的信,看了一會兒,又若有所思地看了麒哥一眼。
「阿智說什麼?」
「你兒子愛你啦。」法老王擺擺手。
「我不信,寫那麼多數字耶;而且……」麒哥眼神一暗,「他才不會說這麼肉麻的話。」
「唉!」法老王嘆了一口氣,「我可以跟你說阿智寫什麼,但是你要答應我,不准生氣、不准罵人、不准發火、不准掀桌子。」
「好,我答應你。」看著一臉認真嚴肅的老友,麒哥意識到兒子可能寫了什麼很重要的內容。
法老王清清喉嚨:「阿智說:『爸爸:不要吃酒,吃酒誤事,爸爸一吃酒,不是傷妻,就是傷兒女,動武動怒,一點也不要,一點酒也不要吃,爸爸我愛你。』」他把信摺好,還給麒哥:「所以我說你兒子愛你嘛。」
麒哥一時語塞。他知道自己一直在逃避,但是沒想到竟然會讓兒子這麼擔心。也許就是因為阿智一講到戒酒他就生氣,才會用這麼迂迴的方式,希望能讓父親了解他的用心。
「你怎麼看得懂?」麒哥有些慚愧,但也好奇法老王怎麼能一眼就看出兒子信上的內容。
「阿智真的是她的兒子。」法老王笑了笑,「還記得吧,你老婆從以前就很喜歡玩藏密解密的遊戲。」
「我們念文科的一看到數字就頭痛,哪曉得這些。」麒哥苦笑。
「不過數字不但很實用,也很美喔,如果有機會重新認識它們,你就不會這麼排斥了,說不定還會愛上它們呢。」
「拜託,怎麼可能?」麒哥白眼差點翻到後腦杓。
「你天天都在用數字解決大小事情,沒有它,世界根本沒辦法運轉。喏,上次找你去買東西的時候,你一看到打折的東西就黏住不動了。」
「哈!做人就是要精打細算啊,那天買了兩串衛生紙,打完八五折之後一串才一百元出頭耶,很划算呢!」
「你看,『八五折』不就是數字的運算嗎?」法老王指指桌上的電腦,「你應該知道電腦是○與一構成的吧。」
「這我當然曉得,不過我想一般人頂多就是算算買東西花了多少錢之類的吧,那種很難的數學根本派不上用場。」
「這樣講是沒錯啦,但事實上,古人對數字的依賴,可是遠遠超乎我們想像的喔。」法老王走到電腦前,在鍵盤上敲了幾下,按按滑鼠,隨即出現檢索頁面:
〈密碼小教室〉結繩的時代
看完之後,麒哥忍不住心想:「不會吧,連算日子都這麼麻煩,還好現在有日曆和手機,一看就知道今天幾月幾號了。」
法老王又點選另一個檢索頁面。「就算再怎麼討厭數學,你至少也知道什麼羅馬數字、二進位、十進位、十六進位之類的東西吧。而且很多古文明都有自己的計數系統;雖然很多都沒留下來就是了。」
〈密碼小教室〉數字系統
我們現今所使用的阿拉伯數字,並非一開始就被所有人所使用、接受,在過去的許多古文明中,其實早有發展出屬於自己的數字系統。之後隨著貿易的興盛,帶動了知識的交流,才有了我們現在所使用的阿拉伯數字。
1. 羅馬數字系統
2. 古巴比倫數字系統
「我問你一個冷知識。」看完與數字相關的歷史後,法老王開口問麒哥:「羅馬人發明羅馬數字,巴比倫人發明巴比倫數字。那阿拉伯數字是誰發明的?」
麒哥皺皺眉:「你當我是笨蛋喔?會問這種問題,就表示阿拉伯數字不是阿拉伯人發明的,但如果不是阿拉伯人的話……呃,我真的不知道是誰;而且,如果不是阿拉伯人發明的,為什麼要叫『阿拉伯數字』?」
法老王笑了起來。「不錯嘛,我還以為你會掉進陷阱裡呢。事實上,發明阿拉伯數字的,是印度人。至於為什麼叫『阿拉伯數字』,那是因為西元七六○年左右,有個印度人跑到阿拉伯去,把《西德罕塔》這本有關天文學的書籍獻給當時的阿拉伯國王。國王覺得這本書不錯,叫人把書譯成阿拉伯文,又發現裡面的印度數字還挺好用的,就把它改良了一下,廣泛流傳到今天。」
「所以其實是阿拉伯國王『好康道相報』?」
「沒錯。阿拉伯人透過戰爭和貿易,輾轉把改良後的印度數字傳播到歐洲,取代了歐洲人原本使用的羅馬數字,所以歐洲人才會叫它『阿拉伯數字』。」
「而且……」麒哥用手指在掌心畫了幾筆。「阿拉伯數字跟羅馬或巴比倫數字比起來,有一個很不一樣的地方:羅馬數字和巴比倫數字都是由線段組成的,可是阿拉伯數字的筆畫都是圓弧;還是現在的阿拉伯數字寫法已經跟一開始不一樣?」
「哇,你今天是開竅了嗎,求知欲這麼旺盛喔?」法老王故意虧了麒哥兩句,隨即又認真起來。「你的推論沒有錯,現在阿拉伯數字的寫法跟以前不太一樣,重點在於『角度』。」
「角度?」麒哥滿腹狐疑,好奇地看著法老王在電腦上搜尋。
〈密碼小教室〉阿拉伯數字
我們現今所使用的阿拉伯數字,其實與古時的寫法有相當大的差異。實際上,阿拉伯數字的「數」與「角度」有著一定的規則:有一個角度的就是代表數字「1」,有二個角度的就是代表「2」,有三個角度的就是代表「3」……依此類推。如下圖所示,圓點所標注之處就是數字的角度,而「0」很清楚地看出是沒有角度。
第2章 獨一無二?孤芳自賞?
質數與合數/質數的個數/梅森質數/費馬質數1231/中國剩餘定理/摩斯密碼
法老王捧著麒哥的第一次作業,仔細讀了一會。雖然回答的字數不多,但是看得出來他並沒有敷衍了事。想了想,他隨手抓起一枝筆,把「2」「3」「5」「7」「11」「13」「23」「101」和「911」幾個數字圈了起來,然後再遞回給麒哥。
「說句實在話,你如果真的是我的學生,看到你的作業,我一定會很感動。」法老王看到麒哥臉上露出有些害羞的表情。「看看我圈起來的這些數字。你知道它們有什麼共通性嗎?」
「共通性?」麒哥端詳著。奇數?不對,「2」不是奇數啊,而且還有很多奇數沒有圈起來。那麼它們的共通性會是什麼呢?
「你一定知道答案,只是需要一點點提醒……」法老王並不想太快告訴麒哥謎底。「提示是:它們都很孤獨。」
孤獨?坦白說,麒哥完全不覺得這是什麼好提示。孤獨的數字?孤獨……啊,對了,他知道了!
「我知道了,它們都是『質數』;不過你那是什麼提示,文謅謅的。」
「還不是怕你一聽到數學就頭痛,而且你不覺得這個提示很有哲理嗎?你應該還記得以前學過關於質數的性質吧!沒有其他因數,除了一,只有自己,不是孤獨是什麼?」「好啦好啦,」麒哥敷衍了兩句,「現在已經知道它們是質數了,然後呢?」
「你也太不給面子了吧!」法老王苦笑著。「以前我們上數學課的時候,有講到數字可以分成『質數』和『合數』兩種。質數就像剛剛說的,除了一以外,沒有其他的因數,也就是沒辦法被其他大於一的正整數整除;至於『合數』,就是除了一和自己之外,還有其他的因數。」
「為什麼要特別講質數?它有什麼重要的地方嗎?」
「你講到重點了。」法老王彈了下手指。「千萬不要小看質數,它們因為孤獨,所以也很特別。對現代社會來說,質數可是跟密碼、網路安全保護息息相關喔!」
「密碼?」麒哥很自然地想到那天阿智所寫的密碼信。
那天請法老王幫忙解開阿智的密碼信後,麒哥找了個機會和阿智稍微聊了一下;這或許是父子兩人這麼多年來第一次深談。麒哥很清楚,多年來的疏離無法一下子就拉近距離,但至少要讓阿智知道,自己不是不愛他,只是一直沒有機會,也不知道怎麼把心裡的話說出來。如果真的有一天,父子倆可以無話不談,那麼到了那個時候,相信他們就不會再需要用密碼來隱藏真正的訊息了吧……
法老王發現麒哥突然走了神,雖然不確定他在想什麼,不過對老師而言,看到學生在課堂上恍神可是一大打擊……
「咳!阿麒,你知道一到一百之間有幾個質數嗎?」法老王丟出問題,呼喚麒哥回神。
「嗯?一到一百的質數嗎?」麒哥回過神來,就像以前念書時打瞌睡被老師抓包一樣,露出不好意思的微笑,抓抓頭。「你剛剛圈的那些數字有七個,還有……17、23、29……」數字越大,就越不容易判斷是否為質數。
遲疑了一陣,「二十三個……嗎?」麒哥完全不確定自己的答案是否正確。
「答案是二十五個。」果然,法老王瞥見麒哥臉上的失望。「你應該也覺得數字越大,越難確定它是不是質數,對吧?事實上,有人為了想知道哪些數字是質數,研究出發現它們的公式喔!」
「質數還可以用公式算?」
「古人是不是很無聊?」法老王大笑,「而且,他們不但找出判定是否為質數的公式,還有人證明出質數的數量喔!」
「質數的數量?想也知道是無數個啊!數字沒有最大,只有更大,質數應該也一樣吧!」麒哥覺得好奇。
「你說的沒錯,但重點在於:要怎麼證明這個說法是正確的?」
「我找個東西給你看。」法老王走到電腦前敲了幾下,點開其中一個網頁。「這是很有名的一個證明,歐幾里得利用嚴謹的論證,證明質數有無窮多個。我覺得這是數學最厲害的地方:用幾條公式或幾個證明,把很複雜的事情講清楚。」
「知道質數有無數個之後,我們要來看看『怎麼找出質數』。」法老王說。
「對喔,剛剛你說一到一百的質數有二十五個,我想知道另外那兩個是多少。」麒哥很好奇,自己究竟漏了哪兩個。「你記不記得我們以前放學去溪邊『摸蜆仔』的事情?」
麒哥點點頭。「記得。每次都摸到全身髒兮兮的,回家還被罵。」
「找質數的方法有很多,其中一種跟『摸蜆仔』很像喔!」法老王故做神祕。
「真的假的?」麒哥不敢置信。「那是怎麼個『摸』法?」
「摸蜆仔的時候,我們不是都會把泥巴放進網子裡,然後在水裡搖個幾下,把泥沙篩掉嗎?蜆仔因為比網子的洞還大,所以就會留在裡面。兩千多年前,有個叫埃拉托斯特尼的數學家,用了類似網子的方式,把不是質數的數字篩掉。」法老王邊說,還邊擺出摸蜆仔的手勢,唱做俱佳。
「嗯……我還是不太懂哎。」麒哥皺起眉,難以想像怎麼用網子「篩」掉數字。
「簡單來說,埃拉托斯特尼用的是一種土法煉鋼的辦法。」法老王拿起紙筆,寫上一到一百的數字。「我們先想想看質數的定義:除了1和自己之外,沒有別的因數。接下來……把2的倍數、3的倍數、5的倍數、7的倍數……一個一個拿走,最後留下來的就是質數了。」一邊說著,法老王一邊動手在紙上打叉,再把結果遞給麒哥。
麒哥仔細地數了數。「真的是二十五個耶。不過這個方法會不會太麻煩了一點?如果範圍更大,那要數到什麼時候才數得完啊?」
「沒錯,我們總不能每次都要拿紙畫個老半天,所以後來又有很多數學家想出很多辦法,其中比較有名的,是十七世紀初法國數學家兼神父梅森提出的,用這條式子找出來的質數則稱為『梅森質數』。」
法老王在空白處寫下一條短短的式子「質數P=2的n次方-1」,還補了一句:「n也必須是質數。」
麒哥不敢相信:「就這樣?」
「沒錯。不過從埃拉托斯特尼一直到梅森,這條式子可是花了一千七百多年才終於問世的喔!」
麒哥也拿起筆,一個一個把數字代進去算,還出動計算機幫忙。「真的耶,這樣算出來的數字都是質數耶……咦?」
「怎麼了?」法老王把頭湊了過去。
「你看,2的11次方–1=2047,但是2047不是質數耶。」麒哥用計算機按了幾下。「它可以被23整除耶。」
「喔?沒想到你這麼快就發現這條式子的『bug』了。」法老王喝了兩口茶。「用這條式子來找質數的確很簡單,不過問題是,用它找出來的式子不一定真的都是質數。」
「這樣有什麼用?算出來的又不一定對。」麒哥嘆了一口氣。
「雖然梅森的式子有『bug』,但是他的研究卻為後人開展了新的可能性。現在數學界仍然用梅森的這條式子設法找出更大的質數。二○一三年二月找到了第四十八號梅森質數,是個一千七百多萬位數的龐大數字,距離上一個梅森質數發現的時間,已經隔了四年半呢。」
「可是找出那麼大的數字有什麼用啊?」麒哥覺得奇怪,不過就是找出更大的數字啊,值得花這麼多時間嗎?
「剛剛也說過了,質數其實跟密碼、跟網路安全有很深的關連性,就是因為它們不能再做因數分解,所以才能用來當成保護機制。」法老王知道現在跟麒哥說這些言之過早,畢竟加密演算並不是三言兩語就能說清楚的事。
法老王不管麒哥一臉狐疑的表情,接著又說:「另外還有一條用來找質數的式子,長得跟梅森的公式很像,而且發明這條式子的人,年代也跟梅森差不多。這個人叫『費馬』,他有『業餘數學家之王』的稱號,他用來找質數的公式是這樣的……」法老王動手在紙上寫下一條式子:「P=+1。」
「長得好奇怪喔!次方上面還有次方。」
法老王拿來另一張紙,飛快在紙上寫下幾條式子:
「你看看。」法老王指指紙上的公式。「當x=0、1、2、3的時候,因為數字不大,很容易檢查答案是不是質數,x=4的時候,雖然數字看起來有點複雜,不過在那個時代也還算得出來。但是x=5的時候,得到的答案卻不是質數,這一點在當時並沒有檢查出來。」
「為什麼?」
「因為那個時候沒有計算機,也沒有電腦啊!」麒哥單純的問題讓法老王笑了出來。「現在只要按按計算機,就知道二的五次方等於三十二,所以二的二次方的五次方等於二的三十二次方。可是如果要用筆算,應該會算到手軟吧,而且還不一定對。所以費馬自己檢查到x=4,發現前四項的答案都是質數,就很放心地推論只要用這條式子算出來的答案,全都會是質數。」「所以根本是個美麗的錯誤?」麒哥突然有種「白忙一場」的感覺:怎麼這兩個人的公式都有問題?既然有錯,為什麼他們的名聲還可以流傳到現在,而且……好像還很重要?」
「可以這麼說。不過對科學來說,提出一個理論很重要,證明這個理論是真的或假的更重要。比如第一個證明費馬這條質數公式的人,是十八世紀的瑞士數學家尤拉,他的著作很多,算是近代數學的一位先驅。他就證明了費馬這條公式中,當x=5的時候,得到的答案是4294967297,而它可以分解成『641』和『6700417』兩個因數。後來有了電腦,運算的速度和準確度也都大大提升了,而不管x=5,還是6、7、8……算出來的結果都不是質數。」
「你從剛剛就一直說質數跟密碼跟安全有關,到底是『有關』在哪裡啊?你看,你接連說了梅森質數和費馬質數的故事,可是這兩條式子都有缺陷,這樣我還是不知道質數的重要性在哪裡啊!」麒哥聽故事聽到有點暈頭轉向的。
「也對,雖然他們兩個在科學史上都是非常重要的人物,不過從這兩個故事聽起來,好像沒有很厲害的樣子。這樣吧……」法老王沉思了一會兒。「我就用一個你可能比較熟悉的典故來說明質數對保密的重要性吧。」
「喔?那就洗耳恭聽啦!」麒哥啜了口茶,調整了一下姿勢。
「楚漢相爭的故事你應該很熟吧?」法老王劈頭就問。
「不敢說很熟;就算以前很熟,現在也該忘光了啦。」麒哥搔搔頭。
「沒關係,我應該沒比你熟多少。」法老王大笑兩聲,點開網頁。「所以還是交給孤狗大神(Google)來協助比較可靠。」
〈密碼小教室〉
韓信點兵
韓信平日研讀兵法,熟習用兵技巧。滿懷壯志的韓信打算投靠當時聲勢如日中天的項羽。殊不知,千里馬未遇伯樂,韓信並未受到項羽重用。苦無發揮自己所學的機會,韓信毅然投向敵營劉邦的門下,卻又是同樣的命運,志氣難伸的韓信,憤而離開劉邦。所幸劉邦的親信蕭何,看出韓信是一名大將,定能幫助劉邦,極力向劉邦舉薦韓信,說服劉邦重用韓信必能一統江山。在蕭何的幫助下,韓信終能如自己所願與劉邦一起討論用兵策略,韓信的建言使劉邦為之驚艷,於是即刻命韓信為元帥,將旗下的軍隊交給韓信指揮。韓信果然不失所望,率領軍隊攻占各方城池,並在楚漢相爭的最後一役,協助劉邦將項羽圍困在垓下,項羽認為自己無顏見江東父老,最後選擇在烏江邊自盡,劉邦得以統一天下,建立漢朝。
韓信幫劉邦統一江山後,劉邦理應給予韓信相當的重賞,但卻非如此。劉邦反倒害怕韓信有了兵力後會趁機造反。在一次的宴席中,劉邦刻意詢問韓信兵力的狀況,韓信一聽便理解言外之意。依劉邦的個性,據實以告可能為自己招致不測,但不回答,恐劉邦擔心他企圖造反。韓信為了擺脫劉邦的追問,想出了一個避重就輕的回答:「我不知道我總共有多少士兵,我只知道三個一數會剩兩個,五個一數會剩三個,七個一數會剩兩個。」劉邦聽了之後一頭霧水,連在旁的軍師也算不出總共有多少兵力,韓信憑著過人的機智,逃過一劫。「韓信其實就是用了『質數』來幫自己逃過一劫的。」法老王說。
「我看出裡面的『三個一數』『五個一數』和『七個一數』都是質數,這又有什麼特別的嗎?」「中國剩餘定理。」法老王說。
「中國剩餘定理?」
「或者,你可能還有印象,以前的課本叫它『餘式定理』。」
「喔—」麒哥一臉恍然大悟。「我聽過,但不太記得了。」
「簡單來說,韓信的兵力總數就是同時可以滿足『除以3,餘2』『除以5,餘3』『除以7,餘2』這三個條件的數字。」法老王在紙上用簡單的符號將韓信的說明化為算式。「而且看起來劉邦的算術不太好,心思倒是轉得很快,所以一聽到韓信跟他賣弄玄虛,就知道暫時還不能動這個人。」
「原來如此。」
「事實上,只要所有除數彼此『互質』,就可以用中國剩餘定理來計算了。
「互質?」麒哥覺得自己好像在哪裡聽過……
「其實這個名詞我們很久以前就學過了,只是因為後來都沒用到,你才會覺得很陌生。」法老王解釋。「所謂的『互質』,就是兩個或兩個以上的正整數,它們除了1之外,沒有其他的共同因數—也就是『最大公因數』為1的意思。」
「所以即使它們不全都是質數也可以嗎?」麒哥有些好奇。
「這個問題很好。」法老王露出讚許的表情。「沒錯,就像你說的,比如『3』『4』『7』這三個數字,雖然『4』不是質數,但因為這三個數字的最大公因數是1,所以還是可以說它們『互質』,還是可以應用在中國剩餘定理。」
法老王接著把他剛剛在紙上寫下的算式推到麒哥面前。「那麼,你要不要試著算算看,韓信的兵力最少有多少人呢?」
麒哥拿起筆,用土法煉鋼的方式算了好一會兒。「我知道了,最少是二十三人。」
「你看,如果我們增加需要滿足的條件,要算出答案就更花時間對吧!從這個角度來看,它就是一個很好用的密碼喔!」