1、第三屆中國Rust開發者大會簡談 Rust 與國密 TLSIntroduction on Rust and SM TLSTitle王江桐華為 公共開發部 嵌入式軟件能力中心就職于華為,目前正在使用 Rust 開發密碼相關模塊。Rustacean 在華為。Title簡談 Rust 與國密 TLSIntroduction on Rust and Shangmi TLS王江桐華為 公共開發部 嵌入式軟件能力中心Overview of Shangmi Cryptography#1 國密算法總覽Table of Contents目錄Use of Rust in Implementing Cryptogr
2、aphic Algorithms and Protocols#3 Rust 實現密碼與安全協議的優勢與現狀Introduction to Shangmi Algorithms and Protocols#2 國密算法與協議介紹Huawei Ylong Rust Cryptographic Framework#4 華為 Ylong Rust 密碼庫國密算法總覽Overview to Shangmi CryptographySection#1密碼算法安全目標密碼算法分類國密套件總覽密碼算法安全目標Security GoalsRust China Conf 2022 2023,Shanghai,Ch
3、ina通常來說,通過加密方式,對于信息的傳輸,我們希望達成以下五個目標:不同的攻擊方式可能針對于不同的目標進行攻擊。比如DoS(拒絕服務Denial of Service)攻擊就是針對可獲性進行的攻擊,使計算機或網絡無法提供正常的服務。機密性(Confidentiality)保證信息私密性和保密性真實性(Authentication)確保信息來自正確身份的對象完整性(Integrity)信息沒有被篡改接入控制(Access control)避免資源濫用可獲性(Availability)資源可以被使用密碼算法分類與應用Categories and Applications of Cryptogr
4、aphyRust China Conf 2022 2023,Shanghai,China國密概述Introduction of Shangmi CryptographyRust China Conf 2022 2023,Shanghai,China商用密碼是中華人民共和國政府用于非國家機密信息保護所采用的一系列密碼技術和密碼產品的總稱,其相關技術部分為國家秘密。商用密碼的研發及使用由國家密碼管理局統一管理。根據國家密碼管理局2007年4月23日公布的商用密碼產品使用管理規定和境外組織和個人在華使用密碼產品管理辦法:使用者密碼產品產地限制使用情況境外組織、個人境內可以使用境外需要使用境外生產的密
5、碼產品準用證中國法人、組織、公民境內可以使用境外不得使用國密算法與協議介紹Introduction to Shangmi Algorithms and ProtocolsSection#2國密套件算法簡介國密 TLS 簡介來源:國密算法加密芯片,支持國密全套件等安全算法,http:/www.bjlcs- of Shangmi CryptographyRust China Conf 2022 2023,Shanghai,China算法算法標準功能類型安全位數(bit)對應算法是否公開應用Sm1/分組加解密對稱加密128AES128否,僅以 IP 核的形式存在于芯片中智能 IC 卡、智能密碼鑰匙、
6、加密卡、加密機等Sm2GB/T 32918-2016 ISO/IEC 10118-3:2018ECC加解密,簽名驗簽,密鑰交換非對稱加密128ECC是TLCP、區塊鏈等場景,用于簽名驗簽等Sm3GM/T 0004-2012ISO/IEC 10118-3:2018計算密碼雜湊哈希256SHA256是TLCP、數字簽名及驗證、消息認證碼生成及驗證、隨機數生成、密鑰擴充Sm4GM/T 0002-2012ISO/IEC WD1 18033-3/AMD2分組加解密分組加密128AES128,但是更多次輪詢是TLCP、消息加解密,用于替代 DES/AES 等國際算法Sm7/分組加解密分組加密128否,僅以
7、 IP 核的形式存在于芯片中卡證類、票務類、支付與通卡類應用Sm9GM/T 0044-2016ISO/IEC 10118-3:2018標識密碼算法:簽名校驗,密鑰交換,密鑰封裝與加解密非對稱加密128是TLCP,適用于新興應用的安全保障(云、智能終端、物聯網),系統可以提供身份標識ZUCGB/T 33133-20213GPP TS 35.221 對稱加密算法流加密128EEA3&EIA3是國際組織 3GPP 推薦為 4G 無線通信的第三套國際加密和完整性的標準算法,為ISO/IEC 國際標準SM1Introduction of SM1Rust China Conf 2022 2023,Shan
8、ghai,ChinaSM1 是分組加密算法,實現對稱加密,分組長度和密鑰長度都為 128 位,對長消息進行加解密時,若消息長度過長,需要進行分組,如果消息長度不足,則要進行填充。保證數據機密性。算法安全保密強度及相關軟硬件實現性能與 AES 相當,該算法不公開,僅以 IP 核的形式存在于芯片中,調用該算法時,需要通過加密芯片的接口進行調用。采用該算法已經研制了系列芯片、智能 IC 卡、智能密碼鑰匙、加密卡、加密機等安全產品,廣泛應用于電子政務、電子商務及國民經濟的各個應用領域(包括國家政務通、警務通等重要領域)。SM2Introduction of SM2Rust China Conf 202
9、2 2023,Shanghai,ChinaSM2 為橢圓曲線(ECC)公鑰加密算法,非對稱加密,提供加解密、數字簽名、證書生成、密鑰交換功能。由于以上用例,也常用于區塊鏈或網絡安全密碼協議,如SSL/TLS、VPN。保證數據機密性、真實性和完整性。SM2 算法和 RSA 算法都是公鑰加密算法,SM2 算法是一種更先進安全的算法,其性能與安全性優于RSA,在我們國家商用密碼體系中被用來替換 RSA 算法。橢圓曲線可使用更少的運算位數來達成與RSA相等的安全性橢圓曲線與RSA的安全性都依賴于離散對數問題的復雜程度 離散對數問題:已知數A,B,且A=Bn,求數nSM2 加解密算法:流程圖Flowch
10、art of SM2 Encrypt and Decrypt AlgorithmRust China Conf 2022 2023,Shanghai,ChinaSM3Introduction of SM3Rust China Conf 2022 2023,Shanghai,ChinaSM3 為密碼雜湊算法,采用密碼散列(hash)函數標準,用于替代 MD5/SHA-1/SHA-2 等國際算法,是在 SHA-256 基礎上改進實現的一種算法,消息分組長度為 512 位,摘要值長度為 256 位,其中使用了異或、模、模加、移位、與、或、非運算,由填充、迭代過程、消息擴展和壓縮函數所構成。保證信息的
11、完整性。在商用密碼體系中,SM3 主要用于數字簽名及驗證、消息認證碼生成及驗證、隨機數生成、密鑰擴充等。據國家密碼管理局表示,其安全性及效率要高于 MD5 算法和 SHA-1 算法,與 SHA-256 相當。SM3 將對長度為l(l 264)比特的消息 m,經過填充和迭代壓縮,生成雜湊值,雜湊值長度為256比特。SM3Introduction of SM3Rust China Conf 2022 2023,Shanghai,ChinaSM4Introduction of SM4Rust China Conf 2022 2023,Shanghai,ChinaSM4 為無線局域網標準,是分組加密算
12、法,實現對稱加密,用于替代 DES/AES 等國際算法,SM4 算法與 AES 算法具有相同的密鑰長度和分組長度,均為 128 位。對長消息進行加解密時,若消息長度過長,需要進行分組,要消息長度不足,則要進行填充。加密算法與密鑰擴展算法都采用 32 輪非線性迭代結構,解密算法與加密算法的結構相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。SM7Introduction of SM7Rust China Conf 2022 2023,Shanghai,ChinaSM7 為分組加密算法,對稱加密,分組長度為128比特,密鑰長度為128比特。保證信息機密性。該算法不公開,應用包括身份識
13、別類應用(非接觸式 IC 卡、門禁卡、工作證、參賽證等),票務類應用(大型賽事門票、展會門票等),支付與通卡類應用(積分消費卡、校園一卡通、企業一卡通等)。SM9Introduction of SM9Rust China Conf 2022 2023,Shanghai,ChinaSM9 為標識加密算法(Identity-Based Cryptography),非對稱加密,標識加密將用戶的標識(如微信號、郵件地址、手機號碼、QQ 號等)作為公鑰,省略了交換數字證書和公鑰過程,使得安全系統變得易于部署和管理。提供簽名校驗,密鑰交換,密鑰封裝與加解密功能。由于以上用例,可以用于網絡安全密碼協議,如S
14、SL/TLS。保證數據機密性、真實性和完整性。在商用密碼體系中,SM9 主要用于用戶的身份認證,據新華網公開報道,SM9 的加密強度等同于 3072 位密鑰的 RSA 加密算法,也就是 128 位安全位數。適用于互聯網應用的各種新興應用的安全保障,如基于云技術的密碼服務、電子郵件安全、智能終端保護、物聯網安全、云存儲安全等等。這些安全應用可采用手機號碼或郵件地址作為公鑰,實現數據加密、身份認證、通話加密、通道加密等。SM9Introduction of SM9Rust China Conf 2022 2023,Shanghai,China引入標識密碼的優勢:實現基于身份的密碼體制,也就是公鑰與
15、用戶的身份信息即標識相關,從而比傳統意義上的公鑰密碼體制有許多優點,省去了證書管理等。因此,使用SM9算法不需要申請數字證書,適用于互聯網各種新興應用的安全保障,應用可采用手機號碼或郵件地址作為公鑰,實現數據加密、身份認證、通話加密、通道加密等安全應用,并具有使用方便,易于部署的特點。不同于傳統簽名算法的由用戶隨機選擇私鑰然后計算得到公鑰的方式,SM9 能夠實現用戶指定公鑰(即身份標識),密鑰生成中心通過公鑰計算私鑰。SM9Introduction of SM9Rust China Conf 2022 2023,Shanghai,ChinaSM9Introduction of SM9Rust
16、China Conf 2022 2023,Shanghai,ChinaZUCIntroduction of ZUCRust China Conf 2022 2023,Shanghai,ChinaZUC 為流密碼算法,是一種對稱加密加密,該機密性算法可適用于 3GPP LTE 通信中的加密和解密,該算法包括祖沖之算法(ZUC)、機密性算法(128-EEA3)和完整性算法(128-EIA3)三個部分。已經被國際組織 3GPP 推薦為 4G 無線通信的第三套國際加密和完整性的標準算法,并稱為ISO/IEC 國際標準。128-EEA3:流加密算法,使用 ZUC128-EIA3:MAC保證數據機密性、真
17、實性和完整性。ZUCIntroduction of ZUCRust China Conf 2022 2023,Shanghai,ChinaZUC 為流密碼算法,是一種對稱加密加密,該機密性算法可適用于 3GPP LTE 通信中的加密和解密,該算法包括祖沖之算法(ZUC)、機密性算法(128-EEA3)和完整性算法(128-EIA3)三個部分。已經被國際組織 3GPP 推薦為 4G 無線通信的第三套國際加密和完整性的標準算法,并稱為ISO/IEC 國際標準。128-EEA3:流加密算法,使用 ZUC128-EIA3:MAC保證數據機密性、真實性和完整性。國密算法在安全協議中的應用Applicat
18、ion of Shangmi Cryptography in ProtocolsRust China Conf 2022 2023,Shanghai,ChinaGM/T 0024-2014 SSL VPNGB/T 38636-2020 TLCPRFC 8998協議基于協議 TLS 1.1,但是版本號為 0 x0101基于協議 TLS 1.2,但是版本號為 0 x0101TLS 1.3 國密增強對稱加密算法SM1_CBC,SM4_CBCSM4_CBC,SM4_GCMSM4_GCM,SM4_CCM簽名算法RSA_SHA1,RSA_SM3,ECC_SM3,IBS_SM3ECC_SM3,IBC,RSA
19、_SHA256SM2_SM3密鑰交換ECDHE,IBSDH,ECC,IBC,RSAECDHE,ECC,IBSDH,RSASM2ECDHE密鑰派生PRF(HMAC SHA1,SM3)PRF(HMAC SHA1,SM3)HKDF(HMAC SM3)哈希算法SHA1,SM3SHA256,SM3SM3國密 TLSIntroduction of Shangmi TLSRust China Conf 2022 2023,Shanghai,China傳輸層安全性協議(Transport Layer Security,TLS)是一種密碼協議,主要目的是在兩個或多個通信計算機應用程序之間提供加密,包括隱私(機密
20、性),完整性和使用證書的真實性。TLS 協議廣泛用于電子郵件、即時消息和 IP 語音等應用程序,但它在 HTTPS 方面的使用仍然是最常見的。未通過 TLS 保護的 HTTP 鏈接通常使用端口 80,HTTPS 則使用端口 443;國密 TLS 指使用國密套件的 TLS 協議,包含如下規范:GM/T 0024-2014 SSL VPN技術規范:國密 SSL 協議,參考了 TLS 1.0 規范,整個協議握手與加密流程基本與其一致,但和 TLS 1.0 并不兼容;GB/T 38636-2020 信息安全技術 傳輸層密碼協議(TLCP):TLCP 協議,參考 TLS 1.2 規范,基本兼容 GM/T
21、 0024-2014 且廢棄此版本,對于密碼算法進行了更新,使用更安全的密碼算法;RFC 8998:基于 RFC 8446,擴展通用 TLS 1.3,增加國密套件支持,聲明 SM4_GCM_SM3、SM4_CCM_SM3 以及 SM2 單證書機制在 TLS 1.3 中的使用;當前 360 安全瀏覽器、奇安信可信瀏覽器等產品已支持 TLCP 協議,部分銀行或金融產品僅允許通過 TLCP 協議進行通信。國密算法在 TLS 安全協議中的應用Rust China Conf 2022 2023,Shanghai,ChinaTLCP/TLS 1.2 握手流程TLS 1.3 握手流程Application
22、of Shangmi Cryptography in TLS ProtocolRust 實現國密密碼與安全協議的優勢與現狀Use Rust in Cryptographic SystemsSection#2密碼系統實現的潛在問題Rust 的優勢國密實現生態來源:https:/ Problems of Cryptography SystemsRust China Conf 2022 2023,Shanghai,ChinaEmpirical Study:“You Really Shouldnt Roll Your Own Crypto:An Empirical Study of Vulnerabi
23、lities in Cryptographic Libraries”,MIT;對于8個大型、通用、開源的 C 與 C+密碼庫進行調研;現有的問題在于:密碼庫導致的一些錯誤,除了本身包含的一些算法錯誤以及內存錯誤,其他的一些問題出在用戶的使用錯誤,即文檔、API、等相關說明的缺失;37.2%的漏洞在于實現時的系統內存錯誤,其中19.4%是buffer問題,17.7%是資源管理問題;對于CVSS評分為 7.0-10.0 的嚴重錯誤中,只有 3.57%-11.11%的漏洞是密碼學相關,意味著其他的漏洞更多出自系統內存錯誤以及其他分類;密碼系統問題發現時間長,中位數為4.18年;大型的C/C+項目很難
24、保證代碼安全性;以 OpenSSL 為例,平均每1000行代碼就會引入一個攻擊點,具有安全漏洞。密碼系統實現的潛在問題Potential Problems of Cryptography SystemsRust China Conf 2022 2023,Shanghai,China數據來源于 OpenSSL 頁面 Vulnerabilities 以及 CVE Details,截止至2023.6.3,統計 2020 2023 近四年的 OpenSSL 相關安全漏洞:內存安全問題包括解引用空指針、緩沖區溢出、內存損壞,占總問題的 43.2%,High 及 Critical 問題的 46.7%。Lo
25、wMediumHighCriticalTotal解引用空指針06107協議漏洞10001實現邏輯錯誤754117計算溢出00101緩沖區溢出01315內存損壞02114指令注入00022Total81410537密碼系統實現的潛在問題Potential Problems of Cryptography SystemsRust China Conf 2022 2023,Shanghai,ChinaMemory Safety,Google,Analysis Based on 912 High or Critical Severity Security Bugs since 2015,Affecti
26、ng the Stable Channel谷歌等多個公司級項目調研:內存問題居多谷歌:Chromium項目中,70%的安全問題是內存安全問題,非安全的bug根錯誤也與此相同;90%的安卓漏洞是內存安全問題;蘋果:iOS和macOS中60-70%的漏洞是內存安全漏洞;總體來說,80%被利用的漏洞是內存安全問題相關的漏洞;密碼系統問題發現時間長谷歌:Chromium項目中,超過50%的安全問題發現時間超過1年,約25%超過3年;Rust:內存安全;性能與 C 持平。Rust:解決內存安全問題Advantages in Programming in RustRust China Conf 2022
27、2023,Shanghai,China類型安全內存安全并發安全靜態類型類型大小類型推導強類型借用檢查智能指針&RAII生命周期所有權系統Channel共享狀態所有權Send&Sync Trait編譯器靜態檢查高可靠123無GC、無Runtime、無解釋器零成本抽象后端LLVM優化支持C-ABI的FFI方式支持自定義內存分配器Rust性能基本和C、C+持平,適用于系統級編程領域強大編譯器全開源方式運作CargoCrates.ioDocs.rs自帶測試框架支持跨平臺多編程范式豐富的文檔手冊高性能高生產力國密實現生態Overview of Shangmi Cryptography Implement
28、ationRust China Conf 2022 2023,Shanghai,ChinaRustCryptoRinglibsmOpenSSLGmSSL BabaSSLTASSLCrypto+GMSMPyca/cryptographyJava Cryptography Archtecture語言RustCGoPythonJavaSM2加解密ECDSAECDHE-IEEEECDHE-GBTSM3SM4SM9加解密簽名與驗簽密鑰交換ZUCTLCPTLS 1.2國密支持TLS 1.3 國密支持國密實現生態Overview of Shangmi Cryptography ImplementationR
29、ust China Conf 2022 2023,Shanghai,ChinaRustCryptoRinglibsmOpenSSLGmSSL BabaSSLTASSLCrypto+GMSMPyca/cryptographyJava Cryptography Archtecture語言RustCGoPythonJavaSM2加解密ECDSAECDHE-IEEEECDHE-GBTSM3SM4SM9加解密簽名與驗簽密鑰交換ZUCTLCPTLS 1.2國密支持TLS 1.3 國密支持Rust 社區中對于國密的支持較弱;C 社區中 GmSSL 等庫提供完整國密能力支持,提供對應優化;Rust 社區中,對
30、于下載量超過 1W 且半年內有更新、在維護期的國密套件庫,僅有 RustCrypto 和 libsm,未審核,且缺少安全協議功能支持,在性能上也可以進一步優化。華為 Ylong Rust 密碼庫Huawei Ylong Rust Cryptographic FrameworkSection#4使用 Rust 實現國密框架國密算法在安全協議中的應用使用 Rust 實現國密框架Use Rust to Implement Shangmi Cryptography and Protocol FrameworkRust China Conf 2022 2023,Shanghai,China相較于其他語言
31、:Rust 實現內存安全,并且性能比肩 C 語言,框架具有一定競爭力;相較于 Rust 社區其他庫:社區中國密支持較弱,當前框架未經過審計,提供統一實現可以解決這一問題;期望:實現具有統一管理、標準并且通過審核保證規范性的Rust密碼庫:更好地實現社區暫時缺少支持的國密算法以及國密 TLS 協議,補充生態完整性;完成公司審計,保證規范性和安全性。使用 Rust 實現國密算法Use Rust to Implement Shangmi AlgorithmsRust China Conf 2022 2023,Shanghai,ChinaylongRustCryptoRinglibsmOpenSSLG
32、mSSL BabaSSLTASSL Crypto+GMSMPyca/cryptographyJava Cryptography Archtecture語言RustCGoPythonJavaSM2加解密ECDSAECDHE-IEEEECDHE-GBTSM3SM4SM9加解密已規劃簽名與驗簽已規劃密鑰交換 已規劃ZUCTLCPTLS 1.2國密支持TLS 1.3 國密支持Ylong Rust 計劃提供全套國密支持,并且提供統一管理、審核、與優化。使用 Rust 實現國密 TLS Use Rust to Implement Shangmi ProtocolsRust China Conf 2022
33、2023,Shanghai,ChinaTLCPGB/T 38636-2020TLS 1.2RFC 5246GB/T 38636-2020TLS 1.3RFC 8446RFC 8998Resumption機制SM4GCMSM3Sm2國密雙證書Sm2 GMT ECDHESm2ECC國際通用密碼套單證書機制Resumption+Ticket機制SM4GCMSM3Sm2國密單/雙證書Sm2 IEEE ECDHESm2ECC123國際通用密碼套單證書機制Resumption+Ticket機制SM4GCMSM3Sm2國密單證書Sm2 IEEE ECDHEylong_tls 支持版本以及特性提供C-API接
34、口方便C語言使用ylong_tlsRust AdaptC-API(.h+so.a)C APPRust APPRust純軟件實現指令加速(X86、ARM)no_std版本可兼容Openssl的APISafe Rust1.協議版本:TLCP&TLS1.2&TLS1.32.簽名算法:ECDSA、EDDSA、RSA3.密鑰交換算法:ECC、ECDHE4.加密算法:AES128-GCM、AES256-GCM、ChaCha20-Poly1305、SM4-GCM5.摘要算法:SHA256、SHA384、SM36.擴展:ALPN、SNI7.Resumption:SessionID(TLS1.2/TLCP)、T
35、icket(TLS1.2/TLS1.3)8.同步 API 以及基于可替換 Runtime 的異步 API9.支持單國密模式,單通用模式,或混合模式 TLS 使用安全協議:密碼算法:1.對稱加密:AES、Chacha20、SM42.加密模式:GCM、XTS、CBC、CFB、CTR、OFB3.非對稱加密:SM2、RSA4.簽名算法:ECDSA(Nist、Brainpool)、SM2、ED25519/448、RSA5.密鑰交換:ECDHE(Nist、Brainpool)、SM2、X25519/4486.哈希算法:SHA1/2/512/3、SM37.MAC:HMAC、Poly13058.安全隨機數:D
36、RBG使用 Rust 實現國密 TLS Use Rust to Implement Shangmi ProtocolsRust China Conf 2022 2023,Shanghai,China 提供通用/國密/混合 TLS 實現;TLS 配置結構圖,從 SetCipher 開始,增加國密/通用/混合設置接口,并校驗已有配置,預先告警,避免錯誤。使用 Rust 實現國密 TLS Use Rust to Implement Shangmi ProtocolsRust China Conf 2022 2023,Shanghai,China客戶端握手狀態機與各 TLS 版本差異消息使用 Rust
37、 實現國密 TLS Use Rust to Implement Shangmi ProtocolsRust China Conf 2022 2023,Shanghai,China服務端握手狀態機與各 TLS 版本差異消息使用 Rust 實現國密 TLS Use Rust to Implement Shangmi ProtocolsRust China Conf 2022 2023,Shanghai,China接口與 OpenSSL 對比:兼容 OpenSSL,便與 C 與其他語言組件切換遷移使用Ylong Rust 國密算法性能對比Performance Comparison of Ylong
38、 Rust Shangmi Cryptography FrameworkRust China Conf 2022 2023,Shanghai,China測試環境:操作系統:Ubuntu 18.04 x86_64CPU:Intel(R)Xeon(R)Gold 6278C CPU 2.60GHz內存:16GYlong Rust 算法實現在 x86架構下國密 SM3/4 性能優于 GmSSL;TLS 由于與 GmSSL 支持的部分算法不同,僅對比了 TLS 1.2 應用數據傳輸性能,在 x86 架構下優于或持平 GmSSL;未來仍會持續優化,或計劃開源。Thank you!參考ReferencesR
39、ust China Conf 2022 2023,Shanghai,ChinaTransport Layer Security,https:/en.wikipedia.org/wiki/Transport_Layer_Security You Really Shouldnt Roll Your Own Crypto:An Empirical Study of Vulnerabilities in Cryptographic Libraries,Blessing Jenny,Specter Michael A.,Weitzner Danieal J.,MIT,arXiv:2107.04940v1 cs.CR,https:/arxiv.org/abs/2107.04940,2021年6月11日GM/T 0024-2014 SSL VPN技術規范:https:/ 38636-2020 信息安全技術 傳輸層密碼協議(TLCP):https:/ 8998:https:/www.ietf.org/rfc/rfc8998.txt