Linux内核接受SM2(中文)国家秘密算法

2020-10-30 12:33:56

10月25日,有开发者发帖称,SM2国密算法终于被Linux内核社区接受。作者声明SM2补丁已经更新到版本v7。这个版本的补丁最终被社区接受。它已经合并到Linux主线的5.10-RC1中。如果没有其他事情,它将在5.10内核版本中正式发布。

National Secret是National Commercial Encryption的缩写。国家加密管理局制定了算法标准,也制定了大量的产品和接口规范和应用场景。自2012年以来,国家密码管理局陆续以中华人民共和国密码行业标准的形式发布了SM2/SM3/SM4等密码算法标准及其应用规范。其中,<foreign language=“English”>SM</foreign>代表<foreign language=“English”>商业秘密</foreign>,这是一种不涉及国家秘密的商用密码技术。

根据作者的说法,由于无线局域网标准的广泛使用,当前的Linux内核已经很好地支持SM3和SM4算法。但是,SM2算法和国密证书长期不被支持,不可能基于国密在内核中建立全栈信任和完整性验证。因此,在内核中支持该系统已成为当务之急。

内核社区花了7轮时间才接受SM2。最初的考虑是从OpenSSL迁移,但由于巨大的工作负载,需要移植OpenSSL体系结构和基础设施代码。经过几轮的讨论和测试,我发现现有的libgcrypt已经有了一个完整的椭圆曲线基本算法,所以我首先尝试在libgcrypt中实现SM2,最后SM2算法被社区接受为ECC的一个子算法。此后,SM2逐渐被内核社区接受。

目前,libgcrypt已全面支持国密算法SM2/3/4,这些实现将在下一版本1.9.0中正式发布。与此同时,作为IMA完整性签名的用户模式工具,ima-evm-utills';对国家机密的支持率并没有下降。单击以查看相关提交。

为了支持国家秘密证书验证,SM2要么不编译,要么必须内置编译,不支持编译成模块。当然,SM2作为一种非对称算法,只对基于国家机密的HASH或IMA验证进行签名,没有这样的限制。

IMA签名工具ima-evm-utils和内核用来计算文件的SM3散列的国家秘密算法没有添加Za。这和说明书有一点不同。