SSL/TLS 與國密算法


SSL/TLS是用於網絡傳輸的加密協議,用於解決應用層傳輸安全問題。眾所周知,HTTP是明文傳輸,加上SSL后變成HTTPS,它的發展經歷經過了以下階段:

  1. SSL1.0,已廢除,不再使用。
  2. SSL2.0,RFC6176,已廢除。
  3. SSL3.0,RFC6101,基本廢除
  4. TLS1.0,RFC2246,少數在使用
  5. TLS1.1,RFC4346
  6. TLS1.2,RFC5246,目前廣泛使用
  7. TLS1.3,正在規划。

每種加密套件需要具備四項基礎功能:

  • 身份認證
  • 密鑰協商
  • 信息加密
  • 完整性校驗

在以上四項功能之上,實現加解密、簽名和驗簽等功能。

國密算法

國密算法是國家密碼局認定的國產密鑰算法,主要有以下幾種

  • SM1:對稱加密,密鑰、分組長度為128位,加密強度與AES相當,非公開,需要專用加密芯片配合。
  • SM2:基於ECC橢圓曲線的公鑰密鑰算法,包括
    • SM2-1數字簽名算法
    • SM2-2密鑰交換協議
    • SM2-3公鑰加密算法
      256位的SM2密碼強度優於2048位的RSA,運算速度比RSA快。
  • SM3:輸出長度為256位,適用於數字簽名和驗證消息認證碼。
  • SM4:對稱加密,密鑰長度與分組長度均為128位,用於無線局域網領域。
  • SM9:能夠實現由用戶指定公鑰,例如使用身份證號碼、郵箱地址等,通過密鑰生成中心得到私鑰。

以下是SSL和國密算法的對比

標准 身份認證 密鑰協商 對稱加密 完整性校驗
SSL/TLS 數字簽名 RSA、ECDH、ECDSA RC4、AES、DES等 SHA1/SHA256
國密算法 SM2-1 SM2 SM4 SM3

國密算法應用

  • 國密證書:使用國密算法(SM2-SM3)的標准X509格式證書
  • 國密SSL:采用國密算法,符合國密標准的安全傳輸協議。

新版Linux內核已經支持的SM3和SM4算法,SM2算法也於2020年10月26日納入Linux內核

國密規范規定發送證書時需要有簽名證書和加密證書,詳見雙證書

證書格式

X.509是數字證書的格式標准,用於標示通訊各方身份信息的一系列數據,具體有多種編碼形式,常用的有:

  • pem格式:將DER格式進行Base64編碼。
  • der格式:DER格式,二進制格式保存。

這兩種格式可以互轉。證書中含有申請者公鑰、申請者的組織信息、個人信息、簽發機構信息、證書有效時間和證書序列號等明文信息。

TLS握手過程

下圖為TLS握手過程:

基本流程如下:

  1. 客戶端向服務器索要並驗證公鑰
  2. 雙方協商生成"對話密鑰"
  3. 雙方采用"對話密鑰"進行后續加密通訊

具體流程在 SSL/TLS協議運行機制的概述,這篇文章中有很好的解釋,此處不再贅述。

在握手的最后階段,通訊雙方記錄對方發送過來的所有內容,並計算內容hash值,交於對方進行校驗。

這里需要注意,協商生成"對話密鑰"的過程,需要依賴三個隨機數,其中有2個明文隨機數,分別由客戶端和服務端生成,1個密文隨機數,由客戶端生成,稱為pre-master-key,並通過公鑰加密后傳給服務端,通訊雙方同步這三個隨機數后,采用事先商定的密鑰生成方法,生成后續會話的對話密鑰

握手協商階段

  • RSA密鑰交換算法
    • 客戶端生成一個隨機數,當做后續對稱加密密鑰,使用服務端的公鑰加密后回傳給服務端,服務的使用私鑰解密,雙方同步對稱密鑰。
  • DHE密鑰交換算法
    • 客戶端生成一個隨機值Xa,通過公式Pa=q^Xa mod p(p、q值固定)計算得到Pa,發送Pa到服務器。
    • 服務器生成一個隨機值Xb,通過公式Pb=q^Xb mod p,計算得到Pb,Pb發送給客戶端
    • 客戶端收到Pb后計算Sa=Pb^Xa mod p,服務端收到Pa后計算Sb=Pa^Xb mod p。
    • DHE算法保證了 Sa = Sb = S,S為對稱通訊密鑰。
  • ECDHE密鑰交換算法
    • 客戶端生成一個隨機值Ra,計算Pa(x,y) = Ra * Q(x,y),將Pa(x,y)發送至服務器
    • 服務端生成一個隨機值Rb,計算Pb(x,y) = Rb * Q(x,y),將Pb(x,y)發送至服務器
    • 客戶端計算Sa(x,y)=Ra *Pb(x,y),服務端計算Sb(x,y) = Rb * Pa(x,y)
    • 算法保證Sa=Sb=S,提取S的x向量作為對稱通訊密鑰

總結

本文簡要介紹了SSL和國密算法的基本概念、加密通道的建立流程和握手協商密鑰交換流程。

參考資料:

GMT 0024-2014 SSL VPN 技術規范
淺談國密算法
各種安全證書間的關系及相關操作
PKI - 三種密鑰交換算法詳解(RSA& DHE& ECDHE)及他們在SSL/TLS協議中的應用
ECC橢圓曲線加密算法:ECDH 和 ECDSA


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM