第三章 传统加密技术

1 对称加密模型

对称加密防范的五个基本成分:

  1. 明文:原始的消息或是数据,是算法的输入
  2. 加密算法:加密算法对明文进行各种代替和变化
  3. 密钥:加密算法的输入,密钥独立于明文和算法,算法根据所用的特定密钥产生不同的输出
  4. 密文:算法的输入
  5. 解密算法:是加密算法的逆运算。输入密文和密钥,输出原始明文。

传统密码的安全使用满足如下两个要求:

  1. 机密算法必须足够强:即使对方拥有一定数量的密文和产生这些秘文的明文,他也不能破译密文或是发现密钥
  2. 发送者和接受者必须在某种安全模式下获得密钥并且必须保护密钥的安全。

对称加密的算法可以公开。

因此采用对称加密,首要的安全问题是密钥的保密性。

密码编码学的撒个独立特征:

  1. 转换明文为密文的运算类型:所有加密算法都给予两个原理:代替和置换。

大题是明文中的每个元素印社成为另一个元素。置换是将明文中的元素重新排列。

  1. 所用的密钥数:如果发送方和接收方使用相同的密钥,这种密码称为对称密码,单密钥密码或是传统密码。如果发送方和接收方使用不同的密钥,这种密码称为非对称密码,双钥或是公钥密码
  2. 处理铭文的方式:分组密码每次处理输入的一组元素,相应的输出一组元素。流密码则是连续的处理输入的元素,每次输出一个元素。

密码分析学和穷举攻击

攻击密码系统的典型目标是恢复使用的密钥(获取密钥)而不是仅仅会付出单个密文对应的明文。攻击密码系统的两种通用方法是:

  1. 密码分析学:密码分析学攻击依赖于算法的性质、明文的一般特征或是某些明密文对。这种攻击方式企图利用算法特征来推导出特定的明文或使用的密钥
  2. 穷举攻击:攻击者对一条密文尝试所有可能的密钥知道把它转化为可读的有意义的明文。

攻击类型:

攻击类型 攻击者已知信息
唯密文攻击 加密算法、密文
已知明文攻击 加密算法、密文、用同一密钥加密的一个或是多个明密文对
选择明文攻击 加密算法、密文、分析者选择明文以及对应的密文
选择密文攻击 加密算法、密文、分析者选择的密文和对应的明文
选择文本公积 加密算法、密文、分析者选择明文以及对应的密文、、选择密文以及对应的明文

2 代替技术

2.1 caesar密码

最早的密码Caesar发明的。就是简单的对子目标中每个字母的顺序替换。

因此穷举攻击很容易实现破解。只有25组破解出来的密文。

  1. 已知加密和解密算法
  2. 密钥只有25个
  3. 明文所用语言已知。含义容易识别

2.2 单表代替密码

caesar的替换只能是26个字母顺序替换,而单表代替密码,则是首先对$a \dots z$进行随机替换,这样子出现了$26!$种可能。然后再进行替换。

破解方式:

将单词中字母使用顺序统计出来,与英文字母的市永平率分布进行比较,如果一直新校足够长。那么就可以破解。

同时采用统计双字母组合的频率也是十分有效的工具,英文中$th$,等双字母出现的频率很高。因此密文中,该出现频率高的双字母自合极有可能是$th$

2.3 playfair密码

多字母代替密码playfair面,把明文中的双字母音节作为一个单元将其转化成密文的双字母音节。、

其过程是:首先选择一个单词作为密钥,然后取一个$5 \times 5$的表格存储26个字母($I$和$J$放在同一个单元格内),然后首先将单词填充在单元格的前面几个格中,如果密钥单词中出现重复单词,则去掉重复的。然后再将剩余没有出现在单词中的字母依次填充在剩余的单元格内。

然后对明文进行处理,将明文的单词两两分组,如果遇到一组中的两个字母相同,那么变化原有单词,在相同字母之间加上$x$填充。例如:$balloon$拆分为$ba,ll,oo,n$那么第二组$ll$是相同的字母,因此对单词进行处理$balxloon$再拆分(貌似这样需要是偶数个数字母,因此最后还会填充一个字母,补成偶数长度吧?)

然后得到两两的字母对去$5 \times 5$的表格中,进行替换:

  1. 如果字母对两个字母落在同一行,那么每个字母使用其右边的字母替代.(同一行轮转)
  2. 如果字母落在同一列,那么每个字母使用其上面一个字母进行替代(同一列轮转)
  3. 如果不同行和列,那么由这两个字母组成的一个矩阵,取另两个顶点,同行代替。

也就是说例如$A,B$,那么$A$代替的字母为在密钥表中:$A$所在行,$B$所在列的那个字母代替。

playfair密码在二战中大量使用。

但是仍然可以破解。

2.4 hill密码

hill密码利用了矩阵的知识:$APA^{-1} = P$

因此两个密钥就是$A^{-1}$和$A$

2.5 多表代替加密

对简单单表代替密码的改进方法是在明文消息中采用不同的单表代替。这一种方法称之为多表代替密码。特征为:

  1. 采用相关的单表代替规则集
  2. 密钥决定给顶变化的具体规则

多表代替密码中最著名也最简单的是Vigenere密码:

代替规则集是26Caesar密码,然后每个代替表示对$a \dots z$位移$0~25$次得来的。例如$a$对应0次。

然后在加密的时候,从明文序列开始,每个字母使用一个代替规则集中的一个。而密钥则是一串字母,表示规则集中每个规则的起始字母

这种密码的强度在于,每个明文字母对应着多个密文字母(因为使用不同的规则集),且每个密文字母使用位移的密钥字母,因此字母出现的频率信息就被隐蔽了。

另外,当明文的长度是密钥长度的整数倍,并且对应的明文也相同,那么产生的密文将是相同的。

因此解决方法是使用周期很大的循环密钥。但是如果有足够的明密文对,仍然可以破解出密钥。

2.6 一次一密

是一种对Vernam密码的改进:使用与消息一样长并且无重复的随机密钥来加密消息。密钥值对一个消息进行加解密,之后丢弃不用。

但是密钥的传递是存在问题的。

3 置换技术

代替使用其他字母替换明文中的字母。

而置换技术则是通过对明文进行重新排列组合。

最简单的是栅栏技术,也就是单词中的每个字母,轮流的写在第一行和第二行,然后,每行组成一个新的单词。

单纯的置换技术容易被识别出来,因此采用多次置换。

4 轮转机

5 隐写术

一种简单却好事的隐写术可由一段无上大眼的文本字词重新排列组合。然后将真是的信息隐藏在其中。例如单词的首字母,或是其他。

相同的还有:

  1. 字符标记:对有实际意义的字符进行特殊的标记
  2. 不可见墨水
  3. 针刺
  4. 特殊颜色

原文地址:https://www.cnblogs.com/perfy576/p/8976727.html

时间: 2024-11-05 21:41:24

第三章 传统加密技术的相关文章

第三章 深入Servlet技术

3.1 配置Servlet <servlet-name>,<servlet-class>是必须配置的,以便于web容器知道浏览器具体访问的是哪个servlet. <init-param>用于初始化参数,在servlet中可使用getServletContext().getInitParam(String paramName)来获取初始化参数值. <load-on-startup>配置该servlet加载方式,置1时Tomcat将在启动时便加载该servlet

阅读《大型网站技术架构》 第三章心得

今天阅读了<大型网站技术架构> 的第三章,这一章主要讲解了大型网站核心架构要素,并且概括的讲解了相应的实现方法. 软件架构除了系统功能需求外,还需要关注性能.可用性.伸缩性.扩展性.安全性. 其中性能是网站的重要指标.优化网站性能的手段有很多种其中包括: 1.使用CD和反响代理加快反应速度. 2.在应用服务器端实现本地缓存和分布式缓存. 3.通过异步操作将用户的请求发送至消息队列等待后续任务处理,而当前请求直接返回响应给用户. 4.多台应用服务器组成集群. 5.代码层面使用多线程.改善内存管理

编译技术图式(第三章 词法分析)

编译技术图式(第三章 词法分析) 1.词法分析概述 2.词法分析器和语法分析器的关系 (1)词法分析作为单独的一遍 (2)词法分析作为子程序 3.词法分析器的输出 二元式 (单词类别<整数编码>,单词属性) 依赖于所对应的程序设计语言 关键字“一字一码” 标点符号“一字一码” 对标识符.常数.字符串等“一类一码” 丢弃其它不相关字符 (注释.空白符等) 4.词法分析器的实现 1)正则表达式:一种用来描述字符串集合的工具 2)字母表:一个有限的符号集合 集合{0, 1}是二进制字母表 3)字母表

使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据

本文全部源代码下载:/Files/chnking/EncryptLongData.rar 一.  使用证书结合对称加密算法加.解密长数据 上一章节讨论了如何使用RSA证书加密数据,文中提到:“Dotnet的RSA实现有个特点,它必须要在明文中添加一些随机数,所以明文不能把128字节占满,实际测试,明文最多为117字节,留下的空间用来填充随机数”.也就是说对于1024位密钥的RSA来说,一次只能加密128字节的数据,对于Dotnet的RSA实现更是只能加密117个字节的数据. 这就引出一个问题,超

《计算机网络(第7版)谢希仁 著》第三章 数据链路层 要点及习题总结

1.数据链路层的三个基本问题:封装成帧,透明传输,差错检测 2.点对点信道的数据链路层 (1)链路和数据链路 链路(物理链路):链路(link)就是从一个结点到相邻结点的一段物理线路(有线或无线〉,而中间没有任何其他的交换结点 数据链路(逻辑链路):为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输,换而言之,数据链路=链路+通信协议 (2)早期的数据通信协议叫通信规程 (3)数据链路层的协议数据单元-------帧 (4)封装成帧:封装成帧

加密技术及常见加密算法

有了互联网的同时给我们的日常生活带来了不少的便利,与此同时也给我们带来了不少的安全隐患,可能你在和别人通信的同时,通信数据就被别人截获了,所以就必须要有一种相应的加密技术,来保护我们的通信隐私.那么今天就大家来简单的了解一下加密技术及一些常见的加密算法. 1.为什么需要加密 1.不加密流量的易受攻击性 2.不加密密码/数据容易被嗅探 3.不加密数据容易被操作 4.不加密无法验证操作 5.不加密相当于邮寄明信片 2.不安全的传统协议 telnet.FTP.POP3等等:不安全密码 http.smt

浅谈 PHP 中的多种加密技术及代码示例

信息加密技术的分类 单项散列加密技术(不可逆的加密) 属于摘要算法,不是一种加密算法,作用是把任意长的输入字符串变化成固定长的输出串的一种函数 MD5 string md5 ( string $str [, bool $raw_output = false ] ); //MD5加密,输入任意长度字符串返回一个唯一的32位字符 md5()为单向加密,没有逆向解密算法,但是还是可以对一些常见的字符串通过收集,枚举,碰撞等方法破解;所以为了让其破解起来更麻烦一些,所以我们一般加一点盐值(salt)并双

第三章 传奇的开始--Delphi(附读书笔记)

第三章 传奇的开始--Delphi "是惊世之作的Delphi让Borland重新站了起来,没有当初的Delphi,就没有今日的Borland!" "是Turbo Pascal诞生了Borland,但却是Object Pascal给予了Borland重生的机会!" 创造传奇故事的主角--Delphi 没有人会知道在两年后Borland C/C++会遭遇到这么大的失败,也没有人会预料到Borland又会再次因为Pascal而东山再起.Borland奋斗史精彩的地方就在

【安全加密技术】非对称加密

转载请注明出处:http://blog.csdn.net/sk719887916/article/details/46810595 看过上篇网络互联基系列基础的朋友,对安全产生的原因以及策略度有所了解,当然作为开发者来讲,网络传输中的安全问题我们不必过多的关心,我们关心的是发送方加密和接收方对数据的解密过程,也就是网络安全中的一面边缘学科,密码学中的一种数据加密技术,目前业界的加密方式主要有对称加密和非堆成加密,那就先来了解下有非对称加密以及所关联的相关名字. 非对称加密 非对称加密算法是一种密