成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你所應該知道的HTTP

開發(fā) 前端
HTTPS是一個安全通信通道,用于在客戶計算機和服務器之間交換信息。它使用安全套接字層進行信息交換,簡單來說它是HTTP的安全版,是使用TLS/SSL加密的HTTP協(xié)議。

概述

HTTPS全稱Secure Hypertext Transfer Protocol(安全超文本傳輸協(xié)議),是一個安全通信通道,用于在客戶計算機和服務器之間交換信息。它使用安全套接字層進行信息交換,簡單來說它是HTTP的安全版,是使用TLS/SSL加密的HTTP協(xié)議。

HTTPS = HTTP + TLS/SSL

HTTP協(xié)議采用明文傳輸信息,存在信息竊聽、信息篡改和信息劫持的風險,而協(xié)議TLS/SSL具有身份驗證、信息加密和完整性校驗的功能,可以避免此類問題發(fā)生。

TLS全稱Transport Layer Security(安全傳輸層協(xié)議), 前身是SSL,故現(xiàn)在用TLS/SSL統(tǒng)稱。是介于TCP和HTTP之間的一層安全協(xié)議,不影響原有的TCP協(xié)議和HTTP協(xié)議,所以使用HTTPS基本上不需要對HTTP頁面進行太多的改造。

套用在TCP/IP四層模型里的結(jié)構(gòu)如下:

 

 

 

 

TLS/SSL原理

TLS/SSL的功能實現(xiàn)主要依賴于三類基本算法:散列函數(shù)(Hash)、對稱加密和非對稱加密。

其利用非對稱加密實現(xiàn)身份認證和密鑰協(xié)商,對稱加密算法采用協(xié)商的密鑰對數(shù)據(jù)加密,基于散列函數(shù)驗證信息的完整性。

TLS/SSL = 非對稱加密 + 對稱加密 + 散列算法

非對稱加密

加密和解密使用不同密鑰的加密算法,也稱為公私鑰加密。密鑰成對出現(xiàn),一般稱為公鑰(publickey)和私鑰(privatekey),公鑰加密的信息只能私鑰解開,私鑰加密的信息只能公鑰解開。即服務器持有私鑰,客戶端持有公鑰,客戶端要發(fā)送的信息經(jīng)過公鑰加密后傳遞給服務器,服務器用私鑰解密得到明文信息。

特點:

  • 可以實現(xiàn)1對多的通信;
  • 保密性比較好,只有公鑰需要被傳遞,故私鑰被劫持的概率很低;
  • 安全性高,保密性保證私鑰安全,因此安全性僅依賴于算法本身;
  • 計算復雜,加密速度慢。

在TLS/SSL中,非對稱加密僅用于“身份認證”和“密鑰協(xié)商”,不在后續(xù)正文數(shù)據(jù)傳輸中使用,這是安全性與性能之間的平衡取舍。

對稱加密

加密和解密使用相同密鑰的加密算法。即客戶端與服務器所持有的密鑰是相同的,客戶端要發(fā)送的信息經(jīng)過密鑰加密后傳遞給服務器,服務器用相同密鑰解密得到明文信息。

特點:

  • 通信方式是1對1,為了足夠安全,服務器和N個客戶端通信,需要維持N個密碼記錄;
  • 安全性不僅取決于加密算法本身,密鑰管理的安全性更是重要;
  • 計算量小、加密速度快、加密效率高;
  • 缺少吊銷和修改密鑰的機制。

在TLS/SSL中,對稱加密的密鑰是通過非對稱加密的“密鑰協(xié)商”產(chǎn)生的,這樣就最大限度的保證了密鑰的安全。由于其效率高的特點,正文數(shù)據(jù)傳輸使用了該加密方式。

散列函數(shù)(Hash)

一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數(shù),常用于防止信息篡改并驗證數(shù)據(jù)的完整性。

特點:

  • 單向不可逆;
  • 對輸入非常敏感,即一點輸入的改變都會導致結(jié)果不同;
  • 輸出長度固定。

在信息傳輸過程中,散列函數(shù)不能單獨實現(xiàn)信息防篡改,因為明文傳輸,中間人可以修改信息之后重新計算信息摘要,因此需要對傳輸?shù)男畔⒁约靶畔⒄M行加密。

在TLS/SSL中,“密鑰協(xié)商”的最后步驟和傳輸正文信息都會帶上散列函數(shù)計算出的信息摘要,他們一起經(jīng)過對稱加密后傳輸,用來驗證完整性。

PKI體系

非對稱加密的隱患

前面講到“身份驗證”和“密鑰協(xié)商”是TLS/SSL的基礎(chǔ)功能,要求的前提是合法的服務器掌握著對應的私鑰。但非對稱加密算法無法確保服務器身份的合法性,因為公鑰并不包含服務器的信息。

假定出現(xiàn)以下的情況:

  • 客戶端C和服務器S進行通信,中間節(jié)點M截獲了二者的通信;
  • 節(jié)點M自己計算產(chǎn)生一對公鑰pub_M和私鑰pri_M;
  • C向S請求公鑰時,M把自己的公鑰pub_M發(fā)給了C;
  • C使用公鑰pub_M加密的數(shù)據(jù)能夠被M解密,因為M掌握對應的私鑰pri_M,而C無法根據(jù)公鑰信息判斷服務器的身份,從而C和M之間建立了"可信"加密連接。

 

 

 

 

如圖,中間節(jié)點M和服務器S之間再建立合法的連接,因此C和S之間通信被M完全掌握,M可以進行信息的竊聽、篡改等操作,這類攻擊被稱為“中間人攻擊”。

身份驗證CA和證書

為了解決上述的隱患,關(guān)鍵是確保獲取公鑰途徑是合法的,能夠驗證服務器的身份信息,為此需要引入權(quán)威的第三方機構(gòu)CA。

CA全稱Certificate Authority(證書頒發(fā)機構(gòu)),它負責核實公鑰的擁有者的信息,并頒發(fā)認證"證書",同時能夠為使用者提供證書驗證服務,即PKI體系。

證書 = 公鑰 + 申請者與頒發(fā)者信息 + 有效時間 + 域名信息 + 簽名

CA認證流程如下:

 

 

 

 

客戶端會內(nèi)置信任CA的證書信息(包含公鑰),如果CA不被信任,則找不到對應CA的證書,證書也會被判定非法。

也可以這樣理解,網(wǎng)站千千萬,瀏覽器廠商沒辦法一家一家去認證,于是跟CA合作,通過維護一個CA列表,只要網(wǎng)站有經(jīng)過這個列表里CA的認證,就可以信任該網(wǎng)站的證書。

TLS/SSL握手過程

TLS/SSL握手過程也就是所謂的HTTPS四次握手(不含證書驗證步驟)。

1.客戶端發(fā)起請求,以明文傳輸請求信息,包含版本信息,加密套件候選列表,壓縮算法候選列表,隨機數(shù)random_C(明文),擴展字段等信息。

2.服務端返回協(xié)商的信息結(jié)果,隨機數(shù)random_S(明文),證書鏈等。

3.對證書進行驗證,包括證書可信性、有效性等,可能需要聯(lián)系CA。

4.細分為四步:

  1. client_key_exchange:客戶端計算產(chǎn)生隨機數(shù)字Pre-master,并用證書公鑰加密,發(fā)送給服務器;
  2. 客戶端根據(jù)random_C、random_S以及Pre-master,計算得到協(xié)商密鑰enc_key(即對稱加密用的密鑰);
  3. change_cipher_spec:客戶端通知服務器后續(xù)的通信都采用協(xié)商的通信密鑰和加密算法進行加密通信;
  4. encrypted_handshake_message:結(jié)合之前所有通信參數(shù)的hash值與其它相關(guān)信息生成一段數(shù)據(jù),采用協(xié)商密鑰enc_key進行加密,然后發(fā)送給服務器用于數(shù)據(jù)與握手驗證;

5.細分為四步:

  1. 服務器使用私鑰解密Pre-master,根據(jù)random_C、random_S以及Pre-master,計算得到協(xié)商密鑰enc_key;
  2. 計算之前所有接收信息的hash值,然后解密客戶端發(fā)送的encrypted_handshake_message,驗證數(shù)據(jù)和密鑰正確性;
  3. change_cipher_spec:驗證通過之后,服務器同樣發(fā)送change_cipher_spec以告知客戶端后續(xù)的通信都采用協(xié)商的密鑰與算法進行加密通信;
  4. encrypted_handshake_message:服務器也結(jié)合所有當前的通信參數(shù)信息生成一段數(shù)據(jù)并采用協(xié)商密鑰enc_key加密并發(fā)送到客戶端;

6.握手結(jié)束,開始使用協(xié)商密鑰enc_key進行對稱加密通信(包含hash完整性驗證)。

示意圖如下:

 

 

 

 

HTTPS的使用成本

  • 證書費用及維護更新

一般正規(guī)CA頒發(fā)的證書都是需要付費購買的,并且到期后還得續(xù)費。

  • 增加了訪問延遲

分析前面的握手過程,一次完整的握手至少需要兩端依次來回兩次通信,至少增加延時2RTT,利用會話緩存從而復用連接,延時也至少1RTT。

  • 消耗較多CPU資源

加解密是需要消耗性能的,前面也有提到非對稱加密的特點,因此會成為性能瓶頸。

HTTPS的優(yōu)化

TLS False Start

在TLS/SSL協(xié)商第二階段,也就是瀏覽器生成最后一個隨機數(shù)并用公鑰加密發(fā)送給服務器后,立即發(fā)送加密的應用層數(shù)據(jù),而無需等待服務器的確認。

Session Identifier(會話標識符)

如果用戶的一個業(yè)務請求包含了多條的加密流,客戶端與服務器要反復握手,必定導致更多的時間損耗。或某些特殊情況導致會話中斷,需要重新握手。

服務器為每一次的會話生成并記錄一個sessionId,發(fā)送給客戶端,客戶端重新連接只需要提供這個id,不需要重新握手。

OCSP Stapling

OCSP全稱Online Certificate Status Protocol。由web服務器向OCSP server周期性地查詢證書狀態(tài),獲得一個帶有時間戳和簽名的OCSP response并緩存它。當有客戶端發(fā)起請求時,web服務器會把這個response在TLS握手過程中發(fā)給客戶端。

(谷歌瀏覽器默認只使用內(nèi)置列表檢查,故這個優(yōu)化對谷歌無效)

HSTS(HTTP Strict-Transport-Security)

一個報文頭部字段,告訴瀏覽器,接下來的一段時間內(nèi),當前域名(及其子域名)的后續(xù)通信應該強制性使用HTTPS,直到超過有效期為止。

形如:

 

 

  1. Strict-Transport-Security: max-age=31536000;includeSubDomains 
【責任編輯:龐桂玉 TEL:(010)68476606】

 

 

責任編輯:龐桂玉 來源: segmentfault
相關(guān)推薦

2013-05-23 11:11:58

Sailfish OSJolla手機操作系統(tǒng)

2013-05-13 01:16:15

Mobile Web webapp

2014-03-13 09:32:02

EclipseAndroid Stu

2020-10-13 14:15:22

HTTPHTTP請求方法

2022-10-19 09:38:55

2024-09-02 14:24:13

2013-07-10 15:17:20

程序員創(chuàng)業(yè)

2024-02-21 23:11:19

2013-05-23 11:22:04

Android開發(fā)者UI設(shè)計Android設(shè)計

2024-07-30 13:48:37

2019-04-22 11:38:00

HTTPHTTP2.0HTTPS

2013-01-09 13:55:43

2011-03-25 15:56:58

2019-06-03 08:04:43

Apache服務器命令

2021-06-07 12:40:34

Python代碼陷阱

2022-01-04 10:10:34

Garuda LinuArch LinuxLinux

2023-09-02 21:31:16

Java內(nèi)存泄漏

2013-06-28 14:09:33

PHP庫

2023-05-04 16:10:13

緩存前端

2022-11-04 08:22:14

編譯代碼C語言
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: a视频在线观看 | 亚洲天堂一区二区 | 欧美一区二区三区在线免费观看 | 欧美99久久精品乱码影视 | 91精品国产一区二区三区蜜臀 | 另类视频区 | 亚洲欧美国产毛片在线 | 精品欧美一区二区三区久久久 | 日韩欧美在线视频 | 龙珠z国语版在线观看 | 国产精品91视频 | 欧美视频免费在线 | 久久久久免费观看 | 国产高潮av| 91欧美 | 久久精品欧美一区二区三区不卡 | 91中文字幕在线观看 | 国产精品久久久久久久久久久久久久 | 日韩精品一区二区在线 | 成人精品视频在线观看 | 亚洲成av人影片在线观看 | 欧美国产精品一区二区 | 精品一区视频 | 亚洲视频一区二区三区四区 | 一区二区三区免费 | 毛片一级片| 欧美激情在线一区二区三区 | 91视频在线看 | 色综合一区| 亚洲精品在线看 | 国产成人精品一区二三区在线观看 | 国产亚洲一区二区在线观看 | 国产一区在线免费观看视频 | 小h片免费观看久久久久 | 久久久青草| 欧美精品日韩精品 | 天天欧美| 福利网站导航 | 蜜桃视频麻豆 | 久久精品国产亚洲a | 91亚洲国产成人久久精品网站 |