什么是https?
-------------------
SSL如何工作?
正如您在上一章中所了解到的,https使用SSL協(xié)議通過(guò)傳輸加密數(shù)據(jù)來(lái)保護(hù)通信。在深入了解之前,了解SSL的工作原理。
SSL從根本上適用于以下概念:
不對(duì)稱密碼學(xué)
對(duì)稱密碼學(xué)
不對(duì)稱密碼學(xué)
非對(duì)稱加密(也稱為非對(duì)稱加密或公鑰加密)使用與數(shù)學(xué)相關(guān)的密鑰對(duì)來(lái)加密和解密數(shù)據(jù)。在密鑰對(duì)中,與對(duì)通信感興趣的任何人共享一個(gè)密鑰。這稱為公鑰。密鑰對(duì)中的另一個(gè)密鑰保密,稱為私鑰。
這里,密鑰指的是數(shù)學(xué)值,并且是使用加密或解密數(shù)據(jù)的數(shù)學(xué)算法創(chuàng)建的。
在非對(duì)稱加密中,數(shù)據(jù)可以使用私鑰進(jìn)行簽名,私鑰只能使用一對(duì)中的相關(guān)公鑰進(jìn)行解密。
SSL使用非對(duì)稱加密來(lái)啟動(dòng)通信,這稱為SSL握手。最常用的非對(duì)稱密鑰加密算法包括EIGamal,RSA,DSA,橢圓曲線技術(shù)和PKCS。
對(duì)稱密碼學(xué)
在對(duì)稱密碼術(shù)中,只有一個(gè)密鑰可以加密和解密數(shù)據(jù)。發(fā)送方和接收方都應(yīng)該擁有此密鑰,只有它們才知道。
初始握手完成后,SSL使用會(huì)話密鑰進(jìn)行對(duì)稱加密。最廣泛使用的對(duì)稱算法是AES-128,AES-192和AES-256。
通過(guò)SSL進(jìn)行數(shù)據(jù)傳輸
SSL協(xié)議使用非對(duì)稱和對(duì)稱加密來(lái)安全地傳輸數(shù)據(jù)。下圖說(shuō)明了SSL通信的步驟:
如上圖所示,瀏覽器與Web服務(wù)器(或任何其他兩個(gè)系統(tǒng))之間的SSL通信主要分為兩個(gè)步驟:SSL握手和實(shí)際數(shù)據(jù)傳輸。
SSL握手
SSL上的通信始終以SSL握手開始。SSL握手是一種非對(duì)稱加密技術(shù),允許瀏覽器在實(shí)際數(shù)據(jù)傳輸開始之前驗(yàn)證Web服務(wù)器,獲取公鑰并建立安全連接。
下圖說(shuō)明了SSL握手涉及的步驟:
讓我們理解上面的步驟:
客戶端發(fā)送“客戶端問(wèn)候”消息。這包括客戶端的SSL版本號(hào),密碼設(shè)置,特定于會(huì)話的數(shù)據(jù)以及服務(wù)器使用SSL與客戶端通信所需的其他信息。
服務(wù)器以“服務(wù)器hello”消息響應(yīng)。這包括服務(wù)器的SSL版本號(hào),密碼設(shè)置,特定于會(huì)話的數(shù)據(jù),帶有公鑰的SSL證書以及客戶端通過(guò)SSL與服務(wù)器通信所需的其他信息。
客戶端從CA(證書頒發(fā)機(jī)構(gòu))驗(yàn)證服務(wù)器的SSL證書并驗(yàn)證服務(wù)器。如果身份驗(yàn)證失敗,則客戶端拒絕SSL連接并引發(fā)異常。如果驗(yàn)證成功,則繼續(xù)執(zhí)行步驟4。
客戶端創(chuàng)建會(huì)話密鑰,使用服務(wù)器的公鑰對(duì)其進(jìn)行加密,然后將其發(fā)送到服務(wù)器。如果服務(wù)器已請(qǐng)求客戶端身份驗(yàn)證(主要是服務(wù)器到服務(wù)器通信),則客戶端將自己的證書發(fā)送到服務(wù)器。
服務(wù)器使用其私鑰解密會(huì)話密鑰,并將確認(rèn)發(fā)送到使用會(huì)話密鑰加密的客戶端。
因此,在SSL握手結(jié)束時(shí),客戶端和服務(wù)器都具有有效的會(huì)話密鑰,它們將用于加密或解密實(shí)際數(shù)據(jù)。在此之后,將不再使用公鑰和私鑰。
實(shí)際數(shù)據(jù)傳輸
客戶端和服務(wù)器現(xiàn)在使用共享會(huì)話密鑰來(lái)加密和解密實(shí)際數(shù)據(jù)并進(jìn)行傳輸。這是在兩端使用相同的會(huì)話密鑰完成的,因此,它是對(duì)稱密碼術(shù)。實(shí)際的SSL數(shù)據(jù)傳輸使用對(duì)稱加密,因?yàn)榕c非對(duì)稱加密相比,它很容易并且消耗的CUP消耗更少。
因此,SSL基本上使用非對(duì)稱密碼術(shù)和對(duì)稱密碼術(shù)。在現(xiàn)實(shí)生活中實(shí)現(xiàn)SSL通信涉及某些基礎(chǔ)設(shè)施,稱為公鑰基礎(chǔ)設(shè)施。
公鑰基礎(chǔ)設(shè)施
該公鑰基礎(chǔ)設(shè)施(PKI)是一組創(chuàng)建,管理,分發(fā),使用,儲(chǔ)存,并吊銷數(shù)字證書和管理公共密鑰加密需要的角色,政策和程序。
PKI包括以下元素:
證書頒發(fā)機(jī)構(gòu):對(duì)個(gè)人,計(jì)算機(jī)和其他實(shí)體的身份進(jìn)行身份驗(yàn)證的權(quán)限。
注冊(cè)機(jī)構(gòu):代表根CA為特定用途頒發(fā)證書的從屬CA.
SSL證書:包含公鑰和其他信息的數(shù)據(jù)文件。
證書管理系統(tǒng):存儲(chǔ),驗(yàn)證和撤銷證書的系統(tǒng)。