【待补】TLS、SSL、HTTPS、MQTTS等
目錄
一、兩種基本加密方式
1.1 對稱加密
????????對稱加密是指雙方持有相同的密鑰進行通信,加密速度快。常見的對稱加密算法有DES、3DES、AES等。存在問題:通信雙方如何獲得相同的密鑰?
1.2?非對稱加密
????????非對稱加密,又稱為公開密鑰加密,是為了解決對稱加密中的安全問題而誕生,一個稱為公開密鑰(public key),即公鑰,另一個稱為私鑰(private key),即私鑰。相對于對稱加密來說,其加密速度很慢。
- 公鑰(public key)是對外開放的,私鑰(private key)是自己擁有的。
 - 公鑰(public key)加密的數據,只能用私鑰(private key)解密。
 - 私鑰(private key)加密的數據,只能用公鑰(public key)解密。
 
二、如何使用兩種基本加密方式保證數據安全
2.1 數據安全的類型
? ? ? ? 現在信息傳輸中,需要保證三類數據傳輸安全:
? ? ? ? a. 數據的保密性:即保證數據即使被竊聽,hacker也無法獲取信息內容;
????????b. 數據的完整性:即保證數據不會中途被hacker修改
? ? ? ? c. 身份認證:即保證接收的數據來源可信,不是hacker冒充發(fā)送的。
2.2 數據保密性?
? ? ? ? 解決方法:對稱加密+非對稱加密
? ? ? ? 為保證數據的保密性,可以使用對稱加密或非對稱加密。使用對稱加密,速度相對非對稱加密很快,但是存在一個安全問題,密鑰如何傳遞?
????????由此通用的方法是使用非對稱加密+對稱加密來完成,即用非對稱加密方式傳輸對稱加密的密鑰,利用對稱密鑰進行數據傳輸。具體過程為:客戶端使用公鑰對對稱加密的密鑰進行加密,然后傳遞給服務端,服務端使用私鑰進行解密確認密鑰。兩端開始對稱加密的傳輸數據。
2.3 數據完整性
? ? ? ? 解決方法:散列算法+非對稱加密
????????數據傳輸的途中,數據有可能被第三方劫持篡改。為了防止這種情況的通用方法是使用散列算法如SHA1,MD5等。使用散列算法將傳輸內容hash一次獲得hash值(即摘要)。客戶端使用服務端的公鑰對摘要和信息內容進行加密,然后傳輸給服務端,服務端使用私鑰進行解密獲得原始內容和摘要值,這時服務端使用相同的hash算法對原始內容進行hash,然后與摘要值比對,如果一致,說明信息是完整的。
2.4 身份識別(數字簽名)
? ? ? ? 解決方案:證書(私鑰公用)
? ? ? ? 為了保證數據安全性,在接收到數據后,接收方需要驗證數據的發(fā)送方的身份。通用方法是把發(fā)送端的公鑰發(fā)送給接收端,發(fā)送端通過把自己的內容使用私鑰加密然后發(fā)送給接收端,接收端只能用發(fā)送端的公鑰解密,自然就驗證了發(fā)送端的身份。
?進階思考:
????????在保證數據保密性、完整性、來源確定的時候,都需要互相持有對方的公鑰。為保證數據保密性,數據發(fā)送方要有接收方的公鑰;為保證完整性,數據發(fā)送方要有接收方的公鑰;身份識別的時候,數據接收方要有發(fā)送方的公鑰。
????????這就引出一個問題,這個公鑰要如何傳輸到對方的手中?如果在傳輸公鑰的過程中,公鑰被劫持,第三方就能偽造一對公私鑰,在接收方這里偽裝發(fā)送方,在發(fā)送方這里偽裝接收方。為了避免這種情況,引出數字證書。
三、數字證書
3.1 數字證書的作用與內容
????????數字證書是由權威容的CA(Certificate Authority)機構頒發(fā)給服務端(數據發(fā)送方)。CA機構通過服務端(發(fā)送方)提供的相關信息生成證書,證書內容包含了持有人的相關信息,服務器的公鑰,簽署者簽名信息(數字簽名,即用私鑰加密,保證這個信息真的來自簽署者)等。
????????但是證書也是可以偽造的,如何保證證書為真呢?
????????一個證書中含有三個部分:"證書內容,散列算法,加密密文"。證書內容會被散列算法hash計算出hash值,然后使用CA機構提供的私鑰進行RSA加密。過程如下圖:
?
當客戶端(接收方)發(fā)起請求,要客戶端(發(fā)送端)的公鑰的時候,服務器將該數字證書發(fā)送給客戶端,客戶端通過CA機構提供的公鑰對加密密文進行解密獲得散列值(數字簽名),同時將證書內容使用相同的散列算法進行Hash得到另一個散列值,比對兩個散列值,如果兩者相等則說明證書沒問題。
3.2 數字證書分類
一些常見的數字證書類型:
- X.509#DER 二進制格式證書,常用后綴.cer .crt
 - X.509#PEM 文本格式證書,常用后綴.pem
 - 有的證書內容是只包含公鑰(服務器的公鑰),如.crt、.cer、.pem
 - 有的證書既包含公鑰又包含私鑰(服務器的私鑰),如.pfx、.p12
 
四、 Mosqiutto+ TLS/SSL
總結
以上是生活随笔為你收集整理的【待补】TLS、SSL、HTTPS、MQTTS等的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: mysql 元数据获取_[MySQL]
 - 下一篇: Ubuntu14升级MySQL