蟒蚂蚁

注册

 

发新话题 回复该主题

技术解析一文看懂AnolisOS国密生态 [复制链接]

1#
北京哪里治疗白癜风较好 http://pf.39.net/bdfyy/bdfrczy/

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

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

以下为技术内容解析:

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

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

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

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

国密是什么?

我是谁,从哪里来?

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

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

到哪里去?

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

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

与国际算法的对比

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

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

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

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

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

BabaSSL的前世今生

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

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

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

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

开源

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

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

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

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

与OpenSSL对比

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

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

对于一些新的密码学技术标准,BabaSSL会采取一种相对激进的策略快速跟进,比如在IETF中一些正在标准化流程中的技术方案,例如delegatedcredentials,

分享 转发
TOP
发新话题 回复该主题