前言:
本來打算計網就這樣結束的,但是貌似安全方面以及https方面沒了解,就翻書順手把那章節大概看了,這裏總結一下。
對稱密鑰密碼體系
在發送方和接收方 公用一個密鑰。加密和解密都是用此密鑰。這個共享密鑰不能爲他人所知,只能由雙方知道。其他人就算只要加密算法和加密後的報文也不能推斷出密鑰
公開密鑰加密
發送方和接收方都擁有着兩個密鑰,一個公鑰(提供給發送方來加密報文),一個密鑰(用於解密報文)。發送信息用接收方的公鑰來加密,而接收方解密則用自己的私鑰來解密。
兩個密鑰之一是保密的,無解密密鑰,解密不可行。
知道算法和其中一個密鑰以及若干的密文不能確定另一個密鑰。
RSA
其加密方式比較特殊,需要兩個密鑰:公開密鑰簡稱公鑰(publickey)和私有密鑰簡稱私鑰(privatekey)。公鑰加密,私鑰解密;私鑰加密,公鑰解密。這個加密算法就是偉大的RSA。
特點就是加密容易,破解難。缺點就是適用小數據加密。
會話密鑰
在實際應用中,由於RSA加密和解密的過程耗時,所以通常配合會話密鑰來使用,即發送端拿到接收端的公鑰,生成一個用於加密數據本身的密鑰,再用公鑰將其加密,傳送給接收端,接收端收到之後用私鑰解密,就得到了該加密數據的密鑰(會話密鑰—對稱密鑰)。然後後面傳輸大量數據就可以用此會話密鑰加密了
報文完整性
前面的加密是爲了給通信機密性,而通信過程中報文的完整性也要注意。
而報文的完整性需要解決兩個問題:
- 報文的源主機是誰?
- 報文在傳輸過程中沒有被篡改
報文在傳輸過程中沒有被篡改
- 密碼散列函數:
-不相等的兩個報文散列之後得到的字符串不相等,最常見的散列算法有md5,sha-1。
在傳送報文過程中發送者將報文散列過後的字符串 附加到報文後面。當到達接收端時,接收段用相同散列算法對報文散列,得到的字符串與攜帶的字符串相比,如果相等則證明未被修改。 存在問題:攻擊者修改完報文後,用相同散列算法得到字符串,並修改攜帶的字符串。這樣接收段也會誤認爲沒錯,此時就需要引入 - 報文鑑別碼。
報文鑑別碼:爲了執行報文的完整性,除了使用密碼散列函數外,還需要發送方和接收方共享一段比特串(報文鑑別密鑰),
(1)在計算散列的時候計算報文+報文鑑別碼,得到的報文鑑別碼(MAC)。
(2)隨後發送方將MAC附加到報文上,生成擴展報文。發送給接收方
(3)接收方收到擴展報文後,已知報文鑑別密鑰,將報文和報文鑑別密鑰散列化後與MAC比較,相等則證明未被修改。
問題又來了,,那麼如何讓雙方共享這個報文鑑別密鑰呢???
這個跟上面說的會話密鑰不久連在一起了嗎=。=
解決報文的源主機是誰 - 數字簽名
數字簽名的用處是在MAC的基礎上再加一增加新的加密來保證源主機的不變。
運作過程
(1)發送方用自身的私鑰計算簽名。發送給接收方
(2)接收方用發送方的公鑰進行解密,假若可以解密則代表着該報文淶源與發送方,因爲根據公開密鑰體系 公鑰加密後的數據用密鑰可以解析,密鑰加密後的數據公鑰可以解析。
但是加密一整個報文的話,耗費時間太長,所以最終應用都是對散列後的報文進行生成數字簽名。
問題又來了,,我擦叻我是老黑客了啊,我用自己私鑰來進行數字簽名,然後發送給接收方我自身的公鑰,然後冒充我是警察,這時候接收端用我的公鑰來解密我的數字簽名,這當然可以解析出來啊,這樣他就認爲了我是警察???
上述存在這認證問題。
這時候呢認證中心CA就出來了
認證中心 CA
將公鑰與特定的實體綁定起來。
1)CA證明一個實體的真實身份。
2)一旦CA驗證了某個實體的身份,這個CA會生成一個將其身份和實體的公鑰綁定起來的證書。這個證書包含了這個公鑰和公鑰所有者全局唯一的身份標識的信息。
那麼是如何避免上述問題的發生呢?
1)發送方在發送報文的時候,也發送了其CA簽署的證書
2)接收方用 CA的公鑰來覈對證書的合法性,然後提取發送方的公鑰
3)然後就是用提取出來的公鑰解密咯。。。
完美解決了把這樣就。
端點鑑別
端點鑑別是一個實體經計算機網絡向另一個實體證明其自己的過程.
採用的是不重數的解決方案
1)發送端給接收端發送hello信息
2)接收段選擇一個不重數,發給接收段
3)發送端用自身的私鑰加密該不重數,然後發送給接收段,接收段用發送端的公鑰,得到的不重數相等,則確認收到hello的報文是由發送端發送的。
TCP連接安全:SSL
唏噓 說了這麼多,終於到了實際的應用了https
超文本傳輸安全協議(HTTPS,常稱爲 HTTP over TLS/SSL)是一種通過計算機網絡進行安全通信的傳輸協議。HTTPS 經由 HTTP 進行通信,但利用 SSL/TLS 來加密數據包。HTTPS 開發的主要目的,是提供對網站服務器的身份認證,保護交換數據的隱私與完整性。
TLS/SSL
- TCP (Transmission Control Protoco) 傳輸層控制協議
- TLS (Transport Layer Security) 傳輸層安全協定
- SSL (Secure Socket Layer) 安全套接層
更詳細的理解請移步:http://liuduo.me/2018/05/14/https-detail/