密碼學基礎
在正式講解https協議之前,我們首先要知道一些密碼學的知識。
明文: 明文指的是未被加密過的原始資料。
密文:明文被某種加密演算法加密之後,會變成密文,從而確保原始資料的安全。密文也可以被解密,得到原始的明文。
金鑰:金鑰是一種引數,它是在明文轉換為密文或將密文轉換為明文的演算法中輸入的引數。金鑰分為對稱金鑰與非對稱金鑰,分別應用在對稱加密和非對稱加密上。
對稱加密:對稱加密又叫做私鑰加密,即資訊的傳送方和接收方使用同乙個金鑰去加密和解密資料。對稱加密的特點是演算法公開、加密和解密速度快,適合於對大資料量進行加密,常見的對稱加密演算法有des、3des、tdea、blowfish、rc5和idea。
其加密過程如下:明文 + 加密演算法 + 私鑰 => 密文
解密過程如下:密文 + 解密演算法 + 私鑰 => 明文
對稱加密中用到的金鑰叫做私鑰,私鑰表示個人私有的金鑰,即該金鑰不能被洩露。
其加密過程中的私鑰與解密過程中用到的私鑰是同乙個金鑰,這也是稱加密之所以稱之為「對稱」的原因。由於對稱加密的演算法是公開的,所以一旦私鑰被洩露,那麼密文就很容易被破解,所以對稱加密的缺點是金鑰安全管理困難。
非對稱加密:非對稱加密也叫做公鑰加密。非對稱加密與對稱加密相比,其安全性更好。對稱加密的通訊雙方使用相同的金鑰,如果一方的金鑰遭洩露,那麼整個通訊就會被破解。而非對稱加密使用一對金鑰,即公鑰和私鑰,且二者成對出現。私鑰被自己儲存,不能對外洩露。公鑰指的是公共的金鑰,任何人都可以獲得該金鑰。用公鑰或私鑰中的任何乙個進行加密,用另乙個進行解密。
被公鑰加密過的密文只能被私鑰解密,過程如下:
明文 + 加密演算法 + 公鑰 => 密文, 密文 + 解密演算法 + 私鑰 => 明文
被私鑰加密過的密文只能被公鑰解密,過程如下:
明文 + 加密演算法 + 私鑰 => 密文, 密文 + 解密演算法 + 公鑰 => 明文
由於加密和解密使用了兩個不同的金鑰,這就是非對稱加密「非對稱」的原因。
非對稱加密的缺點是加密和解密花費時間長、速度慢,只適合對少量資料進行加密。
在非對稱加密中使用的主要演算法有:rsa、elgamal、rabin、d-h、ecc(橢圓曲線加密演算法)等。
https通訊過程
https協議 = http協議 + ssl/tls協議,在https資料傳輸的過程中,需要用ssl/tls對資料進行加密和解密,需要用http對加密後的資料進行傳輸,由此可以看出https是由http和ssl/tls一起合作完成的。
ssl的全稱是secure sockets layer,即安全套接層協議,是為網路通訊提供安全及資料完整性的一種安全協議。ssl協議在2023年被netscape發明,後來各個瀏覽器均支援ssl,其最新的版本是3.0
tls的全稱是transport layer security,即安全傳輸層協議,最新版本的tls(transport layer security,傳輸層安全協議)是ietf(internet engineering task force,internet工程任務組)制定的一種新的協議,它建立在ssl 3.0協議規範之上,是ssl 3.0的後續版本。在tls與ssl3.0之間存在著顯著的差別,主要是它們所支援的加密演算法不同,所以tls與ssl3.0不能互操作。雖然tls與ssl3.0在加密演算法上不同,但是在我們理解https的過程中,我們可以把ssl和tls看做是同乙個協議。
https為了兼顧安全與效率,同時使用了對稱加密和非對稱加密。資料是被對稱加密傳輸的,對稱加密過程需要客戶端的乙個金鑰,為了確保能把該金鑰安全傳輸到伺服器端,採用非對稱加密對該金鑰進行加密傳輸,總的來說,對資料進行對稱加密,對稱加密所要使用的金鑰通過非對稱加密傳輸。
以下來自於limboy的部落格
https在傳輸的過程中會涉及到三個金鑰:
伺服器端的公鑰和私鑰,用來進行非對稱加密
客戶端生成的隨機金鑰,用來進行對稱加密
乙個https請求實際上包含了兩次http傳輸,可以細分為8步。
1.客戶端向伺服器發起https請求,連線到伺服器的443埠
2.伺服器端有乙個金鑰對,即公鑰和私鑰,是用來進行非對稱加密使用的,伺服器端儲存著私鑰,不能將其洩露,公鑰可以傳送給任何人。
3.伺服器將自己的公鑰傳送給客戶端。
4.客戶端收到伺服器端的公鑰之後,會對公鑰進行檢查,驗證其合法性,如果發現發現公鑰有問題,那麼https傳輸就無法繼續。嚴格的說,這裡應該是驗證伺服器傳送的數字證書的合法性,關於客戶端如何驗證數字證書的合法性,下文會進行說明。如果公鑰合格,那麼客戶端會生成乙個隨機值,這個隨機值就是用於進行對稱加密的金鑰,我們將該金鑰稱之為client key,即客戶端金鑰,這樣在概念上和伺服器端的金鑰容易進行區分。然後用伺服器的公鑰對客戶端金鑰進行非對稱加密,這樣客戶端金鑰就變成密文了,至此,https中的第一次http請求結束。
5.客戶端會發起https中的第二個http請求,將加密之後的客戶端金鑰傳送給伺服器。
6.伺服器接收到客戶端發來的密文之後,會用自己的私鑰對其進行非對稱解密,解密之後的明文就是客戶端金鑰,然後用客戶端金鑰對資料進行對稱加密,這樣資料就變成了密文。
7.然後伺服器將加密後的密文傳送給客戶端。
8.客戶端收到伺服器傳送來的密文,用客戶端金鑰對其進行對稱解密,得到伺服器傳送的資料。這樣https中的第二個http請求結束,整個https傳輸完成。
大資料時代的資料到底是怎麼回事?
說起大資料那就不得不說到資訊,之前的人們經常會將知識的獲得概念稱為資訊,於是資訊產業 資訊科技以及資訊化的概念出現了。那麼,資訊與資料是一回事嗎?其實兩者是不同的,非常容易混淆和困惑。舉例而言,電腦裡儲存的東西,如果能看得懂那就是資訊,但如果看不懂,那就不是資訊,而稱為資料。資料可以是大量的,但資訊...
https的加密解密是怎麼寫的?
原文 至 文章中有些不對的地方,比如用證書對改隨機碼進行加密,這個是不對,證書本身並沒有加密的的功能,加密的演算法應該還是tsl ssl決定的。我們都知道https能夠加密資訊,以免敏感資訊被第三方獲取。所以很多銀行 或電子郵箱等等安全級別較高的服務都會採用https協議。https簡介 https...
一文看懂HTTPS的實現原理
在此之前,我們先來總結一下在http協議中會存在的一些問題。由於http協議本身是不具備加密功能的,所以也無法做到對通訊整體 使用http協議通訊的請求和響應的內容 進行加密。也就是說http報文使用明文 指未經過加密的報文 的方式傳送。http明文協議的缺陷是導致資料洩密 資料篡改 流量劫持 釣魚...