3、常用加密算法
由于受限于MCU的运算能力,并非所有的加密算法都适用于嵌入式系统。TEA(Tiny Encryption Algorithm)是一种小型的对称加密解密算法,由剑桥大学计算机实验室的David Wheeler和Roger Needham于1994年发明。它以加密解密速度快、效率高、实现简单著称。该算法的可靠性是通过加密轮数而不是算法的复杂度来保证的,TEA算法主要运用了移位和异或运算,密钥在加密过程中始终不变。它是一种分组密码算法,其明文密文块为64比特,密钥长度为128比特。TEA算法利用不断增加的Delta(黄金分割率)值作为变化,使得每轮的加密不相同,有很强的抗差分分析能力。
DES算法又被称为美国数据加密标准,是上世纪七十年代美国IBM公司研制的对称密码体制加密算法,并在1977年成为美国官方加密标准。DES的工作原理为:明文按64位进行分组,每个块用64位密钥进行加密,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1),分组后的明文组和56位的密钥按位替代或交换的方法形成密文组。每块先用初始置换方法进行加密,再连续进行16次复杂的替换,最后再对其使用初始置换的逆。第i步的替换并不是直接利用原始的密钥K,而是由K与i计算出的密钥Ki。其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。攻击DES的主要形式被称为蛮力或彻底密钥搜索,即重复尝试各种密钥直到有一个符合为止。如果DES使用56位的密钥,则可能的密钥数量是2的56次方个。随着计算机系统能力的不断发展,DES的安全性比它刚出现时会弱得多,然而从非关键性质的实际出发,仍可以认为它是足够的。不过在实际使用中更多地选择新的加密标准一高级加密标准。
密码学中的高级加密标准(Advanced Encryption Standard,AES),是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。AES的区块长度固定为128比特,密钥长度则可以是128,192或256比特,分别称为AES—128,AES—192,AES—256,如果数据块及密钥长度不足时,则补齐之。AES算法是基于置换和代替的,置换是数据的重新排列,而代替是用一个单元数据替换另一个。AES算法使用了多重循环实现置换和替换,在规范中被称为Bytes Sub(字节替换)——对数据的每个字节应用非线性变换;Shift Rows(行位移变换)——对每一行字节循环重新排序;Mix Columns(列混合变换)——对矩阵的列应用线性变换;Add Round Key——对状态和每轮的子密钥进行异或操作。该算法对内存的需求非常低,使得它很适应于资源受限制的环境。
4、加解密在升级中的应用
“在线升级”实际上是Flash数据存储的一个特例。完成这样的功能首先要求芯片提供的EEPROM的地址与程序空间是连续的,一致的,在用户应用程序中可以对另外一部分程序区进行擦除写入操作;再者芯片内部Flash程序存储器容量必须足够大,使之可以分为几个区域相互独立。第一部分是用户的boot程序,完成上电初始化和解密,并将接收的数据写入指定地址。第二部分是程序标识区,标记当前用户程序的运行地址。第三部分是应用程序区1和应用程序区2,当程序运行在程序区1时可以对程序区2进行升级,反之亦然。这两个区域的大小必须不小于用户的目标代码。
|