深入理解HTTPS原理、過程
我們經常會遇到頁面被運營商插入小廣告這種事情(數據被篡改),可想而知,HTTP是有多麼不安全。
如何做到的?
答:只需要設定相應的DNS,做一個中間人攻擊,再將修改後的數據返回。
那麼:解決上面問題需要考慮哪些因素:
HTTPS的設計的時候就主要考慮了以上的主要因素:
數據加密--傳輸內容進行混淆
非對稱加密(也叫公鑰加密)
對稱加密(也叫密鑰加密)
身份驗證--通信雙方驗證對方的身份真實性
數據完整性保護--檢測傳輸的內容是否被篡改或偽造
因此切換使用HTTPS,就可以防止頁面被運營商篡改問題。
HTTPS概念如下:
簡單用圖表示:
安全HTTP的實現
數據完整性:
數字簽名是只有信息發送者才能產生的別人無法偽造的一段文本,這段文本是對信息發送者發送信息真實性的一個有效證明,具有不可抵賴性。
報文的發送方從報文文本生成一個128位的散列值(或稱為報文摘要活哈希值),發送方使用自己的私鑰對這個摘要值進行加密來形成發送方的數字簽名。
然後這個數字簽名將作為報文的附件一起發送給報文的接收方。
報文的接收方首先從接收到的原始報文中計算出128位的散列值,再用發送方的公鑰來對報文附加的數字簽名進行解密。
如果兩次得到的結果是一致的那麼接收方可以確認該數字簽名是發送方的,同時確認信息是真實的
HTTPS數據交互過程:
HTTP中沒有加密機制,可以通過SSL(Secure Socket Layer 安全套接層)或TLS(Transport Layer Security 安全層傳輸協議)的組合使用,加密HTTP的通信內容。
SSL工作在OSI七層模型中的表示層,TCP/IP 四層模型的應用層。
SSL記錄協議操作:
分段 將每個上層消息分解成不大於2^14(16384)位,然後有選擇的進行壓縮
添加MAC 在壓縮數據的基礎上計算MAC
加密 消息加上MAC用對稱加密方法加密
添加SSL記錄頭 內容類型(8位),主版本(8位),副版本(8位),壓縮長度(16位)
SSL握手過程:
SSL協議兩個重要概念,SSL會話,SSL連接;
SSL連接是點到點的連接,而且每個連接都是瞬態的,每一個鏈接都與一個會話關聯。
SSL會話是一個客戶端和一個伺服器之間的一種關聯,會話由握手協議(Handshake Protocol)創建,所有會話都定義了一組密碼安全參數,這些安全參數可以在多個連接之間共享,會話可以用來避免每一個鏈接需要進行的代價高昂的新的安全參數協商過程。
好的,今天的介紹先到這裡了哈。
TAG:java思維導圖 |