關於TLS經驗小結 上

2021-08-09 05:36:35 字數 1967 閱讀 5828

1.什麼是tls?

安全傳輸層協議(transport layer security)用於在兩個通訊應用程式之間提供保密性和資料完整性。tls是ssl的標準化後的產物,有有1.0 1.1 1.2 1.3四個版本,目前最常用的是tls1.2協議。

1.tls的一些概念

1.1 演算法種類

非對稱加密: rsa dh

對稱加密: aes des

hash演算法(雜湊): md5 sha1 sha256

pki:數字簽名

1.2 tls協議裡面的演算法的概念

金鑰交換演算法(kx)

認證演算法(au)

加密演算法(enc)

訊息摘要演算法(mac)

說了這麼多,估計大家也有點懵逼了。大家肯定也有乙個疑問,上述介紹的這些到底有什麼用呢?

ok 先上個圖:

這張圖描述的是ssl通過rsa非對稱加密方式的握手流程:

1.1 ssl握手過程:

1.客戶端(一般為瀏覽器)向伺服器發起send hello 其中的內容為:

1.1協議版本號(支援的tls版本) 1.2客戶端生成的隨機數(client random) 1.3以及客戶端支援的對稱加密方法集。

2.服務端根據客戶端send hello請求內容返回本次通訊的tls版本, 具體使用哪一種對稱加密方法,伺服器生成的隨機數(server random) 以及伺服器的證書及證書鏈。

3.客戶端採用對應ca的公鑰(認證演算法)檢查該證書是否有效、有沒有 過期。如果證書沒有問題。就再生成乙個新隨機數(premaster secret)。 並且用服務端給的證書公鑰加密這個隨機數傳送給伺服器。

4.伺服器用證書秘鑰解密客戶端發來的加密隨機數(premaster secret)。根據剛才雙方協商的對稱加密演算法,使用之前的三個隨機數去生成乙個對話秘 鑰,接下來的所有通訊加解密都使用這個對話秘鑰進行。

1.2 為什麼要用非對稱加密?

在進行ssl握手時(此時只是建立連線並沒有開始傳輸資料)一切的握手傳輸資料都是明文的。 而我們在握手成功後最終需要用來對資料進行加解密的是對稱加密方法。對稱加密方法的好處 是,體積小,效率高。缺點也是顯而易見,通訊的暗號或密碼絕對不能被他人知道。但是ssl 握手時是明文。所以為了不暴露對稱加密的暗號或密碼我們需要用非對稱加密的方式保護起來。

1.3 這樣的握手機制真的很安全嗎?

剛才的rsa握手機制我們注意到以下幾點:

1.一共生成了3次隨機數

2.伺服器需要將自己的證書公鑰傳送給客戶端已便客戶端生成premaster secret

那麼問題來了?

如果在你(客戶端)與伺服器中間有乙個每天都沒事情做,和你懟上了就一直監控收集你和 服務端之間的通訊資料的中間人。然後某一天伺服器的私鑰不小心洩露了,又剛好秘鑰被 這個中間人獲得了,因為握手時資料為明文而且為了客戶端生成premaster secret 服 務端傳送了公鑰,所以中間人很容易得到公鑰。最後不幸的事情發生了,中間人有公鑰也 有秘鑰。雖然伺服器馬上更換了證書。但是之前的資料,中間人全部都可以解密而獲得到。

那有什麼辦法可以規避?

上圖是基於dh演算法的ssl握手流程

dh和rsa有什麼區別嗎?

其他的步驟基本一致,只有一點。

rsa採用的是伺服器傳送證書公鑰,客戶端公鑰加密隨機數再傳輸給服務端解密最後 生成session key

而dh採用的是服務端傳送演算法的相應演算法加解密引數,客戶端也傳送演算法的相應引數。然後兩邊自己算自己的。最後對比,如果一致則建立session key,這樣就算洩露了,由於在建立連線時並沒有傳輸證書公鑰所以不會對之前的資料產生被破解的風險。這就是pfs(perfect forward secrecy)完美前向安全性。

排序小結 (上)

排序小結 c 語言實現 排序演算法大致可分為內部排序和外部排序,如果整個排序過程不需借助外部儲存器 如磁碟等 所有排序操作都在記憶體中完成,稱為內部排序 如果參與排序的元素很多,資料量極大,需借助外部儲存器進行排序操作,則稱為外部排序。本篇主講內部排序,歡迎各位提出意見或改進演算法。一 交換排序 1...

大二寒假小結(上)

今天打表,寒假第六天,現在是凌晨兩點。這短短的六天過得真是快。先簡要說說我都怎麼安排的吧 早上八點起床用手機百詞斬記下一百個單詞 中午吃完飯之後開始刷題,學演算法 晚上吃飯之後繼續刷 宵夜吃完之後靠在床頭繼續刷 最後碼幾篇部落格,總結白天學的東西,三點四點左右睡 給我的感覺是,從來沒有這麼痛快過!外...

Linux下程序間通訊(小結)上

之所以程序間需要通訊,包括進行資料傳輸 資源共享 通知事件和程序控制等等。現在linux使用的程序間通訊方式包括 一 管道 1 這裡主要指無名管道,具有如下特點 只能用於具有親緣關係的程序之間通訊。是乙個半雙工通訊模式,具有固定的讀寫端,先進先出。可以看成是一種特殊的檔案,可以使用普通的read 等...