Http協議(6)—安全HTTP

一、保護HTTP的安全
        1.功能:
                .服務器認證:
                        客戶端知道它是在與真正的服務器進行通信
                .客戶端認證:
                        服務器知道它是在與真正的客戶端進行通信
                .完整性:
                        服務器與客戶端的數據不會被修改
                .加密:
                        客戶端與服務器的對話是私密的,不會被竊聽
                .效率:
                        運行足夠快的算法
                .普適性:
                        所有客戶端和服務器都支持這些協議
                .管理的可擴展性
                        在任何地方的任何人都可以進行安全通信
                .適應性
                        能夠支持當前最知名的安全方法
    
        2.HTTPS
                HTTPS在HTTP下面提供了一個傳輸級的安全密碼層                 
                用SSL的輸入/輸出取代TCP的調用
    
二、數字加密
        
        1.密碼
            加密之前的原始報文稱爲明文
            使用密碼之後的編碼報文成爲密文    

        2.使用密鑰的密碼
            通過使用密鑰來產生不同的加密密文

        3.數字密碼
            C= E(p,e)
            P = D(c, d)
            C:經過編碼的密文
            E:編碼函數
            P:明文報文
            e:編碼密鑰
            D:解碼函數
            d:解碼密鑰

三、對稱密鑰加密技術
        編碼使用的密鑰值和解碼使用的密鑰值相同(e = d),統稱爲k

        1.密鑰長度與枚舉攻擊
            枚舉攻擊:
                    用暴力法去嘗試所有的密鑰值
            
        2.建立共享密鑰
            發送者和接收者在互相對話之前要有一個共享的保密密鑰,如果有N個節點,每個
            節點都要與其他N-1個節

        3.公開密鑰加密技術
            不爲每個節點對話使用單獨的密鑰,而是使用非對稱密鑰:一個用來對主機報文進行
            編碼,一個用來對主機報文進行解碼;編碼密鑰是公開的,但只有主機知道解碼密鑰
    
        
四、數字簽名
        說明是誰編寫的報文並且該報文並沒有篡改過

        1.簽名是加了密的校驗和
            數字簽名是附加在報文上的特殊加密檢驗碼
    
            a.節點A將變長報文提取爲定長的摘要
            b.節點A對摘要應用了一個簽名函數,該函數將用戶的私有密鑰作爲參數
            c.節點A將簽名附加到報文的末尾發給節點B
            d.節點B需要確定報文確實是節點A寫的,對前面進行檢測

五、數字證書
        1.內容
            .對象的名稱
            .過期時間
            .證書發佈者
            .來自證書發佈者的數字簽名

        2.用證書對服務器進行驗證
            通過HTTPS安全連接上服務器後,瀏覽器會自動獲取所連服務器的數字證書
            服務器證書:
                .Web站點的名稱和主機名
                .Web站點的公開密鑰
                .簽名頒發機構名稱
                .簽名頒發機構的簽名

六、HTTPS
            1.概述
                將HTTP報文發送給TCP之前發送給了一個安全層.,對其進行加密
            
            2.方案
                HTTPS
            
            3.建立安全傳輸
                a.對於http,客戶端發送一條到Web服務器端口80的tcp連接,接受服務器響應,然後關閉連接
                
                b.對於https,客戶端打開到web服務器端口443的tcp連接,然後初始化SSL,對加密
                    參數進行溝通,交換密鑰等,然後將請求報文加密併發送給ssl層
                    

            4.SSL握手
                .交換協議版本號
                .選擇一個兩端都瞭解的密碼
                .對兩端密碼的身份進行認證
                .生成臨時的會話密鑰,以便加密信道         
            SSL支持雙向認證,將服務器證書承載回客戶端,客戶端證書承載會服務端
            
        5.站點證書有效性
            驗證步驟:
                    a.日期檢測
                                檢測是否過期
                    b.簽名頒發者可信度檢測
                    c.簽名檢測
                                對簽名使用頒發機構的公開密鑰,並將其與檢驗碼進行比較
                    d.站點身份檢測
                                瀏覽器會驗證證書中的域名是否和將要訪問服務器的域名是否一致

七、通過代理以隧道形式傳輸安全流量
        客戶端使用服務器的公開密鑰對發往服務器的數據進行加密時,代理不能讀取http首部,
        故無法知道將請求轉發到何處
        解決辦法:
                a.https ssl 隧道協議:客戶端在開始加密之前以明文方式告知代理連接的host和port,
                    通過CONNECT擴展方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章