小藍和大家一起回顧上期最后出現的問題:Alice將敏感數據用高強度的對稱算法加密了,就是要算好多好多好多年的那種!這個算法對應的有一個密鑰,問題來了:Alic如何將密鑰安全的送給Bob呢?
我們有以下辦法!
第一種“預先共享”,就是有一個密鑰是Alice和Bob事先協商好的,兩個人都先拿著了,別人不知道。但這種方式,當有1000個Alice \Bob通訊的時候,這些人累計要管理的密鑰就太多了(將近50萬把鑰匙,別問我怎么算出來的)
第二種,由一個老板(管理中心)來統一分配,這也容易懂。但如果通訊的用戶來數越多,密鑰也會越來越多,而且如果要解開之前的加密信息,每次分配的密鑰都要保留好,這樣下去,和第一種樣累死了……
我們再來說說第三種--這就是著名的DH協議(Diffie-Hellman協議)。DH協議的功能簡單來說就是協商一個密鑰。
我們用這個圖來解釋:
這個背景是:Alice和Bob在不同兩地。Alice要給Bob發一張自己的私房照,但又不想被快遞公司打開看到,于是想了這樣一個辦法。
第一步,Alice用自己的鎖把裝著相片的箱子鎖起來發給Bob,鑰匙自己留著;
第二步,Bob把收到帶鎖的箱子,再加鎖一次,再發給Alice;
第三步,Alice用自己的鑰匙把原來的鎖取了,剩下Bob的鎖,再發給Bob;
第四步,Bob解開帶自己鎖的箱子,就可以拿到照片。
perfect!
But,
黑客發現這個過程中的問題了。于是他在箱子到達Bob之前攔截了,也加了自己的鎖給Alice,Alice并不知道是黑客干的,還是老老實實的完成上面的過程,導致黑客拿到了隱私照片。這就是著名的“中間人攻擊”的原理。
這里出現了密碼學中一個重大的問題就是身份鑒別,這個可以單獨開一篇,留著以后再細說。
接下來就有Dr.M介紹第四種方法吧---回到我們的公鑰私鑰了。
通用的做法是,使用對稱密鑰算法加密數據,速度快,使用非對稱算法加密對稱算法的密鑰。公鑰密碼算法有著名的就RSA,還有現在我們國家推行的SM2和SM9。
公鑰密鑰算法同樣也涉及到身份鑒別的問題,由于SA/SM2生成的公私鑰都無法和用戶身份進行捆綁,所以需要有專門的管理機構(CA中心)來干這個事情:頒發和管理用戶身份對應的數字證書。
Ok,說到這里,Alice和Bob的信息安全傳遞的事情已經有眉目了。那就是用公開密碼技術,Alice生成隨機的對稱密鑰將敏感數據進行加密,再用Bob的公鑰加密這個對稱算法的密鑰,一起打包了發給Bob。那么問題來了,具體應該怎么實現呢?