今天开始聊聊密码学。我们每个人日常生活里经常遇到密码:开机密码、银行卡密码、登录密码等等。
但实际上,这里的密码更确切的叫法应该是“口令”,它的作用是用来验证身份,与密码学里的“密码”是两回事。密码学里“密码”是指加解密编码的意思,也就是把明文用特定编码方法变换成密文,或者把密文用特定编码方法变换回明文。密码学就是研究上述领域的科学。
我从事开发的软件产品是属于密码应用领域的,因此对密码学的一些基本知识还算了解一些。这几年工作中发现,由于政策导向、市场竞争、技术发展等多种原因,密码应用的需求在不断增加,越来越多的软件系统产品需要在其内部嵌入密码模块,实现相应的密码功能。但另一方面,相比主流热门开发技术,密码学还是偏“冷”一些,很多软件开发工程师对它并不了解或熟悉。《电子签名法》立法已经十几年了,《密码法》今年也开始实施,但问起密码学是啥,不少IT工程师还是一脸懵圈。虽然说密码学发展了几十年,已相当成熟,各大操作系统平台和厂商都提供了相应的开发包,开发时只要调用相关接口即可实现密码功能。但根据我的经验,懂一点密码学的基本知识,起码有以下的好处:
1.对于架构设计师、项目经理、售前支持,这是合理地把握及设计密码模块在整个产品系统中的位置、功能和与业务模块结合方式的前提和基础。
2.对于开发工程师,密码学的背景能够帮助你更快更精准地实现系统所需要的密码功能。当你的老板或经理把几十页的某第三方厂商密码产品SDK/API文档扔过来,让你结合到公司的产品里时,如果你事先以做过了密码学的功课,你会很快在里面找到所需要的接口和用例;相反,如果对密码学一无所知时,你会发现你能看懂文档里的每一句话,但就是不知道应该怎么用。
3.如果你恰巧既不用搞设计,也不用做开发,而是个sales,那懂点密码学会有助于你的市场开拓。想象一下,当你对着客户说出“公私钥”、“非对称”、“SM2”这些明显提高逼格的专业名词时,客户对你的认同感和信赖度会有怎样的提升。
要注意,学习密码学基本知识并不是要去研究密码学,大部分工程师(包括我)既没这个能力,也没这个必要。说到底,只要知道密码学是怎么回事并且会用它,那就可以了,这也是写这些文字的目的。以后我会把自己所了解的密码学乃至信息安全方面的点点滴滴都通过这个平台分享出来,错漏在所难免,大家有任何问题都可以跟帖提出,共同学习,一起进步。
领取专属 10元无门槛券
私享最新 技术干货