最近几年,单片机软件日益复杂与多样化,对加解密与安全认证的考虑也越来越多的出现在单片机系统设计中,但是很多单片机工程师对于加密算法和认证体系缺乏基本了解,本文就来科普一下相关知识。
1. 加解密技术的起源:字符替换加密法
毫无疑问,密码技术最初就是为了字符信息加密。
最初人们的加密手段非常初级,就是字符替换,从千年前古罗马时代鼎鼎有名的“凯撒密码”到二战时期“Engima”密码机都可以看成是这种。这种密码机制就是将明文的字母按一定的规律替换成另一个字母来实现加密。
凯撒密码原理示意图:
Engima密码机:
2. 计算机革命与比特序列密码
计算机技术革命让人类处理和接收信息的能力出现了质的飞跃。信息的表达也不再局限于文字,而是变成了以二进制数据为主的方式。这也导致了现代密码学的建立。
在计算机出现之前,我们使用古老的“字符替换”来加解密,通常需要双方都准备一个密码本,那么这个密码本,在计算机加解密中,就用一串比特序列来替代了。这串比特序列也就是“比特序列密码”,也常被称为“密钥”
3 现代密码学的基石:‘XOR’
XOR就是“异或”,听起来,并没有很高大上很复杂的运算,对不对?其实,对也不对。现代密码学还涉及到一门高深的学问,那就是“数论”。如果说数学是科学的皇后,那么数论是皇后皇冠上的明珠。当然,不用担心看不懂接下来的内容,因为作者不会涉及数论,而且作者也不会数论^^。
为了方便讲述,本文还是帮读者们简单复习一下XOR运算吧。
比特位的XOR运算:
4 计算机对称加密技术
对称加密技术就是指:加密和解密用同一份密钥。
对称加密技术最基本的计算就是XOR,因为XOR有一个重要特性:
A XOR B XOR B = A
上面的公式中,A与B都是二进制比特数据,比如 A = 10110101, B = 01100101。
上面的公式就对应着对称加密算法的基本过程
加密过程:对于任意一段二进制数据A,那么可以用相同长度的二进制数据B来作为加密密钥,用 A XOR B = C,将C作为加密后的数据。
解密过程:对于加密后的数据C,可以利用密钥B还原成加密前的数据A。C XOR B = A
看到这里,是不是觉得很简单?答案是:对也不对!XOR确实是很简单,但是为了防止信息很轻易的被破解,一般各类对称加密算法,会有多轮运算,使用多次XOR,每次混入不同密钥,另外为何这样做而不那样做的整个数学论证过程其实非常复杂。
比如,整个过程有可能长下面这个样子
5. 常用对称加密算法:DES、AES
在很多单片机中会有DES或者AES加密模块,因此本文简单科普一下这两种算法的特点,但并不打算展开细说这些算法的细节,因为既繁琐,同时也没有必要。各位读者需要了解这些算法细节的时候再查阅资料也不晚。
DES
DES(Data Encryption Standard)是比较常见的对称加密算法之一。它是一种分组加密算法,该算法每次处理固定长度的数据段,称之为分组。DES密钥长度是56bit,但因为每7bit会加一个检测错误的比特,导致密钥长度是64bit,因此一个DES分组的大小也是64位。如果加密的数据长度不是64位的倍数,可以按照某种具体的规则来填充位。
AES
AES的全称是Advanced Encryption Standard,意思是高级加密标准。它的出现主要是为了取代DES加密算法的。
AES也是一种分组加密标准,每个加密数据块大小固定为128位(16个字节),最终生成的加密密钥长度有128位、192位和256位这三种,这也就是平常说的AES128,AES192,AES256。
另外,
AES还有很多种工作模式,其中最主要的有五种工作模式:ECB (Electroniccodebook,电子密码本)、CBC (Cipher-block
chaining,密码分组链接)、CFB (Cipher feedback,密文反馈)、OFB (Output
feedback,输出反馈)、PCBC (Propagating cipher-block chaining,增强型密码分组链接) 。因为本文篇幅,就不再一一展开述说。