【网络安全技术】公钥密码体制

一、两种基本模型

1.加密模型

A要给B发信息,那就拿B的公钥加密,传给B,B收到后会拿他自己的私钥解密得到明文。

2.认证模型(数字签名)

A用自己的私钥加密,传输之后,别人拿A的公钥解密,如果解密成功,那就可以说明这条信息是A发的。

二、公钥密码体制数学基础

1.单向函数

1)给定x,正着计算y=f_{k}(x)是容易的

2)给定y,逆着计算y=f{_{k}}^{-1}(x)是不可行的

就比如说大整数分解,在数很大的时候,要遍历所有所有比它小的素数,这被认为是困难的。

三、Diffie-Hellman

这个和上面提到的标准的公钥模型有区别,这个算法简单来说,就是双方通过一个公共的信息(q,a),计算得到一个只有他们两人知道的共享密钥k。

1.首先a和b共享两个全局参数q和a,q是个素数,a是q的本原根。

本原根:a是q的本原根,那么a的1到q-1次方分别模q,分别得到不同的数。

2.然后a和b分别各自选一个数X_{A}X_{B},都小于q,作为各自的私钥。

3.他们分别用X_{A}X_{B}算各自的公钥,公钥=a的密次幂模q

Y_{A}=a^{X_{A}}\ mod\ qY_{B}=a^{X_{B}}\ mod\ q,并发送给对方,这个计算就相当于单向函数中的正着算,被认为是容易的。

4.a和b收到对方的发来的公钥后,计算共享密钥,共享密钥=公共的密次幂模q

对于a来说,K=(Y_{B})^{X_{A}}\ mod\ q

对于b来说,K=(Y_{A})^{X_{B}}\ mod\ q 

这两个算出来的k是相等的,双方就有了共享密钥,这个密钥可以用来例如作为AES的密钥。

四、中间人攻击Man in the Middle attack

先看左半边,a选定私钥之后,计算自己的公钥发给b,这个信息被大司截获,大司选定一个私钥,用这个私钥计算公钥,还给a。a用大司给他的公钥计算出k2来,之后就用k2来加密例如AES了。

然后右半边,b选定私钥之后,计算自己的公钥发给a,大司也把他截获了,自己选定另一个私钥,计算公钥还给b。b拿大司给他的公钥算出来k1,之后就用k1来加密了。

这样,大司要计算k1=b的公钥的密次幂,k2=a的公钥的密次幂,所以它是有k1和k2的,之后a和b所有的数据通信对大司来说都是透明的了。

这个问题的根本在于,a和b分别不能知道收到的公钥是否是对方发来的,如果a能验证收到的公钥是b发来的,b反之也可以,那么就不会被大司截胡了,因为大司发来的一验证就直接露馅了。

五、RSA算法

这个算法是生成自己的私钥和公钥的算法,就像一开始提到的标准的公钥密码体制,生成自己的私钥和公钥后,别人要给自己发消息,就拿自己的公钥加密,自己收到后拿自己的私钥解密。

1.密钥产生流程

1)选p,q两个不相等的素数。

2)算n=p*q。

3)算phi(n)=(p-1)*(q-1)。

4)选一个和phi(n)互质的数e,1<e<phi(n)

5)拿phi(n)和e算d,de和1模phi(n)同余,简单来说就是d*e模phi(n)=1。这样能算出很多个d,取最小的那个。

6)这样就有了公钥PK={e, n}, 私钥SK={d, n}

别人有了公钥,e和n是算不出来d的,因为d是拿e和phi(n)算的,要求phi(n)就得分解n,这被认为是不可能的。

2.加密:

1)将明文转换为一个数M,M<n

2)密文C=M^{e}\ mod\ n

3.解密:

明文M=C^{d}\ mod\ n

4.与对称加密结合

RSA加密速度比DES慢1000倍,那么加密大量明文就不适用。

考虑用RSA加密密钥,再用对称加密例如AES加密。

考虑以下场景,a要和b通信,那么a就通过RSA生成自己的公私钥,b生成AES加密用的密钥。b将密钥用a的公钥加密,发送给a,a用自己的私钥解密,拿到密钥。

之后双方通信就有共享密钥了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊云科技大语言模型下的六大创新应用功能

目录 前言 亚马逊云科技的AI创新应用 ​编辑 Amazon CodeWhisperer Amazon CodeWhisperer产品的优势 更快地完成更多工作 自信地进行编码 增强代码安全性 使用收藏夹工具 自定义 CodeWhisperer 以获得更好的建议 如何使用Amazon CodeWhisperer 步骤 1 步骤 2 具体…

辅助驾驶功能开发-功能规范篇(22)-9-L2级辅助驾驶方案功能规范

1.3.7.2 行人、骑行者(横向)AEB 系统 1.3.7.2.1 状态机 1.3.7.2.2 信号需求列表 同 1.3.2.1.2。 1.3.7.2.3 系统开启关闭 同 1.3.2.1.3。 触发横向 AEB 的目标包括横向运动的行人、骑行者(包括自行车、摩托车、电瓶车和平衡车上的行人)。 1.3.7.2.4 制动预填充 制动系统…

pyusb环境搭建和无法发包问题

pyusb环境搭建和无法发包问题 项目需要对usb设备进行开发调试&#xff0c;选择搭建pyusb环境进行调试测试&#xff0c;这里记录下完整流程和中间解决的一些问题。 我使用的环境是window10 64bit, vscode 1.84.0 , Python 3.11.6 1 安装流程 参考github上的 https://github.…

伪随机序列——m序列及MATLAB仿真

文章目录 前言一、m 序列1、m 序列的产生2、m 序列的性质①、均衡性②、游程分布③、移位相加特性④、自相关函数⑤、功率谱密度⑥、伪噪声特性 二、M 序列1、m 序列的产生2、m 序列的性质 三、MATLAB 中 m 序列1、m 序列生成函数的 MATLAB 代码2、MATLAB 仿真 前言 在通信系统…

Photoshop 2023 v24.7

Photoshop是一款强大的图像编辑软件&#xff0c;被广泛应用于图像处理、图形设计、数字绘画等领域。它提供了丰富的图像编辑功能&#xff0c;可以用于调整图像的色彩、亮度、对比度等&#xff0c;添加特效、滤镜&#xff0c;以及进行复杂的图像合成和修复。 以下是Adobe Photo…

基于动力学模型的机械臂滑膜控制

一、滑模控制设计思路 参考资料&#xff1a;https://zhuanlan.zhihu.com/p/463230163&#xff08;思路理解&#xff09; https://blog.csdn.net/xiaohejiaoyiya/article/details/90271529&#xff08;干扰的处理&#xff09; 滑模控制的思路有两个关键&#xff0c;一个是设计…

一文通透各种注意力:从多头注意力MHA到分组查询注意力GQA、多查询注意力MQA

前言 通过本博客内之前的文章可知&#xff0c;自回归解码的标准做法是缓存序列中先前标记的键(K)和值(V) 对&#xff0c;从而加快注意力计算速度。然而&#xff0c;随着上下文窗口或批量大小的增加&#xff0c;多头注意力 (MHA)模型中与 KV 缓存大小相关的内存成本显着增长 对…

【多线程】Lambda表达式

package org.example;public class TestLambda {public static void main(String[] args) {Like likenew Like();like.lambda();}}//定义一个函数式接口 interface ILike{void lambda(); }//实现类 class Like implements ILike{Overridepublic void lambda() {System.out.prin…

Excel自学三部曲_Part3:Excel工作场景实战(四)

文章目录 四、高级函数与数据连接1. 多窗口操作2. VLOOKUP函数3. XLOOKUP函数4. CSV数据格式 四、高级函数与数据连接 1. 多窗口操作 如何将两张子表数据&#xff08;战区信息、城市信息&#xff09;连接到主表数据&#xff08;成交数据&#xff09;&#xff0c;增加主要数据的…

“一键批量拆分HTML文本,高效整理文件,提升工作效率“

您是否曾经被大量的HTML文本文件困扰&#xff0c;难以找到所需的特定信息&#xff1f;现在&#xff0c;我们向您推荐一款强大的工具&#xff0c;它能够一键拆分HTML文本&#xff0c;让您轻松实现文件整理&#xff0c;提高工作效率&#xff01; 首先&#xff0c;在首助编辑高手…

人工智能基础_机器学习014_BGD批量梯度下降公式更新_进一步推导_SGD随机梯度下降和MBGD小批量梯度下降公式进一步推导---人工智能工作笔记0054

然后我们先来看BGD批量梯度下降,可以看到这里,其实这个公式来源于 梯度下降的公式对吧,其实就是对原始梯度下降公式求偏导以后的梯度下降公式,然后 使用所有样本进行梯度下降得来的,可以看到* 1/n 其实就是求了一个平均数对吧.所有样本的平均数. 然后我们看,我们这里* 1/n那么…

API接口安全设计

简介 HTTP接口是互联网各系统之间对接的重要方式之一&#xff0c;使用HTTP接口开发和调用都很方便&#xff0c;也是被大量采用的方式&#xff0c;它可以让不同系统之间实现数据的交换和共享。 由于HTTP接口开放在互联网上&#xff0c;所以我们就需要有一定的安全措施来保证接口…

C++11 initializer_list 轻量级初始化列表的使用场景(让自定义类可以用初始化列表的形式来实例化对象)

initializer_list 是 C11 中的一个特性&#xff0c;它允许你使用花括号 {} 中的值列表来初始化容器或数组。通常用于初始化标准库容器&#xff0c;比如 std::vector、std::set、std::map 以及数组。 场景一&#xff1a;用初始化列表初始化容器 std::vector<int> arr {…

【深度学习】pytorch——Autograd

笔记为自我总结整理的学习笔记&#xff0c;若有错误欢迎指出哟~ 深度学习专栏链接&#xff1a; http://t.csdnimg.cn/dscW7 pytorch——Autograd Autograd简介requires_grad计算图没有梯度追踪的张量ensor.data 、tensor.detach()非叶子节点的梯度计算图特点总结 利用Autograd实…

scrapy+selenium框架模拟登录

目录 一、cookie和session实现登录原理 二、模拟登录方法-Requests模块Cookie实现登录 三、cookiesession实现登录并获取数据 四、selenium使用基本代码 五、scrapyselenium实现登录 一、cookie和session实现登录原理 cookie:1.网站持久保存在浏览器中的数据2.可以是长期…

Day20力扣打卡

打卡记录 数组中两个数的最大异或值&#xff08;位运算&#xff09; 链接 二进制位上从高位向低位进行模拟&#xff0c;看数组中是否有满足此情况的数字。具体题解 class Solution { public:int findMaximumXOR(vector<int>& nums) {int mx *max_element(nums.be…

【存档】vscode配置latex环境

原来在另一台电脑上找了个教程配了一遍&#xff0c;这次重新配的时候&#xff0c;那个教程作者更新过后&#xff0c;改成只有linux的脚本了&#xff0c;所以存档一下。真香警告, 2023年初的vscodelatex写作 - 知乎 (zhihu.com) 环境&#xff1a; win10/win11vscodelatex work…

【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)

目录 0. 前言 1. Cifar10数据集 2. AlexNet网络模型 2.1 AlexNet的网络结构 2.2 激活函数ReLu 2.3 Dropout方法 2.4 数据增强 3. 使用GPU加速进行批量训练 4. 网络模型构建 5. 训练过程 6. 完整代码 0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我…

分享81个工作总结PPT,总有一款适合您

分享81个工作总结PPT&#xff0c;总有一款适合您 PPT下载链接&#xff1a;https://pan.baidu.com/s/13hyrlZo2GhRoQjI-6z31-w?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易。知识付…

IDEA创建Springboot多模块项目

一、创建父模块 File --> New --> Project &#xff0c;选择 “ Spring Initalizr ” &#xff0c;点击 Next Next Next --> Finish 二、创建子模块 右键根目录&#xff0c;New --> Module 选择 “ Spring Initializr ”&#xff0c;点击Next 此处注意T…
最新文章