1. 程式人生 > >SSL/TLS 握手過程詳解

SSL/TLS 握手過程詳解

在現代社會,網際網路已經滲透到人們日常生活的方方面面,娛樂、經濟、社會關係等都離不開網際網路的幫助。在這個背景下,網際網路安全就顯得十分重要,沒有提供足夠的安全保障,人們是不會如此依賴它的。幸運的是,在大牛們的努力下,很早以前就有一套安全體系來保障網際網路資訊的傳遞。下面我們一起來了解一下這套體系。

加密演算法
首先我們需要了解一下加密相關的知識,加密可以分為對稱加密和非對稱加密。兩者的主要區別就是是否使用同一個祕鑰,對稱加密需要用同一個祕鑰。非對稱加密不需要用同一個祕鑰,而是需要兩個祕鑰:公開金鑰(publickey)和私有金鑰(privatekey),並且加密金鑰和解密金鑰是成對出現的。

對稱加密

對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。常見的對稱加密有 DES、AES 等。

非對稱加密

非對稱加密使用一對“私鑰-公鑰”,用私鑰加密的內容只有對應公鑰才能解開,反之亦然。非對稱加密有以下特性:

對於一個公鑰,有且只有一個對應的私鑰。
公鑰是公開的,並且不能通過公鑰反推出私鑰。
通過私鑰加密的密文只能通過公鑰能解密,通過公鑰加密的密文也只能通過私鑰能解密。
非對稱加密不需要共享同一份祕鑰,安全性要比對稱加密高,但由於演算法強度比對稱加密複雜,加解密的速度比對稱加解密的速度要慢。常見的非對稱加密有 RSA、ESA、ECC 等。

摘要演算法
除了加密演算法,摘要演算法在網際網路安全體系中也扮演了重要的角色。摘要演算法有以下特性:

只要源文字不同,計算得到的結果,必然不同(或者說機會很少)。
無法從結果反推出源資料。
基於以上特性,我們一般使用摘要演算法來校驗原始內容是否被篡改。常見的摘要演算法有 MD5、SHA 等。

Tips: 摘要演算法不能算作加密演算法,加密演算法需要使用祕鑰加解密,但摘要演算法無法根據結果反推出內容。另外 MD5 目前也不算安全了,例如彩虹表攻擊。
具體例子
假設甲公司要給乙公司傳送一份機密的檔案,那麼這次傳輸需要確保以下幾點:

檔案內容不能被讀取(加密)
檔案內容不能被篡改(數字簽名)
檔案不能被掉包(數字證書)
加密

對稱加密需要用同一份祕鑰,這一份祕鑰的約定就有被中途截獲的可能。因此可以採用非對稱加密演算法加密對稱祕鑰的方式來加密內容,也就是用乙的公鑰加密對稱祕鑰,並用這個對稱祕鑰加密檔案內容。

假設這份檔案被黑客截獲,但是黑客沒有乙的私鑰無法解出對稱祕鑰,也就無法解密檔案內容。但是這裡有個風險,雖然黑客無法解密檔案內容,但他可以自己生成一份祕鑰並用乙的公鑰加密,再用這份祕鑰加密一份偽造的檔案發給乙,這種情況下乙收到的就是被篡改的檔案。

數字簽名

上面提到乙有可能收到被篡改的檔案,這個問題可以用數字簽名的方式解決,數字簽名就是用摘要演算法提取出原始檔的摘要並用私鑰進行加密後的內容。針對上面那個問題,甲在傳送檔案時再附帶上原始檔的數字簽名。如果被黑客擷取到加密後的檔案和數字簽名,黑客即使使用甲的公鑰解出了檔案摘要,由於摘要演算法的特性黑客也無法還原出原始內容。但乙可以解密出文件內容再用同樣的摘要演算法提取出摘要來和數字簽名裡的摘要進行比對,摘要一致則說明檔案沒有被篡改過。

到目前為止還有一個風險就是乙無法確定自己用的公鑰就是甲提供的,如果黑客將乙手裡的甲的公鑰替換成自己的並用自己的私鑰生成數字簽名,那麼乙還是會受到被篡改的檔案。

數字證書

數字證書的出現就是為了解決上述提到的問題,數字證書是一個經證書授權中心數字簽名的包含公開金鑰擁有者資訊以及公開金鑰的檔案。

數字證書裡一般會包含公鑰、公鑰擁有者名稱、CA 的數字簽名、有效期、授權中心名稱、證書序列號等資訊。

數字證書如何確保列出的使用者就是公鑰的擁有者呢?關鍵點是 CA 的數字簽名,CA會用自己的私鑰將證書內容的摘要進行加密。因為 CA 的公鑰是公開的,任何人都可以用公鑰解密出 CA 的數字簽名的摘要,再用同樣的摘要演算法提取出證書的摘要和解密 CA 數字簽名後的摘要比對,一致則說明這個證書沒有被篡改過,可以信任。

PKI
PKI(Public Key Infrastructure)翻譯過來就是公鑰基礎設施,可以理解為利用公鑰技術為網路應用提供加密和數字簽名等密碼服務以及必需的金鑰和證書管理體系。它是一個提供安全服務的基礎設施,PKI 技術是資訊保安技術的核心,同時也是電子商務的關鍵和基礎技術。

PKI 既不是一個協議,也不是一個軟體,它是一個標準,在這個標準之下發展出的為了實現安全基礎服務目的的技術統稱為 PKI。
PKI是一個標準,它包括一些基本的元件,不同的元件提供不同的服務,主要由一下幾個元件組成:

認證中心 CA(證書籤發):CA 機構,又稱為證書授證 (Certificate Authority) 中心,是 PKI 的”核心”,即數字證書的申請及簽發機關,CA 必須具備權威性的特徵,它負責管理 PKI 結構下的所有使用者(包括各種應用程式)的證書,把使用者的公鑰和使用者的其他資訊捆綁在一起,在網上驗證使用者的身份,CA 還要負責使用者證書的黑名單登記和黑名單釋出。
X.500目錄伺服器(證書儲存):X.500目錄伺服器用於”釋出”使用者的證書和黑名單資訊,使用者可通過標準的 LDAP 協議查詢自己或其他人的證書和下載黑名單資訊。
具有高強度密碼演算法(SSL)的安全 WWW 伺服器(即配置了 HTTPS 的apache):Secure socket layer(SSL)協議最初由 Netscape 企業發展,現已成為網路用來鑑別網站和網頁瀏覽者身份,以及在瀏覽器使用者及網頁伺服器之間進行加密通訊的全球化標準。
Web(安全通訊平臺):Web 有 Web Client 端和 Web Server 端兩部分,分別安裝在客戶端和伺服器端,通過具有高強度密碼演算法的 SSL 協議保證客戶端和伺服器端資料的機密性、完整性、身份驗證。
自開發安全應用系統:自開發安全應用系統是指各行業自開發的各種具體應用系統,例如銀行、證券的應用系統等。
總結
數字簽名和數字證書是兩個不同的概念,理解的關鍵點是數字簽名是內容提供方用自己的私鑰對內容摘要(MD5、SHA)非對稱加密,而數字證書的關鍵是 CA 用自己的私鑰對證書內容的摘要非對稱加密從而確保證書內的使用者合法擁有證書裡列出的公鑰。
這裡寫圖片描述

這裡寫圖片描述

相關推薦

(轉)SSL/TLS 握手過程

原文:https://www.jianshu.com/p/7158568e4867 我們知道,HTTP 協議都是明文傳輸內容,在早期只展示靜態內容時沒有問題。伴隨著網際網路的快速發展,人們對於網路傳輸安全性的要求也越來越高,HTTPS 協議因此出現。如上圖所示,在 HTTPS 加密中真正起

SSL/TLS 握手過程

在現代社會,網際網路已經滲透到人們日常生活的方方面面,娛樂、經濟、社會關係等都離不開網際網路的幫助。在這個背景下,網際網路安全就顯得十分重要,沒有提供足夠的安全保障,人們是不會如此依賴它的。幸運的是,在大牛們的努力下,很早以前就有一套安全體系來保障網際網路資訊的

SSL互動(握手)過程

 原文:http://www.cpplive.com/html/1387.html 普通的TCP通訊無法保證資料的安全,它隨時可能被第三方截獲而洩漏通訊雙方之間的隱私,這顯然是我們不希望看到的,尤其在跟使用者名稱、密碼、個人資訊息息相關的通訊過程(如網上銀行

TLS 握手優化

提醒:本文最後更新於 913 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 隨著 HTTP/2 的逐漸普及,以及國內網路環境越來越糟糕(運營商劫持和篡改),HTTPS 已經開始成為主流。HTTPS 在 TCP 和 HTTP 之間增加了 TLS(Transport Layer Securit

http和https 握手過程

現在這個社會,我們都離不開網路,那麼網路的工作流程是怎麼樣的呢?從http發起請求到完成請求,網路到底給我們做了什麼事情? 今天我們主要來分析下http請求的過程: 在Http工作之前,Web瀏覽器通過網路和Web伺服器建立鏈連線,該連線是通過Tcp來完成的,該協議和Ip共同

SSL/TLS握手過程

一、SSL/TLS簡介 SSL(Secure Socket Layer)最初是由Netscape公司開發的一個協議,其目的在於為網際網路提供一個安全的通訊機制。Netscape最早對外公佈的版本是SS

TCP協議的3次握手與4次揮手過程

進行 發送數據 不存在 信息 隊列 協議 標識 方式 ar9 所謂三次握手(Three-Way Handshake)即建立TCP連接,就是指建立一個TCP連接時,需要客戶端和服務端總共發送3個包以確認連接的建立。所謂四次揮手(Four-Way Wavehand)即終止TCP

TCP協議的3次握手與4次揮手過程 標籤: TCP IM

1、前言 儘管TCP和UDP都使用相同的網路層(IP),TCP卻嚮應用層提供與UDP完全不同的服務。TCP提供一種面向連線的、可靠的位元組流服務。 面向連線意味著兩個使用TCP的應用(通常是一個客戶和一個伺服器)在彼此交換資料之前必須先建立一個TCP連線。這一過程與打電話很相似,先撥

(轉)理論經典:TCP協議的3次握手與4次揮手過程

<div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post"

SSL握手通訊及linux下c/c++ SSL Socket(另附SSL雙向認證客戶端程式碼)

SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網路通訊提供安全及資料完整性的一種安全協議。TLS與SSL在傳輸層對網路連線進行加密。   安全證書既包含了用於加密資料的金鑰

TCP三次握手四次揮手過程

TCP頭部: 其中 ACK   SYN  序號  這三個部分在以下會用到,它們的介紹也在下面。 暫時需要的資訊有: ACK : TCP協議規定,只有ACK=1時有效,也規定連線建立後所有傳送的報文的ACK必須為1 SYN(SYNchronization) : 在連線建立

【TCP/IP】TCP的三次握手,四次揮手過程

TCP傳輸控制協議   TCP是一個面向連線的協議,為使用者程序提供可靠的全雙工位元組流。TCP套接字是一種流套接字,TCP關心確認、超時和重傳之類的細節。   首先,TCP提供客戶與伺服器之間的連線。TCP客戶先與某個給定伺服器建立一個連線,再跨該連線與那

Nginx實現集群的負載均衡配置過程

post 發現 forward too strong eight glin 內容 請求 Nginx實現集群的負載均衡配置過程詳解 Nginx 的負載均衡功能,其實實際上和 nginx 的代理是同一個功能,只是把代理一臺機器改為多臺機器而已。 Nginx 的負載均衡

使用HeartBeat實現高可用HA的配置過程

接口 dea ive for 64位 doc 主機名 停止 enforce 使用HeartBeat實現高可用HA的配置過程詳解 一、寫在前面 HA即(high available)高可用,又被叫做雙機熱備,用於關鍵性業務。簡單理解就是,有2臺機器 A 和 B,正常

OC學習小結之ios運行過程

for cat 用戶 with res nbsp c學習 launch cati 1)ios核心類 UIView 視圖,屏幕上能看得見的東西都是視圖,例如:按鈕、文本標簽、和表格等 UIViewController:內部默認有個視圖(UIView),負責管理UIView的

storm集群部署和配置過程

多少 帶來 進程 創建 使用 命令 介紹 aml 可能 ---恢復內容開始--- 先整體介紹一下搭建storm集群的步驟: 設置zookeeper集群 安裝依賴到所有nimbus和worker節點 下載並解壓storm發布版本到所有nimbus和worker節點 配置s

轉-Linux啟動過程(inittab、rc.sysinit、rcX.d、rc.local)

dha mage 模塊 都是 交換 如何配置 mas 完全 打開 http://blog.chinaunix.net/space.php?uid=10167808&do=blog&id=26042 1)BIOS自檢2)啟動Grub/Lilo3)加載內

TCP數據傳輸過程

握手 ron 布爾 位域 fcm 打開 數據段 2個 處理 在學習三次握手的時候,我們知道其中有seq、ack兩個序列號。 如果不仔細了解,那麽可能只知道發回去的時候要加一。 下文將著重介紹,關於序列號的傳輸過程。 最關鍵的一句話:序列號為當前端成功發送的數據位數,確認號為

嵌入式開發學習(2)<S5PV210啟動過程>

nan ios eight img 啟動方式 margin 需要 外部 啟動 基本概念: 內存:   SRAM 靜態內存 特點:容量小、價格高,優點:不需要軟件初始化,上電就能用。   DRAM 動態內存 特點:容量大、價格低,缺點:上電不能用,需要軟件初始化。  

linux--系統啟動及安裝過程

linux啟動先通過一張圖來簡單了解下整個系統啟動的流程,整個過程基本可以分為POST-->BIOS-->MBR(GRUB)-->Kernel-->Init-->Runlevel本文出自 “運維自動化” 博客,請務必保留此出處http://shower.blog.51cto.co