文本原创,微信订阅号:诸子东。关注可了解更多文章。
说到物联网安全,就不得不提国密了。
也许你也曾听过,有客户问,你们这个产品,支持不支持国密呀。
也许,你也曾一边点头一边摇头。
也许你怕你不小心的迟疑,被对方看出你的不自信。
也许你可能也怕你的豪放,客户会忍不住与你深入探讨。
因为有可能你不太清楚,什么是国密。
下面这文章就聊聊国密吧。
我可能讲的通俗,但是未必会讲得懂。如果已经知道什么是国密的,请不要“揭穿”我的通俗。
首先,什么是国密呢。
这个国密,即国家密码局认定的国产密码算法,也就是商用密码。
那,什么是商用密码呢。
商用密码是商用密码技术和商用密码产品的总称。
也就是它可以是一种技术,也可以是一种产品。
国密算法呢,是国家密码局制定标准的一系列的算法。
那,国密算法到底有哪些呢
笔者了解到的国密算法主要有:
SM1,SM2,SM3,SM4,SM5,SM6,SM7,SM8,SM9 , ZUC。
要聊国密,聊什么呢。
先说说这几个国密里,哪些是公开的,哪些是不公开的。
其中,SM1,SM5,SM6,SM7,SM8算法细节并未公开。
SM2,SM3,SM4,SM9,ZUC是已公开的。
这个怎么理解呢。也许就有人问,那既然算法不公开,那这个算法怎么用呀,谁来用呀。
以SM1来说,SM1是不公开的。
SM1算法是对称算法,但不公开算法细节。那怎么用呢。
该算法则以IP核的形式存在于芯片中。然后应用于智能IC卡,密码钥匙,加密卡等安全产品中。
也就是对于这种不公开的算法,笔者的理解应该是,只能使用现成的,集成好的芯片或产品中。而不需要使用者,在他的产品中,加入该算法。
通俗地讲,比如,你有一个单片机,什么STM32单片机,或者别的ARM芯片做了一个IOT模块。你的IOT要和服务器通信,要使用像SM1等这类不公开的算法几乎是不可能的。
当你听到以下类似的内容,你要谨慎了。
比如,
“放心,我们的IOT所有国密都支持”。
“我们的服务器是使用SM1加密的,你们能支持吗?”
“我们支持有SM2。如果要做SM5,6,7,8,没问题”
当你听到类似的对话,就要谨慎一些,别把自己的产品坑了,也把别客户坑了。
那对于SM2,SM3,SM4,SM9,ZUC是公开的。也就是用户是可以把这些算法集成到他们的产品中,或者遇到有需要国密场景的,是可以使用公开的算法处理的。
大概理解下来,如果对方有国密要求,而且要求的国密是属于未公开算法的,那么这种情况,IOT设备一般都不能直接使用,都需要扩展支持国密的芯片或产品。
如果对方要求的国密范围是属于公开算法的,这种情况下,IOT设备是可以把算法集成到产品中,不需要扩展芯片或安全产品。这个不需要不代表不可以。如果IOT设备自己不想集成算法,那就扩展芯片或安全产品即可。
刚才我们已经介绍了哪些是公开的,哪些是不公开的。
不公开算法的,我们就不继续讨论了。
那公开算法的,又怎么使用呢。
有好几种算法是公开的,这些算法都有什么区别,什么特点。
什么情况下可以用哪些算法。
在讨论这几个公开算法前,我们就需要先聊一聊,常见的加密算法有哪些呢。
这里就说三种:
1 对称加密。
2 非对称加密
3 摘要算法。
其实摘要算法,说不上是加密,后面会讲到的。
那就先说说对称加密和非对称加密。
什么是对称加密呢。既然有加密,那就存在有解密。如果没有解密,那么加密就没有意义了。
因为通信是建立在双方的。下面开始我们的谍战片。
特务组织要给特务分子发消息,传达任务。
特务分子要给特务组织回消息,汇报任务。
但是他们的传递的消息是加密的。特工队就派头号特工邱特工去想尽一切办法破解他们的消息。
首先,邱特工截获了特务组织给特务分子的电报,同时也截获了特务分子回到组织的电报。
但是邱特工愣是看不懂电报的内容。于是邱特工在想,是不是需要个密码本,才能破解电报。
以邱特工一人之力,目前还不足以破解密码本,怎么办呢。于是邱特工想到了一个办法。
邱特工抓了特务分子,严刑逼供和利诱:“你说不说,你说不说。。”
特务一脸的委屈:“你倒是问呀。”
“你们的电报要怎么破解。”
“我们的电报是需要密码本的,密码本就在我口袋里,你拿去就是了。”
“就这么简单吗?”
“是的,我们组织和我用的电报是同一个密码本加密的,只要你有这个密码本,就能破解双向的电报了”
于是,邱特工拿着密码本,成功了破解了来往的电报,完成了任务。
这个就是对称加密。
在数据通信中,通信双方使用的是同一个秘钥进行加密和解密。
也称为单秘钥加密。
对于使用对称加密的,因为使用的是同一个秘钥,只要第三者拿到秘钥,就能破解双方的来往数据通信内容。
那么非对称加密是什么样的呢。
回到我们的谍战片。
话说特务组织的电报被破解后,特务组织升级了加密。邱特工用原来的密码本破解不了截获的电报。
邱特工想到可能密码本换了。
于是邱特工很顺利地偷到了特务分子的密码本。
邱特工开始解密。
邱特工发现,用该密码本,只能解密特务组织给特务分子的电报。破解不了特务分子给特务组织发的电报。
邱特工实在想不通。
邱特工又抓来特务。“你说不说。。。”
“大哥,我说,我说。。”
“我还没有问,你说什么呀说。。”
“自从你上次破解电报后,我们组织就升级了加密。使用了非对称加密。组织使用一套密码本,我们特工使用另一个密码本。组织给我们发的电报,用组织的密码本加密,是用我们的密码本来才能破解。反过来,我们给组织发的电报,是用我们的密码本加密,组织用他们的密码本解密。如果你只是拿到一本密码本,只能破解单方向的电报。”
“你这么说,我还得跑去你们组织总部抢另一套密码本不成?”
“理论上讲,是的。”
寒冷的冬天里,对面这种非对称加密的通信,邱特工实在无能为力。
于是邱特工辞去了特工的身份和工作,在寒冷的冬天里,改了名,跑去卖HMI和PLC了。
这大概就是对称和非对称加密了。
可以看出,对称加密就是双向共同使用同一个密码本。
而非对称加密是,有两个密码本,双方向各拿一个。
从安全性来讲,非对称加密更为安全一些。但也相对更为复杂,运算慢一些。
回到我们刚才说的国密里,SM2,SM3,SM4,SM9,ZUC是公开的。
SM4,ZUC是属于对称加密的。
SM2,SM9是属于非对称加密的。
ZUC也就是祖冲之密码。
这里我们不谈密码算法具体是什么实现了。
等等,好像我们漏了什么东西。
SM3呢,是什么。
SM3呢,其实是一个密码摘要算法。
什么是摘要算法呢。直接从字面上理解,摘要嘛,也就是从一篇文本中,摘抄或总结小段有代表性的文本,用来表示该篇文章。
摘要算法也是一样的。比如,对于一个文件,我们要想确保文件的准确性或唯一性,可能需要看文件的属性,比如,常见的就是MD5。
我们常说,比较两个文件的MD5,如果两个文件的MD5是一样的,就可以认为两个文件是一样的,而不是两个文件每一个字节逐个对比。
所以,SM3可以类比于MD5,是属于摘要算法。
摘要算法不具备解密性。
也就是你知道一个文件的MD5,是不能通过这个MD5,反解密该文件的具体内容的。
摘要算法一般的应用场景如何呢。
就比如说,在某种场合,需要传输文件,但是传输过程中,可能文件会被恶意修改。那如何判断传输的文件到对方那里之后,还是完整的或者没有被修改过呢。
这时候就可以使用了摘要算法了。
服务器要给IOT设备传文件,同时服务器告诉IOT说,这个文件的MD5是多少。然后就开始传文件了。当IOT接收完文件之后,就算一下这个文件的MD5,看得出来的结果是不是服务器原先告知的MD5,如果是,说明文件传输完成,并且没有被修改过。
同理,在这个应用中,可以不使用MD5,而是使用SM3 国密。
因为MD5和SHA-1算法已经存在有已知的各种碰撞攻击方法,不再是安全的算法的,使用SM3替代MD5也是物联网安全或者互联网安全比较重要的。
最后我们大概再小小的总结一下:
0 国密就是国家密码局认定的国产密码算法,也就是商用密码。
1 国密有很多,SM1,SM2,SM3,SM4,SM5,SM6,SM7,SM8,SM9 , ZUC。
2 国密里,有公开算法的,有不公开的。
其中:SM1,SM5,SM6,SM7,SM8算法细节并未公开。这种应用一般就是使用现成的芯片或模块产品。
3 算法里,区分有对称加密和非对称加密,还有摘要算法。
4 摘要算法,不具备解密性。只是用来对某个文件或某段数据的特征表示。
5 一般来说,非对称加密要比对称加密安全一些。因为非对称加密是需要有多个秘钥的,对于重要的数据或信息,比如账户信息,登录验证信息等,常用非对称加密。
6 对称加密虽然安全性不如非对称性加密,但是加密和解密速度一般比较快,常用于大数据通信或者通信频率比较快的场合,或者对时效要求比较高的。