一 HTTPS是什么
1、Https
Https并不是一個單獨的協(xié)議录淡,而是對工作在常規(guī)Http協(xié)議上的連接進行了一層(SSL/TLS)加密。通過在TCP和HTTP之間加入TLS(Transport Layer Security)來加密
2付燥、SSL/TLS協(xié)議
SSL協(xié)議粗井,是一種安全傳輸協(xié)議,TLS是SSL v3.0的升級版
3娱两、Https整體架構圖
TLS Handshake Protocol TLS握手協(xié)議
TLS Change Spec Protocol TLS規(guī)格改變協(xié)議
TLS Alert Protocol TLS警覺協(xié)議
TLS Record Layer Protocol TLS記錄層協(xié)議
4传轰、Https傳輸速度
1)通信慢
2)SSL必須進行加密處理
二 SSL/TLS協(xié)議握手
1、密碼學原理
1)對稱機密
加密數(shù)據(jù)用的密鑰谷婆,跟解密數(shù)據(jù)用的密鑰是一樣的
2)不對稱加密
私有密鑰:一方保管
公有密鑰:雙方公有
RSA算法
2慨蛙、數(shù)字證書
1)數(shù)字證書就是互聯(lián)網通訊中標志通訊各方身份信息的一串數(shù)字,同時也是一個文件纪挎。
數(shù)字證書就是互聯(lián)網通訊中標志通訊各方身份信息的一串數(shù)字期贫,提供了一種在Internet上驗證通信實體身份的方式,數(shù)字證書不是數(shù)字身份證异袄,而是身份認證機構蓋在數(shù)字身份證上的一個章或油场(或者說加在數(shù)字身份證上的一個簽名)。它是由權威機構——CA機構,又稱為證書授權(Certificate Authority)中心發(fā)行的封孙,人們可以在網上用它來識別對方的身份迹冤。
2)為什么要有數(shù)字證書?
3)數(shù)字證書的頒發(fā)過程虎忌?
數(shù)字證書頒發(fā)過程一般為:用戶首先產生自己的密鑰對泡徙,并將公共密鑰及部分個人身份信息傳送給認證中心。認證中心在核實身份后膜蠢,將執(zhí)行一些必要的步驟堪藐,以確信請求確實由用戶發(fā)送而來,然后挑围,認證中心將發(fā)給用戶一個數(shù)字證書礁竞,該證書內包含用戶的個人信息和他的公鑰信息,同時還附有認證中心的簽名信息杉辙。用戶就可以使用自己的數(shù)字證書進行相關的各種活動模捂。數(shù)字證書由獨立的證書發(fā)行機構發(fā)布。數(shù)字證書各不相同蜘矢,每種證書可提供不同級別的可信度枫绅。可以從證書發(fā)行機構獲得您自己的數(shù)字證書硼端。
3并淋、SSL與TLS握手整個過程===非常重要?珍昨?拄踪?强重?若皱?
1)Client Hello
握手第一步是客戶端向服務端發(fā)送 Client Hello 消息运吓,這個消息里包含了一個客戶端生成的隨機數(shù) Random1、客戶端支持的加密套件(Support Ciphers)和 SSL Version 等信息
2)Server Hello
第二步是服務端向客戶端發(fā)送 Server Hello 消息兄春,這個消息會從 Client Hello 傳過來的 Support Ciphers 里確定一份加密套件澎剥,這個套件決定了后續(xù)加密和生成摘要時具體使用哪些算法,另外還會生成一份隨機數(shù) Random2赶舆。注意哑姚,至此客戶端和服務端都擁有了兩個隨機數(shù)(Random1+ Random2),這兩個隨機數(shù)會在后續(xù)生成對稱秘鑰時用到
3)Certificate證書
這一步是服務端將自己的證書下發(fā)給客戶端芜茵,讓客戶端驗證自己的身份叙量,客戶端驗證通過后取出證書中的公鑰。
4)Server Key Exchange
如果是DH算法九串,這里發(fā)送服務器使用的DH參數(shù)绞佩。RSA算法不需要這一步
5)Certificate Request
Certificate Request 是服務端要求客戶端上報證書寺鸥,這一步是可選的,對于安全性要求高的場景會用到品山。
6)
4胆建、總結
Https實際就是在TCP層與Http層之間加入了SSL/TLS來為上層的安全保駕護航,主要用到【對稱加密肘交、非對稱加密笆载、證書】,等技術進行客戶端與服務端的數(shù)據(jù)加密傳輸酸些,最終達到保證整個通信的安全性宰译。
Https加密算法相關問題
一 密鑰
密鑰是一種參數(shù)檐蚜,它是在使用密碼【cipher】算法過程中輸入的參數(shù)魄懂。同一個明文在相同的密碼算法和不同的密鑰計算下會產生不同的密文。
1 對稱密鑰
又稱為共享密鑰加密闯第,對稱密鑰在加密和解密的過程中使用的密鑰是相同的市栗,常見的對稱加密算法由DES、3DES咳短、AES填帽、RC5、RC6
優(yōu)點是計算速度快咙好,缺點是密鑰需要在通訊的兩段共享
【如果所有客戶端共享同一個密鑰篡腌,那么這個密鑰就可以打開所有人的密文,給客戶端和服務端帶來非常大的安全隱患】
2 不對稱密鑰
又稱公開密鑰加密勾效。服務端會生成一堆密鑰嘹悼,一個私鑰保存在服務端,僅自己知道层宫,另一個是公鑰杨伙,公鑰可以自由發(fā)布供任何人使用
與對稱密鑰加密相比,非對稱加密無需在客戶端和服務端之間共享密鑰萌腿,只要私鑰不發(fā)給任何用戶限匣,即使公鑰在網上被截獲,也無法被解密毁菱,僅由被竊取的公鑰是沒有任何用處的
3 密鑰:RSA加密的簡單過程
1)服務端生成配對的公鑰和私鑰
2)私鑰保存在服務端米死,公鑰發(fā)送給客戶端
3)客戶端使用公鑰加密明文傳輸給服務端
4)服務端使用私鑰解密密文得到明文
二 數(shù)字簽名和CA
思考這樣一個問題:數(shù)據(jù)在瀏覽器和服務器之前傳輸是,有可能在傳輸過程中被冒充的黑客把內容替換了贮庞,那么如何保證數(shù)據(jù)是真是服務器發(fā)送的而不是被掉包呢哲身,同時如何保證傳輸?shù)臄?shù)據(jù)沒有被人篡改呢?
1 定義
數(shù)字簽名就是用于驗證傳輸?shù)膬热菔遣皇钦鎸嵎掌靼l(fā)送的數(shù)據(jù)贸伐,發(fā)送的數(shù)據(jù)有沒有被篡改果勘天,它就是干這兩件事情的,是非對稱加密的一種應用場景。不過他是反過來用私鑰來加密脯丝,通過與之配對的公鑰來解密商膊。
看圖:
第一步:服務器把報文經過Hash處理后生成摘要信息Digest,摘要信息使用私鑰private-key加密之后就生成簽名宠进,服務器把簽名連同報文一起發(fā)送給客戶端晕拆。
第二步:客戶端接收到數(shù)據(jù)后,把簽名提取出來用公鑰public-key解密材蹬,如果能正常的解密出Digest2,那么就能確認是對方發(fā)的实幕。
第三步:客戶端把報文Text提取出來做同樣的Hash處理,得到的摘要信息Digest1堤器,再與之前界面出來的Digist2對比
二 CA 數(shù)字證書
那么如何保證你現(xiàn)在使用的公鑰就是真實服務器發(fā)送給你的呢昆庇?
數(shù)字證書簡稱CA,它由權威機構給某些網戰(zhàn)頒發(fā)的一種認可憑證闸溃,這個憑證是被大家(瀏覽器)認可的