一文读懂基于口令的加密(PBE)
Password-Based-Encryption
本文主要来聊一下基于口令的加密(Pasword Based Encrytion), 我更倾向于把password翻译成为口令,这是为了和密码学当中密码区分开,这里的password不是指的某种密码体制,而是相当于容易记忆的一串字符(当然也包括那些用随机字符串所密码的)。
❝「pass·word」: a secret word or phrase that must be used to gain admission to something.
❞
对话
PEB 加密
看完上面的对话,接下来聊一聊具体PEB的过程, 对于PBE来说,用到了之前讲到过的两个东西:
- 哈希函数
- 对称加密算法
本文不会去讲具体的PBE算法,比如rfc2898
当中的具体算法的描述,本文主要是聊一聊PBE的具体结构。
PBE加密过程
正如上图所示,PBE的加密过程可以分为3个步骤:
- 根据用户选择的口令和盐生成加密密钥的密钥
- 生成加密密钥并用第一步生成的加密密钥的密钥加密密钥, 这一步听起来有点绕,慢慢的理解一下吧
- 利用第二步生成的密钥加密消息,然后销毁密钥
这样,我们就完成了对于消息的加密,这里有个要求,口令是不能存在任何地方的,记在脑子里面才是最安全的,然后对于盐,和利用加密密钥加密后的密钥要存到安全的地方。
PEB解密
理解了上面的加密过程,接下来看一下解密的过程。
PEB解密
解密过程也可以分为三个步骤:
- 用户利用自己的口令和存储的盐值还原加密密钥的密钥
- 利用第一步还原的密钥解密加密密钥
- 利用第三步拿到的密钥,解密消息
这里拿到了解密的消息,这样PEB的解密过程就完成了。
总结
本文主要是介绍了PBE的整体框架,如果想要提高安全性,对于生成加密密钥的密钥的过程,也就是哈希函数的处理,可以执行多轮,实际上,在rfc当中,也是有迭代次数这个参数的,本文在描述过程当中省略了这些,如果想去看真实使用的PBE算法,需要注意一下这一点,好了,本文到这里就结束啦,希望对各位读者大佬们有所帮助。