| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 密码编码学与网络安全———原理与实践(第八版)第三章笔记 -> 正文阅读 |
|
[网络协议]密码编码学与网络安全———原理与实践(第八版)第三章笔记 |
第3章 传统加密技术学习目标
目录 对称加密,也称传统加密或单钥加密,是20世纪70年代公钥密码产生之前唯一的加密类型。迄今位置,它仍是两种加密类型中使用得最为广泛的。第一部分讨论了许多对称密码。本章首先介绍对称加密过程的一般模型,了解传统加密算法的使用环境;然后讨论计算机出现之前的许多算法;最后简要介绍隐写术。第4章和第6章探讨如今使用得最广泛得两种加密算法:DES和AES。 下面首先定义一些术语。原始的消息称为明文,加密后的消息称为密文。从明文到密文的变换过程称为加密,从密文到明文的过程称为解密。研究各种加密方案的领域称为密码编码学。这样的加密方案称为密码体制或密码。在不知道任何加密细节的条件下,解密消息的技术属于密码分析学范畴。密码分析学即外行所说的“破译”。密码编码学和密码分析学统称密码学。 3.1 对称密码模型对称加密方案有5个基本成分:
传统密码的安全使用要满足如下两个要求。
我们假设基于已知密文和已知加密/解密算法而破译消息是不实际的。换句话说,我们并不需要算法保密,而只需密钥保密。对称密码的这些特点使得其应用非常广泛。算法不需要保密这一事实使得制造商可以开发出低成本的芯片来实现数据加密算法。这些芯片能够被广泛地使用,许多产品中都有这种芯片。采用对称密码,首要的安全问题是密钥地保密性。 例如,发送方生成明文消息,X的M个元素是某个字母表中的字母。一般来说,字母表由26个大写字母组成。今天,最常用的是二进制字母表{0,1}。加密时,首先生成一个形如的密钥。如果密钥由信息的发送方生成,那么它要通过某种安全信道发送到接受方;另一种方法是第三方生成密钥,然后安全地分发给发送方和接受方。 加密算法根据输入信息X和密钥K生成密文,即 该式表明密文Y是用加密算法E生成的,后者是明文X的函数,而具体的函数由密钥K的值决定。拥有密钥K的预定接收方,可以由变换得到明文。 假设某敌手窃得Y但不知道K或X,并企图得到K或X,或K和X。假设他知道加密算法E和解密算法D,若他只对这个特定得信息感兴趣,则他会将注意力集中于计算明文得估计值来恢复X;不过,敌手往往对进一步得信息同样感兴趣,此时他企图通过计算密钥得估计值来恢复K。 3.1.1 密码编码学密码编码学系统具有以下三个独立得特征。
3.1.2 密码分析学和穷举攻击攻击密码系统的典型目标是恢复使用的密钥,而不是只恢复单个密文对应的明文。攻击传统的密码体制有两种通用的方法。
如果上述任意一种攻击能够成功地推导出密钥,那么影响是灾难性地:危及所有未来和过去使用该密钥加密消息的安全。 密码分析学 基于密码分析者直到的信息的多少,表3.1中概述了密码攻击的几种类型。表中的唯密文攻击难度最大。在有些情况下,攻击者甚至不知道加密算法,但我们通常假设敌手知道。子啊这种情况下,一种可能的攻击是试遍所有可能密钥的穷举攻击。如果密钥空间非常大,那么这种方法就不太实际。因此,攻击者必须依赖于对密文本身的分析,而这一般要用到各种统计方法。使用哪个这种方法时,攻击者必须对隐含的明文类型有所了解,比如说明文时英文文本、法文文本、还是可执行文件、Java源列表文件、会计文件等。
唯密文攻击最容易防范,因为攻击者拥有的信息量最少。然而,在很多情况下,分析者可以得到更多的信息。分析者可以捕获一段或更多的明文信息及相应的密文,也可能知道某段明文信息的格式等。例如,按照Postscript格式加密的文件总以相同的格式开头,电子金融消息往往具有标准化的文件头部或标志。类似的列子还有很多。这些都是已知明文攻击的例子。拥有这些知识的分析者就可以从转换明文的方法入手来推导密钥。 与已知明文攻击紧密相关的是可能词攻击。攻击者处理的是一般的散文信息时,他可能对信息的内容一无所知;攻击者处理的是一些特定的信息时,他可能知道其中的部分内容。例如,对于一个完整的会计文件,攻击者可能知道放在文件最前面的是某些关键词。又如,某公司开发的程序源代码可能含有该公司的版权信息,并且放在某个标准位置。 如果分析者能够通过某种方式获得信源系统,让发送方在发送的信息中插入一段由他选择的信息,那么选择明文攻击就有可能实现。一般来说,如果分析者有办法选择明文加密,那么他会特意选取那些最有可能恢复密钥的数据。 表3.1中还列举了另外两种攻击方法:选择密文攻击和选择文本攻击。它们在密码分析技术中很少用到,但仍然是两种可能的攻击方法, 只有相对较弱的算法才无法抵御唯密文攻击。一般来说,加密算法至少要能经受住已知明文攻击。 此外,还有两个概念值得注意。一种密码体制无论有多少可用的密文,如果都不足以唯一地确定密文对应地明文,那么称改密码体制是无条件安全的。也就是说,无论花费多长时间,攻击者都无法将密文解密,这只是因为他(或她)所需的信息不在密文中。除一次一密(后面会讲到)外,所有地加密算法都不是无条件安全的。因此,加密算法的使用者应挑选尽量满足以下标准的算法。
如果密码体制满足上述两条标准中的任意一条,那么它是计算上安全的。然而,估计攻击者成功破译密文所需的工作量是非常困难的。 对称密码体制的所有分析方法都利用了这样一个事实,即明文的结构和模式在加密后得以保留,且在密文中能够找到蛛丝马迹。随着我们对各种对称密码体制讨论的深入,这一点将会变得非常明显。在第二部分,我们将看到对公钥密码体制的分析依据的是一个完全不同的假设,即密钥对的数学性质使得从一个密钥推出另一个密钥是可能的。 穷举攻击 试遍所有密钥直到有一个合法的密钥能够把密文还原称明文,这就是穷举攻击。我们可以从这种方法入手,考虑其所需的时间代价。平均来说,要获得成功,必须尝试所有可能密钥的一半。若存在X中不同密钥,则攻击者平均尝试X/2次才能找到实际的密钥。值得注意的是,穷举攻击不是简单地尝试所有可能的密钥,除非明文已知,否则分析者需要能够将明文识别为明文。若信息是英文明文,则结果很容易得到,即使英文识别是自动化的;若文本信息加密前已被压缩,则识别更困难;若信息是一些更为通用的数据(如数值文件)并且已被压缩,则自动化会变得更加困难。因此,采用穷举攻击时,需要一些关于预期明文的信息及自动地从混淆中区分明文的方法。 强加密??对用户、安全管理人员和企业经理而言,存在保护数据的强加密需求。强加密是常用但不精确的术语,是指未授权人员或系统难以访问已加密的明文的加密方案。相关文献列出了强加密算法的如下性质:适当地选择加密算法,使用足够长的密钥,适当地选择协议,良好的工程实现,引入的隐藏缺陷较少。前两个因素与密码分析学相关,第三个因素与第六部分的讨论相关,最后两个因素超出了本书的范围。 3.2 代替技术本节和下一节举例探讨古典加密方法。研究这些方法可让我们清楚今天所用的对称密码的一些基本方法,以及随之而来的密码攻击的类型等。 首先简要讨论所有加密技术都要用到的两个基本模块——代替和置换,然后详细讨论这些内容。最后讨论综合应用两种技巧的密码系统。 代替技术是将明文字母替换成其他字母、数字或符号的方法。若将明文视为二进制序列,则代替就是用密文位串代替明文位串。 3.2.1 Casesar密码之前文章写过。。。。 3.2.2 单表代替密码看第六版 3.2.3 Playfair 密码同上 3.2.4 Hill密码另一个有趣的多表代替密码是Hill密码,它由数学家Lester Hill 于1929年发明。 线性代数中的一些概念? ? ? ?在描述Hill密码前,让我们简短地复习线性代数中的一些术语。现在我们关心模26的矩阵算术。 我们定义方阵的逆矩阵为,它满足,其中为单位矩阵。矩阵是除主对角线上的元素为1外、其余元素全为0的矩阵。一个矩阵的逆矩阵并不总是存在的,但存在时它满足前述方程。例如, ,?,?? 为了解释如何计算矩阵的逆矩阵,我们先介绍行列式的概念。对于任意一个方阵,其行列式的值等于不同行、不同列上的元素的乘积的代数和,部分项的前面有负号。 继续刚才的列子,,因为(参阅第2章),得到。因此,A的逆的计算方式为 , 我们可以看出,对于一般的矩阵,先求出行列式,然后根据这个值求出行列式mod 26 的逆,然后乘以该矩阵的代数余子式。 Hill 算法? ?该加密算法将 m 个连续的明文字母替换成 m 个密文字母,这是由 m 个线性方程决定的,方程中的每个字母被赋予一个数值。例如,m=3时,系统可以描述为 ? 用行向量和矩阵表示如下: 或 式中,和是长度为3的行向量,分别代表密文和明文,是一个的矩阵,代表加密密钥。运算按模26执行。例如,如果明文为paymoremoney,加密密钥为 明文的前3个字母用向量(15 0 24)表示,那么(15 0 24)K=(303 303 531) mod 26 =(17 17 11)=RRL,照此方法转换余下的字母,可得到整段明文对应的密文是RRLMWBKASPDH。 解密时需要用到矩阵K的逆。可以算出det K =23,所以。计算逆矩阵为 显然,若把逆矩阵应用到密文,则可恢复明文。 用一般术语可将Hill密码系统表示如下: 与Playfair密码相比,Hill密码的优点是完全隐蔽了单字母频率特性。实际上,Hill用的矩阵越大,隐藏的频率信息就越多。因此,一个的Hill密码不仅隐藏了单字母的频率特性,而且隐藏了双字母的频率特性。 尽管Hill密码足以抵抗唯密文攻击,但易被已知明文攻击破解。对于一个的Hill密码,设有m个明密文对,且每个的长度都是m,定义和,使得对每个和都有,其中是未知的矩阵密钥。现在定义两个的矩阵和。于是,可以得到矩阵公式,若可逆,则可得。若不可逆,则可以另找和对应的,直至得到一个可逆的。 3.2.5 多表代替加密对单表代替的改进方法是在明文消息中采用不同的单表代替。这种方法一般称为多表加密密码。所有这些方法都有以下共同特征。
?密码? ? ?多表代替密码中最著名和最简单的是?密码 。它的代替规则集由26个Casesar密码的代替表组成,其中的每个代替表是对明文字母表移位0~25次后得到的代替单表。每个密码由一个密钥字母表示,这个密钥字母用来代替明文字母a,因此移位3次后的Caesar密码由密钥值d代表。 我们可用如下方式来表述??密码。假设明文序列为,密钥由序列构成,通常。密码序列的计算如下: 因此,密钥的第一个字母模26加到了明文的第一个字母,接着是第二个字母,以此类推,直到前m个明文处理完毕。对于第二组的m个明文,重复使用密钥字母。继续该过程直到所有的明文序列都被加密。加密过程的一般方程是 ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3.3) 该方程和Caesar密码的式()类似。本质上,每个明文字母根据相应的密钥字母用不同的Caesar密码加密。类似地,解密为: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3.4) 加密一条消息时需要有与消息一样长的密钥。通常,密钥是一个密钥词的重复。 这种密码的强度是每个明文字母对应多个密文字母,且每个密文字母使用唯一的密钥字母,因此字母出现的频率信息被隐蔽,但并非所有的明文结构信息都被隐蔽。 Vernam 密码? ?最终的反破译措施也许只有选择一个和明文毫无统计关系且和明文一样长的密钥。1918年,AT&T公司的工程师 Gilbert Vernam 首先引入了这种体制,其运算基于二进制数据而非字母。该体制可以简单表示为 式中,是明文的第i个二进制位;是密钥的第i个二进制位;是密文的第i个二进制位;是异或运算符。 该式与密码的式(3.3)类似。 因此密文是对明文和密钥的按位异或生成的。根据异或运算的性质,解密过程为 该式和式(3.4)类似。 这种技术的本质在于构造密钥的方式。Vernam提出使用连续的磁带,磁带最终也将循环。所以事实上该体制使用了周期很长的循环密钥。尽管周期很长增大了密码分析的难度,但是如果有足够的密文,那么使用已知或可能的明文序列,或者组合使用二者,该方案式可以被破解的。 3.2.6 一次一密陆军情报官Joseph Mauborgne 提出了一种对Vernam密码的改进方案,从而实现了最完善的安全性。Mauborgne建议使用与消息一样长且无重复的随机密钥来加密消息;另外,密钥只加解密一条消息,之后丢弃不用。每条新消息都需要一个与其等长的新密钥。这就是著名的一次一密,它是不可攻破的。它产生的随机输出与明文没有任何统计关系。因为密文不包括明文的任何信息,所以无法可破。 事实上,给出任何长度与密文长度一样的明文时,都存在一个密钥产生这个明文。因此,如果用穷举法搜索所有可能的密钥,那么会得到大量可读、清楚的明文,但是没有办法确定哪个明文才是真正需要的,因而这种密码时不可破的。 一次一密的安全性完全取决于密钥的随机性。如果构成密钥的字符流时真正随机的,那么构成密文的字符流也是真正随机的。因此,分析者没有任何攻击密文的模式和规则可用。 理论上,我们不再需要寻找密码,一次一密就提供了完全的安全性,但在实际中,一次一密存在连个基本难点。
因为上面这些困难,一次一密实际上很少使用,而主要用于安全性要求很高的低带宽信道。一次一密是唯一具有完善保密的密码体制。 3.3 置换技术到目前为止,我们讨论的都是将明文字母代替为密文字母。与之极不相同的一种加密方法是对明文进行置换,这总密码称为置换密码。 最简单的例子是栅栏加密技术,即按照对角线的顺序写出明文,按照行的顺序读出作为密文。 这中技巧对密码分析者来说微不足道。一种更复杂的方案是首先把消息一行一行地写成矩形块,然后按列读出,但要把列地次序打乱。列的次序就是算法的密钥。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 17:59:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |