商密软件栈SIG是以国密算法为主的系统组件,在固件、bootloader、内核以及基础应用中支持国密算法,基于Anolis OS发行版构建国密技术栈及解决方案生态,致力于为行业提供基于国密的信息安全标准。(往期文章参考:技术解析:一文看懂 Anolis OS 国密生态|龙蜥专场)
欢迎更多开发者加入商密软件栈SIG:
网址:https://openanolis.cn/sig/crypto
邮件列表:tc@lists.openanolis.cn
以下为「商密软件栈SIG」 7月份的运营情况:
SIG目标
基于龙蜥操作系统(Anolis OS),在整个系统软件层面(包括硬件、固件、bootloader、内核以及OS)实现以商密算法为主的操作系统,结束一直以来商密算法生态碎片化的状况,在技术方面打造社区和生态,在资质合规方面致力于为行业提供基于商密的信息安全标准。
本月进展
- IMA场景的国密化技术支持已经全部被upstream社区合入,包括内核的支持和用户态工具ima-evm-utils
- Linux SM4 的AVX指令集优化实现已经合入上游社区
- SM4 GCM/CCM,RFC8998技术调研
- 第一版国密镜像,正在按计划使用BabaSSl替代OpenSSL,经过一些移植和验证,替换后BaseOS运行正常,目前没有发现大的问题,ima-evm-utils的国密支持还在进行backport工作
SIG长期规划
商密软件栈涉及到众多的上下游组件,团队,外部合作伙伴,上游社区,要尽可能团结其它团队的力量,消除不必要的重复开发,扩大推广和影响力,成为商密事实上的标准技术实现。全栈国密要求先具备从boot到业务运行环节各安全链路上所需的国密算法,有了通用的算法实现后,再针对各模块或者平台做针对性的优化,扩大社区版本技术影响力。帮助BabaSSL申请国密一级资质,为应用系统提供必要的合规属性,也为有合规需求的用户可以迁移到这个系统上来。
目前规划支持的国密场景:
- IMA场景下使用国密算法替代国际算法
- 内核模块签名认证流程的国密化支持
- Web场景下的RFC 8998协议支持,即TLS v1.3协议中支持使用国密算法套件
- 使用国密算法支持luks,dm-crypt场景
- SecureBoot中使用国密算法替换国际算法
- 内核SM4算法的指令集加速实现
- coreutils 支持sm3sum工具
- SM2优化,类似于NIST,主要优化点是SM2所用曲线的快速取模算法
- 集成intel QAT方案,大量哈希算法加速daemon
- 集成AMD,Hygon CCP加速方案
- 积极参与openssl 3.0.0 dev开发,加速release
- coreboot等未来可能替代UEFI的固件支持SM系统算法
Milestone
8月提供第一版全栈国密OS镜像,提供默认国密算法的系统基础组件:
- 使用BabaSSL替换系统默认的OpenSSL1.1.1,提供国密的系统运行支持,也提供给开发者无门槛的国密应用二次开发体验
- 内置sm3sum工具,用于计算文件SM3哈希算法,提供与md5sum,sha256sum一致的用户体验
- IMA全场景支持国密算法,包括ima-evm-utils使用国密算法签名,内核使用相应算法认证签名的合法性
- 内核模块签名支持使用国密算法
12月第二版本国密OS镜像:
- 基于5.10内核的国密镜像
- 内核支持SM4的avx/avx2加速实现,性能是纯软件实现的五倍左右,为商用提供必要支持
- Web场景支持RFC 8998协议,在TLS v1.3中支持使用国密套件,以及提供给用户最佳实践,可以在国密OS上开发自己的国密应用
- 争取更多的自研patch进入上游社区,减少由此导致的自定义rpm数量
当前国密软件栈的整体支持情况
当前相关的主要开源软件栈对国密的支持情况以及社区回馈统计:
开源软件名称 | SM2 | SM3 | SM4 | SM4-AVX | PKCS#7 | x509 | commit数量 | 修改行数 |
gnulib | - | ✅ | - | - | - | - | 5 | -5/+1046 |
libgcrypt | ✅ | ✅ | ✅ | Y | - | - | 13 | -64/+1630 |
linux | ✅ | Y | Y | ✅ | 开发中 | ✅ | 20 | -259/+5810 |
coreutils | - | 开发中 | - | - | - | - | 0 | 0 |
RustCrypto | ❌ | ✅ | Y | ❌ | - | - | 1 | -0/+851 |
openssl | Y | Y | Y | ❌ | Y | Y | 3 | -25/+97 |
ima-evm-utils | ✅ | ✅ | - | - | - | - | 5 | -13/+97 |
- ✅ 表示由OpenAnolis开发并已经贡献到开源软件中的特性
- “开发中”表示由OpenAnolis开发中的、或是开源软件正在进行review的特性
- “Y”表示开源软件已经支持且不是由OpenAnolis开发的
- ❌ 表示开源软件尚未支持
- “-”表示开源软件无需支持
主要成果
- gnulib库中实现了SM3算法的基础实现,gnulib是GNU软件栈中一个通用的基础库
- 实现了libgcrypt中基础的商密算法SM2/3/4
- 实现了Linux内核里SM2算法,以及支持了使用SM2/3算法的pkcs#7签名,X509证书
- 使用x86 avx指令集对内核的SM4算法加速,相比于纯软件实现,性能提升了4倍
- IMA场景支持使用SM2/3算法组合,包括内核和用户态工具ima-evm-utils的支持
- 在Rust生态中主流算法库RustCrypto中实现了SM3算法
- 修复了OpenSSL商密实现上的一些Bug
预告:下周将推出【跟踪诊断技术SIG】7月运营月报,敬请期待。欢迎更多开发者盆友、用户加入龙蜥社区( 官网:openanolis.cn)
关于龙蜥社区SIG
SIG是开放的,并争取让交付成果成为社区发行的一部分,由组内核心成员主导治理,可通过邮件列表和组内的成员进行交流。龙蜥社区目前有近20个SIG,包括商密软件栈、高性能存储技术SIG、Java语言与虚拟机SIG、跟踪诊断技术SIG、Cloud Kernel、OceanBase SIG等。
加入龙蜥社群
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】拉你入群;加入钉钉群:扫描下方钉钉群二维码或搜索钉钉群号(33311793)。欢迎开发者/用户加入龙蜥OpenAnolis社区交流,共同推进龙蜥社区的发展。加入我们,一起打造一个活跃的、健康的开源操作系统生态!
龙蜥社区钉钉交流群 商密软件栈SIG交流群