09.23 黎曼猜想是否會對密碼學的安全產生影響

最近由於黎曼猜想可能被證明,網上充滿了討論,甚至波及到了區塊鏈。有新聞說如果黎曼猜想被證實的話,將危及公鑰密碼學的安全。所以今天談談我對這件事的看法。

由於互聯網上使用的都是公鑰密碼,所以互聯網也都不安全了。更具體的猜測是,由於黎曼猜想和素數有關,所以RSA密碼體質將會被攻破。

黎曼猜想是否会对密码学的安全产生影响

以上猜測搞得人心惶惶,皆因大家的好奇心,說來也是好事。一個數學界的新聞能讓大家如此關注。我也查了國外一些網站的說法。

黎曼猜想是否会对密码学的安全产生影响

由於我是搞密碼學的,又涉足區塊鏈界,所以有些群友不斷在問我。為此我以我的理解及所查的資料,對以上說法進行正本清源。

1. 首先我說結論

第一,黎曼猜想早在1859年就提出,而我們用的公鑰密碼是在70年代末提出的。所以,如果黎曼猜想會對破解RSA加密算法有什麼幫助的話,一定會早有論文提出。然而,至今為止也沒有看到有相關論文顯示黎曼猜想會對破解RSA有什麼直接效果。

第二,區塊鏈上用的密碼算法只有兩個:哈希函數和數字簽名。哈希函數和素數沒有關係,所以和黎曼猜想沒有關係。數字簽名使用的是橢圓曲線上的方案,所以與大整數分解沒有關係,從而和黎曼猜想也沒有關係。

所以,黎曼猜想對公鑰密碼沒有直接的任何威脅。對區塊鏈的安全也沒有任何影響。

為了讓大家更好地理解上述結論,我們先來解釋一下什麼是黎曼猜想。

2. 什麼是黎曼猜想

要說清黎曼猜想,首先得說素數。素數在自然數中是一種特別的數,它只能被1和自己整除。說白了,素數沒有因子,就像一個人沒有後代(比喻略顯不恰當)。素數的這種孤零零的特性,使得它是整個自然數的“基石”。因為它不能再被分解了,所以只能去構造其他數。

因此有個結論,每個自然數都可以唯一地分解成有限個素數的乘積。而且素數的個數是無限的。

素數如此特別,數學家們試圖搞清楚如何判斷一個數是素數。給你一個小的數,例如7,你很容易判斷它是素數。但是當給你一個很大的數字時,判斷一個數是否為素數,是需要方法的。由此產生了素數判定的算法。

為了更好地理解素數,數學家們在 19 世紀便不再嘗試預測素數的精確位置,轉而將素數的現象視為一個整體。這種分析的方法就是黎曼所擅長的,他著名的猜想也由此得出。

為了理解素數是如何分佈的,高斯給出了一個素數計數函數 π(x) ,它能夠給出某個數之前的素數的數量(即有多少個素數)。

隨後,高斯(和勒讓德獨立地)提出了素數定理:當x增長到無窮大時,素數計數函數 π(x) 會近似於 x/ln(x) 函數。這意味著前x個整數中連續素數之間的平均間隙約為 ln(x)。換句話說可以用x/ln(x)近似π(x)。

然後又出現了對數積分函數 Li(x),數學家發現 Li(x)能夠比x/ln(x)更好的近似π(x)。說明 Li(x)能夠更好的刻畫素數的個數。

然而,素數定理所預測的分佈規律與實際仍然有所偏差,而且時大時小。這一切引起了黎曼的注意。

1859年,年僅33歲的黎曼發表了論文《論小於已知數的素數個數》。在該文章中,黎曼定義了一個函數:黎曼 zeta 函數。在論文中黎曼給出了一個推測:黎曼 zeta 函數的所有非平凡零點可能都全部位於實部等於1/2的直線上。

具體內容各位可以忽略。那麼黎曼 zeta 函數的非平凡零點有什麼用呢?

黎曼用 Li(x)以及zeta 函數的非平凡零點,給出了自己的素數定理,即更準確地估計數字 x 以內有多少個素數。

這一精確的刻畫素數個數的定理,讓黎曼大放光彩。

到此為止,我們說了黎曼猜想是什麼?

簡而言之,就是給出了數字 x以內更精確的素數個數的公式。

3. RSA基於的困難問題

RSA所基於的困難問題是“大整數分解困難問題”。即給你一個大的整數,對其分解為素數之積是困難的。這是RSA加密算法的安全性基礎。

目前對大整數分解用的方法主要是數域篩法,但是這些方法都不能有效的分解大整數。

黎曼猜想是宏觀上對素數的分佈有個判斷,它不能直接求素數,也不能對一個整數進行素數分解。目前根據文獻,黎曼猜想對於生成素數,例如RSA中的密鑰生成算法,是有幫助的。但是對於整數分解算法並沒有直接的提升。所以不會對RSA加密體質有任何影響。

大家一定要區分素數檢測和整數分解是兩回事。很多人都認為是一回事,這是產生錯誤的根源。

對於黎曼猜想的證明,大家更多的認為可能會對數域的結構有個更好的認知。從某些方面,可能會對密碼學有所啟示。


分享到:


相關文章: