不可思议的素数(下)
之前我們介紹了一個判斷大數字n是否是素數的好方法,詳見不可思議的素數(上),?但是僅靠這個方法還遠遠不夠。因為的展開會有(n+1)項,如果一一確認所有系數是否是n的倍數即分別用2,3,4…除以n的話,方法雖然簡單卻十分費時。不過,我們可以從中得到啟發,然后發明一個高效的方法,現在來說明一下這個高效的方法。
5通過費馬檢測就是素數??
17?世紀的數學家皮埃爾·德·費馬發現了有關整數性質的各種定理和猜想。其中最有名的是“費馬最后的定理”即“費馬大定理”,內容為“當自然數n大于3時,關于自然數(x, y, z)的方程沒有正整數解”。1995?年,安德魯·懷爾斯在理查德·泰勒的幫助成功證明了“費馬大定理”。費馬擁有一本古希臘丟番圖的著作《算術》,他隨手在這本著作的邊角空白處寫下了這條定理。他還在書中留下了“我已經發現了如何證明這條定理,不過空白的地方太少不夠寫”等信息,這引來了外界的各種猜想。不過考慮到懷爾斯的證明方法,可以理解對于17?世紀的人們來說證明這個定理特別困難。
費馬小定理的內容是“假如p?是素數,對任意自然數n,p?都能被?整除”。為了區分“費馬大定理”,這條定理被稱作“費馬小定理”。同樣,現在依然無法確認費馬是否證明了這條定理。在第2?章“負數”一節中提到的萊布尼茨(他還會出現在第7?章的微積分中)最先發表了正式的證明過程。
例如假設p= 5,分別列出5?除以自然數n?的乘方得到的余數,即
n的值 | 12345? |
n ?除以5的余數 | 12340? |
除以?5?的余數 | 14410? |
?除以?5?的余數 | 13240? |
除以?5?的余數 | 11110? |
?除以?5?的余數 | 12340? |
觀察上述表格,可以發現“n?除以5?的余數”行和“除以5?的余數”?行中分布的數字完全一致。也就是說這兩行的差等于0,所以5?能被整除,即費馬小定理在p = 5?時是成立的。
那么,接下來我們用任意素數p?來證明費馬小定理。首先來回顧一下,如果p是素數,那么用x的乘方展開時,p?能被展開式的系數整除。因此,假如n?是自然數,則是能整除p?的數。另一方面,費馬小定理主張p?能被整除??偢杏X這個和很像。
在研究數學或科學時,觀察類似項經常能得到啟發。中有,(n + 1)p?? np?? 1?中的np?帶有一個負號。那么,如果將這兩項相加,np?就相互抵消,即
仔細觀察得到的算式,和之間存在某種關系。我們已經知道p能被中間的整除。所以“假設p能被整除”,那么p也能被整除。
也許你會疑惑“雖然得出了上述結論,但是我們不是要證明p?能被整除嗎?為什么要假設原本就要證明的公式呢?”“如果對任意自然數n?費馬小定理能夠成立”,那么自然數(n + 1)?同樣也能成立。不過,這也證明不了什么。于是,我們再回到最初的n = 1,那么,當然能將p?整除,因此費馬小定理成立。因為剛才我們講到“如果對任意自然數n?費馬小定理能夠成立”,那么自然數(n + 1)?同樣也能成立,所以當n = 1?時費馬小定理能夠成立的話,那么n + 1 = 2?時同樣也能成立。
重復上述公式,當n = 2?時費馬小定理能夠成立的話,那么n = 3?時同樣也能成立。當然n = 4、n = 5?時都能成立。就像多米諾骨牌一樣,從小數字的n?到大數字的n?依次證明費馬小定理。
從“n?成立的話”?“(n + 1)?同樣也成立”證明有關自然數的定理。這種類似多米諾骨牌的證明方法叫作“數學歸納法”。
那么,假如p?是合數,又會得到什么結果呢?例如假設p = 6,?計算56??5除以6后的余數。除以6余1,5除以6余5,也就是說和5?除以6?的余數并不相等。因此6?無法被?整除。根據費馬小定理,如果p?是素數,p?能被?整除,所以證明了6?不是素數。
我們當然知道6?不是素數,不過不管p?的值有多大,也能立刻計算出除以p?后的余數,所以只要余數不等于0,就能判斷出p?是合數。這就叫作費馬素性檢驗。如果無法通過費馬素性檢驗,就說明不是素數。
剛才已經講過,判斷自然數p?是否為素數時,通過按順序除以2、3?. . .?來驗證是否能夠整除的話,效率實在太低。如果p?多達300?位數,即使用京速計算機從宇宙誕生時計算到現在也沒辦法算出結果。于是,使用費馬素性檢驗的話,可以大幅度地減少計算次數。
然而,費馬檢測并不完美。因為不能通過費馬素性檢驗的是合數,
但是通過檢驗的也不一定是素數。例如561 = 3 × 11 × 17?是合數,對任意數n,561?能被整除。而且數學家已經證明了這種“偽素數”(?其實它有一個響亮的名字叫“?卡米切爾數” )?有無窮個。
在帕斯卡三角形中,如果p?能被第(p + 1)?行第一項和最后一項以外的數整除,那么可以判斷p?是素數。雖然費馬素性檢驗也采用了這個定理,但是判斷基準稍顯薄弱。2002?年,印度理工學院坎普爾分校的馬尼德拉·阿格拉沃爾教授和他的兩個學生尼拉基·卡雅爾、尼汀·薩克西納成功對其進行了改良,發現了對于p位數N,通過計算次后,可以判斷是否真為素數。甚至最近已經成功將計算次數減少次。例如p?約為,因為,所以用京速計算機的話只需0.1?秒即可完成計算。多虧阿格拉沃爾開發了運用素數性質的算法,瞬間解決了從宇宙誕生開始至今都無法完成的計算。
6保護通信秘密的“公鑰密碼”?
自然數,特別是素數的性質與密碼通信的方法存在密切聯系。按照一定規律將通信內容替換成其他符號的過程叫作加密,反之將加密的數據恢復成原來內容的過程叫作解密。1970?年以前所使用的密碼只要掌握加密規則,就能解密。例如公元前1?世紀尤利烏斯·愷撒用過的密碼,因為這個密碼是讓字母表中的文字按照一個固定數目進行偏移,所以只要從反方向移動相同數目的文字即可完成解密。因此,如果敵方獲悉加密規則的話,也就泄露了通信秘密。例如記錄加密規則的文件被盜或者敵方從通信模式中破解了加密規則。
1925?年到第二次世界大戰期間,德國軍隊使用的密碼機“恩尼格瑪” (意為啞謎)通過復雜地組合齒輪來替換字母。而且,其構造保證每次使用的替換規則都不同,當這個密碼機被認為不會被破譯。但是,每天早晨嚴謹的德國士兵在加密并發送更換初始設置的方法時,總是發送兩次消息,以免出現失誤。波蘭情報密碼處的年輕數學家馬里安·雷耶夫斯基發現德國士兵在每天早晨的通信中首先會重復發送兩次消息,他運用了被稱為群論的數學原理破解了這個消息模式,破解了齒輪的設置。1939?年德軍進攻波蘭時,自知無法保衛祖國的波蘭情報密碼處官員邀請英國和法國的情報將校來華沙,并告訴了他們有關“恩尼格瑪”的秘密。后來英國的政府代碼及加密學校(GC&CS, Government Code and Cipher School)以這個信息為基礎,成功破解了德軍的密碼通信,為歐洲聯盟的勝利作出了巨大的貢獻。
一旦加密規則泄露,加密對象就有可能被解密,這是加密無法避免的問題。不過,這個問題存在解決方法。1976?年,美國的威特菲爾德·迪菲和馬丁·赫爾曼最早提出解決方案。為了更好地解說他們的想法,首先我們試著聯想一下掛鎖。
掛鎖扣入鎖扣后,就固定住了。這誰都知道。一旦掛鎖被鎖上,除非是有鑰匙的人或者具有開鎖技能的人,否則就無法開鎖。
即便懂得如何上鎖,也不一定懂得如何開鎖。上鎖的知識對開鎖沒有任何幫助。
迪菲和赫爾曼一直在思考是否能夠發明類似掛鎖的密碼。如果發明了即使掌握加密規則者也無法輕易解密的密碼,那么就沒有必要隱瞞加密規則了。對外公開加密規則,這樣的話,所有人都能夠掌握如何對通信內容加密。這就像世界上布滿了掛鎖,所有人都能隨心所欲地發送被鎖保護的信件。雖然鎖被公開了,但是開鎖的鑰匙握在自己手中,只要保護好手中的鑰匙,誰都無法在通信過程中打開受保護的加密信件。同樣,即使公開加密規則,只要不公開解密規則,就能守住通信秘密,這就是迪菲和赫爾曼的想法?;ヂ摼W通信中所使用的RSA?密碼正是這種“公鑰密碼”想法的具體實踐。
7公鑰密碼的鑰匙,歐拉定理
在解釋RSA?密碼前,我們先來介紹歐拉定理。這個定理是費馬小定理普遍化的產物。費馬小定理的內容是假如p?是素數,對于任意數n,p?都能被整除。
在這個表中,n?除以5?的余數與除以5?的余數一致,這就是費馬小定理。還有其他有趣的規律嗎?觀察“除以5?的余數”這行,除了最右邊一項以外,其他都是1。因為最右邊一項n?正好是5?的倍數,所以如果n?不是5?的倍數,那么除以5?的余數都是1。一般情況下,當p是素數時,如果n不是p的倍數,那么除以p的余數都是1。
上述公式可以從費馬小定理中推導出來。雖然費馬小定理主張p?能被整除,不過因為所以如果n?本身不是p?的倍數,也就是說p?不能被n?整除的話,p?應該能被整除。因此可以證明。這有時也被稱為費馬小定理。
18?世紀數學家歐拉擴展了費馬小定理。費馬小定理可以計算除以素數p?的余數,不過歐拉定理還考慮到n?除以一般自然數m?的余數。m?不一定是素數,不過除了1?以外,n?和m?沒有共同的因子。也就是說,n?和m?的最大公約數是1。這個時候,n?和m?是“?互素數”。與m?互質的自然數n?的數目記作φ(m),例如當p?和q?是不同的素數時,φ(p) = p ? 1φ(p × q) = (p ? 1) × (q ? 1)?這個函數φ(m)?也被叫作歐拉函數。歐拉定理主張,假如自然數n?與m?互質,那么例如m = p?是素數的話,因為φ(p)= p ? 1,所以這也是費馬小定理的內容。當m?是素數時,歐拉定理也是費馬小定理。公鑰密碼使用了“ m?是兩個素數p?和q?的乘積”,即m = p × q?。
當m = p × q?時,因為φ(p × q) = (p ? 1) × (q ? 1),如果素數p?和q?不能被自然數n?整除,那么成立。例如假設給定兩個素數p = 3, q = 5,那么m = p × q = 15,φ(3 × 5) = (3 ? 1) × (5 ? 1) = 8。如果n?與15?互質,那么假設n = 7,你可以試著代入公式。使用歐拉定理可以發現數字具有有趣的性質。例如因數分解類似9、99、999?等由9?構成的數字時,可以證明不包括2?和5?的所有素數會在某處出現。詳情請參考我個人主頁的補充知識。
下一節要說明使用歐拉定理的密碼,現在先提前準備一下。根據歐拉定理,如果素數p?和q?不能被自然數n?整除,那么成立。即使進行s?次方,因為1s?= 1,所以
再乘以n?的話,
也就是說,對于任意數n,只要素數p?和q?無法被整除,除以p × q?的余數依然等于n。
那么,接下來將上述結果運用于公鑰密碼。
8信用卡卡號SSL?傳輸的原理
密碼技術常用于網購、管理銀行賬號以及居民基本登記冊等方面。對網絡信息加密傳輸叫作SSL(Secure Sockets Layer)。在Web?瀏覽器輸入https://www....的話,就是通過SSL?發送或接受信息。
只要使用公鑰密碼,任何人都能對信用卡卡號等個人信息進行加密處理,并且在網絡上發送加密的信息。但是,只有掌握了解密規則的接收者才能解讀信息。
因為是羅納德·李維斯特、阿迪·薩莫爾和倫納德·阿德曼開發了RSA?密碼,所以其命名RSA?就是由他們三人姓氏的首字母組合而成A。
RSA?密碼的步驟如下: (1)密碼的接收者,假設是亞馬遜網站(Amazon.com),為了設置公鑰密碼,選出2?個數值較大的素數,記作p?和q。(2)亞馬遜網站再選一個自然數k,為(p ? 1) × (q ? 1)?的互素數。
例如,假如p=3, q=5,因為(p?1)×(q?1)=8,所以選擇8的互素數,例如k = 3。
(3)亞馬遜網站計算m = p × q,然后告訴你m?和k?的值。這就是公鑰密碼。不過,亞馬遜網站不會告訴你m?的質因數p?和q?分別是多少,只會告訴你這兩個素數的乘積。假設代入剛才的例子,那么m = p × q = 15。因為15?這個數字太小,我們很容易推算出15?的質因數是3?和5。但是,RSA?密碼使用的數差不多有300?位數,所以不可能分解質因數。
(4)你將信用卡卡號等想要發送的信息替換成自然數n。不過n?必須小于m,而且n?和m?必須是互素數(因為m?是有300?位數的大數字,所以不會太難)。
(5)你使用從亞馬遜網站接收的密鑰信息(m, k),對n?進行加密處理。加密規則是計算,再用除以m?得到余數。將計算結果記作α,即
將α?作為密碼,通過網絡向亞馬遜網站發送信息。例如,n=7,那么計算73?除以15得到余數。因為,所以α = 13。(6)亞馬遜網站收到密碼α?后,對n?進行解密,恢復成原來的信息。步驟(6)是RSA?密碼最關鍵的部分。亞馬遜網站必須解決“有一個未知數n,當除以m?得到的余數是α?時,n?等于幾?”的問題。如果少了“計算除以m?得到余數”這一步驟,答案的計算就非常簡單。如果=α的話,那么只要求出α的k次方即可。
求普通數的k?次方時,可以不斷靠近正確答案。例如想要知道= 343?中n?等于幾,首先我們隨便推測一個數n = 5,計算得出= 125,所以推測的n?會大于5。那么加大數值推測n = 9,計算得出= 729,推測的n?又太大了。n?的數值變大,也會隨之大,所以n = 5?太小n = 9?又太大的話,正確答案就是介于兩者之間。經過多次計算,最終會得到正確答案n = 7。
然而,如果增加“除以15,計算得到的余數”這一步驟,問題就變得麻煩了。因為除以15?得到余數的話,15?除以15?余數就變成0,所以不管n?變得多大,除以15?得到的余數卻不一定會變大。實際上,對于15的互素數n=1, 2, 4, 7, 8, 11, 13, 14,除以15得到的余數等于1, 8, 4, 13, 2, 11, 7, 14,看不出來數字排列中是否存在什么簡單的規律。所以,即使知道“除以15?得到的余數”,也很難計算出n?的值。如果是類似15?的小數,倒是可以一一驗算,但是如果是300?位數,也只能束手無策。
不過,亞馬遜網站卻能簡單地解決這個問題。因為已知m?是p × q?的乘積,根據這個信息,就能判斷出“幻數”r。r?是破解密碼的關鍵。有一個未知數n,而且知道那么使用幻數r?的話,
也就是說,可以從密碼α?中還原原來的數n。例如當公鑰密碼的m=15, k=3時,因為,所以對7?加密后α = 13。然后你把這個信息發送個亞馬遜網站。此時,幻數r = 3。亞馬遜網站知道r = 3,并在收到密碼13?后,計算其3?次方即。因為對密碼13進行3次方后再除以15得到的余數是7,所以可以將加密的信息還原成加密前的信息即n = 7。
亞馬遜網站是如何發現幻數r?的呢? α?原本是用來計算?所以代入幻數r?后,得到也就等于
我們再回想一下歐拉定理,如果p?或q?能被n?整除的話,那么
這兩個公式非常相似。兩者都是計算n?的乘法,最終又回歸到n。因此,如果能夠準確選擇r,得到r × k = 1 + s × (p ? 1) × (q ? 1)?的話,密碼自然迎刃而解。
在這個過程中,最重要的是k?與(p ? 1) × (q ? 1)?是互素數。此時,r × k = 1 + s ×(p ? 1) × (q ? 1)?
中的自然數r?和s?肯定存在。例如在剛才的例子中,k =3,(p ? 1) × (q ? 1) = 8,因為這兩個數是互素數,所以假設r = 3,s = 1,那么如果用公式?計算密碼α,那么代入r,即可得出
于是從α?中求出n,即成功解密。公式中的r?就是亞馬遜網站的幻數。大數的分解質因素越復雜,就幾乎無法破解RSA?密碼。在現在已知的算法中,對N?位數的自然數進行分解質因數需要花費的時間,相當于解關于N?的指數函數。例如在2009?年某個團隊成功對232?位的數進行了分解質因數,不過整個過程使用了幾百臺行處理計算機,而且歷時長達2?年。如果能夠發明一種算法縮短計算時間,比如耗時相當于計算N?的乘方的話,僅靠使用公鑰密碼的RSA?密碼馬上就會被破解,從而導致互聯網經濟陷入一片混亂。
其實理論上存在破解方法,不過暫時還沒有實現。眾所周知,如果人們成功制造運用量子力學原理的“量子計算機”,對N?位數的自然數進行分解質因數所需的時間就縮短至計算N?的乘法。因為1994?年麻省理工學院的數學家彼得·秀爾通過對N?位數的自然數進行了次的計算后,發現了分解質因數的算法。不過,“量子計算機”還處在理論摸索階段,尚未進入實踐環節。
另一方面,使用量子力學的原理還有可能發明另一種異于RSA?密碼的密碼通信。如果使用“量子密碼”,一旦中途出現密碼被盜的情況,即使盜密者躲起來偷偷解讀,也絕對會被發現。只要量子力學正確,就絕對不可能被竊密。一旦“量子計算機”和“量子密碼”中的任何一個技術成功問世,通信安全領域又會迎來巨大的變革。
1995?年人類終于成功證明了近4?世紀都未曾解決的費馬大定理,2003?年對于雙子素數的證明又向前發展了一大步。而且,1997?年運用了歐拉定理的RSA?密碼問世,2002?年又發明了高效的素數檢測法。自數學誕生起,人類用了幾千年時間研究自然數,而且直至今日還在不斷分析其性質、開發其應用,仍然還存在無數的未解之謎。
19?世紀的美國思想家和詩人亨利·戴維·梭羅曾經說過:“數學是詩,不過大部分還尚未被人誦讀。”關于素數,想必以后還會有更多的詩為人誦讀吧!歐拉定理被運用在RSA?密碼中,從而實現了互聯網結算。有關素數的新發現也許會給我們今后的生活帶來巨大的變化。
本文來源《用數學的語言看世界》,本書由人民郵電出版社圖靈新知出版。
∑編輯?|?Gemini
算法數學之美微信公眾號歡迎賜稿
稿件涉及數學、物理、算法、計算機、編程等相關領域,經采用我們將奉上稿酬。
投稿郵箱:math_alg@163.com
總結
以上是生活随笔為你收集整理的不可思议的素数(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读博士也有技巧:如何快乐地做研究
- 下一篇: 全球大学文凭“含金量”排名出炉:“北清复