HTTP安全問題,通訊加密和通訊內容加密

2021-09-24 13:31:08 字數 3588 閱讀 6505

ssl的安全連線

對稱加密和非對稱加密

關於數字證書,證書,數字簽名的概念

以上三者一定要搞明白

http固然足夠好,但是在安全方面有著很大隱患:

1、與伺服器進行通訊使用的是明文,內容可能會被竊聽(http協議本身並不具備加密功能,所以無法對請求和響應的內容進行加密)

2、使用http協議的伺服器與客戶端都不會驗證通訊方的身份,可能遭遇偽裝。(所謂不驗證通訊方身份的意思是,比如說服務端,在服務端接收到請求的時候,只要請求的資訊正確,伺服器並不會去驗證,這個請求是否由其對應的客戶端發出。並且,伺服器會對請求立即做出一次響應,返回相應的資料)

3、使用http協議的伺服器與客戶端都無法驗證報文的完整性,所以在通訊過程中,報文有可能會被篡改

等等。基於這樣的安全問題,衍生出各種加密技術,對於http協議來說,加密的物件有以下兩個:

1、對通訊的加密:

http中沒有加密功能,但是可以通過和ssl(secure socket layer,安全套接層)組合使用,加密通訊內容。使用ssl建立安全通訊線路後,就可以在這條線路上進行http通訊了。與ssl組合使用的http被稱為https(http secure,超文字傳輸安全協議)。
2、對通訊內容本身進行加密

即對http報文裡所包含的內容進行加密。這樣,首先客戶端要先對報文進行加密,然後再發給伺服器。伺服器在接受到請求時,需要對報文進行解密,再處理報文。該方式不同於ssl將整個通訊線路進行加密處理,所以內容仍然有被篡改的風險。
a、任何人都可以發起請求

http協議中,並未有確認通訊方這一步驟,所以,任何人都可以傳送請求,而伺服器在接受到任何請求時,都會做出相應的響應。(僅限於傳送端的ip位址和埠號沒有被伺服器限制訪問)
所以:

1、無法確認請求傳送到目標伺服器(按照真實意圖返回響應的那台伺服器),這裡可能在通訊中途被偽裝的伺服器返回響應。

2、無法確認響應返回的客戶端是目標客戶端(按照真實意圖接受響應的那台客戶端),可能是偽裝的客戶端。

3、無法判斷請求來自何方、出自誰手。

4、即使是無意義的請求也會都接受(無法阻止海量請求下的dos(拒絕服務攻擊)攻擊)。

解決方案:

查明對手的證書

雖然http不能確認通訊方,但ssl是可以的。ssl不僅提供了加密處理,還使用了"證書"的手段,可用於確認通訊方。證書是由值得信賴的第三方機構頒布,可用於確定證明伺服器和客戶端是實際存在的。所以,只要能確認通訊方持有的證書,即可判斷通訊方的真實意圖。

b、無法判斷報文是否完整(報文可能已遭篡改)

http協議無法判斷報文是否被篡改,在請求或者響應發出後,在對方接收之前,即使請求或者響應遭到篡改是無法得知的。

防止篡改:

常用的,確定報文完整性方法:md5、sha-1 等 雜湊值校驗方法,以及用來確認檔案的數字簽名方法。但是,使用這些方法,也無法百分百確保結果正確,因為md5本身被修改的話,使用者是沒辦法意識到得。

為了有效防止這些弊端,可以採用https。

在ios開發中,我所遇到的加密技術,一般是使用md5加鹽對密碼進行加密,這是每個專案必須的。然後就是,有一家公司,採用的是對http報文內容在前端通過加密演算法進行加密、解密(也就是我們傳送請求給伺服器的時候,把model轉化為字串,然後對字串進行md5\aes等方法加密,傳送給伺服器。然後拿到伺服器響應報文中的model字串,經過解密後,轉化為model)。

一、http和https的基本概念

http:是網際網路上應用最為廣泛的一種網路協議,是乙個客戶端和伺服器端請求和應答的標準(tcp),用於從www伺服器傳輸超文字到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網路傳輸減少。

https:是以安全為目標的http通道,簡單講是http的安全版,即http下加入ssl層,https的安全基礎是ssl,因此加密的詳細內容就需要ssl。

二、http與https的區別

1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。

2、http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。

3、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。

4、http的連線很簡單,是無狀態的;https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。

三、http與https的工作原理

http的工作原理:一次http操作稱為乙個事物,其工作過程可分為四步

1、client與server建立連線,單擊某個超連結,http的工作開始。

2、連線建立後,client傳送乙個請求給server,請求方式的格式為:統一資源識別符號(url)、協議版本號,後邊是mime資訊包括請求修飾符,client資訊和可能的內容。

3、server接到請求後,給予相應的響應資訊,其格式為乙個狀態行,包括資訊的協議版本號、乙個成功或錯誤的**,後邊是mime資訊包括server資訊、實體資訊和可能的內容。

4、client接收server返回的資訊通過瀏覽器顯示在使用者的顯示屏上,然後client和server斷開連線。

https的工作原理:

1、client使用https的url訪問web伺服器,要求與web伺服器建立ssl連線。

2、web伺服器收到客戶端請求後,會將**的證書資訊(證書中包含公鑰)傳送乙份給客戶端。

3、客戶端的瀏覽器與web伺服器開始協商ssl連線的安全等級,也就是資訊加密的等級。

4、客戶端的瀏覽器根據雙方同意的安全等級,建立會話金鑰,然後利用**的公鑰將會話金鑰加密,並傳送給**。

5、web伺服器利用自己的私鑰解密出會話金鑰。

6、web伺服器利用會話金鑰加密與客戶端之間的通訊。

四、https的優缺點

優點:1、使用https協議可認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器;

2、https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全,可防止資料在傳輸過程中不被竊取、改變,確保資料的完整性。

3、https是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。

缺點:1、https協議握手階段比較費時,會使頁面的載入時間延長近50%,增加10%到20%的耗電;

2、https連線快取不如http高效,會增加資料開銷和功耗,甚至已有的安全措施也會因此而受到影響;

3、ssl證書需要錢,功能越強大的證書費用越高,個人**、小**沒有必要一般不會用。

4、ssl證書通常需要繫結ip,不能在同一ip上繫結多個網域名稱,ipv4資源不可能支撐這個消耗。

5、https協議的加密範圍也比較有限,在黑客攻擊、拒絕服務攻擊、伺服器劫持等方面幾乎起不到什麼作用。最關鍵的,ssl證書的信用鏈體系並不安全,特別是在某些國家可以控制ca根證書的情況下,中間人攻擊一樣可行。

Java 執行緒通訊的安全問題 同步

執行緒間的通訊 其實就是多個執行緒操作同一資源,但是操作的動作不同。注意 1 多個執行緒 2 同一資源 3 操作動作不同 例如乙個場景 輸入執行緒 input 和 輸出執行緒 output 輸入執行緒負責操作資源 resource resource 有 name string 和 string 兩個...

HTTP安全通訊 Https和SSL

1 簡介 https 全稱 hypertext transfer protocol over secure socket layer 是以安全為目標的http通道,簡單講是http的安全版。網路通訊協議棧自上而下分別為應用層 傳輸層 網路層和資料鏈路層。傳輸層不能對傳輸報文段進行加密處理,於是在應用...

http通訊和tcp通訊

http通訊和tcp通訊都包括連線建立的過程 連線的建立 都是通過申請套接字來建立的 可以這麼說,ftp tcp http 這三者均是利用socket套接字進行通訊的 tcp通訊,建立了連線 程式上是呼叫winsockapi,即通過申請套接字來建立,作業系統內部實際是通過三次握手來實現的 即可直接進...