加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_阳江站长网 (https://www.0662zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 政策 > 正文

SM2 国密算法被 Linux 内核社区接受

发布时间:2020-10-27 11:10:30 所属栏目:政策 来源:互联网
导读:访问: 2020年天猫双11领券入口 全球好货10月21日起开始预售 京东双十一领券入口:三大主场每满300减40 密码算法是保障信息安全的核心技术,尤其是最关键的银行业核心领域长期以来都是沿用 3DES、SHA-1、RSA 等国际通用的密码算法体系及相关标准。 2010 年

年过中秋月过半, 历时半年多时间,SM2 早已不是那个最熟悉的娃,不知不觉补丁也更新到了 v7 版本。中秋月圆之夜向来都是有大事要发生的。是夜,一个盖世英雄,头顶锅盖,腰缠海带,脚踩七彩祥云飞过来了,SM2 终于等到了它的至尊宝。言归正传,这个版本的补丁最终被社区接受,目前已经合并到了 Linux 主线的 5.10-rc1:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?qt=author&q=Tianjia+Zhang

如不出意外会在 5.10 内核版本中正式发布。

libgcrypt 全面支持国密算法

后来有幸在某个机缘巧合之下,在 libgcrypt 中实现了 SM4。作为国密开发过程的一个附属产物,目前 libgcrypt 已经全面支持了国密算法 SM2/3/4,这些实现都会在下一个版本 1.9.0 正式发布。其中 SM3 由相关同事在 2017 年开发。

ima-evm-utils 支持 SM2-with-SM3 国密签名

内核已经支持了 SM2 和国密证书,作为 IMA 完整性签名的用户态工具,ima-evm-utils 对国密的支持当然不能落下,附上相关的提交:

https://sourceforge.net/p/linux-ima/ima-evm-utils/ci/ceecb28d3b5267c7d32c6e9401923c94f5786cfb/log/?path=

已知问题

当下 SM2 还有一些问题需要注意:

  • SM2 X509 证书中没有为 SM2 公钥算法定义独立的 OID 标识,目前是识别 OID_id_ecPublicKey 标识默认当作 SM2

  • SM2 规范没有为推荐的椭圆曲线参数定义 OID 标识,这也导致 SM2 算法仅有一个默认的椭圆曲线参数

  • SM2 规范中对消息签名时,除了要计算消息自身的 SM3,同时 SM2 椭圆曲线参数和公钥都要参与到 SM3 的计算中来,SM2 私钥签名是对最终的哈希结果做签名,这一规范定义是有点另类,这是与国际通用算法的一个主要差异:

    SM2 国密算法被 Linux 内核社区接受
    正常情况下,X509 证书解析与算法都被实现为独立的模块。正是由于 SM2 的这个规范会导致实现上的强耦合:X509 证书验证时需要计算证书中 tbs 的 SM3 哈希,这个哈希同样需要椭圆曲线参数以及公钥数据,而这些数据是一次完整 SM2 验签过程中的临时数据,目前的内核中并没有提供这样的回调机制(当然这是 SM2 的特殊情况),这就把 X509 证书解析与 SM2 算法强绑到了一起,没法解耦。这也导致了应用该功能的一点限制,SM2 只能支持内建编译(Y),而不支持编译成模块(M),让 X509 在编译时就知道已经支持 SM2,才能正常验签国密证书。从实现上看,也有一些动态加载 SM2 模块获取获取函数指针的方法,相比于框架层的支持,都不是很友好。

  • IMA 签名在计算文件哈希的时候,内核是直接计算文件哈希的,这块并没有针对是否使用 SM2 签名而做特殊处理(指上图中的增加 Za 值)。当下内核做的 IMA 国密签名验证的支持,同时也支持了 ima-evm-utils 的国密 sm2+sm3 签名(依赖最新的 openssl),目前这块都是直接计算文件哈希,没有加 Za 值,这也是当下最优的方案。需要说明的一点是,Za 是国密签名以及验签里要求的,只是签名验签的流程里需要,但是国密这个流程跟目前主流的算法是相悖的,如果要支持,内核和 ima-evm-utils 工具都需要较大修改,内核要涉及到架构修改,社区也不愿意接受,所以目前就按主流方式支持了 sm2+sm3 的 IMA 签名。

总而言之,言而总之两条:

  • 要支持国密证书验证,SM2 要么不编译,要么必须内建编译,不支持编译成模块。当然了,SM2 作为一个非对称算法,只签名一个哈希或者基于国密的 IMA 验证,并没有这个限制。

  • IMA 签名工具 ima-evm-utils 以及内核计算文件 SM3 哈希所用的国密算法没有加 Za,这个是与规范的一点差异。

致谢

感谢相关同学在开发过程中所做的测试工作,技术支持以及在 openssl 所做的大量的国密支持工作

感谢社区的热心开发者,NIIBE Yutaka,Gilad Ben-Yossef,Vitaly Chikunov,Jussi Kivilinna,Herbert Xu

本文素材来自互联网

(编辑:应用网_阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读