不知道大家有没有发现,在各种算法的标准制定中,都避不开美国的身影。
作为密码学领域的重要参与者,美国NIST和NSA参与制定了大量标准,很多都作为国际标准被全球多个国家使用。但也被爆出利用各种后门对别国进行情报获取:2013年爆出NSA通过RSA公司在随机数生成算法Bsafe中植入后门,使得RSA算法的密钥生成可预测;2020年爆出CIA在上世纪70年代秘密收购瑞士的Crypto AG公司利用该公司出售到多达120个国家的密码设备获取情报。
为了保护我国的密码安全和国家安全,从世纪初开始,国家就开始大力推动国产密码的发展,发布了一系列的国密算法和相关标准,并制定相关的法律法规。而且从2013年左右就开始在银行、国企、事业单位等使用国产密码算法替换国际密码算法。
No.01国密算法分类
在我国,根据保密要求的不同,密码分为商业密码(商密)、普通密码(普密)以及核心密码(核密)。
普密和核密主要应用到党政军等重要单位,所用算法、标准多为私有,经专家学者论证后在指定范围内使用,不对外公开。
商密主要应用到民用行业,如银行、运营商、能源、工业等,所用算法、标准基本都是通过国密局发布,各密码厂商根据国密局要求进行产品设计、开发、过检之后提供给客户。
我们日常生活中接触到的密码多是商密范围,因此,该部分内容主要介绍也是商密部分。
No.02常用商密算法
国内现在主要使用的国密算法有:ZUC算法、SM1、SM2、SM3、SM4、SM7、SM9。其中
ZUC算法(祖冲之算法集)为序列密码;
SM1、SM4、SM7为对称算法,SM1算法要求仅能使用硬件实现,且不能出口,SM7算法主要应用于非接触IC卡中;
SM2,SM9为非对称算法;
SM3为hash算法。
由于我国国产密码发展相对美国较晚,为平稳推动国产密码在国内的布局,需要兼容已有国际算法,也要借鉴已有标准规范,因此,国密算法适合国际算法有一定的对标关系,主要对标关系为:
SM1–3DES,SM2–ECC,SM3-SHA256,SM4–AES
前面章节已对各类密码算法有了完整的介绍,这里不针对算法的具体实现和理论基础进行赘述,主要介绍一下SM2算法的使用和SM9算法。
No.03SM2算法的使用
在介绍ECC算法的章节中说过,使用ECC算法做加解密运算时,密文包括C1(临时公钥)和C2(消息密文)两部分,具体内容见《密码学初探|ECC算法》,而在国密算法中,密文有三部分组成,除了临时公钥、密文外,还有一个SM3算法对临时公钥(K(x,y))和消息明文M组成的字符串(x||M||y)的hash值C3,最终组成密文格式为C1||C3|C2,使得在进行解密时能够验证明文的完整性。
而在进行签名验签过程中,SM2算法与ECDSA算法也有一定的差异,比如在进行签名前的hash操作中添加包含用户信息的hash值,r、s的计算也与ECDSA不同,
针对国密SM2算法中具体的加解密、签名验签运算,这里不进行具体的介绍,如有感兴趣可参考由国密局发布的标准《GM/T 0003-2012 SM2椭圆曲线公钥密码算法》
No.04SM9算法简介
SM9算法其实也是一种椭圆曲线算法,是一种基于身份标识的密码方案,使用用户标识唯一确定公钥,由密钥中心根据用户唯一标识生成私钥。
基于身份标识的密码(IBC)方案(也称标识算法),是在1984年由Shamir提出的不需要可信第三方保证公钥真实性、简化密钥管理内容的密码方案。2000年左右,一些密码学专家提出了使用椭圆曲线构造标识算法的思路,自此,标识算法开始快速发展,我国也于2008年正式发布标识算法SM9。
由于标识算法的公钥是用户的身份标识,相对于SM2算法,其密钥的生成更加简单,易于部署。
SM2算法在使用时需要借助CA机构,生成证书,形成证书链,由CA机构来保证证书的有效性,
而SM9的特性使得它不需要CA机构,但也需要一个可信机构来负责参数选择和密钥生成,可信机构有两对主密钥-签名主密钥和加密主密钥,使用主密钥和用户标识生成用户私钥。直接通过用户标识确定有效性。
关于SM9算法的相关内容可以参考《GM/T0044-2016 SM9标识密码算法》,这里不做更多介绍。
当前SM9的使用并不广泛,虽有公司在安全邮件领域做过尝试,但结果并不理想,更多的从业人员认为,SM9算法会在物联网安全领域会发挥一定的作用,我们拭目以待吧。
No.05国密算法的发展
伴随着国产化工作的推进的浪潮,国产密码也已经在国内多个行业或已完成替换,或正在进行替换,比如在能源、银行行业,从笔者的从业经验来看,已经完成了大部分的替换工作。
而且近几年来,SM2、SM3、SM4、SM9陆续被ISO组织纳入其相关标准,ZUC算法更是早已成为LTE国际标准,这些都极大的推动了国密算法的发展。
自2017年从《网络安全法》开始,国家接连发布了多部关于信息安全、密码安全的法律法规,对数据安全、密码安全等内容进行全方面的规范,借助这股东风,相信国家自主密码的发展会更好。
No.06最后
从《密码学初探|密码学简介》到这一篇《国密算法简介》,一共10篇内容,简单介绍了常用的密码算法知识,很多地方并不完善,而且有些内容涉及到了底层的理论基础,写的更是凌乱,不过好在完成了这一部分内容。
下一步,将会介绍一些密码算法的应用,密码协议、数字证书等内容,如果有机会也想分享一些密码学新的方向以及在某些行业中的应用,比如同态密码、量子密码、格密码的内容,区块链、车联网、物联网中的密码应用等。
希望能够作为一个给大家提供认识密码、了解密码、学习密码的渠道,解决一些在使用密码时遇到的困扰吧。