商密软件栈 SIG 双月月报(10-11)| 龙蜥SIG

简介: 商密软件栈SIG双月报(10-11)已送达,请查阅。

商密软件栈SIG :基于 Anolis OS,在整个系统软件层面(包括硬件,固件,bootloader,内核以及 OS)实现以国密算法为主的全栈国密操作系统,结束一直以来国密算法生态碎片化的状况,在技术方面打造社区和生态,在资质合规方面致力于为行业提供基于国密的信息安全标准。作者:张天佳,商密软件栈SIG负责人。


欢迎更多开发者加入商密软件栈SIG:

网址:https://openanolis.cn/sig/crypto

邮件列表:tc@lists.openanolis.cn

商密.png

SIG 目标

基于 Anolis Linux,在整个系统软件层面(包括硬件、固件、bootloader、内核以及OS)实现以商密算法为主的全软件栈商密操作系统,结束一直以来商密软件生态碎片化的状况,在技术方面打造社区和生态,在资质合规方面致力于为行业提供基于商密的操作系统信息安全标准。

10-11 月 SIG 进展

11月进展

  • BabaSSL 输出技术文章:TLS 协议握手证书压缩技术
  • 龙蜥大讲堂技术直播分享《构建商用密码操作系统》,输出对应的材料到龙蜥社区,观看直播人次达 6K 多,观看人数可观
  • 给 libkcapi 和 nettle 项目开发支持 SM3 算法,目前已经在社区 review
  • CentOS 的特有 patch 已经全部移植到了BabaSSL,BabaSSL 上游具备了兼容CentOS 的能力,这为以后出包提供了便利
  • KTLS 技术调研,目前 CCM 加密模式下仍然存在问题,KTLS 加密的数据在对端无法解密
  • 在调试环境已经可以运行 nginx 驱动的基于国密算法的 WEB 服务,客户端可以使用 curl,目前还没有桌面级浏览器支持

10月进展

  • 移植 Anolis OS 上的普通镜像 OpenSSL 的上游 patch 移植到 BabaSSL 项目
  • 联系可信计算组织 trustedcomputinggroup,对于规范和 TPM 实现中的不规范的算法名称 SM3_256 更正为 SM3,这个不规范的名称导致在多处要做特殊处理
  • 修复内核 SM4 加速实现中的两处错误,感谢 Abaci 和社区的报告以及测试工作
  • 内核 KTLS 支持使用 SM4 GCM/CCM 算法,已经完成 upstream
  • 输出 Anolis 商密 OS 最佳实践两篇,IMA 商密化和内核模块签名商密化的最佳实践
  • 在 OpenInfra Days 和 CLK 会议上做了《构建商用密码基础设施》的分享

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 系统算法
  • gpg 支持使用商密算法
  • libssh 支持使用商密算法

Milestone

9 月提供 Anolis 商密版 OS Beta 镜像,提供默认商密算法的系统基础组件:

  • 使用 BabaSSL 替换系统默认的 OpenSSL1.1.1,提供商密的系统运行支持,也提供给开发者无门槛的商密应用二次开发体验
  • 内置 sm3sum 工具,用于计算文件 SM3 哈希算法,提供与 md5sum、sha256sum一致的用户体验
  • IMA 全场景支持商密算法,包括 ima-evm-utils 使用商密算法签名,内核使用相应算法认证签名的合法性
  • 内核模块签名支持使用商密算法

22.01 月 Anolis 商密版 OS 正式镜像:

  • 集成商密 KTLS 特性内核的商密镜像
  • 内核支持 SM4 的 avx/avx2 加速实现,性能是纯软件实现的五倍左右,为商用提供必要支持
  • Web 场景支持 RFC 8998 协议,在 TLS v1.3 中支持使用国密套件,以及提供给用户最佳实践,可以在国密 OS 上开发自己的国密应用
  • 争取更多的自研 patch 进入上游社区,减少由此导致的自定义rpm数量

当前商密软件栈的整体支持情况

当前相关的主要开源软件栈对国密的支持情况以及社区回馈统计:

图片.png

  • ✅ 表示由OpenAnolis开发并已经贡献到开源软件中的特性
  • “开发中”表示由OpenAnolis开发中的、或是开源软件正在进行review的特性
  • “Y”表示开源软件已经支持且不是由OpenAnolis开发的
  • ❌ 表示开源软件尚未支持
  • “-”表示开源软件无需支持

相关阅读:

直播回顾:如何基于Linux内核构建起商用密码基础设施?网不好怎么办?TLS握手带宽直降80%,BabaSSL是怎么做到的?Anolis商密OS最佳实践之内核模块签名商密化

Anolis商密OS最佳实践之IMA商密化 | 龙蜥SIG

—— 完 ——

加入龙蜥社群

加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】拉你入群;加入钉钉群:扫描下方钉钉群二维码。欢迎开发者/用户加入龙蜥社区(OpenAnolis)交流,共同推进龙蜥社区的发展,一起打造一个活跃的、健康的开源操作系统生态!开发者社区.png

关于龙蜥社区

龙蜥社区(OpenAnolis)是由企事业单位、高等院校、科研单位、非营利性组织、个人等按照自愿、平等、开源、协作的基础上组成的非盈利性开源社区。龙蜥社区成立于2020年9月,旨在构建一个开源、中立、开放的Linux上游发行版社区及创新平台。

短期目标是开发龙蜥操作系统(Anolis OS)作为CentOS替代版,重新构建一个兼容国际Linux主流厂商发行版。中长期目标是探索打造一个面向未来的操作系统,建立统一的开源操作系统生态,孵化创新开源项目,繁荣开源生态。

龙蜥OS 8.4已发布,支持x86_64和ARM64架构,完善适配Intel、飞腾、海光、兆芯、鲲鹏芯片。

欢迎下载:

https://openanolis.cn/download

加入我们,一起打造面向未来的开源操作系统!

https://openanolis.cn/

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
8天前
|
存储 人工智能 C语言
数据结构基础详解(C语言): 栈的括号匹配(实战)与栈的表达式求值&&特殊矩阵的压缩存储
本文首先介绍了栈的应用之一——括号匹配,利用栈的特性实现左右括号的匹配检测。接着详细描述了南京理工大学的一道编程题,要求判断输入字符串中的括号是否正确匹配,并给出了完整的代码示例。此外,还探讨了栈在表达式求值中的应用,包括中缀、后缀和前缀表达式的转换与计算方法。最后,文章介绍了矩阵的压缩存储技术,涵盖对称矩阵、三角矩阵及稀疏矩阵的不同压缩存储策略,提高存储效率。
|
10天前
|
存储 C语言
数据结构基础详解(C语言): 栈与队列的详解附完整代码
栈是一种仅允许在一端进行插入和删除操作的线性表,常用于解决括号匹配、函数调用等问题。栈分为顺序栈和链栈,顺序栈使用数组存储,链栈基于单链表实现。栈的主要操作包括初始化、销毁、入栈、出栈等。栈的应用广泛,如表达式求值、递归等场景。栈的顺序存储结构由数组和栈顶指针构成,链栈则基于单链表的头插法实现。
|
11天前
|
Java
【数据结构】栈和队列的深度探索,从实现到应用详解
本文介绍了栈和队列这两种数据结构。栈是一种后进先出(LIFO)的数据结构,元素只能从栈顶进行插入和删除。栈的基本操作包括压栈、出栈、获取栈顶元素、判断是否为空及获取栈的大小。栈可以通过数组或链表实现,并可用于将递归转化为循环。队列则是一种先进先出(FIFO)的数据结构,元素只能从队尾插入,从队首移除。队列的基本操作包括入队、出队、获取队首元素、判断是否为空及获取队列大小。队列可通过双向链表或数组实现。此外,双端队列(Deque)支持两端插入和删除元素,提供了更丰富的操作。
14 0
【数据结构】栈和队列的深度探索,从实现到应用详解
|
15天前
|
Linux C++ Windows
栈对象返回的问题 RVO / NRVO
具名返回值优化((Name)Return Value Optimization,(N)RVO)是一种优化机制,在函数返回对象时,通过减少临时对象的构造、复制构造及析构调用次数来降低开销。在C++中,通过直接在返回位置构造对象并利用隐藏参数传递地址,可避免不必要的复制操作。然而,Windows和Linux上的RVO与NRVO实现有所不同,且接收栈对象的方式也会影响优化效果。
|
18天前
crash —— 获取内核地址布局、页大小、以及栈布局
crash —— 获取内核地址布局、页大小、以及栈布局
|
1月前
|
算法 C语言 C++
【practise】栈的压入和弹出序列
【practise】栈的压入和弹出序列
|
1月前
栈的几个经典应用,真的绝了
文章总结了栈的几个经典应用场景,包括使用两个栈来实现队列的功能以及利用栈进行对称匹配,并通过LeetCode上的题目示例展示了栈在实际问题中的应用。
栈的几个经典应用,真的绝了
|
1月前
|
负载均衡 网络协议 安全
DKDP用户态协议栈-kni
DKDP用户态协议栈-kni
|
30天前
|
存储 安全 编译器
缓冲区溢出之栈溢出(Stack Overflow
【8月更文挑战第18天】
52 3
|
1月前
|
负载均衡 网络协议 安全
DPDK用户态协议栈-KNI
DPDK用户态协议栈-KNI

热门文章

最新文章