技术解析:一文看懂 Anolis OS 国密生态 | 龙蜥专场

简介: Anolis OS国密是社区在Anolis OS上做的国密技术解决方案。

编者注:本文系两位演讲者整理,他们在2021年阿里云开发者大会的「开源操作系统社区和生态分论坛」上带了分享,演讲主题为《国密技术开发与实践》。,为国内的基础软件生态添砖加瓦。


作者分别是阿里云技术专家张天佳蚂蚁集团高级技术专家杨洋。张天佳主要负责Anolis OS上国密技术的开发和应用,参与实现了 libgcrypt 中的国密算法和 linux内核中的 SM2 算法;杨洋则主导开发了 BabaSSL,也是国内唯一的一个 OpenSSL maintainer,参与起草并推动 RFC8998 标准国际化。相信两位技术人的干货分享,能给开发者们带来一定的思考。

640 (1).png以下为技术内容解析:


国密——密码算法的国产化


说到密码算法,大家一定很熟悉 MD5,AES,RSA 这些通用的国际标准算法,这也是目前我们普遍采用的密码学算法,它们在数据安全、通信、区块链等众多领域都有着广泛的应用。

众所周知,这些算法标准都是国外制定的,在某些情况下这会对国内信息安全有不利影响。当下有实力的国家,甚至有些大公司都制定了自己的算法标准。

顾名思义,国密就是密码算法的国产化,跟其它领域一样,密码算法的国产化已经势不可挡,这也是我们必须要做的事情。中国的国密算法为我们提供了一个新的选择,在必要的场合中可以选择替代那些国际主流算法,尤其是当下国际贸易冲突,技术封锁不可忽视的大环境下,大规模推广和采用国密算法将为国内重要的网络基础设施提供可靠的数据安全保障。


国密是什么?


我是谁,从哪里来?

国密是一个口语化的称呼,官方名称是国家商用密码,简称商密,拼音缩写是SM,这也是国密标准中具体算法名字的来源。国密是用于商用的、不涉及国家秘密的密码技术。

国密标准完全由中国密码管理局制定,主要的技术实现也基本是国内开发人员完成的,这对摆脱国外的密码技术和产品依赖是非常有利的。

到哪里去?

自2012 以来,SM2/3/4 的国密标准陆续公布,目前国密技术生态基本处于一个正在逐步走向成熟的阶段,但国内密码基础软件在采用国密算法方面仍处于碎片化的状态,比如我们经常可以看到各种个人或组织名义开源的支持国密算法的库;此外这些开源项目的安全更新和社区活跃也都做的不好。国密的推广仍然需要我们中国基础软件的开发者和用户共同努力。

2020年1月1日,《中华人民共和国密码法》正式实施,从法律层面规范了国家商用密码的应用和管理,这也为推广和应用国密提供了必要的法律保障。


与国际算法的对比


这里是国密算法和国际通用算法的一个对比,可以直观地看到国密的一个基本情况:

640.png

针对各种常用的国际能用算法类型,比如对称算法,公钥算法和消息摘要算法,国密标准都定义了对应的相同功能的国密算法,比如 SM4 提供了与 AES 同样的加密强度,并且支持各种加密模式;SM2 是基于椭圆曲线的公钥算法,同时定义了非对称加解密,数字签名和密钥交换标准,相对于 RSA,SM2 的密钥更短,但支持的加密强度却更高;SM3 是国密定义的消息摘要算法标准,摘要长度是固定的256位,强度等同于 SHA256。

除了基础的算法,国密标准也定义了TLCP国密双证书协议,用以支持国内的传输层安全协议。这里还有一个好消息,今年三月份,TLS1.3+ 国密单证书协议正式被国际标准所承认,并且以 RFC8998 标准发布,这意味着我们可以选择在TLS1.3协议中使用完整的国密套件,目前我们也在联系正规浏览器厂商支持这个标准的实施和应用。

同时国密也定义了使用国密算法的 X509 证书,使用 SM3 哈希算法,SM2 算法作为数字签名,证书类型是 SM2-with-SM3。

对开发者来说,国密提供了一个选择,可以选择从国际通用算法平滑迁移过来。除此之外,国密还有其它一些算法标准,是不太常用的,比如 SM9,ZUC 算法等。


BabaSSL 的前世今生


BabaSSL主打国密的密码算法库,与 OpenSSL 1.1.1 保持兼容,作为国密的密码算法解决方案而诞生。

BabaSSL 是基于之前蚂蚁集团和阿里集团内部的 OpenSSL 版本合并而来,并首次进行了开源。BabaSSL 的含义是:灵巧、轻快且靠谱的密码学和 SSL/TLS 工具库。

BabaSSL 的绿色商标,是基于阿里的橙色和蚂蚁的蓝色混合而来,也意味着我们希望将 BabaSSL 打造成一个灵活、小巧并且健壮的基础密码学库。

BabaSSL 目前在阿里集团和蚂蚁集团内部得到了非常广泛的使用。从具体场景来看,有如下三个方面,分别是存储网络端上的设备。其中网络服务的场景,是BabaSSL 最大的支撑场景,例如淘宝、天猫、阿里云等各种涉及到链路加密的服务器端。此外移动端 App,例如支付宝手机 App 中集成了 BabaSSL 来实现多种密码学的能力。

640 (2).png


开源


BabaSSL 已经在去年的10月份进行了开源,目前代码是托管在 OpenAnolis 上,当前开源的版本是 8.2.0,也是我们目前最新的稳定版本。

目前 BabaSSL 在阿里内部使用的版本和开源版本之间存在一定的差异,我们目前正在逐步把内部版本的功能特性迁移到开源版本上进行开源,最终变成一个统一的开源版本,那么届时阿里内部也完全依赖于这个开源的版本,而不会再保留内部的闭源版本。

特色功能以下是 BabaSSL 当前最新稳定版本 8.2.0 的主要特色功能特性:

  • 基于 OpenSSL 1.1.1,具备 OpenSSL 1.1.1的全部能力并且保持兼容
  • 支持国密 SM2,  SM3和 SM4,并对 OpenSSL 1.1.1中所欠缺的 SM2 能力,比如 X509 证书的签发和验证功能进行了补全
  • GM/T 0024 和 TLCP 国密双证书TLS协议
  • 支持 RFC 8998:TLS 1.3+国密单证书
  • 提供了对 IETF 正在标准化过程中的 Delegated Credentials
  • 支持 IETF QUIC API 底层密码学能力
  • 更加完善的 SM2 算法支持,比如 X.509 证书签发、验签的支持
  • 正在申请软件密码模块一级资质


OpenSSL对比


接下来是大家很关心的 BabaSSL 和 OpenSSL 这种老牌的密码算法库之间的区别:

640 (3).png

从图上可以看到一些主要区别:

  • 对于一些新的密码学技术标准,BabaSSL 会采取一种相对激进的策略快速跟进,比如在 IETF 中一些正在标准化流程中的技术方案,例如 delegated credentials, compact TLS 等,会进行原型的实现和快速跟进,而 OpenSSL则是相对保守,因为 OpenSSL 社区的策略是原则上只实现已经发布了的国际标准和国家标准。
  • 在对于国密算法、国密协议、国密的监管合规、云计算厂商的深度集成、以及国产化硬件等方面,BabaSSL 会进行更加深度和广泛的支持,而 OpenSSL 则支持的比较有限。
  • 对于API的易用程度,由于没有历史包袱,所以 BabaSSL 可以提供更加简单易用的 API,而 OpenSSL 的 API 则相对复杂。对于资源受限的嵌入式设备,BabaSSL 会进行体积裁剪和内存使用量的规划,OpenSSL 则明确表示没有相关的计划。


未来规划


这个是一个后续 BabaSSL 未来的版本规划和特性支持,基本上是每半年一个版本,涵盖了多种新的密码领域技术的支持,包括对IETF的几个 RFC 草稿的实现、国产化硬件的支持以及未来对于后量子密码学以及同态加密等前沿技术的支持:

  • 支持 MPK
  • Encrypted SNI
  • Compressed Certificate
  • Compact TLS
  • SM算法优化
  • 支持国产化 CPU 的国密算法指令集
  • 体积裁剪,内存使用量优化
  • Tink API
  • ZUC,SM9
  • PQC
  • 同态加密算法


国密生态架构


万事俱备,有了基础国密算法支持,我们便可以构建出一个围绕国密算法展开的基础软件生态。这是一个国密生态的垂直场景,也是我们在 Anolis OS 上的国密生态架构,同时它也是一个全栈国密解决方案:从底层固件,内核,到基础密码学库,在主要链路上做国密改造,最终形成一个完整的基于国密的安全信任链条

640 (4).png

图上右边是一些垂直的国密应用场景,比如 SecureBoot,IMA,内核模块签名,文件完整性校验等。

到目前为止,我们已经在 linux 内核,BabaSSL,libgcrypt,gnulib 等主流的基础组件中支持了国密算法,这部分的工作都已经回馈到了上游开源社区,有兴趣的开发者可以直接拿来使用或者作为参考,这些特性功能之后也会率先在 Anolis OS 上输出,达到一个开箱即用的原生支持国密的 OS。

从中也能看到,国密生态涉及到的软件栈非常多,形态也是各种各样,要逐步完善这个生态,还有很长的路要走。近几年的国际技术封锁也给了我们做这件事的决心和动力。

目前我们已经和统信、海光等厂商有一些合作,也非常欢迎业界有兴趣的开发者能够参与到社区,一起来做这个事情,之后我们的工作都会在 Anolis 龙蜥社区以开源方式运作,秉着开放包容态度,继续补充完善这个生态,最终达到的一个目标是:整个安全信任链是完全建立在国密算法之上。


国密在 IMA 和 modsign 的应用


我们知道,密码学算法从来就是为安全服务的,我们来看两个在安全领域具体国密改造的例子。

IMA 是 linux 内核提供一个文件完整性度量架构,用于检测文件是否被恶意篡改,内核模块签名的目的是类似的,用于检测模块的发行源头是否可信。它们都提供了自己的签名工具,签名工具依赖 BabaSSL 提供的 SM2 签名文件的能力,用于在用户态做签名。

文件签名的验证是在内核里完成的,由于内核不能直接使用应用层的库,为了支持在Linux内核里验证文件签名,我们在内核里实现了国密 SM2/3/4 算法以及国密证书的支持,用来验证签名是否合法。

通过对相应软件栈的改造,我们完全基于国密算法构建了IMA和内核模块签名的安全机制,而这些之前都是由国际算法来保证的


全栈国密 SIG


以下是我们在OpenAnolis上的全栈国密 SIG,非常欢迎有兴趣的开发能参与到社区中来,为中国的基础软件安全添砖加瓦。

SIG地址

https://openanolis.cn/sig/crypto

代码库

https://codeup.openanolis.cn/codeup/crypto


欢迎搜索钉钉群号:33311793,或扫描下方二维码加入OpenAnolis(龙蜥)社区群,与一线研发人员和数百位开发者直接交流。一个开放的社区需要更多合作伙伴和开发者的支持,只有在你们的参与和反馈中,OpenAnolis(龙蜥)社区才会越做越好。 

1.jpeg



相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
27天前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术深度解析:从基础到应用的全面介绍
人工智能(AI)技术的迅猛发展,正在深刻改变着我们的生活和工作方式。从自然语言处理(NLP)到机器学习,从神经网络到大型语言模型(LLM),AI技术的每一次进步都带来了前所未有的机遇和挑战。本文将从背景、历史、业务场景、Python代码示例、流程图以及如何上手等多个方面,对AI技术中的关键组件进行深度解析,为读者呈现一个全面而深入的AI技术世界。
112 10
|
10天前
|
自然语言处理 文字识别 数据处理
多模态文件信息抽取:技术解析与实践评测!
在大数据和人工智能时代,企业和开发者面临的挑战是如何高效处理多模态数据(文本、图像、音频、视频)以快速提取有价值信息。传统方法效率低下,难以满足现代需求。本文将深度评测阿里云的多模态文件信息抽取解决方案,涵盖部署、应用、功能与性能,揭示其在复杂数据处理中的潜力。通过自然语言处理(NLP)、计算机视觉(CV)、语音识别(ASR)等技术,该方案助力企业挖掘多模态数据的价值,提升数据利用效率。
32 4
多模态文件信息抽取:技术解析与实践评测!
|
30天前
|
安全 Anolis
龙蜥社区落地开源生态发展合作倡议,构建开放兼容的操作系统生态
通过共同努力,三个社区基于服务器操作系统场景,在操作系统内核等关键共性技术链统一方面达成了一致。
|
4天前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
36 10
|
13天前
|
域名解析 负载均衡 安全
DNS技术标准趋势和安全研究
本文探讨了互联网域名基础设施的结构性安全风险,由清华大学段教授团队多年研究总结。文章指出,DNS系统的安全性不仅受代码实现影响,更源于其设计、实现、运营及治理中的固有缺陷。主要风险包括协议设计缺陷(如明文传输)、生态演进隐患(如单点故障增加)和薄弱的信任关系(如威胁情报被操纵)。团队通过多项研究揭示了这些深层次问题,并呼吁构建更加可信的DNS基础设施,以保障全球互联网的安全稳定运行。
|
13天前
|
缓存 网络协议 安全
融合DNS技术产品和生态
本文介绍了阿里云在互联网基础资源领域的最新进展和解决方案,重点围绕共筑韧性寻址、赋能新质生产展开。随着应用规模的增长,基础服务的韧性变得尤为重要。阿里云作为互联网资源的践行者,致力于推动互联网基础资源技术研究和自主创新,打造更韧性的寻址基础服务。文章还详细介绍了浙江省IPv6创新实验室的成立背景与工作进展,以及阿里云在IPv6规模化部署、DNS产品能力升级等方面的成果。此外,阿里云通过端云融合场景下的企业级DNS服务,帮助企业构建稳定安全的DNS系统,确保企业在数字世界中的稳定运行。最后,文章强调了全链路极致高可用的企业DNS解决方案,为全球互联网基础资源的创新提供了中国标准和数字化解决方案。
|
13天前
|
缓存 边缘计算 网络协议
深入解析CDN技术:加速互联网内容分发的幕后英雄
内容分发网络(CDN)是现代互联网架构的重要组成部分,通过全球分布的服务器节点,加速网站、应用和多媒体内容的传递。它不仅提升了访问速度和用户体验,还减轻了源站服务器的负担。CDN的核心技术包括缓存机制、动态加速、流媒体加速和安全防护,广泛应用于静态资源、动态内容、视频直播及大文件下载等场景,具有低延迟、高带宽、稳定性强等优势,有效降低成本并保障安全。
56 4
|
20天前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
44 4
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
秒级响应 + 99.9%准确率:法律行业文本比对技术解析
本工具基于先进AI技术,采用自然语言处理和语义匹配算法,支持PDF、Word等格式,实现法律文本的智能化比对。具备高精度语义匹配、多格式兼容、高性能架构及智能化标注与可视化等特点,有效解决文本复杂性和法规更新难题,提升法律行业工作效率。
|
1月前
|
数据采集 存储 JavaScript
网页爬虫技术全解析:从基础到实战
在信息爆炸的时代,网页爬虫作为数据采集的重要工具,已成为数据科学家、研究人员和开发者不可或缺的技术。本文全面解析网页爬虫的基础概念、工作原理、技术栈与工具,以及实战案例,探讨其合法性与道德问题,分享爬虫设计与实现的详细步骤,介绍优化与维护的方法,应对反爬虫机制、动态内容加载等挑战,旨在帮助读者深入理解并合理运用网页爬虫技术。