《王江桐-20230613_2023RustChinaConf_简谈 Rust 与国密 TLS.pdf》由会员分享,可在线阅读,更多相关《王江桐-20230613_2023RustChinaConf_简谈 Rust 与国密 TLS.pdf(44页珍藏版)》请在三个皮匠报告上搜索。
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