图解系列--密钥,随机数,应用技术

news2024/9/21 4:39:02

密钥

1.生成密钥
1.1.用随机数生成密钥
密码学用途的伪随机数生成器必须是专门针对密码学用途而设计的。
1.2.用口令生成密钥
一般都是将口令输入单向散列函数,然后将得到的散列值作为密钥使用。
在使用口令生成密钥时,为了防止字典攻击,需要在口令上面附加一串称为盐的随机数,然后再将其输入单向散列函数。这种方法称为“基于口令的密码” 。
1.3.更新密钥
有一种提高通信机密性的技术被称为密钥更新,这种方法就是在使用共享密钥进行通信的过程中,定期改变密钥。
在更新密钥时,发送者和接收者使用单向散列函数计算当前密钥的散列值,并将这个散列值用作新的密钥。简单说,就是用当前密钥的散列值作为下一个密钥。
1.4.保存密钥
会话密钥在通信过程中仅限使用一次,因此我们不需要保存这种密钥。然而,当密钥需要重复使用时,就必须要考虑保存密钥的问题了。
1.5.Diffie-Hellman密钥交换
使用这种算法,通信双方仅通过交换一些可以公开的信息就能够生成出共享的秘密数字,而这一秘密数字就可以被用作对称密码的密钥。实际上双方并没有真正交换密钥,而是通过计算生成出了一个相同的共享秘钥。
1.5.1.Diffie-Hellman 密钥交换的步骤
在这里插入图片描述
(1).Alice向Bob发送两个质数P和G
P必须是一个非常大的质数,而G则是一个和P相关的数,称为生成元。P和G不需要保密,被窃听者Eve获取也没关系。
(2).Alice生成一个随机数A
A 是一个1 ~ P - 2 之间的整数。这个数是一个只有Alice知道的秘密数字。
(3).Bob生成一个随机数B
B是一个1 ~ P - 2 之间的整数。这个数是一个只有Bob知道的秘密数字。
(4).Alice 将 G A m o d P G^A mod P GAmodP这个数发送给Bob
这个数让Eve知道也没关系。
(5).Bob 将 G B m o d P G^B mod P GBmodP这个数发送给Alice
这个数让Eve知道也没关系。
(6).Alice用Bob发过来的数计算A次方并求mod P
Alice计算的密钥= ( G B m o d P ) A m o d P (G^B mod P)^A mod P (GBmodP)AmodP= ( G B ∗ A m o d P ) (G^{B*A}mod P) (GBAmodP)
(7).Bob用Alice发过来的数计算B次方并求mod P
Bob计算的密钥= ( G A m o d P ) B m o d P (G^A mod P)^B mod P (GAmodP)BmodP= ( G B ∗ A m o d P ) (G^{B*A}mod P) (GBAmodP)

1.5.2.Eve能计算出密钥吗
在步骤(1)~(7)中,双方交换的数字(即能够被窃听者Eve知道的数字) 一共有4个: P 、 G 、 G A m o d P 和 G B m o d P P、 G 、G^A mod P 和 G^B mod P PGGAmodPGBmodP。根据这4个数字计算出Alice和Bob的共享密钥 ( G A × B m o d P ) (G^{A×B} mod P) (GA×BmodP)是非常困难的。

如果仅仅是 G A G^A GA的话,要计算出A并不难,然而根据 G A m o d P G^A mod P GAmodP计算出A 的有效算法到现在还没有出现,这个问题称为有限域的离散对数问题。而有限域的离散对数问题的复杂度正是支撑 Diffie-Hellman 密钥交换算法的基础。

1.5.3.生成元的意义
在这里插入图片描述
我们可以发现 2 1 2^1 21 2 12 2^{12} 212的值(共12个)全都不一样。也就是说,2的乘方结果中出现了1到12的全部整数。由于2具备上述性质,因此称为13的生成元。同样地,6、7和11也是生成元。

也就是说,P的生成元的乘方结果与1 ~ P - 1 中的数字是一一对应的。正是因为具有这样一一对应的关系,Alice才能够从1~ P-2的范围中随机选择一个数字(之所以不能选择P-1,是因为 G P − 1 m o d P G^{P-1} mod P GP1modP的值一定是等于1的)。

1.6.基于口令的密码
基于口令的密码就是一种根据口令生成密钥并用该密钥进行加密的方法。其中加密和解密使用同一个密钥。
1.6.1. PBE加密
在这里插入图片描述
(1).生成KEK
首先,伪随机数生成器会生成一个被称为盐的随机数。将盐和Alice输入的口令一起输入单向散列函数,得到的散列值就是用来加密密钥的密钥(KEK)。
(2).生成会话密钥并加密
我们使用伪随机数生成器生成会话密钥。会话密钥是用来加密消息的密钥 (CEK)。
会话密钥需要用刚才步骤(1)中生成的KEK进行加密,并和盐一起保存在安全的地方。会话密钥加密之后,KEK就会被丢弃,因为KEK没有必要保存下来,只要通过盐和口令就可以重建 KEK。
(3).加密消息
(4).保存
“盐”和“用KEK加密的会话密钥”需要保存在安全的地方。

1.6.2.PBE解密
(1).重建KEK
我们将之前保存下来的盐,和Alice输入的口令一起输入单向散列函数。这个计算过程和生成 KEK时的计算过程是一样的,因此所得到的散列值就是KEK。
(2).解密会话密钥
我们获取之前保存下来的“用KEK加密的会话密钥”,用步骤(1)中恢复的KEK进行解密。这一步我们可以得到会话密钥。
(3).解密消息
在这里插入图片描述
1.6.3.盐的作用
盐是用来防御字典攻击的。字典攻击是一种事先进行计算并准备好候选密钥列表的方法。

我们假设在生成KEK的时候没有加盐。那么主动攻击者 Mallory 就可以根据字典数据(各种可能口令)事先生成大量的候选KEK。
在这里,事先是很重要的一点。这意味着Mallory可以在窃取到加密的会话密钥之前,就准备好了大量的候选KEK 。当 Mallory 窃取加密的会话密钥后,就需要尝试将它解密,这时只要利用事先生成的候选KEK,就能够大幅缩短尝试的时间,这就是字典攻击。

如果在生成KEK 时加盐,则盐的长度越大,候选KEK的数量也会随之增大,事先生成候选KEK 就会变得非常困难。加盐之后,候选KEK的数量会变得非常巨大。

1.6.4.口令的作用
在使用基于口令的密码时,需要将盐和加密后的CEK通过物理方式进行保护。例如可以将盐和加密后的CEK保存到存储卡中随身携带。

1.6.5.通过拉伸来改良PBE
将单向散列函数进行多次迭代的方法称为拉伸。

1.6.6.如何生成安全的口令
(1).使用只有自己才能知道的信息
(2).将多个不同的口令分开使用
(3).有效利用笔记
用伪随机数生成器生成一个随机的字符串作为口令,然后将口令记下来保存在安全的地方。换言之, 应该将笔记与物理的钥匙同等对待。仅将口令的一部分写下来的方法也是非常有效的。
(4).理解口令的局限性
(5).使用口令生成和管理工具

随机数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1238352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

flutter 极光集成华为厂商推送:Could not resolve com.huawei.agconnect:agcp:1.9.1.301

前提:已经按照极光官网配置好准备工作 问题截图: 主要一直通过vscode启动项目,下载华为包失败。通过和极光的开发沟通,在Android Studio中配置代理Ps:代理信息 检查链接成功,即可去下载插件包 然后正常执…

【技巧】PDF文件如何编辑?

日常办公中我们经常会用到PDF文件,PDF具备很好的兼容性、稳定性及安全性,但却不容易编辑,那PDF要如何编辑呢? 如果打开PDF文件就只是只读的性质,说明文件是在线打开,或者通过PDF阅读器打开的,这…

nodejs+vue线上生活超市购物商城系统w2c42

超市管理系统的开发流程包括对超市管理系统的需求分析,软件的设计建模以及编写程序实现系统所需功能这三个阶段。对超市管理系统的需求分析。在这个阶段,通过查阅书籍,走访商场搜集相关资料,了解经营者对软件功能的具体所需和建议…

人工智能和AR/VR:AI在AR和VR中扮演什么角色?行业应用有哪些?

增强现实技术和虚拟现实技术(AR/VR)发展前景广阔,备受各大企业关注。事实上,近四分之三的行业领导者表示,他们预计这些沉浸式技术将于未来五年内成为主流。高盛公司报告称,到2025年,AR/VR行业值…

Golang版本处理Skywalking Trace上报数据

Tips: 中间记录了解决问题的过程,如不感兴趣可直接跳至结尾 首先去es里查询skywalking trace的元数据 可以拿到一串base64加密后的data_binary(直接解密不能用,会有乱码,可参考https://github.com/apache/skywalking/issues/7423) 对data_b…

SkyWalking配置报警推送到企业微信

1、先在企业微信群里创建一个机器人,复制webhook的地址: 2、找到SkyWalking部署位置的alarm-settings.yml文件 编辑,在最后面加上此段配置 !!!一定格式要对,不然一直报警报不出来按照网上指导…

Leaflet结合Echarts实现迁徙图

效果图如下&#xff1a; <!DOCTYPE html> <html><head><title>Leaflet结合Echarts4实现迁徙图</title><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

计算机系统的存储原理

文章目录 高速缓存存储设备的层次结构操作系统的两个基本功能参考 高速缓存 高速缓存至关重要。 helloworld 程序揭示了一个重要的问题&#xff1a;系统花费了大量的时间把信息从一个地方挪到另一个地方。 程序的机器指令最初是存放在磁盘上&#xff0c;当程序加载时&#xf…

c语言打印金字塔

输入行数n,打印n行的金字塔。如图&#xff1a; 先分析其规律。 打印n行&#xff0c;即外层循环n次。再分析每一层的规律&#xff0c;先具体化举例&#xff0c;举一个行数为5的金字塔。可以发现每一行前面的空格呈递减趋势&#xff0c;且与行数有关系&#xff1a;空格数行数-层…

STM32_3(GPIO)

GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口8种输入输出模式输出模式可控制端口输出高电平&#xff0c;驱动LED、蜂鸣器、模拟通信协议输出时许等输入模式可读取端口的高低电平或电压&#xff0c;用于读取按键输入、外接模块电平信号输…

AD7021C 触摸感应加灯光调节芯片IC 可用于触摸台灯、触摸玩具灯等

AD7021C触摸感应 IC 是为实现人体触摸界面而设计的集成电路。可替代机械式轻触按键&#xff0c;实现防水防尘、密封隔离、坚固美观的操作界面。使用该芯片可以实现 LED 灯光亮度调节&#xff0c;方案所需的外围电路简单&#xff0c;操作方便。确定好灵敏度选择电容&#xff…

【MybatisPlus】简介与使用

MyBatisPlus 1.简介 MyBatisPlus&#xff08;简称MP&#xff09;是一个MyBatis的增强工具&#xff0c;在MyBatis的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生 官网&#xff1a;https://baomidou.com/ MyBatis-Plus特性&#xff1a; 无侵入&#xff1a;只…

主机dbeaver访问gitlab容器中的pg

映射5432端口- 5431:5432或者从docker客户端查看 version: 3.6 services:web:image: gitlab/gitlab-ce:latestrestart: alwayshostname: localhostenvironment:GITLAB_OMNIBUS_CONFIG: |external_url http://localhost:8929gitlab_rails[gitlab_shell_ssh_port] 2224ports:- …

【漏洞复现】DPTech VPN存在任意文件读取漏洞

漏洞描述 DPtech是在网络、安全及应用交付领域集研发、生产、销售于一体的高科技企业。DPtech VPN智能安全网关是迪普科技面向广域互联应用场景推出的专业安全网关产品&#xff0c;集成了IPSec、SSL、L2TP、GRE等多种VPN技术&#xff0c;支持国密算法&#xff0c;实现分支机构…

详解Java的static关键字

文章目录 &#x1f384;静态方法&#x1f33a;静态方法和非静态方法对比&#x1f6f8;静态方法实例&#x1f6f8;非静态方法实例 &#x1f339;static关键字⭐static变量⭐static代码块 &#x1f384;静态方法 不依赖于对象实例&#xff1a;静态方法不需要依赖于任何对象实例&…

【JavaEE】操作系统与进程

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

我们对凌鲨的一次重构

在10月我们对凌鲨进行了一次重构&#xff0c;把所有鸡肋的功能都删除了。 新版本界面 老版本界面 我们干掉的功能 移除沟通频道功能 沟通频道类似slack功能&#xff0c;用于团队沟通。由于国内有大量的沟通软件&#xff0c;比如企业微信&#xff0c;飞书&#xff0c;钉钉等。…

振弦传感器土压力计的安装及埋设方法

振弦传感器土压力计的安装及埋设方法 土压力计是一种测量土体内侧压力的仪器&#xff0c;常用于土体工程的安全监测和评估。以下是土压力计的安装及埋设方法&#xff1a; 1. 选择合适的位置&#xff1a;土压力计的安装位置应该在土体内的高应力区域&#xff0c;以便能够准确测…

深眸科技以自研算法+先进硬件,创新打造AI视觉一体化解决方案

工业视觉软硬件一体化解决方案&#xff1a;是以工业AI视觉技术为核心&#xff0c;通过集成工业相机等视觉硬件、电控系统和机械系统等自动化设备以及算法平台等软件应用&#xff0c;为工业自动化降本增效提质。 深眸科技为进一步巩固和加强技术领先优势&#xff0c;创新打造的…

Elasticsearch:将最大内积引入 Lucene

作者&#xff1a;Benjamin Trent 目前&#xff0c;Lucene 限制 dot_product (点积) 只能在标准化向量上使用。 归一化迫使所有向量幅度等于一。 虽然在许多情况下这是可以接受的&#xff0c;但它可能会导致某些数据集的相关性问题。 一个典型的例子是 Cohere 构建的嵌入&#x…