【密码学】一文读懂PBE

简介: 本文主要来聊一下基于口令的加密(Pasword Based Encrytion), 我更倾向于把password翻译成为口令,这是为了和密码学当中密码区分开,这里的password不是指的某种密码体制,而是相当于容易记忆的一串字符(当然也包括那些用随机字符串所密码的)。

一文读懂基于口令的加密(PBE)


D)$]]1DS0MUO2UH9N5BF%KJ.jpg

Password-Based-Encryption

本文主要来聊一下基于口令的加密(Pasword Based Encrytion), 我更倾向于把password翻译成为口令,这是为了和密码学当中密码区分开,这里的password不是指的某种密码体制,而是相当于容易记忆的一串字符(当然也包括那些用随机字符串所密码的)。

❝

「pass·word」: a secret word or phrase that must be used to gain admission to something.

❞

Z7PKR(BG}3R}}%P44{TR_PI.jpg

对话


PEB 加密

看完上面的对话,接下来聊一聊具体PEB的过程, 对于PBE来说,用到了之前讲到过的两个东西:

  1. 哈希函数
  2. 对称加密算法

本文不会去讲具体的PBE算法,比如rfc2898当中的具体算法的描述,本文主要是聊一聊PBE的具体结构。

EK~Y_9]FM5IYUE%0H$K0CPA.png

PBE加密过程

正如上图所示,PBE的加密过程可以分为3个步骤:

  1. 根据用户选择的口令和盐生成加密密钥的密钥
  2. 生成加密密钥并用第一步生成的加密密钥的密钥加密密钥, 这一步听起来有点绕,慢慢的理解一下吧
  3. 利用第二步生成的密钥加密消息,然后销毁密钥

这样,我们就完成了对于消息的加密,这里有个要求,口令是不能存在任何地方的,记在脑子里面才是最安全的,然后对于盐,和利用加密密钥加密后的密钥要存到安全的地方。


PEB解密

理解了上面的加密过程,接下来看一下解密的过程。

7Q])NPAX{K6F[A[@XZS34W6.png

PEB解密

解密过程也可以分为三个步骤:

  1. 用户利用自己的口令和存储的盐值还原加密密钥的密钥
  2. 利用第一步还原的密钥解密加密密钥
  3. 利用第三步拿到的密钥,解密消息

这里拿到了解密的消息,这样PEB的解密过程就完成了。


总结

本文主要是介绍了PBE的整体框架,如果想要提高安全性,对于生成加密密钥的密钥的过程,也就是哈希函数的处理,可以执行多轮,实际上,在rfc当中,也是有迭代次数这个参数的,本文在描述过程当中省略了这些,如果想去看真实使用的PBE算法,需要注意一下这一点,好了,本文到这里就结束啦,希望对各位读者大佬们有所帮助。

相关文章
|
存储 Rust 并行计算
【密码学】一文读懂XTS模式
这篇文章的灵感来源于我偶然翻到的一个某U盘有关磁盘加密的一个介绍(这一篇不是广告蛤), 然后发现这个模式我之前还真没遇到过,因此呢,就学习了一下,就出来了这一篇文章。
9056 0
【密码学】一文读懂XTS模式
|
物联网 测试技术 Android开发
蓝牙BLE传输性能及延迟分析
BLE传输性能主要受以下几个因素影响:操作类型,Connection Interval,每个Connection Event内发送的帧数、每一帧数据的长度。具体参见如下链接: https://en.wikipedia.
5226 0
|
网络协议 网络安全 网络架构
不会这10个抓包技巧,就不要在网工圈里混了!
不会这10个抓包技巧,就不要在网工圈里混了!
1093 1
|
XML Java 关系型数据库
如何给application.yml文件的敏感信息加密?
本文介绍了如何在SpringBoot应用中使用jasypt进行配置信息的加密解密。首先,需要添加jasypt-spring-boot-starter的依赖,版本至少为3.0.5。接着,在配置文件中设置`jasypt.encryptor.password`等参数。jasypt提供`StringEncryptor`接口用于加密解密,通过该接口可以在测试类中对敏感信息(如数据库用户名和密码)进行加解密。加密后的信息需带有`ENC()`前后缀。推荐将加密密码作为系统属性、命令行参数或环境变量传递,而不是直接写入配置文件。
1697 3
|
Java 数据安全/隐私保护
Fortify——安装并修改报告语言为中文
Fortify——安装并修改报告语言为中文
2284 0
Fortify——安装并修改报告语言为中文
|
存储 安全 算法
信息安全:认证技术原理与应用.
信息安全:认证技术原理与应用.
1452 7
|
JavaScript
成功 解决 @keyup.enter=“search()“ 在el-input 组件中不生效的问题
这篇文章讨论了在Vue 3中使用Element UI的`el-input`组件时,`@keyup.enter="search()"`事件绑定不生效的问题,并提供了通过使用`.native`修饰符来解决这个问题的方法。
成功 解决 @keyup.enter=“search()“ 在el-input 组件中不生效的问题
可靠性(MTTF,MTTR,MTBF以及系统可靠性的计算,串联,并联,模冗余系统)
可靠性(MTTF,MTTR,MTBF以及系统可靠性的计算,串联,并联,模冗余系统)
4791 1
|
jenkins Linux 持续交付
Jenkins 入门与基本配置
【8月更文第31天】Jenkins 是一款开源的持续集成/持续交付(CI/CD)工具,广泛应用于自动化软件的构建、测试和部署流程。对于想要提高开发效率和软件质量的团队而言,Jenkins 提供了一个易于使用的解决方案。本文将详细介绍 Jenkins 的安装过程、初始设置以及如何创建第一个构建任务,帮助初学者快速上手 Jenkins。
1931 0
|
图形学
【unity知识点】Unity 协程/携程Coroutine
【unity知识点】Unity 协程/携程Coroutine
1834 0