E - 写在最后的密码学 - 对称 - 哈希 - 非对称 - OpenSSL - 国密算法
写在最后
我想,学习计算机的各位朋友可能有各自的研究方向,不需要深入研究密码学,但至少要对密码学的一些常用算法及其功能、使用方法有所了解。比如对称算法能够加密数据,保护数据的隐私性;哈希算法能够提供数据完整性认证;非对称算法能够提供签名,实现消息不可抵赖性。不同的算法要进行搭配使用,方可得到能力最大释放,比如,如何在一条不安全的通讯链路上建立一个安全的通讯会话,此时对称与哈希都要为非对称算法让路;如果已经建立起了一个安全的通讯会话链路,那么此时完全就可以使用对称、哈希算法实现这条链路上的通讯的加密与完整性认证了,毕竟非对称算法运算的速度相较于对称、哈希算法的速度,不可同日而语;如果消息保密性并不重要,只需要确保消息在传输过程中未被篡改,那么在通信会话中,则只需要哈希算法的参与即可。
前面的文章中介绍了各算法的数学实现,介绍了算法的工作原理,并没有引出现实世界中是如何具体使用这些算法搭建软件架构的,有那么一群舍己为公的天才数学家,在这些算法的基础上搭建了诸多的开源软件框架,比如大名鼎鼎的 OpenSSL 等开源软件。
现实世界中,即便拥有了所有的这些算法,有些东西依然是不可确定的。因此在生产阶段,需要有一个不可仿冒的官方平台加入,给出证书,用户才能够信赖它。
密码学是一门十分重要的学科。无论是在学习工作时传输文件,还是其他的应用场景如国与国之间的信息战,加密都是保护我们信息数据安全的一个强有力地手段。从个人角度,在今天人人冲浪的时代,稍不注意,都会造成隐私泄露,如果平时能够注意保护自己的数据安全,就可以避免一些不必要的麻烦。
本系列是对一本密码学入门书籍 《Understanding Cryptography: A Text book for Students and Practitioners》 的翻译,受限于本人薄弱的数学与英文水平,翻译内容一定是错误百出,如果有对这本书感兴趣的朋友,可以下载原书来看。如果不是研究这个方向的朋友,只需要了解个大概就好了,深入了解具体的算法在数学意义上的实现单纯浪费时间。
单独看这本书,好像密码学完全是由国外研究人员研发一般,其实不然,在我国也有研发自己的一套密码学算法,支持流运算、块运算、对称加密、非对称加密、哈希运算等,比如针对不同应用场景的 SM1(对称) SM2(非对称)、SM3(哈希杂凑) 等。