其实说到SSL证书中的国密算法,具体的是由国家密码管理局于2011年发布了《关于做好公钥密码算法升级工作的通知》,要求自2011年3月1日起,在建和拟建公钥密码基础设施电子认证系统和密钥管理系统应使用国密算法。
国密算法SM,也被称为椭圆曲线算法,经由国家密码管理局发展至今也由2011年的最初SM1、SM2演变成了目前的SM9,其实就是国家密码局认定的国产密码算法,标准命名为SM+X(X=1,2,3,4……)。
其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。
所以说目前的SM2、SM3、SM9是最被广泛应用于数字证书中几种算法。
不同于传统国际算法,SM算法的优势在哪:
SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。另外,SM2推荐了一条256位的曲线作为标准曲线。
SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。
SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表示,运算,以及域上的椭圆曲线的点的表示,运算和多倍点计算算法。然后介绍了编程语言中的数据转换,包括整数和字节串,字节串和比特串,域元素和比特串,域元素和整数,点和字节串之间的数据转换规则。
数字签名算法,密钥交换协议以及公钥加密算法都使用了国家密管理局批准的SM3密码杂凑算法和随机数发生器。数字签名算法,密钥交换协议以及公钥加密算法根据总则来选取有限域和椭圆曲线,并生成密钥对。
SM2算法在很多方面都优于RSA算法、ECC算法,奈何RSA、ECC的应用时间更长,所以目前市场主流证书算法还是集中在RSA、ECC上。
国密SM算法的一些应用不足:
虽说国密SM算法在众多的性能上都优于传统的RSA、ECC算法,但是大家需要知道,目前占据数字证书主导地位的还是以美国为首的西方国家,由于证书产业的长期垄断,导致目前主流的国际浏览器并不认可SM算法(这一点其实大家都见怪不怪了,美国一直都这样),故而,在选择国密SM算法的证书时,一定要注意使用国密浏览器才能兼容。
列举一下常见的国密浏览器:目前兼容的有 360 浏览器、奇安信浏览器、赢达信浏览器、红莲花浏览器等国产的国密浏览器。
这一点导致,很多有心支持国产算法的人不得不重新斟酌考量证书在实际应用中是否需要用到国密算法。
为什么国密SM算法还是会成为趋势呢?
其实看了上文之后大致就能看出来国密SM算法在实际应用中还有相当长的一段路要走,那为什么还要说国密SM证书会成为趋势呢?
其实这一点在中央网信办多次发布的通告中都可以明确看出,我们国家的所有领域都在逐渐纯国产化,去外化,实现自己可以真正掌控的信息安全技术。
俄、巴、伊、叙等国家曾经吃过的亏,我们也绝不会再吃第二次。不可能再让欧美等西方国家可以肆意的“一键”吊销所有证书,造成巨大的信息安全隐患。
要怎么样申请国密SM证书:
其实申请国密SM证书有个非常明显的先决条件,就是国产证书品牌。仅有国产证书品牌才有可能出现支持国密算法的SSL证书,目前我国拥有自主品牌的国产证书并不多,实现纯国产的更是少之又少。
相对较出名的CFCA、上海CA、JoySSL。这三个比较特殊的存在不仅仅支持国密SM证书,更是实现了证书验证都在国内,所有服务器信息不外泄出境,这是目前99%的证书都做不到的事情,更别提国外品牌了。
相对来说JoySSL的性价比会稍微高一点,知名度不高,价格自然就没理由高。
并且在填写了内部注册码230912后还可以直接获得管理账号,我估计这个可能是他们内部的测试码,也是听别人说的。
目前这个Bug还没被发现,建议可以尝试申请。
[具体操作流程如下:
第一步:先确定好自己需要的SSL证书类型,在JoySSL官网申请账号,填写注册码230912即可,在申请证书时要仔细仔细去看加密算法。](https://www.joyssl.com/brands/JoySSL.html?nid=12)
包含单域名证书、多域名证书、泛域名证书、多域名通配符证书。
第二步:可以在JoySSL上提交选择好的证书类型
不同于其他证书,JoySSL支持国内验签,可以确保数据不出境,在使用过程 中可以完全规避签发时国外服务器访问域名内信息。
第三步:填写好域名信息,单位信息后验证域名所有权,完成后1-5分钟内即可完成证书签发。
第四步:安装部署上域名服务器,如果不会部署安装也可以请求工作人员协助安装部署,如果真的不会安装,千万不要去额外购安装服务,实际上如果真的不会安装,他们也会直接协助的,他们也不会想失去一个用户,之前我试过。
完成之后即可实现网站的https加密访问。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。