乃阕饯 发表于 2025-6-2 23:09:41

基于口令的密码—PBE

目录

[*]流程

[*]加密流程
[*]解密流程

[*]盐的作用
[*]通过拉伸来改良PBE的安全性
[*]如何生成安全口令的建议

定义:
PBE(Password - Based Encryption)是一种根据口令生成密钥并用该密钥进行加密的方法。PBE也是一种混合密码系统,组合了密钥生成机制、Salt、Hash、对称加密等技术。
PBE的加密和解密使用对称加密技术。
口令一词多义:

[*]口头话,如喊口令;
[*]暗号,如对口令;
[*]专指密码,如邮箱口令(本文指这个,一般由英文大小写字母和数字和特殊符号组成)。
为什么需要PBE?
我们在使用数据的加密的时候,都难以避免地要涉及到密钥的保存,如果密钥如果明文地保存在电脑上那么很容易就会被别人盗取,那么如果我们使用另外一个随机密钥去加密会话密钥的话,那么怎么保证另一个密钥的安全?很明显这样下去就会无线循环了。
这个时候,我们需要考虑如何安全地保护密钥。对于我们人来说,我们不喜欢去记数字和字符,但是我们可以记下些短的口令,这比起动作百来位的密钥来说可好记多了,所以就出现了PBE(Password Based Encryption,基于口令加密)。
我们通过对口令和一些随机数(salt) 进行Hash加工,将它转变为一个加密会话密钥的密钥(KEK),在生成一个随机的会话密钥(CEK) ,CEK加密之后,将加密后的CEK密钥进行保存。这个生成的加密密钥的密钥(KEK)就可以将其抛弃了,因为留在电脑上有泄露密钥的风险。
我们需要再次使用会话密钥(CEK) 的话,只要将随机数(之前已经保存)和我们脑子中记住的口令进行相同的操作,就可以解密出会话密钥。别人没有我们脑子中的口令就不能拿到会话密钥。
流程

加密流程


PBE加密包括下列3个步骤:

[*]生成 主密钥(KEK) ;
伪随机数生成器会生成一个盐(随机数),将盐和口令一起输入单向散列函数,得到的散列值就是用来加密密钥的密钥(KEK)。
[*]生成 会话密钥(CEK) 并 加密;
伪随机数生成器会生成一个随机数,这个随机数就是用来加密消息的密钥(CEK);
用KEK加密CEK得到CEK密文;
将盐和CEK密文一起保存到安全的地方;
KEK可以丢弃掉,因为通过盐和口令可以重建KEK。
[*]加密消息。
用CEK对消息进行加密得到消息的密文。
解密流程


PBE解密包括下列3个步骤:

[*]重建KEK;
[*]解密会话密钥;
[*]解密消息。
详细流程反推回来即可。
盐的作用

盐是用来防御字典攻击的。
字典攻击是一种事先进行计算并准备好候选密钥列表的方法。
事先指在攻击者窃取到加密的会话密钥之前,就准备好了大量的候选KEK。
通过拉伸来改良PBE的安全性

在生成KEK时,通过多次使用单向散列函数就可以提高安全性。
对于用户来说,执行1000次单向散列函数并不会带来多大的负担,然而对于主动攻击者来说,这可是一个很大的负担。
如何生成安全口令的建议


[*]使用只有自己才能知道的信息;
[*]将多个不同的口令分开使用;
[*]有效利用笔记;
[*]理解口令的局限性;
[*]使用口令生成和管理工具。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 基于口令的密码—PBE