无论通讯安全还是设备安全都离不开加解密技术。我们经常需要需要各种各样的密码,那么背后一定是加解密技术。 加解密技术说白了就是变换,加密变换和它的反变换---解密变换。加解密技术也有三个属性,也叫 CIA,保密性,完整性以及可认证性。注意,最后的这个A与信息安全三要素CIA中的可用性 A 不一样,一个是 Authentication, 一个是 Availability。能够提供保密服务的有对称密钥和非对称密钥。 能够提供狭义完整性服务的有单向散列函数。能够提供认证鉴别类服务有基于非对称密钥技术的数字签名技术, 以及基于对称密钥的技术的消息验证码 MAC。
1、加解密技术史
谈到加解密发展史,不得不提香农。克劳德·香农(Claude Shannon),美国数学家、电子工程师和密码学家,被誉为信息论的创始人。1948年,香农发表了划时代的论文《通信的数学原理》,奠定了现代信息论的基础。1949 年,香农又发表了《保密系统的通信理论》, 将加解密技术从艺术变成了科学,加解密的历史由此转折。1976年,两位美国计算机学家Dime(D)和Henman(H)提出 DH密钥交换协议,启发了Ron Rivest(R), Adi Shamir(S)和Leonard Adleman(A), RSA 非对称密钥的加解密技术。于是,加解密技术发展形成了三个阶段。
2、加解密的参数模型及三大典型算法
那么加解密技术的过程是怎么样的?
A 对一段明文,用一个密钥进行加密,形成密文。B 收到密文,用一个密钥进行解密,获得明文。密钥有三种情况,代表了三种典型算法:
密钥的个数为0,通过散列(又叫摘要或哈西)函数将很长的信息摘成很短的数据,这就是通过单向散列函数达成的无密钥技术。
密钥的个数为1,即 A 用的加密密钥和 B 用的解密密钥相同,这种加解密技术为对称加密。
密钥的个数为2,即 A 用的加密密钥和 B 用的解密密钥不同,这就是非对称加密。
3、数字签名与MAC
STM32加密库与算法工具
加解密技术三属性(CIA)中的“A”代表Authentication,即可认证性。如何实现认证服务?我们可以通过单向散列函数与加密技术结合来实现,主要有两种认证服务,一种基于对称加密技术,我们称之为消息认证码(MAC); 一种是基于非对称加密技术,就是我们这里要讲的数字签名。
STM32 提供了加密库 X-Crypto-lib 对之前提到的三大类算法的支持,甚至包括一些近几年才出现的算法 ChaCha20 以及 Poly。STM32 加密库包括几乎所有的分组模式,例如 ECB, CBC,GCM等等。密码技术可以由软件实现,也可以由硬件加速。软件加密库可以运行在所有的 STM32 平台上。STM32 特定型号有常用的算法加速,可以减轻内核负载,降低功耗。
同时,在 STM32 MCU 安全开发过程中,有时候需要和确认自己对 MCU 加密库的调用是否正确,这时需要一个工具对他进行比较。STM32的算法工具OpenSSL 支持所有主流算法,很容易地用来进行结果比较,也可以用来理解算法参数。
相关文章