〈STEAM〉網路傳輸的加密法 沒有絕對的安全

張瑞雄 2020/03/17 15:15 點閱 2593 次
公鑰加密法有許多方面的應用,例如加密敏感和機密資料以及電子簽名。(photo from pixabay)
公鑰加密法有許多方面的應用,例如加密敏感和機密資料以及電子簽名。(photo from pixabay)

網路很方便,但若要在網路上傳遞機密的訊息,就需要加密。加密通常有個解密的鑰匙,例如加密是將英文字母全部往後移三個,要傳送ABC就變成DEF,這個解密的鑰匙就是三。這種叫做私鑰加密法,一旦私鑰被知道就會被破解,而且私鑰需要送收雙方都知道,因此很容易洩密。

相對安全的公鑰加密法

另一種網路加密法叫做公鑰法,每個人都有兩把鑰匙,一把是公開的叫做公鑰,用來加密,任何人要傳給你就用公鑰來加密,一把是私人的,只有你自己知道,叫做私鑰,用你的公鑰加密的只有用你的私鑰才能解密,同樣地用你的私鑰加密的只有用你的公鑰才能解密。私鑰全天下只有你知道,假設任何人都無法根據公鑰計算(破解)私鑰,那公鑰法相對安全許多。

公鑰加密法有許多方面的應用,例如加密敏感和機密資料以及電子簽名。在電子簽名,每個人將簽名用私鑰加密,若用你的公鑰可以將其解密,因公鑰和私鑰是配對的,而私鑰只有你個人擁有,其他人就無法仿冒你的電子簽名,因此就有驗證簽名的效力。

RSA發明的加密法

1977年有3位數學家分別是Rivest,Shamir和Adleman,他們發明了一種公鑰的加密法,就稱之為RSA加密法。它的安全性是基於以下接近事實的假設:人們很難將一個非常大的整數來做因數分解。例如我們很容易知道629=17x37,但若給你11,432,299就相對困難許多(答案見下面),何況像一個超過300位數的整數,即使用超級電腦也不一定能在有限的時間內算出來。

為了鼓勵對整數分解的研究,RSA實驗室在1991年提出「RSA分解挑戰」,這些挑戰就是給一些不同位數的整數,挑戰各地精英將其分解,在去年以前只被解到了RSA-240 (240個位數的整數)。今年2月一群來自法國和美國的計算機科學家團隊分解了RSA-250,締造了新的記錄。

該整數是兩個質數的乘積,每個質數都有125個十進制數字。這個團隊在幾個月的時間內用了全球數以萬計的計算機才能完成,若用單一計算機的時間來計算應該約花了2700年。

目前的記錄顯示現在網路通訊所採用的617個位數(2048個二進制位數)的密碼是相對非常安全的,但現在進步快速的量子電腦可能對傳統的密碼學產生嚴重的挑戰,雖然量子電腦的計算能力目前尚在發展當中,但一般認定其計算能力必定遠勝於傳統電腦。

當然公鑰密碼法不一定要用RSA的方法,還有其他數學上的辦法,只是RSA簡單易懂,是目前採用最多的辦法,所以它讓非常大的整數的因數分解變得特別重要和有趣。

網路沒有絕對的安全

加密者和網路駭客一直是彼此鬥法的,但通常駭客會得勝的主因並不是他/她很厲害地破解了密碼,而是因為人們的不小心將密碼設得太過簡單,或將密碼寫在某個地方而暴露。

不過不管怎樣這世界上沒有絕對安全的東西,就誠如海倫凱勒所說:「安全主要是一種迷信,它不是自然界中存在的。生活要嘛是一次大膽的冒險,要嘛什麼都不是。」

(答案:11,432,299=3307x3457)