非對稱加密、對稱加密、公鑰、私鑰、數字證書、數字簽名、信息摘要等等,其實這些都是通信安全中的概念,既然如此咱們不妨從通信開始入手。算法
禮和彌是一對異國戀人,儘管相距很遠,可是卻不影響彼此之間的愛慕之情,她們喜歡經過網絡來交流。瀏覽器
一天禮要給彌發送一份很是私密的內容。禮不但願通信過程當中被人截取而泄密祕密。這個時候,天然想到的方法就是對通信內容進行加密,固然除了加密外,還須要讓禮可以解密。安全
禮認爲能夠 我能夠生成 一個祕鑰 ,而後用這個祕鑰對內容進行加密,而後我把我生成的祕鑰和加密的算法告訴彌,而後她在用我告訴她的祕鑰和加密算法進行解密。服務器
(
上面的加密解密過程就屬於對稱加密,對稱加密,須要一個祕鑰和一個對稱加密算法。 常見的對稱加密算法有:網絡
)加密
禮把本身的想法告訴了彌,彌聽完後,提出了一個問題——「你怎麼把祕鑰給我」。禮想了會兒,的確,不可能經過網絡發給她,萬一被人把你的祕鑰被人偷看了怎麼辦。乾脆下次見面的時候告訴她?不行,下次見面不知道是何時了,難道這中間都不跟他通信嗎!想到這裏禮就很煩,我就想安全通信而已,怎麼這麼麻煩。操作系統
又過了一段時間,禮興奮的跟彌說,我找到解決辦法了,咱們可使用非對稱加密算法來加密咱們的內容。
什麼是非對稱加密算法?彌問道。it
非對稱加密算法 不一樣於 對稱加密,它有一對祕鑰,一個稱爲 公鑰(publicKey) ,另外一個稱爲 私鑰(privateKey),而且只知道公鑰是沒法推算出私鑰。
另外,這種算法還有一個特別神奇的功能,那就是 經過公鑰加密的內容,只有私鑰才能夠解開,而經過私鑰加密的內容,只有公鑰才能夠解開。
(
非對稱加密,須要一對祕鑰和一個非對稱加密算法。 常見的非對稱加密算法有:class
禮說,咱們能夠利用這個特性來加密咱們的通信內容。那怎麼利用能,彌問道。擴展
假如我要和你通信
反過來,你要和我通信也同樣
嗯,的確這樣一來,咱們每一個人只有生成一對祕鑰,就能夠安全通信了。
兩人,使用上面的方法進行通信一段時間後,發現了一個問題。那就是非對稱算法,加密解密速度太慢,徹底趕不上對稱加密算法。
怎麼辦了,彌想到了一個好辦法。 假設 禮和彌 要進行通信
雖然說 對稱加密算法 比 非對稱加密算法 要快不少,可是遇到要加密的信息不少時,速度也會很慢。並且並非全部的信息都須要加密,一些不怕被人看到的信息,我只須要防止他被人更改就好了。
那如何防止在通信過程當中信息不被別人修改呢,那就是使用 信息摘要和數字簽名。
什麼是信息摘要 就像一片文章的摘要同樣,信息摘要就是一段信息的摘要。它有如下特徵
以上這些神奇的特性是經過摘要算法來實現的,經常使用的摘要算法有:
這樣一來,咱們就能夠將很是長的消息,用較短的摘要表示了,而且若是有人修改了個人消息,那麼對應的摘要就會變。咱們在發信息的時候,摘要也跟着一塊兒發出去,若是信息被改了,那麼接收者一算,發現,信息的摘要和本來的摘要不一致,就知道信息被篡改了。
其實上面的考慮並周到,若是黑客連摘要一塊兒改了怎麼辦?因此必須讓黑客沒法更改信息摘要,作法也很簡單,就是對信息摘要進行簽名。
所謂的 簽名(動詞) 其實就是使用 私鑰對信息摘要進行加密的過程
所謂的 簽名(名詞) 其實就是 私鑰對信息摘要進行加密後的密文 數字簽名通常指的是 私鑰對信息摘要進行加密後的密文
這樣一來 個人摘要是加密的 ,若是黑客修改數字簽名,那我解密後的簽名,就不是原來的簽名了,除非碰巧解密後的簽名正好是 被修改的消息的簽名,但這種概率過低過低,幾乎不可能。
真的能夠高枕無憂了嗎?
仍是禮和彌發信息這個場景
中間人攻擊的恐怖之處在於,整個攻擊過程,通信雙方沒法察覺到任何異議,但通信內容卻暴露在黑客的眼中。
上面的問題出在公鑰被黑客偷偷換了。 或者說是信息在傳輸過程當中被修改了。 解決辦法也很簡單,那就是不使用公鑰而是使用數字證書(如下簡稱證書)。
證書是什麼東西,簡單理解就是一個被權威機構認證的公鑰。就像咱們的畢業證會被學校蓋個章同樣,權威機構也會爲公鑰"蓋個章"。 這樣的權威機構,咱們稱做CA(Certificate Authority)數字證書認證中心。 只是這個蓋章的過程,可能和你想的不同。
數字證書的內容包含如下部分
因爲證書中的簽名能夠防止黑客篡改,因此,數字證書能夠用來代替公鑰。
所以禮和彌的安全通信的過程變成如下這個樣子了
(這裏提一個小問題,第四步中的CA的公鑰是怎麼來的)
CA的公鑰是怎麼來的?
CA發給我嗎?那發送的過程仍是會出現篡改的狀況啊。
除非CA的公鑰也是一個證書!!!
其實CA的公鑰的確是一個證書。
那這個證書又是誰簽發的呢?
答案是 CA的CA,也能夠成爲根CA,就同根DNS服務器同樣,全世界的根CA也就那麼幾個,負責全部CA的證書的簽發。
說以上一章的第四步能夠細分爲
有些人可能有要問了,根CA的公鑰是怎麼來的?
感受陷入了一個死循環了。
其實並不會,由於根CA的"公鑰",其實也是一個證書,可是這個證書有些特殊,他的簽發單位是它本身。
這種類型的證書也叫 自簽名證書
另外根CA的證書,會內置在咱們的操做系統和瀏覽器中。也就是說根CA的證書,天生就有,不須要去下載安裝。