商密SIG月度动态:文件加密支持SM4算法、Anolis 8.8将默认集成 | 龙蜥 SIG

news2024/11/24 22:53:16

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

01  SIG 近况摘要

本月分别合入 Linux 内核上游和 Anolis 内核主线 commit 22个,代码量 6000 多行,包括性能优化,更多的国密场景支持,以及 Bugfix 等。

在保证兼容性的同时,也为 OpenSSL 1.1.1 版本支持完整的 SM2 签名和验签能力,会在即将发布的 Anolis 8.8 中默认集成

Linux 原生文件系统加密子系统 fscrypt,支持使用 SM4 XTS/CTS 算法加密文件和目录。

持续补齐 Linux 内核 Arm64 架构下的国密性能优化,涉及 SM3 以及 SM4 的诸多加密模式,包括 XTS/CTS/CMAC/GCM/CCM 等,Linux 内核上游也同步得到了支持,可以充分发挥出倚天的性能优势

商密 SIG 的重点项目 Tongsuo,成功获得商用密码产品认证,这是全球首个获得该认证的开源项目,感谢蚂蚁团队对此项目的支持,点击这里了解详细信息 。

02  SIG 月度详细进展

1、国密 SM3/4 算法性能优化

以下的优化全部针对 Arm64 架构,已在龙蜥内核 cloud-kernel 5.10 中得到支持,同时优化 patch 也都贡献到了 Linux 内核上游。

以下各项的数据均是在倚天 710 的环境下,使用内核 tcrypt 模块测试得到的数据,数据经过了表格化处理,单位是 Mbyte/s。

  • 支持了 SM3 的 NEON 指令集优化,相比于软件实现,性能提升约 11%,下表是软件实现 sm3-generic,NEON 优化和 Crypto Extension 优化的性能数据,其中横坐标是块大小:

update-size    |      16      64     256    1024    2048    4096    8192---------------+--------------------------------------------------------sm3-generic    |  185.24  221.28  301.26  307.43  300.83  308.82  308.91sm3-neon       |  171.81  220.20  322.94  339.28  334.09  343.61  343.87sm3-ce         |  227.48  333.48  502.62  527.87  520.45  534.91  535.40
  • 基于 SM4 的 MAC 算法,支持了 CE 指令集的优化,性能提升约 85%,以下是优化前后的性能对比数据:

优化前:

update-size    |      16      64     256    1024    2048    4096    8192---------------+--------------------------------------------------------cmac(sm4-ce)   |  293.33  403.69  503.76  527.78  531.10  535.46  535.81xcbc(sm4-ce)   |  292.83  402.50  504.02  529.08  529.87  536.55  538.24cbcmac(sm4-ce) |  318.42  415.79  497.12  515.05  523.15  521.19  523.01

优化后:

update-size    |      16      64     256    1024    2048    4096    8192---------------+--------------------------------------------------------cmac-sm4-ce    |  371.99  675.28  903.56  971.65  980.57  990.40  991.04xcbc-sm4-ce    |  372.11  674.55  903.47  971.61  980.96  990.42  991.10cbcmac-sm4-ce  |  371.63  675.33  903.23  972.07  981.42  990.93  991.45
  • SM4 算法的 CTS/XTS 模式,支持了 CE 指令集优化,CTS 是 CBC 模式的一个变种,通过密文窃取技术支持加密任意长度的数据(CBC 只支持 16 字节对齐的数据大小),主要用于文件名路径的加密,XTS 模式在非变长的磁盘加密和文件加密中应用广泛,以下是优化前后的性能对比数据:

优化前:

 block-size |      16       64      128      256     1024     1420     4096------------+--------------------------------------------------------------CTS-CBC enc |  286.09   297.17   457.97   627.75   868.58   900.80   957.69CTS-CBC dec |  286.67   285.63   538.35   947.08  2241.03  2577.32  3391.14    XTS enc |  117.17   430.56   732.92  1134.98  2007.03  2136.23  2347.20    XTS dec |  116.89   429.02   733.40  1132.96  2006.13  2130.50  2347.92

优化后:

 block-size |      16       64      128      256     1024     1420     4096------------+--------------------------------------------------------------CTS-CBC enc |  288.19   428.80   593.57   741.04   911.73   931.80   950.00CTS-CBC dec |  292.22   468.99   838.23  1380.76  2741.17  3036.42  3409.62    XTS enc |  224.68   798.91  1248.08  1714.60  2413.73  2467.84  2612.62    XTS dec |  229.85   791.34  1237.79  1720.00  2413.30  2473.84  2611.95
  • SM4 CCM/GCM 模式支持使用 CE 指令集优化,CCM 和 GCM 是带认证的 AEAD 算法,是 TLS 1.3 协议中非常主流的算法模式,这也为 TLS 协议支持国密提供了性能保证。

CCM 模式是计算明文的 CBCMAC 认证码,通过并行加解密操作和计算 CBCMAC 认证码来达到优化的目的。GCM 模式是对密文计算 GHASH,因此加密时是先执行加密操作再计算 GHASH,通过同步加密四路的输入来实现优化,解密时可以并行执行解密操作和计算 GHASH,但受 Arm64 SIMD 寄存器限制,只能同时处理三路的输入,即便如此,解密的性能还是高于加密性能。

以下是优化前后的性能对比数据,测试环境同上,其中 mb 是内核使用 multi buffer 时的数据,优化前 CCM 的 driver 是 rfc4309(ccm_base(ctr-sm4-ce,cbcmac-sm4-ce)),GCM 的 driver 是 gcm_base(ctr-sm4-ce,ghash-generic):

优化前:

block-size |     16      64      256      512     1024     1420     4096     8192-----------+---------------------------------------------------------------------CCM enc    |  35.07  125.40   336.47   468.17   581.97   619.18   712.56   736.01CCM dec    |  34.87  124.40   335.08   466.75   581.04   618.81   712.25   735.89CCM mb enc |  34.71  123.96   333.92   465.39   579.91   617.49   711.45   734.92CCM mb dec |  34.42  122.80   331.02   462.81   578.28   616.42   709.88   734.19GCM enc    |  25.24   64.65   104.66   116.69   123.81   125.12   129.67   130.62GCM dec    |  25.40   64.80   104.74   116.70   123.81   125.21   129.68   130.59GCM mb enc |  24.95   64.06   104.20   116.38   123.55   124.97   129.63   130.61GCM mb dec |  24.92   64.00   104.13   116.34   123.55   124.98   129.56   130.48

优化后:

block-size |     16      64      256      512     1024     1420     4096     8192-----------+---------------------------------------------------------------------CCM enc    |  77.12  249.82   569.94   725.17   839.27   867.71   952.87   969.89CCM dec    |  75.90  247.26   566.29   722.12   836.90   865.95   951.74   968.57CCM mb enc |  75.98  245.25   562.91   718.99   834.76   864.70   950.17   967.90CCM mb dec |  75.06  243.78   560.58   717.13   833.68   862.70   949.35   967.11GCM enc    | 108.62  397.18   971.60  1283.92  1522.77  1513.39  1777.00  1806.96GCM dec    | 116.36  398.14  1004.27  1319.11  1624.21  1635.43  1932.54  1974.20GCM mb enc | 107.13  391.79   962.05  1274.94  1514.76  1508.57  1769.07  1801.58GCM mb dec | 113.40  389.36   988.51  1307.68  1619.10  1631.55  1931.70  1970.86

2、文件加密支持使用 SM4 算法

fscrypt 是运行在内核文件系统层面的加密库,需要嵌入到真正的文件系统中来提供文件的加密功能,目前 ext4、f2fs、ubifs 已支持 fscrypt。fscrypt 的特点是不同的文件可以使用不同的密钥,同一文件系统上也允许有加密和非加密的文件,这对于多用户非常有用。

fscrypt 除了文件名,不加密其它的文件系统元数据。fscrypt 通过 API 与用户态交互,主要包括注册密钥和配置加密策略,用户则通过用户态命令行工具 fscryptctl 来完成交互。文件加密被是国密一个重要的场景,因此我们为 fscrypt 和 fscryptctl 提供了国密的支持,SM4 XTS 模式用于加密文件内容,SM4 CTS 模式用于加密文件名。

3、Anolis 8.8 将原生支持国密

一直以来,OpenSSL 1.1.1 都是国密的一个遗憾,也是一个痛点,这个版本的 SM2 签名验签能力是有缺陷的,也不支持国密标准的 Za 值。但这个版本又是主流的发行版所使用的版本,也包括 Anolis 8 系列的系统。鉴于以上原因,龙蜥在保证兼容的前提下,在系统默认原生的 OpenSSL 1.1.1 版本上支持了完整的 SM2 签名能力,解决了上述的问题,该特性也会随着下一个版本的 Anolis 8 系统的发布而带给用户。

03  SIG 长期规划

全栈商密算法涉及到众多的上下游组件、团队、外部合作伙伴、上游社区,要尽可能团结其它团队的力量,消除不必要的重复开发,扩大推广和影响力,成为商密事实标准。

全栈商密算法要求先具备从 boot 到业务运行环节各安全链路上所需的商密算法,再针对各组件做针对性的优化,在社区版本扩大影响力后,也让未来商业版相比社区版本带来差异化优势。

协助 BabaSSL 申请国密资质,为应用系统提供必要的合规属性,也为有此需求的用户可以迁移到这个系统上来,增加用户的使用黏性,这也是一个主要的竞争优势。

规划支持的商密算法场景:

  • IMA 场景下使用商密算法替代国际算法

  • 内核模块签名认证流程的商密化支持

  • Web 场景下的 RFC 8998 协议支持,即 TLS v1.3 协议中支持使用商密算法套件

  • 使用商密算法支持 luks、dm-crypt 场景

  • SecureBoot 中使用商密算法替换国际算法

  • 内核 SM4 算法的指令集加速实现

  • coreutils 支持 sm3sum 工具

  • WireGuard 场景国密化支持

  • SM2 优化,类似于 NIST,主要优化点是 SM2 所用曲线的快速取模算法

  • 积极参与 OpenSSL 3.0.0 dev 开发,加速 release

  • coreboot 等未来可能替代 UEFI 的固件支持 SM 系统算法

  • gpg 支持使用商密算法

  • libssh 支持使用商密算法

04  SIG 整体支持情况

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

当前商密软件栈的纵向指令集优化情况及性能提升:

  • 性能提升数据是相比于纯软件实现的数据

  • x86 架构的测试环境是 Intel i5-6200U 2.30GHz

  • Arm 架构的测试环境是 T-Head Yitian-710 2.75 GHz

  • ✅ 表示由 OpenAnolis 开发并已经贡献到开源软件中的特性

  • “WIP”表示由 OpenAnolis 开发中的、或是开源软件正在进行 review 的特性

  • “Y”表示开源软件已经支持且不是由 OpenAnolis 开发的

  • ❌ 表示开源软件尚未支持

  • “-”表示开源软件无需支持

更多详情内容见商密软件栈 SIG(openanolis.cn/sig/crypto),欢迎各位感兴趣的开发者加入共建。

—— 完 ——

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

B站李沐讲论文笔记Resnet

研一学生笔记,若有看官,笔下留情 作者 Kaiming He Xiangyu Zhang Shaoqing Ren(在蔚来居然) Jian Sun(导师) Microsoft Research 摘要: 我们提出一个网络,他可以简化网络的训练&…

【 Apifox】Apifox的前置操作与后置操作

Apifox官网地址:http://apifox.cn/a103abcc 文章目录一、断言二、提取变量三、数据库操作结语一、断言 后置操作支持添加断言,可对接口返回的数据(或响应时间)设置断言,判断是否符合预期。 设置断言: 运行…

与客户共解难题:BPM如何高标准国产化?

作为深耕中国本土BPM市场近二十年的老牌企业,上海斯歌已服务超过700家大型及超大型企业,在医药、汽车汽配、智能制造、房地产等行业积淀了深厚的服务能力,从始至终斯歌都在思考:如何以最佳的服务能力解决客户需求,成就…

Express 学习 - 02-中间件应用-urlencoded解析

请求模拟 什么是中间件? 中间件的本质是传递给express的一个回调函数;这个回调函数接受三个参数:请求对象(request对象);响应对象(response对象);next函数(在…

用Rust写的Turbopack,比Vite快20倍?

日前,Vercel正式宣布推出新的包装工具Turbopack。Vercel声称这是用Rust编写的Webpack的继任者。在大型应用程序中,它的速度是Vite的10倍,是Webpack的700倍。维特的维护者对此表示怀疑。 Vercel发布新的开源工具Turbopack Vercel是Next。js框…

【数模】层次分析法

对于同一层次中的指标,通过两两比较,构造出判断矩阵,记为A。 aij表示因素i对因素j的重要性比较结果,可采用1-9的量化比例标度来反映其重要程度。 1:指标两个相比,A比B同等重要 3:指标两个相比…

E. Permutation Game(game)

Problem - E - Codeforces 两个玩家正在玩一个游戏。他们有一个整数1,2,...,n的排列组合(排列组合是一个数组,其中从1到n的每个元素正好出现一次)。这个排列组合没有按升序或降序排序(即排列组合…

YOLO系列目标检测算法——YOLOS

YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Scaled-YOLOv4- 文章链接 YOLOv5- 文章链接 YOLOv6- 文章链接 YOLOv7- 文章链接 PP-YOLO- 文章链接 …

视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型

概率编程使我们能够实现统计模型,而不必担心技术细节。这对于基于MCMC采样的贝叶斯模型特别有用。 最近我们被客户要求撰写关于Stan的研究报告,包括一些图形和统计输出。 R语言中RStan贝叶斯层次模型分析示例stan简介 Stan是用于贝叶斯推理的C 库。它…

十、Docker 复杂安装之3主3从redis集群配置

假设公司现在1-2亿条数据需要缓存,单机单台设备肯定扛不住的,这个时候就需要分布式存储,用redis如果落地呢?本期就带着大家搭建一个3主3从redis集群。 1、拉取redis6.0.8镜像 涉及命令:docker pull redis:6.0.8 实例: 2、创建6个redis容器实例 涉及命令: docker ru…

k8s远程debug

k8s远程debug 1、方案1 方案1是不行的,因为k8s的ingress走的7层协议。 1.1、应用 启动debug端口 java -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 -server -Xms1024m -Xms1024m -jar /opt/app/server.jarnetstat -ntlp1.2、配置k8s的网络和域…

Qt-Web混合开发-QWebSocket作为QWebChannel通信数据传输接口(10)

Qt-Web混合开发-QWebSocket作为QWebChannel通信数据传输接口💙🍓 文章目录Qt-Web混合开发-QWebSocket作为QWebChannel通信数据传输接口💙🍓1、概述🐛🦆2、实现效果😅🙏3、实现功能&a…

m通过matlab实现遥测信道主要影响因素分析

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 遥测技术是指被测对象的状态参数进行超远距离测量,并将测量的数据通过特殊的通信方式发送给地面接收站的一种技术。整个遥测发送接收系统称为遥测系统,而发送遥测信号所通…

LaTeX教程(一)——LaTeX介绍以及导言详解

文章目录1. Latex 介绍2. LaTeX基础2.1 导言区2.2 正文区3. 导言详解3.1 设置时间、作者、日期3.2 全局设置4. 文件组织1. Latex 介绍 什么是LATEX ?LATEX 是一种格式。为免误会,初次接触这一概念的读者可以粗略地将 LATEX 理解成是对 TEX 的一层封装。…

【DELM回归预测】基于matlab松鼠算法改进深度学习极限学习机SSA-DELM数据回归预测【含Matlab源码 1904期】

⛄一、PSO-DELM简介 1 DELM的原理 在2004年,极限学习机(extreme learning machine,ELM)理论被南洋理工大学的黄广斌教授提出,ELM是一种单隐含层前馈神经网络(single-hidden layer feedforward neural network,SLFN&am…

开发社交聊天APP需要注意什么?如何快速开发聊天功能

随着互联网的发展,人们的沟通方式也在悄悄发生变化,由原来的面对面沟通,发展为网上沟通。让大家日常生活的通讯越来越方便了,各种APP层出不穷。那么,想开发一款社交聊天并进行运营,需要注意哪些方面&#x…

【推荐】产品经理需求模板,案例等文档合集15篇

产品经理的职责描述仍然分歧很多,因人、因公司而异。即使是在相对较为一致的高科技行业,不同公司中的职位描述也是很不同的。但通常认为产品经理的职责主要包括:产品经理负责调查并根据用户的需求,确定开发何种产品, 选择何种技术、商业模式等…

【Python机器学习】过拟合及其抑制方法讲解及实战(图文解释 附源码)

需要源码请点赞关注收藏后评论区留言私信~~~ 欠拟合、过拟合与泛化能力 欠拟合 最简单的线性模型,它是用一条直线来逼近各个样本点,显然力不从心,这种现象称为欠拟合。欠拟合模型是由于模型复杂度不够,训练样本集容量不够&#…

哈希表题目:环形链表

文章目录题目标题和出处难度题目描述要求示例数据范围进阶解法一思路和算法代码复杂度分析解法二思路和算法代码复杂度分析题目 标题和出处 标题:环形链表 出处:141. 环形链表 难度 2 级 题目描述 要求 给你一个链表的头结点 head\texttt{head}h…

网易云VIP音乐NCM文件转MP3,C语言版本

前言网易云的Vip音乐下载下来,格式不是mp3/flac这种通用的音乐格式,而是经过加密的ncm文件。只有用网易云的音乐App才能够打开。于是想到可不可以把.ncm文件转换成mp3或者flac文件,上google查了一下,发现有不少人已经做了这件事,但…