HTTPS、SSL、TLS三者之間的聯絡和區別
SSL(Secure Socket Layer 安全套接層)是基於HTTPS下的一個協議加密層,最初是由網景公司(Netscape)研發,後被IETF(The Internet Engineering Task Force - 網際網路工程任務組)標準化後寫入(RFCRequest For Comments 請求註釋),RFC裡包含了很多網際網路技術的規範!
起初是因為HTTP在傳輸資料時使用的是明文(雖然說POST提交的資料時放在報體裡看不到的,但是還是可以通過抓包工具竊取到)是不安全的,為了解決這一隱患網景公司推出了SSL安全套接字協議層,SSL是基於HTTP之下TCP之上的一個協議層,是基於HTTP標準並對TCP傳輸資料時進行加密,所以HPPTS是HTTP+SSL/TCP的簡稱。
由於HTTPS的推出受到了很多人的歡迎,在SSL更新到3.0時,IETF對SSL3.0進行了標準化,並新增了少數機制(但是幾乎和SSL3.0無差異),標準化後的IETF更名為TLS1.0(Transport Layer Security 安全傳輸層協議),可以說TLS就是SSL的新版本3.1,並同時釋出“RFC2246-TLS加密協議詳解”,如果想更深層次的瞭解TLS的工作原理可以去RFC的官方網站:www.rfc-editor.org,搜尋RFC2246即可找到RFC文件! ——以上就是歷史背景
SSL 是指安全套接字層,簡而言之,它是一項標準技術,可確保網際網路連線安全,保護兩個系統之間傳送的任何敏感資料,防止網路犯罪分子讀取和修改任何傳輸資訊,包括個人資料。兩個系統可能是指伺服器和客戶端(例如,瀏覽器和購物網站),或兩個伺服器之間(例如,含個人身份資訊或工資單資訊的應用程式)。
要說清楚 HTTPS 協議的實現原理,至少需要如下幾個背景知識。
1. 大致瞭解幾個基本術語(HTTPS、SSL、TLS)的含義
2. 大致瞭解 HTTP 和 TCP 的關係(尤其是“短連線”VS“長連線”)
3. 大致瞭解加密演算法的概念(尤其是“對稱加密與非對稱加密”的區別)
4. 大致瞭解 CA 證書的用途 5.TCP通訊協議的幾次握手
TLS(傳輸層安全)是更為安全的升級版 SSL。由於 SSL 這一術語更為常用,因此我們仍然將我們的安全證書稱作 SSL。但當您從賽門鐵克購買 SSL 時,您真正購買的是最新的 TLS 證書,有 ECC、RSA 或 DSA 三種加密方式可以選擇。
TLS/SSL是一種加密通道的規範
它利用對稱加密、公私鑰不對稱加密及其金鑰交換演算法,CA系統進行加密且可信任的資訊傳輸
在HTTP SSL中常用的對稱加密演算法有RC4,AES,3DES,Camellia等
SSL由從前的網景公司開發
有1,2,3三個版本,但現在只使用版本3
TLS是SSL的標準化後的產物
有1.0 1.1 1.2三個版本
預設使用1.0
TLS1.0和SSL3.0幾乎沒有區別
事實上我們現在用的都是TLS,但因為歷史上習慣了SSL這個稱呼
平常還是以SSL為多。
-
SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網路通訊提供安全及資料完整性的一種安全協議。TLS與SSL在傳輸層對網路連線進行加密。
-
SSL協議位於TCP/IP協議與各種應用層協議之間,為資料通訊提供安全支援。SSL協議可分為兩層: SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供資料封裝、壓縮、加密等基本功能的支援。 SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的資料傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密金鑰等。
-
安全傳輸層協議(TLS)用於在兩個通訊應用程式之間提供保密性和資料完整性。該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。
-
TLS 的最大優勢就在於:TLS 是獨立於應用協議。高層協議可以透明地分佈在 TLS 協議上面。然而,TLS 標準並沒有規定應用程式如何在 TLS 上增加安全性;它把如何啟動 TLS 握手協議以及如何解釋交換的認證證書的決定權留給協議的設計者和實施者來判斷。
1、SSL加密
SSL是Netscape公司所提出的安全保密協議,在瀏覽器(如Internet Explorer、Netscape Navigator)和Web伺服器(如Netscape的Netscape Enterprise Server、ColdFusion Server等等)之間構造安全通道來進行資料傳輸,SSL執行在TCP/IP層之上、應用層之下,為應用程式提供加密資料通道,它採用了RC4、MD5以及RSA等加密演算法,使用40 位的金鑰,適用於商業資訊的加密。同時,Netscape公司相應開發了HTTPS協議並內建於其瀏覽器中,HTTPS實際上就是HTTP over SSL,它使用預設埠443,而不是像HTTP那樣使用埠80來和TCP/IP進行通訊。HTTPS協議使用SSL在傳送方把原始資料進行加密,然後在接受方進行解密,加密和解密需要傳送方和接受方通過交換共知的金鑰來實現,因此,所傳送的資料不容易被網路黑客截獲和解密。 然而,加密和解密過程需要耗費系統大量的開銷,嚴重降低機器的效能,相關測試資料表明使用HTTPS協議傳輸資料的工作效率只有使用HTTP協議傳輸的十分之一。假如為了安全保密,將一個網站所有的Web應用都啟用SSL技術來加密,並使用HTTPS協議進行傳輸,那麼該網站的效能和效率將會大大降低,而且沒有這個必要,因為一般來說並不是所有資料都要求那麼高的安全保密級別
2、TLS加密
TLS:安全傳輸層協議
TLS:Transport Layer Security
安全傳輸層協議(TLS)用於在兩個通訊應用程式之間提供保密性和資料完整性。該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。較低的層為 TLS 記錄協議,位於某個可靠的傳輸協議(例如 TCP)上面。
SSL與TLS的區別以及介紹
SSL:(Secure Socket Layer,安全套接字層),位於可靠的面向連線的網路層協議和應用層協議之間的一種協議層。SSL通過互相認證、使用數字簽名確保完整性、使用加密確保私密性,以實現客戶端和伺服器之間的安全通訊。該協議由兩層組成:SSL記錄協議和SSL握手協議。
TLS:(Transport Layer Security,傳輸層安全協議),用於兩個應用程式之間提供保密性和資料完整性。該協議由兩層組成:TLS記錄協議和TLS握手協議。
SSL是Netscape開發的專門用於保護Web通訊的,目前版本為3.0.最新版本的TLS 1.0是IETE(工程任務組)指定的一種新的協議,它建立在SSL 3.0協議規範之上,是SSL 3.0的後續版本。兩者差別極小,可以理解為SSL 3.1,它是寫入了RFC的。
SSL(Secure Socket Layer)
為Netscape所研發,用以保障在Internet上資料傳輸之安全,利用資料加密(Encryption)技術,可確保資料在網路上之傳輸過程中不會被擷取。
當前版本為3.0。它已被廣泛地用於Web瀏覽器與伺服器之間的身份認證和加密資料傳輸。
SSL協議位於TCP/IP協議與各種應用層協議之間,為資料通訊提供安全支援。SSL協議可分為兩層:SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供資料封裝、壓縮、加密等基本功能的支援。SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的資料傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密金鑰等。
SSL協議提供的服務主要有:
1)認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器;
2)加密資料以防止資料中途被竊取;
3)維護資料的完整性,確保資料在傳輸過程中不被改變。
SSL協議的工作流程:
伺服器認證階段:
1)客戶端向伺服器傳送一個開始資訊“Hello”以便開始一個新的會話連線;
2)伺服器根據客戶的資訊確定是否需要生成新的主金鑰,如需要則伺服器在響應客戶的“Hello”資訊時將包含生成主金鑰所需的資訊;
3)客服根據收到的伺服器響應資訊,產生一個主金鑰,並用伺服器的公開金鑰加密後傳給伺服器;
4)伺服器恢復該主金鑰,並返回給客戶一個用主金鑰認證的資訊,以此讓客戶認證伺服器。
使用者認證階段:在此之前,伺服器已經通過了客戶認證,這一階段主要完成對客戶的認證。經認證的伺服器傳送一個提問給客戶,客戶則返回(數字)簽名後的提問和其公開金鑰,從而向伺服器提供認證。
TLS(Transport Layer Security Protocol):安全傳輸層協議
安全傳輸層協議(TLS)用於在兩個通訊應用程式之間提供保密性和資料完整性。該協議由兩成組成:TLS記錄協議(TLS Record)和TLS握手協議(TLS Handshake)。較低的層為TLS記錄協議,位於某個可靠的傳輸協議(例如TCP)上面。
TLS記錄協議提供的連線安全性具有兩個基本特性:
- 私有——對稱加密用以資料加密(DES、RC4等)。對稱加密所產生的金鑰對每個連線都是唯一的,且此金鑰基於另一個協議(如握手協議)協商。記錄協議也可以不加密使用。
- 可靠——資訊傳輸包括使用金鑰的MAC進行資訊完整性檢查。安全雜湊功能(SHA、MD5等)用於MAC計算。記錄協議在沒有MAC的情況下也能操作,但一般只能用於這種模式,即有另一個協議正在使用記錄協議傳輸協商安全引數。
TLS記錄協議用於封裝各種高層協議。作為這種封裝協議之一的握手協議允許伺服器與客戶機在應用程式協議傳輸和接收其第一個資料位元組前彼此之間互相認證,協商加密演算法和加密金鑰。TLS握手協議提供的連線安全具有三個基本屬性:
- 可以使用非對稱的,或公共金鑰的密碼術來認證對等方的身份。該認證是可選的,但至少需要一個結點方。
- 共享解密金鑰的協商是安全的。對偷竊者來說協商加密是難以獲得的。此外經過認證過的連線不能獲得加密,即使是進入連線中間的攻擊者也不能。
- 協商是可靠的。沒有經過通訊方成員的檢測,任何攻擊者都不能修改通訊協商。
TLS的最大優勢就在於:TLS是獨立於應用協議。高層協議可以透明地分佈在TLS協議上面。然而,TLS標準並沒有規定應用程式如何在TLS上增加安全性;它如何啟動TLS握手協議以及如何解釋交換的認證證書的決定權留給協議的設計者和實施者來判斷。
協議結構
TLS協議包括兩個協議組——TLS記錄協議和TLS握手協議。
TLS和SSL的關係:並列關係
最新版本的TLS(Transport Layer Security,傳輸層安全協議)是IETF(Internet Engineering Task Force,Internet工程任務組)制定的一種新的協議,它建立在SSL 3.0協議規範之上,是SSL 3.0的後續版本。在TLS與SSL 3.0之間存在著顯著的差別,主要是它們所支援的加密演算法不同,所以TLS與SSL 3.0不能互操作。
1.TLS與SSL的差異
1)版本號:TLS記錄格式與SSL記錄格式相同,但版本號的值不同,TLS的版本1.0使用的版本號為SSLv3.1。
2)報文鑑別碼:SSLv3.0和TLS的MAC演算法及MAC計算的範圍不同。TLS使用RFC-2104定義的HMAC演算法。SSLv3.0使用了相似的演算法,兩者差別在於SSLv3.0中,填充位元組與金鑰之間採用的是連線運算,而HMAC演算法採用的異或運算。但是兩者的安全程度是相同的。
3)偽隨機函式:TLS使用了稱為PRF的偽隨機函式來將金鑰擴充套件成資料塊,是更安全的方式。
4)報警程式碼:TLS支援幾乎所有的SSLv3.0報警程式碼,而且TLS還補充定義了很多報警程式碼,如解密失敗(decryption_failed)、記錄溢位(record_overflow)、未知CA(unknown_ca)、拒絕訪問(access_denied)等。
5)密文族和客戶證書:SSLv3.0和TLS存在少量差別,即TLS不支援Fortezza金鑰交換、加密演算法和客戶證書。
6)certificate_verify和finished訊息:SSLv3.0和TLS在用certificate_verify和finished訊息計算MD5和SHA-1雜湊碼時,計算的輸入有少許差別,但安全性相當。
7)加密計算:TLS和SSLv3.0在計算主密值(master secret)時採用的方式不同。
8)填充:使用者資料加密之前需要增加的填充位元組。在SSL中,填充後的資料長度喲啊達到密文快長度的最小整數倍。而在TLS中,填充後的資料長度可以是密文塊長度的任意整數倍(但填充的最大長度為255位元組),這種方式可以防止基於對報文長度進行分析的攻擊。
2.TLS的主要增強內容
TLS的主要目標是使SSL更安全,並使協議的規範更精確和完善。TLS在SSL v3.0的基礎上,提供了以下增加內容:
1)更安全的MAC演算法
2)更嚴密的警報
3)“灰色區域”規範的更明確的定義
3.TLS對於安全性的改進
1)對於訊息認證使用金鑰雜湊法:TLS使用“訊息認證程式碼的金鑰雜湊法”(HMAC),當記錄在開放的網路(如因特網)上傳送時,該程式碼確保記錄不會被變更。SSLv3.0還提供鍵控訊息認證,但HMAC比SSLv3.0使用(訊息認證程式碼)MAC功能更安全。
2)增強的偽隨機功能(PRF):PRF生成金鑰資料。在TLS中,HMAC定義PRF。PRF使用兩種雜湊演算法保證其安全性。如果任一演算法暴露了,只要第二種演算法未暴露,則資料仍然是安全的。
3)改進的已完成訊息驗證:TLS和SSLv3.0都對兩個端點提供已完成的訊息,該訊息認證交換的訊息沒有被變更。然而,TLS將此已完成訊息基於PRF和HMAC值之上,這也比SSLv3.0更安全。
4)一致證書處理:與SSLv3.0不同,TLS試圖指定必須在TLS之間實現交換的證書型別。
5)特定警報訊息:TLS提供更多的特定和附加警報,以指示任一會話端點檢測到的問題。TLS還對何時應該傳送某些警報進行記錄。
[更多詳細地介紹]
1、聊聊HTTPS和SSL/TLS協議 | 程式師 - 程式設計師、程式語言、軟體開發、程式設計技術 http://www.techug.com/post/https-ssl-tls.html
2、詳解SSL/TLS http://www.mamicode.com/info-detail-1846390.html (推薦閱讀)
相關文章
- SSL和TLS 區別TLS
- spring、springmvc、springboot、springcloud 之間的聯絡和區別SpringMVCSpring BootGCCloud
- Linux 上的 AppImage、Snap、Flatpak 之間的區別和聯絡LinuxAPP
- [HTTPS]SSL/TLSHTTPTLS
- (第二講)Spring&Spring MVC&Spring Boot三者之間的區別與聯絡MVCSpring Boot
- jQuery與JavaScript與ajax三者的區別與聯絡jQueryJavaScript
- 淺析HTML、CSS、JavaScript之間的聯絡與區別!HTMLCSSJavaScript
- 程序、執行緒和協程之間的區別和聯絡執行緒
- 程式、執行緒和協程之間的區別和聯絡執行緒
- Instruction和Question的區別和聯絡Struct
- SCADA和PLC的區別聯絡
- TLS與SSL之間關係TLS
- 陣列地址與指標之間的區別與聯絡陣列指標
- 知識點,JavaScript與Java之間有什麼區別和聯絡?JavaScript
- tcp/ip和http的區別和聯絡TCPHTTP
- http、socket、tcp的區別和聯絡?HTTPTCP
- 傳統採購管理與現代採購管理之間的區別和聯絡
- Linux中軟連結和硬連結之間有什麼區別和聯絡?Linux
- Rxjs map, mergeMap 和 switchMap 的區別和聯絡JS
- 客戶、聯絡人、商機管理之間的區別是什麼?
- SSL證書是什麼?HTTP和HTTPS的區別HTTP
- javaSE中的==和equals的聯絡與區別Java
- java-介面和抽象類的聯絡和區別。Java抽象
- 大資料分析與機器學習之間的區別與聯絡大資料機器學習
- Python中read()、readline()和readlines()三者間的區別和用法Python
- HDFS 塊和 Input Splits 的區別與聯絡
- 程式和執行緒的區別與聯絡執行緒
- HTTP 和 HTTPS 之間除了安全性區別外,還有哪些區別HTTP
- hive中order by、distribute by、sort by和cluster by的區別和聯絡Hive
- C/C++引用和指標的聯絡和區別C++指標
- 【知識點】 gcc和g++的聯絡和區別GC
- 【clickhouse專欄】資料庫、資料倉儲之間的區別與聯絡資料庫
- Vue中watch、computed與methods的聯絡和區別Vue
- shell與Linux命令有什麼區別?它們之間有聯絡嗎?Linux
- 車聯網通訊安全之 SSL/TLS 協議TLS協議
- 一篇讓你明白程式與執行緒之間的區別與聯絡執行緒
- 模電和數電在應用上的區別和聯絡
- SAP UI5 和 OpenUI5 的區別和聯絡UI