【密码学补充知识】

🔑密码学🔒概述

📕 1.基本概念

明文 : 要交换的信息

密文 : 明文经过一组规则变换成看似没有意义的随机消息。

加密 : 明文经过一组规则变换成密文的过程

解密 : 密文恢复出明文的过程

加密和解密都需要一个密钥来完成。

根据密钥的特点,密码体制可以分文两类

对称密码体制(单钥密码体制: 加密密钥和解密密钥相同,或者从一个密钥很容易推导出另外一个密钥。密码需要保密,所以对称密码体制又叫私钥密码体制

非对称密码体制 (双钥密码体制,公钥密码体制): 加密密钥和解密密钥不相同,并且从一个密钥很难推导出另外一个密钥。加密密钥可以公开,所以非对称密码体制又叫公钥密码体制

📕 2.密码体制

一个密码体制通常包括5部分

(1) 明文空间 M :全体明文m的集合;

(2) 密文空间 C : 全体密文c的集合;

(3) 密钥空间 K : 全体密钥的集合 ; 在具体的一次加密过程中,加密密钥ke和解密密钥kd都来自该空间,密钥空间不同密钥的个数称为密码体制的密钥量,通常来说:密钥量越大,密码体制的安全强度越高。

(4) 加密算法 E : 由加密密钥控制的加密交换的

(5) 解密算法 D : 由加密密钥控制的加密变换的集合。

一个密码体制要满足一致性,即如果

🌼

那么

🌼

👮‍安全性要求

保密性:信息只为授权用户使用,不能泄漏给未授权的用户。

完整性:信息在传输或者储存过程中,不能被偶然或者蓄意地破坏(删除,修改,伪造,重放,插入等)和丢失。

认证性:确保通信方的确是服务方认证地那位。

        认证方法分为: 实体认证和消息认证。实体认证指的是 确认一个实体的身份;消息认证 指的是 确认一个消息地来源。(arp欺骗就是破坏了认证性)

不可否认性:防止通信方对以前的许诺或者行为否认

🔪密码分析(攻击方法)

🔪(1)穷举分析:

通过试遍密钥空间中的所有密钥来对密文进行界面,直至得到正确的明文。

应对方法: 增加密钥空间的密钥量,但是也只能增加密码体制的安全强度,不能绝对安全。

🔪(2)统计分析攻击

通过分析明文和密文的统计规律来破译密码体制。

该方法对破译古典密码体制很有效,但是相应的也有其他密码体制。

🔪(3)数学分析攻击

针对加解密算法的数学基础和密码学性质,通过数学求解的方法来破解密码体制

🛠密码体制评估

👮‍(1)无条件安全性

如果一个具有无限计算资源的敌手都不能破译一个密码体制,则这种体制是无条件安全的。一次一密方法在唯密文攻击下可以达到无条件安全,但是一次一密是指每次加密一个信息 的时候都用不同的密钥,会消耗高额的密钥分配成本。 显然不实用。

👮‍(2)计算安全性

如果使用最好的算法来破译一个密码体制所需要的计算代价远远超过敌手的计算资源,则成这个体制是计算安全的。

👮‍(3)可证明安全性

如果一个密码体制的安全性可以规约为 某个数学问题,且这个数学问题是难解的,则这个密码体制是可证明安全的。

☞ 现代密码学的目标

(1) 一个密钥可以重复使用,不是每次使用后就更换新的密钥

(2) 一个短密钥可以加密长明文,密钥的长度比明文短。

也就是说,🙋‍在大多数情况下,我们只要保证计算安全性即可

🔢 2.数字签名

📕基本概念

产生原因:

在电子世界,人们希望用某种方法代替手写签名,实现对数字信息的签名。

数字签名的特性:

※(1)不可伪造性: 除了签名者,任何人不能伪造签名者的合法签名。

※(1)认证性:接收者相信这份签名来自签名者。

※(1)不可重复使用性:一个消息的签名不能用于其他信息

※(1)不可否认性: 签名者事后不能否认自己的二千米

※(1)不可修改性:一个消息在签名后不能被修改。

分类:

按用途分:

=》普通数字签名

=》具有特殊用途的数字签名(如: 盲签名)

=》不可否认签名

=》群签名

=》代理签名

按是否具有消息恢复功能

=》具有消息恢复功能的数字签名

=》不具有消息恢复功能的数字签名

按是否使用随机数

=》确定性数字签名

=》随机化数字签名

📕 RSA数字签名

RSA密码体制可以用来加密,也可以用于数字签名

1.参数与密钥生成

(1)选取两个保密的大素数 p,q 。

(2)计算 n=pq ,Ψ(n)=(p-1)(q-1),其中Ψ(n)是n的欧拉函数值。

(3)随机选取证书e ,1<e<Ψ(n),且满足gcd(e,Ψ(n))=1。(gcd 最小公因数函数)

(4)计算d ,满足de=1 mod  Ψ(n) 。

(5)公钥为 (e,n) 私钥为 d 。

2.签名

对于消息m∈Zn,签名为 

3.验证

对于消息签名对  (m,e) ,如果有

则   s 是 m的有效签名

🆔3.身份识别

📕 概念

让验证者(V: Verifier)相信正在与之通信的另一方(P:Prover)就是所称的那个实体,目的是方式假冒。

一个安全的身份识别协议应该满足三个条件 :

(1)P 能向 V 证明 他的确是P

(2)P向V证明身份后,V没有获得任何有用测定信息,P不能假冒成 V

(3)除了P以外的第三者 以P的身份执行该协议,能够让V相信他是P的概论可以忽略不记。

(想到ARP欺骗没 (*^_^*)  )

身份识别分为 两类:

(1)弱识别 : 使用口令、口令段、口令驱动的密钥来证明自己的身份

(2)强识别 :通过向验证者展示与证明者实体有关的秘密信息来证明自己的身份。这种识别通常通过挑战-应答方式进行,挑战是指一方随机地选取一个秘密数发送给另一方,而应答是对挑战的回答。应答与实体的秘密信息及对方挑战有关系。

📕 Guillou-Quisquater身份识别方案

1988年, Guillou 和 Quisquater 提出了基于 RSA 密码体制安全性的身份识别方案。

1.系统初始化
 Guillou - Quisquater 身份识别方案需要一个信任权威 TA 。 TA 选择两个大素数计算 n = pq ,确定自己的签名算法 
和 Hash 函数 h 。 TA 还要选取一个长度为40bit  的素数 b 作为自己的公钥,计算私钥 公开参数为 n 、 b 、 h 、
2. TA 向 P 颁发身份证书
(1) TA 为 P 建立身份信息 IDp 。
(2) P 秘密选取一个整数 u ,0≤ u ≤ n -1且 ged ( u , n )=1,计算:


并将 v 发送给 TA 。
(3) TA 计算签名 s = SigTA ( IDp , v ),将证书 C ( P )=( IDp , v , s )发送给 P 。
3.P向 V 证明其身份
(1) P 随机选取整数 k ,1≤ k ≤ n -1,计算:



并将证书 C ( P )和r发送给 V 。
(2) V 验证 s 是否是 TA 对( IDp , v )的签名。如果是, V 随机选取整数 r ,0≤ r ≤ b -1,
并把它发送给 P 。
(3) P 计算:


并将 C(p) 和y发送给 V 。
(4) V 验证是否有:



成立。如果成立, V 就接受 P 的身份证明;否则拒绝 P 的身份证明
在 Guillou - Quisquater 身份识别方案中,由于 P 掌握了秘密信息 u ,对于任何挑战,
 P 都可以在步骤(3)中计算 y 使得


成立。如果一个攻击者 C 能够猜测出 V 随机选取的整数 r ,则 C 可以任意选取一个 y ,计算:

在步骤(1)中, C 将 y 发送给 V ,在步骤(3)中, C 将 y 发送给 V 。最后,在步骤(4)中, V -定能够验证:

成立, V 接受 C 的身份证明,从而 C 成功地冒充了 P 。攻击者 C 能够猜测随机数,的概率为1/b。因为6是一个很大的整数,所以 C 想成功冒充 P 的概率非常小。
 

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

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

相关文章

MT1184矩形相交 题解【超详细】

目录 题目 样例 题目解析 代码 图解 矩形相交 题目 输入2个矩形的左上角和右下角两个点的坐标值(x&#xff0c;y)&#xff0c;判断2个矩形是否相交&#xff0c;输出YES或者NO。矩形的边应与x&#xff0c;y轴相平行。假定输入坐标能顺利构成矩形&#xff0c;不考虑无效矩形…

macOS使用官方安装包安装python

新手程序员可能想知道如何在 Mac 上正确安装 Python&#xff0c;这里介绍在 macOS 上安装 Python 的方法。 操作步骤 1.从 Python 官方网站 (python.org) 下载最新的 Python 版本. 单击 macOS 链接并选择最新的 Python 版本。 2.下载完成后&#xff0c;双击包开始安装Python…

二、ubuntu主机端tftp及nfs服务开发环境安装

一.主机端tftp服务环境安装及配置 检查是否已经安装tftp server $dpkg -s tftpd-hpa#如果提示未安装服务&#xff0c;则执行下面安装指令$sudo apt-get install tftpd-hpa tftp-hpa#tftpd-hpa服务端 tftp-hpa客户端创建tftp启动目录&#xff0c;用于存放内核与设备树文件&a…

利用 spring test 实现自动启动spring 容器进行 JPA接口测试

自动启动context JPA接口测试 import com.alibaba.druid.pool.DruidDataSource; import org.junit.BeforeClass; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cont…

第6讲:v-for使用

目录 1.循环遍历 2.v-for遍历整形变量&#xff08;99乘法表&#xff09; 3.v-for遍历普通数组 4.v-for遍历数组对象 1.循环遍历 v-for指令基于一个数组渲染一个列表&#xff0c;它和JavaScript的遍历语法相似&#xff1a; v-for”item in list” list 是一个数组&#xff0c; i…

[C++ 网络协议] Windows中的线程同步

目录 1. 用户模式(User mode)和内核模式(Kernal mode) 2. 用户模式的同步(CRITICAL_SECTION) 3. 内核模式同步 3.1 互斥量 3.2 信号量 3.3 事件对象 4. 实现Windows平台的多线程服务器端 1. 用户模式(User mode)和内核模式(Kernal mode) Windows操作系统的运行方式是“…

windows平台 git bash使用

打开所在需要git管理的目录,鼠标右键open Git BASH here 这样就直接进来,不需要windows dos窗口下麻烦的切路径&#xff0c;windows和linux 路径方向不一致 (\ /) 然后git init 建立本地仓库,接下来就是git相关的操作了. 图形化界面查看 打开所在需要git管理的目录,鼠标右键…

kubernetes问题(一)-探究Pod被驱逐的原因及解决方法

1 k8s evicted是什么 k8s evicted是Kubernetes中的一个组件&#xff0c;主要用于处理Pod驱逐的情况。在Kubernetes中&#xff0c;当Node节点资源不够用时&#xff0c;为了保证整个集群的运行稳定&#xff0c;会按照一定的优先级和策略将其中的Pod驱逐出去。这时就需要一个组件…

软考高级架构师下篇-17安全架构设计理论与实践

目录 1. 引言信息安全面临的威胁2. 安全体系架构的范围3.典型安全模型4.信息安全整体架构设计5.数据库系统安全设计6.系统架构脆弱性分析7.安全架构设计实践8. 前文回顾1. 引言 随着科技的发展,信息系统的安全受到诸多方面的威胁,设计信息系统安全架构需要从各个方面考虑,这…

如何通过优化Read-Retry机制降低SSD读延迟?

近日,小编发现发表于2021论文中,有关于优化Read-Retry机制降低SSD读延迟的研究,小编这里给大家分享一下这篇论文的核心的思路,感兴趣的同学可以,可以在【存储随笔】VX公号后台回复“Optimizing Read-Retry”获取下载链接。 本文中主要基于Charge Trap NAND架构分析。NAND基…

MySQL5.7开启通用日志功能

起因&#xff1a; 因项目数据库占用异常&#xff0c;查询数据库有哪些IP地址连接使用&#xff08;Windows环境下&#xff09;。 操作步骤&#xff1a; 1、修改MySQL服务的my.ini 文件 # 开启通用查询日志 general_log 1 log_output …

buuctf-[WUSTCTF2020]朴实无华

打开环境就这么一句话 先打开index.php,但是没有什么 查看了下网络 看到gzip和php 我试了试www.zip 还有index.phps&#xff0c;也是一样的&#xff0c;都没找到文件 于是我想到用御剑扫&#xff0c;但是我好像线程太长了&#xff0c;一个没扫到&#xff0c;我就想到用dirsea…

人工智能AI 全栈体系(六)

第一章 神经网络是如何实现的 这些年神经网络的发展越来越复杂&#xff0c;应用领域越来越广&#xff0c;性能也越来越好&#xff0c;但是训练方法还是依靠 BP 算法。也有一些对 BP 算法的改进算法&#xff0c;但是大体思路基本是一样的&#xff0c;只是对 BP 算法个别地方的一…

Jmeter配置性能监控插件

一、版本不兼容时&#xff0c;有报错 1、当jmeter版本比较高时&#xff0c;只需要从官网安装jmeter-plugins-manager-1.10.jar一个包 2、当jmeter版本较低时&#xff0c;安装JMeterPlugins-Extras-1.4.0.zip、JMeterPlugins-Standard-1.4.0.zip内两个jar包 3、服务器上传文件…

FPGA到底是什么?

首先只是凭自己浅略的了解&#xff0c;FPGA好像也是涉及到了开发板&#xff0c;单片机之类的东西&#xff0c;和嵌入式十分相似&#xff0c;但是比嵌入式更高级的东西。 肯定有很多小伙伴如我一样&#xff0c;只是听说过FPGA&#xff0c;听别人说的传呼其神&#xff0c;那么它到…

PTE深度了解(一)

目录 PTE模板开始大审查吗&#xff1f;我的模板还能用吗&#xff1f; 使用模版&#xff0c;不会额外扣你分 类型一&#xff08;前20秒说模版&#xff09; 类型二&#xff08;老实巴交&#xff09; 类型三&#xff08;就是都说简单句&#xff09; 1.查重复 2.增加内容分识…

Android Jetpack组件架构 :LiveData的使用和原理

Android Jetpack组件架构&#xff1a; LiveDate的使用和原理 导言 继Lifecycle组件之后我们接下来要介绍的就是LiveDate组件&#xff0c;所谓LiveDate字面意思上就是有声明的数据&#xff0c;当数据有改动时该组件可以感知到这个操作并将该事件通知到其观察者&#xff0c;这样…

Linux基础指令(五)

目录 前言1. 打包和压缩1.1 是什么1.2 为什么1.3 怎么办&#xff1f; 2. zip & unzip3. tar 指令结语&#xff1a; 前言 欢迎各位伙伴来到学习 Linux 指令的 第五天&#xff01;&#xff01;&#xff01; 在上一篇文章 Linux基本指令(四) 当中&#xff0c;我们学习了 fin…

git --- 基础介绍

git --- 基础介绍 git 是什么git --- 工作区, 暂存区, 资源库git --- 文件状态git --- branch 和 HEADgit --- 一次正常的git提交流程 git 是什么 Git是一款分布式源代码管理工具(版本控制工具)Git和其他传统版本控制系统比较: 传统的版本控制系统(例如 SVN)是基于差异的版本控…

回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于RF-Adaboost随机森林结合…