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

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

PBE解密包括下列3个步骤:
- 重建KEK;
- 解密会话密钥;
- 解密消息。
详细流程反推回来即可。
盐的作用
盐是用来防御字典攻击的。
字典攻击是一种事先进行计算并准备好候选密钥列表的方法。
事先指在攻击者窃取到加密的会话密钥之前,就准备好了大量的候选KEK。
通过拉伸来改良PBE的安全性
在生成KEK时,通过多次使用单向散列函数就可以提高安全性。
对于用户来说,执行1000次单向散列函数并不会带来多大的负担,然而对于主动攻击者来说,这可是一个很大的负担。
如何生成安全口令的建议
- 使用只有自己才能知道的信息;
- 将多个不同的口令分开使用;
- 有效利用笔记;
- 理解口令的局限性;
- 使用口令生成和管理工具。
基于口令的密码—PBE的更多相关文章
- 基于口令的密码(PBE)
基于口令的密码(PBE) 基于口令的密码(Password Based Encryption,PBE)是一种基于口令生成密钥,并使用该密钥进行加密的方法.其中加密和解密使用的是同一个密钥. 根据用户自 ...
- android基于口令加密快速搞懂(一)
import java.util.Random; import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypt ...
- 基于Hadoop的密码安全级别验证
学习Hadoop有一段时间了,期间写过很多Demo,都是针对单个知识点做的验证,今天写个完整的应用程序——基于Hadoop的密码安全级别验证. 在很多网站上注册用户时输入密码都会在下方提示密码安全级别 ...
- Oracle OS认证 口令文件 密码丢失处理
Oracle OS认证 口令文件 密码丢失处理 分类: Oracle Basic Knowledge2009-10-19 14:24 5031人阅读 评论(9) 收藏 举报 oracleos数据库sq ...
- (转)passwordStrength 基于jquery的密码强度检测代码使用介绍
使用很简单. 代码如下: $('#pass').passwordStrength(); XHTML 代码如下: <p><label>请输入密码:</label> ...
- 基于Python的密码生成程序的优化
近期刚刚组织完内部的Python基础培训.GUI的开发培训,之后布置的作业是两人一组,利用前面所写的一些模块做一些小软件. 具体就是模拟Advanced Password Generator这个软件的 ...
- spring boot基于DRUID数据源密码加密及数据源监控实现
前言 随着需求和技术的日益革新,spring boot框架是越来越流行,她也越来越多地出现在我们的项目中,当然最主要的原因还是因为spring boot构建项目实在是太爽了,构建方便,开发简单,而且效 ...
- 基于python的密码字典生成器
最近在网上看到一些作品,然后对其进行了一些完善.只是用于学习,不要去干坏事哦.程序来源于网络,我只是做了一些优化. #!/usr/bin/python# -*- coding:utf-8 -*-# @ ...
- sshd服务以及基于口令的远程登陆
ssh用为客户端,主要进行服务器端的连接:sshd用为服务器端 几个常用的命令: systemctl ##服务控制命令 systemctl start sshd ## ...
- openssl命令使用
openssl openssl是个密码工具集,提供多端接口调用方式 组成: 1. 代码库 libcryto ,libssl(ssl/tls) 2. 工具集 openssl 对称加密 对称加密主要是用a ...
随机推荐
- Linux驱动---LED
目录 一.pinctrl子系统 二.GPIO子系统 三.GPIO操作步骤 3.1.获取GPIO描述符 3.2.设置方向 3.3.读写值 四.编写LED驱动 4.1.硬件原理图 4.2.修改设备树 4. ...
- IPTools for .NET:快速查询全球IP信息
IPTools 是一个用于快速查询全球 IP 地址信息的库,支持国内和国际 IP 查询,提供详细的地理位置信息(如国家.省份.城市)以及经纬度等数据. 1. IPTools.China IPTools ...
- IGM机器人K5齿轮箱维修故障详情介绍
在长期.高强度的工作中,IGM机器人K5齿轮箱难免会出现故障,需要联系子锐机器人维修进行及时的维修和保养. 一.齿轮磨损 齿轮磨损是IGM机器人K5齿轮箱最常见的故障之一.长时间.高速运转以及负载的频 ...
- AD22 solder层开窗不见了什么原因?PCB阻焊层不显示阻焊。
做回来的板子焊盘没有开窗! 3D上看也是没有的! 上网查了,在设计->规则->Mask->SolderMaskExpansion 将盖油勾选去掉即可. END
- Docker安装与镜像加速器的配置
Docker简介 百科说:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机 ...
- AI 插件第二弹,更强更好用
概述 插件大更新 前一周, 我们开源了一个 AI 插件,发了一篇介绍的文章 DeepSeek 插件开源上线!支持多家云服务,一键解锁满血版 AI 引来了一些小小的反响,也有用户在评论区或者私底下提了一 ...
- NCS开发学习笔记-基础篇-前言
nRF5 SDK 与 nRF Connect SDK 目前Nordic有2套并存的SDK:老的nRF5 SDK和新的nRF Connect SDK(简称NCS),两套SDK相互独立. nRF5 SDK ...
- 墨者学院SQL注入(MySQL)的总结:
我们打开靶机 在这个界面我们可以看见在密码的下面有一个停机公告,我们点进去,会发现可以发现这个公告是存在id的,又可以会出现漏洞.所以我们尝试着在id=1的后面加上and 1=1 我们可以 ...
- WSL2 - Ubuntu 22.04使用记录
1 安装 搭配Windows Terminal使用为佳,在微软商店可下载: 然后依照官网描述即可. 命令行中运行wsl --install即可.不过由于想自行指定发行版,于是: wsl --list ...
- Ollama——大语言模型本地部署的极速利器
1.概述 Ollama 是一款开源跨平台大模型工具,主要用于在本地便捷部署和运行大型语言模型(LLM),核心目标是降低用户使用大模型的门槛,同时保障数据隐私.核心功能与特点如下: (1)本地部署,隐私 ...