信息安全复习三:古典密码之设计好的密码算法

news2024/11/24 23:51:47

一.章节梗概

讨论以下算法,理解怎么设计好的密码算法的关键问题
1.Caesar cipher
2.单字母表密码
3.Playfairmima
4.维吉尼亚密码
5.自动生成密码

二.Caesar cipher

2.1 穷举攻击

穷举攻击定义:尝试所有密钥直到有一个合法密钥能够把密文还原成明文,这就是穷举攻击。

进行穷举攻击的条件
1.密钥数量比较少,可以穷举
2.明文是有信息量在里面的,可以通过信息来判断解密后的信息是否正确。

注意:如果明文是一个纯粹随机的序列,我们没法解密。

2.2 改进凯撒密码

攻击者总能通过穷举法对凯撒密码算法进行破译。
如何改进:增加密钥数量。

三、 单字母表密码

3.1 单字母表密码的特点

密钥数量足够多,密钥是26个字母长度。

单字母密码分两种不同的加密形式,一个单表代换密码,一个多表代换。

3.2 加密方法

加密方式:替代法
采用另一个乱序字母表来替代明文字母,明文字母和密文字母保持一一对应关系。要得到一个乱序字母表,可以采取随机排列的方式,也可以由一张混淆字母表生成,过程如下:

a) 随机选择一个密钥字或密钥短语,例如:cybersecurity
b) 去掉重复字母:cybersuit
c) 这些字母构成矩阵的第一行,矩阵的后续各行由标准字母表中去掉密钥字的字母后剩下的字母构成
d) 按列取出矩阵中的字母得到混淆字母表:
canydobfp
egqrhvsjw
ukxilztm

3.3 单字母表密码的攻击手段

1.出现频率高的词
2.字母频率分析的方法:因为单字母表密码没有改变原来明文里的字母出现的频率,因此我们就可以根据替换后的字母频率与已知的字母频率相对应,就可以分析出替换前的字母。

3.4 单字母表的致命缺陷

把明文里字母的统计规律原封不动的保留到了密文里面。

注:密钥数量多了,但它还是可以破译的,而且攻击者去攻击的技术手段不需要去穷举。

思考:什么是好的密码算法?

好的密码算法:攻击者只能用穷举法进行攻击,除此之外别无他法,这样我们可以量化攻击难度,攻击者的攻击成本和key size成正比。
在这里插入图片描述

3.5 改进单字母表密码

两种改进方案:
1.明文分组,一次加密多个字母,如playfair密码,对明文进行分组,然后一次代替(多对一)
2.一个字母被多个字母代替,如维吉尼亚密码,明文里的一个字母,在密文里被多个字母来替代(一对多)

单字母密码密码分析(上)

四、无条件安全&计算机上安全

4.1 定义

无条件安全:是指我们假设攻击者有无限的时间,有无限的计算机资源,它也不能够解密,不能够攻破的密码算法。

计算机上安全:是指我们假设攻击者的时间是有限的,攻击者的计算资源是有限的情况下,无法解密。

4.2 讨论

在计算机安全的定义下,我们设计密码时,只需要考虑加密者的计算成本远远低于攻击者在不知道密钥的情况下破译密码的成本就可以了。

无条件安全的定义下,能够达到无条件安全的这样一种机制时不存在的,或者只在理论上安全,我们现实中使用的密码方案没有无条件安全这种方案。

五、playfair密码(多对一)

5.1 定义

Playfair是一次加密双字母组合,也就是我们把明文分组的时候,2个字母为一组。

Playfair是惠斯通发明的,配合他发明的电报机一起使用,当要发送一个字母G的时候,黄色的指针偏转,指向字母G。
在这里插入图片描述

5.2 playfair密码加密步骤

分为三大步:1.编制密码表 2.整理明文 3.编写密文
构成部分:1.密钥 2.密码 3.密文 4.注明某个字母代替的另一个字母

1.编制密码表:
选一个关键字,关键字是密钥,下面的例子的关键字是“CRAZYDOG”;
构造一个关键字的矩阵,用于加密;
规定I和J不做区分,所以I的位置既是J又是I;
在这里插入图片描述

2.整理明文:对明文进行分组,两个字母一组,如果是重复的字母,中间加一个X,剩一个单字母也用X填充,如communist,应成为co,mx,mu,ni,st;

3.编写密文:加密规则为,同行取右边,同列取左边,其他取交叉;

加密规则的详细解释如下

1 若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。如,按照前表,ct对应dc

2 若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。

3 若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母(至于横向替换还是纵向替换要事先约好,或自行尝试)。如,按照前表,wh对应ku或uk。**

如,依照上表,明文where there is life,there is hope.

可先整理为:WH ER ET HE RE IS LI FE TH ER EI SH OP EX

然后密文为:KU YO XD OL OY PL FK DL FU YO LG LN NG LY

将密文变成大写,然后几个字母一组排列。

如5个一组就是KUYOX DOLOY PLFKD LFUYO LGLNN GLY

密码表的详细解释如下:

在这个5*5的密码表中,共有5行5列字母,代表从A-Z 共26个字母,其中I和J不作区分。
第一列(或第一行)是密钥,其余按照字母顺序。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉。
当然也要把使用频率最少的字母去掉。如:密钥是Live and learn,去掉后则为liveandr。
如果密钥过长可占用第二列或行。
填写好关键字后剩下的表按A-Z的顺序填写,关键字里已有的字母不再填写。

5.3 对Playfair密码的攻击和改进

只需要几百个单词的文本就可以被攻击。
改进:增大明文分组。

六、维吉尼亚密码(一对多)

6.1 定义

维吉尼亚密码是一种使用多表代换的代换密码,是在凯撒密码的基础上扩展出来的多表密码。

为了生成密码,需要使用表格法。这一表格包括了26行字母表,每一行都由前一行向左偏移一位得到。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换。

维吉尼亚密码引入了“密钥”的概念,根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。

6.2 加密与解密原理

在这里插入图片描述
加密:
维吉尼亚密码必须有一个密钥,这个密钥由字母组成,最少一个,最多可与明文字母数量相等。

例如:
明文:SECRET MESSAGE
密钥:CODE

1.首先,选择某一关键词重复而得到密钥。
明文 SECRETMESSAGE
密钥 CODECODECODEC

2.对照表格,密钥中的字母为行,明文中的字母为列。例如明文的第一个字母为S,密钥的第一个字母为C,对应表格,则密文的第一个字母为U。

3.对照完得密文:USFVGHPIUGDKG

解 密
解密前首先要知道密钥和密文。

例如:
密文:TLDKKOVD
密钥:TWO

1.密钥重复至与密文等长,密钥:TWOTWOTW

2.对照表格,密钥第一个字母为T,找到T行中的密文第一个字母T,为A列,可得明文第一个字母为A。

3.相应对照剩余字母,得明文:APPROACH

维吉尼亚密码

七、自动密钥密码(Autokey Cipher)

密钥和明文一样长。

自动密钥密码是密码学中的一种加密算法,与维吉尼亚密码类似。区别在于密钥不同。它的密钥开头是一个关键词,之后则是明文的重复

是一种比较强的密码。

缺陷:可以用来做密码分析,密钥key用的英文文本,加密对象也是英文文本,密钥里的字母频率和明文里统计规律是一样的;

把动态生成密钥发挥到极限就是在密文里如何把明文里一些统计上的规律屏蔽掉,把这个思想发挥到极致我们要找一个这样的keyword,它和明文一样长,不会重复使用或循环使用,在统计上和明文没有任何练习。

条件一:密钥和明文一样长。
条件二:密钥和明文不能有统计上的联系。

八、一次一密(One-Time-Pad)

一次一密是对称密钥密码的理论标杆。

如果密钥和消息一样长,且真正随机,那么该密码无条件安全。

1918年Gillbert Vernam提出密钥与明文一样长且没有统计关系的密钥内容,算法表述采用二进制数据,且申请了专利:
在这里插入图片描述
异或运算有这些性质:在这里插入图片描述
所以上面密码的算法是可逆的。

1949年,Shannon在他发表的经典论文中证明了一次一密的无条件安全性密钥的分发是个大问题,实用价值较弱,因为这个密码要求通讯双方提前共享一个纯粹的密钥序列。

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

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

相关文章

软考软件设计师 操作系统笔记

操作系统地位 程序顺序执行(进程管理) 程序顺序执行的特征,顺序性封闭性可再现性 前趋图 P1结束后 V操作 SS1 P2操作前先执行S S -1 此时S0 一个箭头对应一个信号量 程序并发执行和前驱图 找到输入i计算c输出p,如果找不到就…

结合实战,浅析GB/T28181(十)——媒体流保活

1 问题现象 在实际项目对接过程中,我们有时会碰到这样的问题:视频正在播放着,突然停止了。然后ping一下,也能ping通!下级平台或上级平台看起来也在线,看起来不是网络的问题。这到底咋回事呢?一…

实验室电磁铁EM4S的技术参数

锦正茂科技自主研发的电磁铁,可以通过更换电磁铁极头在一定范围内改善磁场的大小和磁场的均匀度 ,并且可以通过调整极头间距改变磁场的大小,该种类型的电磁铁能够很好的与客户设计的磁场平台兼容。主要用于磁滞现象研究、磁化系数测量、霍尔效…

公派访问学者签证申请需提交的材料

公派访问学者签证申请需提交的材料: 1、《公派留学人员基本情况表》。 2、留学基金委出具的《同意派出函》复印件一份(特殊项目除外)。 3、录取文件复印件一份。(如您是改派国别、延期派出、缩短在外留学期限等,还要提交留学基金委出具的相关文件复印件一份)。 4…

dtype = torch.float32到底有什么用

dtype torch.float32到底有什么用 解决:RuntimeError: expected scalar type Long but found Float 先看一个例子 要计算 z x0 w1x1 w2x2 其中w [-0.2,0.15,0.15] 于是你开始尝试 其中torch.mv用于矩阵*向量 此时你发现他需要你提供float格式的数据 你查看发…

(一)MYSQL实战——用户权限控制管理

前言 mysql作为目前最流行的关系型数据库,被广泛使用在各种系统服务中,本节内容主要是关于mysql数据库在生产环境中用户、权限等相关内容的设置说明,便于我们更好的使用和管理我们的数据库。 正文 SQL的分类 ①数据查询语言(Da…

SpringBoot日志

日志有什么用? 日志最主要的用途就是排查和定位错误,除此之外,日志还可以将错误信息具体化,比如时间、位置等。 如何打印日志 使用Logger类 使用方法: Logger log LoggerFactory.getLogger(类名/类名…

MVCC实现原理

MVCC实现原理 主要依赖隐藏字段undo logundolog生成的记录链 Read View可见性规则三个全局属性具体的比较规则 MVCC的整体处理流程RC、RR级别下的InnoDB快照读有什么不同 主要依赖 mvcc的实现原理主要依赖于记录中的三个隐藏字段(对用户来说是不可见的)…

【Spring Cloud Alibaba】8.路由网关(Gateway)

文章目录 简介什么是 Spring Cloud Gateway功能介绍工作流程 开始搭建创建项目修改POM文件添加启动类添加配置文件启动项目测试 网关全局过滤创建全局过滤器测试 结尾 简介 接下来对服务消费者添加路由网关来实现统一访问接口,本操作先要完成之前的步骤&#xff0c…

API 自动化测试难点总结与分享

笔者是 API 管理工具的项目参与者之一,在日常工作中会经常遇到 API 自动化测试难点,我决定总结分享给大家: API 自动化测试的难点包括: 接口的参数组合较多,需要覆盖各种可能的情况。 接口的状态和数据关联较多&#…

DJ4-1 存储器的层次结构

目录 4.1.1 存储器的层次结构 1. 主存储器(内存,主存,可执行存储器) 2. 寄存器 3. 高速缓存 4. 磁盘缓存 存储器层次结构的特点 4.1.2 存储器管理的目的和功能 1. 主存储器的分配和管理 2. 提高主存储器的利用率 3. 扩…

基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局

近年来,由于社会经济的快速发展和人口增长,社会活动对环境的压力不断增大,人地矛盾加剧。虽然全球各国在生态环境的建设和保护上已取得不少成果,但还是未从根本上转变生态环境的恶化趋势;生态破坏、环境退化、生物多样…

OceanMind海睿思入选“2023爱分析·智能制造最佳实践案例”

近日,中国领先的产业数字化研究与咨询机构 爱分析 发布了《2023爱分析智能制造最佳实践案例》,该奖项旨在肯定智能制造领域领先企业的数字化创新应用和最佳实践。 中新赛克海睿思凭借为星宇股份构建的“星宇车灯数据智能解决方案”入选智能制造最佳实践…

AWR1642毫米波雷达实测行人、自行车和汽车等目标

本文编辑 | 调皮哥的小助理 AWR1642因为最大中频带宽 固定只有5MHz,最大中频带宽是发射信号与回波信号混频之后得到的最大中频频率,即代表着最大的回波延迟时间。 因此根据雷达方程和目标最大探测距离公式,如下所示: 复采样&…

一文谈谈文心一言对比ChatGPT4.0的差距

对于想体验文心一言的朋友,可以进行申请尝试,快速入口 如果想体验ChatGPT的朋友,可以自行fq注册;但是由于现在限制注册并且不稳定,对于不会用梯子不想注册的朋友可以使用这个进行访问,快速入口 关于ChatG…

CTF之SSRF常见绕过

1.绕过localhost和127.0.0.1 当程序中限制了我们使用localhost和127.0.0.1时,便可以利用进制转换来绕过 http://0x7F.0.0.1 //16进制 http://0177.0.0.1 //8进制 http://2130706433 //10进制整数格式 http://0x7F000001 16进制整数格式 http://127.1 //省略模式 h…

【算法】C程序的运行速度测试

C语言程序的运行速度测试 代码随想录上提到了一点,即我们应该学会估计一个时间复杂度较高的算法,在机器上的运行速度。 如果题目给出的数据量级在高复杂度的算法中会超时,那就应该放弃使用这个代码,而想其他时间复杂度更优的解法…

QMS-云质说质量 - 9 我和我的客户投诉(1) - 逢年过节要祈祷

云质QMS原创 转载请注明来源 作者:王洪石 逢年过节都要祈祷 在某外资汽车零部件企业工作的那些年,无论在质量部还是项目部,都是成天和客户打交道,也经常面对各种各样的客户投诉。 尤其是当质量经理的那些年,每年都要被…

docker搭建简单elk日志系统5(logstash管道配置文件logstash.conf)

1.查看logstash管道配置文件logstash.conf cd ~/elk/logstash/pipeline/ cat logstash.conf默认的配置文件输入是beat; beat表示ELK Stack中的核心组件Beats; Beats指轻量型数据采集器,是一些列beat的合称;目前官网上的beat有: …

sql注入 Quine注入解析

前言 quine注入,即查询的结果是查询的语句 首先看看如下sql语句会返回什么 select replace(".",char(46),".");返回了一个点 匹配字符串".“中ascii码为46的字符并替换为”.“,也就是将”.“转换为”."并返回 继续看下面这个sql语句 selec…