7.6 基于口令加密—PBE
前文阐述了几种常用的对称加密算法,这些算法的应用模型(甚至包括实现)几乎同出一辙。但并不是所有的对称加密算法都是如此,PBE算法综合了上述对称加密算法和消息摘要算法的优势,形成了对称加密算法的一个特例。
7.6.1 简述
PBE(Password Based Encryption,基于口令加密)算法是一种基于口令的加密算法,其特点在于口令由用户自己掌管,采用随机数(这里我们叫做盐)杂凑多重加密等方法保证数据的安全性。
PBE算法没有密钥的概念,密钥在其他对称加密算法中是经过算法计算得出的,PBE算法中则使用口令替代了密钥。
密钥的长短直接影响了算法的安全性,但不方便记忆。即便是我们将密钥通过Base64编码转换为可见字符,长密钥一样不容易记忆。因此,在这种情况下密钥是需要存储的,但是口令则不然。作者天天都要开关电脑,进入操作系统的唯一途径就是输入口令。口令是我们便于记忆的一种凭证,基于这一点,PBE算法使用口令代替了密钥。
PBE算法并没有真正构建新的加密/解密算法,而是对我们已知的对称加密算法(如DES算法)做了包装。使用PBE算法对数据做加密/解密操作时,其实是使用了DES或AES等其他对称加密算法做了相应的操作。
既然PBE算法使用了我们较为常用的对称加密算法,那就无法回避密钥的问题。口令并不能替代密钥,密钥是经过加密算法计算得出的,但口令本身不可能很长,单纯的口令很容易通过穷举攻击方式破译,这就引入了“盐”。盐能够阻止字典攻击或预先计算的攻击,它本身是一个随机信息,相同的随机信息极不可能使用两次。将盐附加在口令上,通过消息摘要算法经过迭代计算获得构建密钥/初始化向量的基本材料,使得破译加密信息的难度加大。
PBE算法是对称加密算法的综合性算法,常见算法如PBEWithMD5AndDES,该算法使用了MD5和DES算法构建PBE算法。