基于口令的密码—PBE


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

PBE的加密和解密使用对称加密技术。

口令一词多义:

  1. 口头话,如喊口令;
  2. 暗号,如对口令;
  3. 专指密码,如邮箱口令(本文指这个,一般由英文大小写字母和数字和特殊符号组成)。

为什么需要PBE?
我们在使用数据的加密的时候,都难以避免地要涉及到密钥的保存,如果密钥如果明文地保存在电脑上那么很容易就会被别人盗取,那么如果我们使用另外一个随机密钥去加密会话密钥的话,那么怎么保证另一个密钥的安全?很明显这样下去就会无线循环了。

这个时候,我们需要考虑如何安全地保护密钥。对于我们人来说,我们不喜欢去记数字和字符,但是我们可以记下些短的口令,这比起动作百来位的密钥来说可好记多了,所以就出现了PBE(Password Based Encryption,基于口令加密)。

我们通过对口令和一些随机数(salt) 进行Hash加工,将它转变为一个加密会话密钥的密钥(KEK),在生成一个随机的会话密钥(CEK) ,CEK加密之后,将加密后的CEK密钥进行保存。这个生成的加密密钥的密钥(KEK)就可以将其抛弃了,因为留在电脑上有泄露密钥的风险。

我们需要再次使用会话密钥(CEK) 的话,只要将随机数(之前已经保存)和我们脑子中记住的口令进行相同的操作,就可以解密出会话密钥。别人没有我们脑子中的口令就不能拿到会话密钥。

流程

加密流程

image

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

  1. 生成 主密钥(KEK) ;
    伪随机数生成器会生成一个盐(随机数),将口令一起输入单向散列函数,得到的散列值就是用来加密密钥的密钥(KEK)

  2. 生成 会话密钥(CEK) 并 加密;
    伪随机数生成器会生成一个随机数,这个随机数就是用来加密消息的密钥(CEK);
    用KEK加密CEK得到CEK密文;
    CEK密文一起保存到安全的地方;
    KEK可以丢弃掉,因为通过盐和口令可以重建KEK。

  3. 加密消息。
    CEK消息进行加密得到消息的密文

解密流程

image

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

  1. 重建KEK;
  2. 解密会话密钥;
  3. 解密消息。

详细流程反推回来即可。

盐的作用

是用来防御字典攻击的。
字典攻击是一种事先进行计算并准备好候选密钥列表的方法。

事先指在攻击者窃取到加密的会话密钥之前,就准备好了大量的候选KEK。


通过拉伸来改良PBE的安全性

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


如何生成安全口令的建议

  1. 使用只有自己才能知道的信息;
  2. 将多个不同的口令分开使用;
  3. 有效利用笔记;
  4. 理解口令的局限性;
  5. 使用口令生成和管理工具。
原创作者: mysticbinary 转载于: https://www.cnblogs.com/mysticbinary/p/18860382
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值