如果你問我,哪一種算法最重要?
我可能會回答"公鑰加密算法"。
因為它是計算機通信安全的基石,保證了加密數據不會被破解。你可以想象一下,信用卡交易被破解的后果。
進入正題之前,我先簡單介紹一下,什么是"公鑰加密算法"。
一、一點歷史
1976年以前,所有的加密方法都是同一種模式:
(1)甲方選擇某一種加密規則,對信息進行加密;
(2)乙方使用同一種規則,對信息進行解密。
由於加密和解密使用同樣規則(簡稱"密鑰"),這被稱為"對稱加密算法"。
這種加密模式有一個最大弱點:甲方必須把加密規則告訴乙方,否則無法解密。保存和傳遞密鑰,就成了最頭疼的問題。
1976年,兩位美國計算機學家Whitfield Diffie 和 Martin Hellman,提出了一種嶄新構思,可以在不直接傳遞密鑰的情況下,完成解密。
這被稱為"Diffie-Hellman密鑰交換算法"。這個算法啟發了其他科學家。人們認識到,加密和解密可以使用不同的規則,只要這兩種規則之間存在某種對應關系即可,這樣就避免了直接傳遞密鑰。
這種新的加密模式被稱為"非對稱加密算法"。
(1)乙方生成兩把密鑰(公鑰和私鑰)。公鑰是公開的,任何人都可以獲得,私鑰則是保密的。
(2)甲方獲取乙方的公鑰,然后用它對信息加密。
(3)乙方得到加密后的信息,用私鑰解密。
如果公鑰加密的信息只有私鑰解得開,那么只要私鑰不泄漏,通信就是安全的。
1977年,三位數學家Rivest、Shamir 和 Adleman 設計了一種算法,可以實現非對稱加密。這種算法用他們三個人的名字命名,叫做RSA算法。
從那時直到現在,RSA算法一直是最廣為使用的"非對稱加密算法"。毫不誇張地說,只要有計算機網絡的地方,就有RSA算法。
這種算法非常可靠,密鑰越長,它就越難破解。根據已經披露的文獻,目前被破解的最長RSA密鑰是768個二進制位。也就是說,長度超過768位的密鑰,還無法破解(至少沒人公開宣布)。
因此可以認為,1024位的RSA密鑰基本安全,2048位的密鑰極其安全。
有了這些知識,我們就可以看懂RSA算法。這是目前地球上最重要的加密算法。
公鑰加密私鑰可解密,私鑰加密公鑰可解密。
二、舉個栗子:
假如大漂亮要給大帥寫信,大帥要收信,這個事情中有四點要注意: 1.內容不能被其他人看到 2.內容不能被其他人修改 3.怎么證明是大漂亮寫的信 4.其他人收到這封信怎么辦
答1.需要加密。 使用對稱加密不安全,因為加密規則暴露出去容易被黑客攻擊,所以使用非對稱加密。
答2.使用HASH函數。 大漂亮在寫信完成后使用大帥的公鑰對內容進行加密,然后對加密后的內容使用HASH算法得出摘要,再將摘要使用大漂亮的私鑰進行加密得到數字簽名。
答3.大漂亮找到權威的認證機構,提供她的公鑰和其他個人信息,認證機構使用機構自己的私鑰將大漂亮提供的信息加密后得到一個數字證書。該證書中包含大漂亮的公鑰和個人信息。
答4.其他人收到信也不知道大帥的私鑰,所以也解不出明文內容。
寫信流程:大漂亮在寫信完成后使用大帥的公鑰對內容進行加密,然后對加密后的內容使用HASH算法得出摘要,再將摘要使用大漂亮的私鑰進行加密得到數字簽名(signature)。郵信時附帶着數字簽名和數字證書。
收信流程:大帥收到信以后先使用認證機構的公鑰解密數字證書得到了寫信人的公鑰和個人信息,再通過寫信人的公鑰解密數字簽名得到內容的摘要(digest),再將信內容使用HASH函數計算得到摘要,
將兩個摘要對比是否一致判斷信內容是否被修改過。最后通過自己的私鑰將信內容解密出來。
摘自:
https://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
https://zhuanlan.zhihu.com/p/31477508