計算機網絡:HTTPS、SSL/TLS、AES、RSA

1.http

HTTP 有以下安全性問題:

  • 使用明文進行通信,內容可能會被竊聽;
  • 不驗證通信方的身份,通信方的身份有可能遭遇僞裝;
  • 無法證明報文的完整性,報文有可能遭篡改。

2.https

HTTPS 並不是新協議,而是讓 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是說 HTTPS 使用了隧道進行通信。
通過使用 SSL,HTTPS 具有了加密(防竊聽)、認證(防僞裝)和完整性保護(防篡改)。

注意:使用了SSL之後,SSL和http是使用的同一條TCP連接。

https的缺點:

  • 因爲需要進行加密解密等過程,因此速度會更慢;
  • 需要支付證書授權的高額費用

(1)對稱加密與非對稱加密

1)對稱密鑰加密

對稱密鑰加密(Symmetric-Key Encryption),加密和解密使用同一密鑰。

優點:運算速度快;
缺點:無法安全地將密鑰傳輸給通信方。

2)非對稱密鑰加密

非對稱密鑰加密,又稱公開密鑰加密(Public-Key Encryption),加密和解密使用不同的密鑰。

公開密鑰所有人都可以獲得,通信發送方獲得接收方的公開密鑰之後,就可以使用公開密鑰進行加密,接收方收到通信內容後使用私有密鑰解密。

非對稱密鑰除了用來加密,還可以用來進行簽名。因爲私有密鑰無法被其他人獲取,因此通信發送方使用其私有密鑰進行簽名,通信接收方使用發送方的公開密鑰對簽名進行解密,就能判斷這個簽名是否正確。

優點:可以更安全地將公開密鑰傳輸給通信發送方;
缺點:運算速度慢。

(2)HTTPS加密過程

HTTPS 採用混合的加密機制:

  • 使用非對稱加密來確定對稱加密的密鑰
  • 使用對稱加密進行通信,來保證通信過程的效率。

https工作過程:
在這裏插入圖片描述
注意:客戶端隨機生成一個key,使用服務器的公鑰進行加密再傳給服務器,服務器使用私鑰解密得到這個隨機的key,這個key就是接下來通信使用的對稱密鑰

(3)SSL和TLS的概念與區別

1)什麼是SSL?
  • SSL(Secure Socket Layer,安全套接字層),爲Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,可確保數據在網絡上之傳輸過程中不會被截取。當前版本爲3.0。它已被廣泛地用於Web瀏覽器與服務器之間的身份認證和加密數據傳輸。
  • SSL協議位於TCP/IP協議與各種應用層協議之間,爲數據通訊提供安全支持。SSL協議可分爲兩層: SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,爲高層協議提供數據封裝、壓縮、加密等基本功能的支持。 SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。
2) 什麼是TLS?
  • TLS(Transport Layer Security,傳輸層安全協議),用於兩個應用程序之間提供保密性和數據完整性。
  • TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任務組)制定的一種新的協議,它建立在SSL 3.0協議規範之上,是SSL 3.0的後續版本,可以理解爲SSL 3.1(可簡單理解爲同一事物不同階段的不同稱呼),它是寫入了 RFC 的。該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。較低的層爲 TLS 記錄協議,位於某個可靠的傳輸協議(例如 TCP)上面。
3)SSL和TLS的主要區別?
  • LS的主要目標是使SSL更安全,並使協議的規範更精確和完善。另外,TLS版本號也與SSL的不同(TLS的版本1.0使用的版本號爲SSLv3.1).

(4)SSL背後的加密算法

詳情:https://www.cnblogs.com/cioliuguilan/p/5518798.html

1)客戶端

查看瀏覽器發送的包
在這裏插入圖片描述
如果繼續找一個Info爲“ServerHello”的報文,可以在類似的位置找到服務器返回的Cipher,在本例中是TLS_ECDHE_RSA_WITH_AES_256_CBC服務器返回的Cipher_SHA:

關於密鑰算法這一長串名字的含義,後面說明。接下來,瀏覽器就要等待服務器響應它的請求。我們來看一看服務器端都做了些什麼。

2)服務器

讓我們以Windows爲例。若要查看操作系統支持哪些密鑰算法,可以運行gpedit.msc,依次進入”Computer Configuration” -> ”Administrative Templates” -> “Network” -> “SSL Configuration Settings”,這時可以在窗口右邊看到”SSL Cipher Suite Order”項:
在這裏插入圖片描述
點擊該項後進入”SSL Cipher Suite Order”。這裏可以看到操作系統支持的Cipher的集合,以及對不同Cipher的排序
在這裏插入圖片描述
那麼Cipher的這一長串名字是什麼含義呢?其實,每種Cipher的名字裏包含了四部分信息,分別是:

  • 密鑰交換算法,用於決定客戶端與服務器之間在握手的過程中如何認證,用到的算法包括RSA,Diffie-Hellman,ECDH,PSK等

  • 加密算法,用於加密消息流,該名稱後通常會帶有兩個數字,分別表示密鑰的長度和初始向量的長度,比如DES 56/56, RC2 56/128, RC4 128/128, AES 128/128, AES 256/256

  • 報文認證信息碼(MAC)算法,用於創建報文摘要,確保消息的完整性(沒有被篡改),算法包括MD5,SHA等。

  • PRF(僞隨機數函數),用於生成“master secret”。

完全搞懂上面的內容似乎還需要一本書的介紹。。。。

不過大致瞭解一下,有助於理解Cipher的名字,比如前面服務器發回給客戶端的Cipher,

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

從其名字可知,它是

  • 基於TLS協議的;

  • 使用ECDHE、RSA作爲密鑰交換算法;

  • 加密算法是AES(密鑰和初始向量的長度都是256);

  • MAC算法(這裏就是哈希算法)是SHA。

熟悉了Cipher名字背後的含義後,讓我們看看像IIS這樣的Web服務器如何選擇一個密鑰算法呢?假如瀏覽器發來的密鑰算法套件爲[C1, C2, C3],而Windows Server支持的套件爲[C4, C2, C1, C3]時,C1和C2都是同時被雙方支持的算法,IIS是優先返回C1,還是C2呢?答案是C2。IIS會遍歷服務器的密鑰算法套件,取出第一個C4,發現瀏覽器並不支持;接下來取第二個C2,這個被瀏覽器支持!於是,IIS選擇了C2算法,並將它包含在一個“ServerHello”握手協議中,發回給客戶端。這就有了圖5中的結果。

3)選擇

作爲瀏覽器的使用者,你可以讓瀏覽器只能訪問支持TLS 1.2協議的站點,以獲得更好的安全性,以及更差的體驗。作爲服務器的維護者,似乎將最強壯的Cipher排在前面是正確的選擇。SSL證書部署成功後, 易維信技術會幫用戶檢查服務器端的加密套件,在我們的安全檢查中,常常被報出的問題之一就是服務器默認的Cipher太弱(RC4-based),請聯繫易維信技術支持進行修復。

(5)對稱AES和非對稱RSA

(1)對稱AES

AES加密算法就是衆多對稱加密算法中的一種,它的英文全稱是Advanced Encryption Standard,翻譯過來是高級加密標準,它是用來替代之前的DES加密算法的。

AES作爲一種分組加密算法爲了適應不同的安全性要求和傳輸需求允許在多種不同的加密模式下工作,主要有ECB、CBC、CFB和OFB四種加密模式。

算法詳情:https://blog.csdn.net/charleslei/article/details/48710293

AES加密算法採用分組密碼體制,每個分組數據的長度爲128位16個字節,密鑰長度可以是128位16個字節、192位或256位,一共有四種加密模式,我們通常採用需要初始向量IV的CBC模式,初始向量的長度也是128位16個字節

(2)非對稱RSA

RSA算法是第一個能同時用於加密和數字簽名的算法,也易於理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現今的三十多年裏,經歷了各種攻擊的考驗,逐漸爲人們接受,普遍認爲是目前最優秀的公鑰方案之一。RSA公開密鑰密碼體制。所謂的公開密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種“由已知加密密鑰推導出解密密鑰在計算上是不可行的”密碼體制。
算法詳情:https://www.cnblogs.com/NathanYang/p/9182929.html

和DES一樣的是,RSA也是分組加密算法,不同的是分組大小可以根據密鑰的大小而改變。如果加密的數據不是分組大小的整數倍,則會根據具體的應用方式增加額外的填充位。

RSA作爲一種非對稱的加密算法,其中很重要的一特點是當數據在網絡中傳輸時,用來加密數據的密鑰並不需要也和數據一起傳送。因此,這就減少了密鑰泄露的可能性。RSA在不允許加密方解密數據時也很有用,加密的一方使用一個密鑰,稱爲公鑰,解密的一方使用另一個密鑰,稱爲私鑰,私鑰需要保持其私有性。

發佈了20 篇原創文章 · 獲贊 2 · 訪問量 2614
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章