每週五部門內有一個分享會,這周輪到我了,不知道講些什麼東西,由於不全是碼農,因此講寫程序講不了(目前這水平估計也只能講Hello World),恰好上次回答了一個關於網頁嗅探中間人攻擊的問題,我本身的回答通常般,可是看到 網頁嗅探中間人攻擊-cevin的回答 仍是有啓發的,順便查了點資料,整理一下。算法
就是加密解密用同一個密鑰。雙方用同一個密鑰,若是不知道密鑰,是沒法獲知消息內容的。
可是交換密鑰的過程,消息內容必定是明文的。
那麼若是處於不安全的網絡環境,若是一開始,交換密鑰的消息被截獲,那麼以後的安全也無從談起了
漏洞:交換密鑰的過程不安全segmentfault
具體的描述見百度百科,簡單的說是:公鑰加密的內容,只能私鑰解密 / 私鑰加密的內容,只能公鑰解密
解決 簡單加密 中出現的問題:安全
雙方交換公鑰,而後通訊,分別用對方的公鑰加密數據,發送給對方,接收方再用本身的私鑰解密。 公鑰加密的數據沒法再用公鑰解密,因此,即時你能監聽到密鑰的內容,你也不知道消息內容。 由於你並無解密的鑰匙
漏洞:中間人攻擊(中間人攻擊)服務器
攻擊者C事先生成兩對密鑰(C1,C2),A 和 B通訊,交換公鑰,若是剛好攻擊者節點能截獲數據報文(廣域網並不存在一個固定的鏈路,可是若是攻擊者是你的網關的話,或者局域網有人進行ARP欺騙,數據流經攻擊者節點是必然的),那麼攻擊者能夠將報文裏的公鑰給替換成本身的密鑰(此時密鑰交換過程,是明文的),而後保存原來的密鑰
本身畫了個圖,不要吐槽。原本正常交換的密鑰,而後通過攻擊者C的時候,被替換了,而後兩邊收到的都是C的公鑰,A和B密鑰交換完成,A向B傳輸加密報文的時候,報文流經C(此時報文是 用 C2.public 加密的),C用 C2.proteced 解密,獲知報文內容,而後用 B.public 加密,再發送給B。
整個過程下來,AB的通訊內容,仍是被泄露了網絡
這裏問題的根源就在於,你們均可以生成(公鑰、私鑰)對,沒法確認公鑰對究竟是誰的。 爲了解決這個問題,就有了數字證書這個東西。 數字證書包含如下內容: (1)證書的版本信息 (2)證書的序列號 (3)證書所用的簽名算法 (4)證書的發行機構 (5)證書的有效期 (6)證書全部人的名稱 (7)證書全部人的公開密鑰 (8)證書發行者對證書的簽名 HTTPS使用的是SSL證書,是數字證書的一種,還包括了域名等信息,頒發數字證書的過程就是 頒發機構(CA中心)把你提交的 1-7 使用 CA中心的私鑰 加密簽名 生成8,CA中心的私鑰是嚴格保密的,防止濫用,公鑰則是公開的,這樣就能夠保證除了CA中心,其餘人或機構沒法頒發證書,而CA機構也有一個證書,CA中心的證書是內置在操做系統裏面的,操做系統開發商會根據一些權威安全機構的評估選取一些信譽很好而且經過必定的安全認證的證書發佈機構,將他們的證書內置在操做系統裏面。 而後當你訪問一個HTTPS站點的時候,服務器只須要將證書給你,你用CA中心的證書(證書中包含公鑰)來驗證站點的證書,而CA中心的證書是安裝操做系統中就已經存在的,是可信任的(畢竟攻擊者很難物理接觸你的機器),由這個證書頒發出來的證書也是可信任的(CA中心對證書有法律上的保證安全的責任)。因此,回到二里面,攻擊者要想監聽你的消息,必需要對證書進行替換或者篡改,可是替換或者篡改過的證書,就通不過驗證。
(證書這塊寫得有點亂,有些我本身還有點迷糊)加密