HTTPS-各種加密方式

ML李嘉圖發表於2022-03-30

推薦閱讀:https://www.cnblogs.com/zwtblog/tag/計算機網路/

HTTPS

SSL即安全套接字層,SSL 在1999年被IETF(網際網路工程組)更名為TLS,即傳輸安全層,直到現在,TLS 一共出現過三個版本,1.1、 1.2 和1.3,目前最廣泛使用的是1.2,所以接下來的探討都是基於TLS 1.2的版本上的。

TLS用於兩個通訊應用程式之間提供保密性和資料完整性

TLS由 記錄協議、握手協議、警告協議、變更密碼規範協議、擴充套件協議等幾個子協議組成,綜合使用了對稱加密、非對稱加密、身份認證等許多密碼學前沿技術。

ECDHE - ECDSA-AES256-GCM- SHA384

因為TLS的密碼套件規範,基本格式就是

金鑰交換演算法 - 簽名演算法 - 對稱加密演算法 - 摘要演算法組成的一個密碼串

有時候還有分組模式

TLS在根本上使用對稱加密和非對稱加密兩種形式。

對稱加密(AES)

需要對加密和解密使用相同金鑰加密演算法。由於其速度快,對稱性加密通常在訊息傳送方需要加密大量資料時使用。對稱性加密也稱為金鑰加密

所謂對稱,就是採用這種加密方法的雙方使用方式用同樣的金鑰進行加密和解密。金鑰是控制加密及解密過程的指令。演算法是一組規則,規定如何進行加密和解密。

因此加密的安全性不僅取決於加密演算法本身,金鑰管理的安全性更是重要。因為加密和解密都使用同一個金鑰,如何把金鑰安全地傳遞到解密者手上就成了必須要解決的問題。

在對稱加密演算法中常用的演算法有:DES3DES、TDEA、Blowfish、RC2、RC4、RC5IDEA、SKIPJACK等。

對稱加密演算法的優點是演算法公開、計算量小、加密速度快、加密效率高

對稱加密演算法的缺點是在資料傳送前,傳送方和接收方必須商定好祕鑰,然後使雙方都能儲存好祕鑰。如果一方的祕鑰被洩露,那麼加密資訊也就不安全了。

另外,每對使用者每次使用對稱加密演算法時,都需要使用其他人不知道的獨一祕鑰,這會使得收、發雙方所擁有的鑰匙數量巨大,金鑰管理成為雙方的負擔。


非對稱加密(RSA)

1976年,美國學者Dime和Henman為解決資訊公開傳送和金鑰管理問題,提出一種新的金鑰交換協議,允許在不安全的媒體上的通訊雙方交換資訊,安全地達成一致的金鑰,這就是“公開金鑰系統”。

對稱加密演算法不同,非對稱加密演算法需要兩個金鑰公開金鑰(publickey)和私有金鑰(privatekey)。

公開金鑰與私有金鑰是一對

  • 如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密;

  • 如果用私有金鑰對資料進行加密,那麼只有用對應的公開金鑰才能解密。

  • 因為加密和解密使用的是兩個不同的金鑰,所以這種演算法叫作非對稱加密演算法

密碼體制的安全性依賴於金鑰的安全性,現代密碼學不追求加密演算法的保密性,而是追求加密演算法的完備,即:使攻擊者在不知道金鑰的情況下,沒有辦法從演算法找到突破口。

根據加解密演算法所使用的金鑰是否相同,或能否由加(解)密金鑰簡單地求得解(加)密金鑰。密碼體制可分為對稱密碼體制和非對稱密碼體制。

非對稱密碼體制也叫公鑰加密技術,該技術是針對私鑰密碼體制(對稱加密演算法)的缺陷被提出來的。

與對稱密碼體制不同,公鑰加密系統中,加密和解密是相對獨立的,加密和解密會使用兩把不同的金鑰,加密金鑰(公開金鑰)向公眾公開,誰都可以使用,解密金鑰(祕密金鑰)只有解密人自己知道,非法使用者根據公開的加密金鑰無法推算出解密金鑰,這樣就大大加強了資訊保護的力度。

公鑰密碼體制不僅解決了金鑰分配的問題,它還為簽名和認證提供了手段。

非對稱密碼演算法有很多,其中比較典型的是RSA演算法,它的數學原理是大素數的分解。

工作過程

1、乙方生成一對金鑰(公鑰和私鑰)並將公鑰向其它方公開。

2、得到該公鑰的甲方使用該金鑰對機密資訊進行加密後再傳送給乙方。

3、乙方再用自己儲存的另一把專用金鑰(私鑰)對加密後的資訊進行解密。乙方只能用其專用金鑰(私鑰)解密由對應的公鑰加密後的資訊。

在傳輸過程中,即使攻擊者截獲了傳輸的密文,並得到了乙的公鑰,也無法破解密文,因為只有乙的私鑰才能解密密文。

同樣,如果乙要回復加密資訊給甲,那麼需要甲先公佈甲的公鑰給乙用於加密,甲自己儲存甲的私鑰用於解密。

分析

非對稱加密演算法在使用時需要同時擁有公開金鑰和私有金鑰,公開金鑰與私有金鑰相對應,如果在對資料的加密過程中使用了公開金鑰,那麼只有使用相對應的私有金鑰才能解密;

反之,如果在對資料進行加密時使用了私有金鑰,也只有使用與之相對應的公開金鑰才能解密。

非對稱加密演算法對傳資訊進行加密的基本過程是:

  • 甲方首先生成一對金鑰同時將其中的一把作為公開金鑰;
  • 得到公開金鑰的乙方再使用該金鑰對需要加密的資訊進行加密後再傳送給甲方;
  • 甲方再使用另一把對應的私有金鑰對加密後的資訊進行解密,這樣就實現了機密資料傳輸。

與上面的工作過程同理。

非對稱加密演算法的另一種加密過程是:

  • 甲方使用自己的私有金鑰對資訊進行加密後再傳送給乙方;
  • 乙方使用甲方提供的公開金鑰對加密後的資訊進行解密;
  • 如果成功解密即可證實資訊確實是由甲方所發,並非他人冒充,這就是常用的數字簽名技術

優缺點

非對稱加密演算法的特點是演算法強度複雜,其安全性依賴於演算法與金鑰。由於其演算法複雜,而使得加密解密的速度遠遠低於對稱加密演算法,因此不適用於資料量較大的情況。

由於非對稱加密演算法有兩種金鑰,其中一個是公開的,所以在金鑰傳輸上不存在安全性問題,使得其在傳輸加密資料的安全性上又高於對稱加密演算法。

常用演算法

  • RSA:RSA 是一種目前應用非常廣泛、歷史也比較悠久的非對稱祕鑰加密技術,在1977年被麻省理工學院的羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)三位科學家提出,由於難於破解,RSA 是目前應用最廣泛的數字加密和簽名技術,比如國內的支付寶就是通過RSA演算法來進行簽名驗證。它的安全程度取決於祕鑰的長度,目前主流可選祕鑰長度為 1024位、2048位、4096位等,理論上祕鑰越長越難於破解,按照維基百科上的說法,小於等於256位的祕鑰,在一臺個人電腦上花幾個小時就能被破解,512位的祕鑰和768位的祕鑰也分別在1999年和2009年被成功破解,雖然目前還沒有公開資料證實有人能夠成功破解1024位的祕鑰,但顯然距離這個節點也並不遙遠,所以目前業界推薦使用 2048 位或以上的祕鑰,不過目前看 2048 位的祕鑰已經足夠安全了,支付寶的官方文件上推薦也是2048位,當然更長的祕鑰更安全,但也意味著會產生更大的效能開銷。
  • DSA:既 Digital Signature Algorithm,數字簽名演算法,他是由美國國家標準與技術研究所(NIST)與1991年提出。和 RSA 不同的是 DSA 僅能用於數字簽名,不能進行資料加密解密,其安全性和RSA相當,但其效能要比RSA快。
  • ECDSA:Elliptic Curve Digital Signature Algorithm,橢圓曲線簽名演算法,是ECC(Elliptic curve cryptography,橢圓曲線密碼學)和 DSA 的結合,橢圓曲線在密碼學中的使用是在1985年由Neal Koblitz和Victor Miller分別獨立提出的,相比於RSA演算法,ECC 可以使用更小的祕鑰,更高的效率,提供更高的安全保障,據稱256位的ECC祕鑰的安全性等同於3072位的RSA祕鑰,和普通DSA相比,ECDSA在計算祕鑰的過程中,部分因子使用了橢圓曲線演算法。

混合加密

機密性

RSA的運算速度非常慢,而AES的加密速度比較快,而TLS正是使用了這種混合加密方式。


摘要演算法&認證

幾乎所有的數字簽名方案都要和快速高效的摘要演算法(Hash函式)一起使用,當公鑰演算法與摘要演算法結合起來使用時,便構成了一種有效地數字簽名方案。

這個過程是:

  • 首先用摘要演算法對訊息進行摘要,然後在把摘要值用信源的私鑰加密;
  • 接收方先把接收的明文用同樣的摘要演算法摘要,形成“準籤體”,然後再把準籤體與用信源的公鑰解密出的“籤體”進行比較,如果相同就認為訊息是完整的,否則訊息不完整。

這種方法使公鑰加密只對訊息摘要進行操作,因為一種摘要演算法的摘要訊息長度是固定的,而且都比較“短”(相對於訊息而言),正好符合公鑰加密的要求。這樣效率得到了提高,而其安全性也並未因為使用摘要演算法而減弱。

參考

相關文章