1976年以前,所有的加密方法都是同一種模式:
?。?)甲方選擇某一種加密規(guī)則,對(duì)信息進(jìn)行加密;
(2)乙方使用同一種規(guī)則,對(duì)信息進(jìn)行解密。
由于加密和解密使用同樣規(guī)則(簡(jiǎn)稱"密鑰"),這被稱為"對(duì)稱加密算法"(Symmetric-key algorithm)。
這種加密模式有一個(gè)最大弱點(diǎn):甲方必須把加密規(guī)則告訴乙方,否則無(wú)法解密。保存和傳遞密鑰,就成了最頭疼的問(wèn)題。
1976年,兩位美國(guó)計(jì)算機(jī)學(xué)家Whitfield Diffie 和 Martin Hellman,提出了一種嶄新構(gòu)思,可以在不直接傳遞密鑰的情況下,完成解密。這被稱為"Diffie-Hellman密鑰交換算法"。這個(gè)算法啟發(fā)了其他科學(xué)家。人們認(rèn)識(shí)到,加密和解密可以使用不同的規(guī)則,只要這兩種規(guī)則之間存在某種對(duì)應(yīng)關(guān)系即可,這樣就避免了直接傳遞密鑰。
這種新的加密模式被稱為"非對(duì)稱加密算法"。
?。?)乙方生成兩把密鑰(公鑰和私鑰)。公鑰是公開(kāi)的,任何人都可以獲得,私鑰則是保密的。
?。?)甲方獲取乙方的公鑰,然后用它對(duì)信息加密。
?。?)乙方得到加密后的信息,用私鑰解密。
如果公鑰加密的信息只有私鑰解得開(kāi),那么只要私鑰不泄漏,通信就是安全的。
1977年,三位數(shù)學(xué)家Rivest、Shamir 和 Adleman 設(shè)計(jì)了一種算法,可以實(shí)現(xiàn)非對(duì)稱加密。這種算法用他們?nèi)齻€(gè)人的名字命名,叫做RSA算法。從那時(shí)直到現(xiàn)在,RSA算法一直是最廣為使用的"非對(duì)稱加密算法"。毫不夸張地說(shuō),只要有計(jì)算機(jī)網(wǎng)絡(luò)的地方,就有RSA算法。
這種算法非常可靠,密鑰越長(zhǎng),它就越難破解。根據(jù)已經(jīng)披露的文獻(xiàn),目前被破解的最長(zhǎng)RSA密鑰是768個(gè)二進(jìn)制位。也就是說(shuō),長(zhǎng)度超過(guò)768位的密鑰,還無(wú)法破解(至少?zèng)]人公開(kāi)宣布)。因此可以認(rèn)為,1024位的RSA密鑰基本安全,2048位的密鑰極其安全。
下面,我就進(jìn)入正題,解釋RSA算法的原理。文章共分成兩部分,今天是第一部分,介紹要用到的四個(gè)數(shù)學(xué)概念。你可以看到,RSA算法并不難,只需要一點(diǎn)數(shù)論知識(shí)就可以理解。
更多建議: