密码学密码程序员

3.密码学基本知识

2017-12-29  本文已影响23人  七八音

重点:

密码系统的组成及它们之间关系

现代密码体制的基本原则及公开算法的意义

密码的攻击类型及其含义

攻击密码体制的常用方法

算法复杂度的度量

01 密码系统的组成及它们之间关系

     1.1密码系统的组成

一个密码系统(体制)是由明文、密文、加密算法和解密算法、密钥五部分组成的,即

 密钥是指控制明文与密文之间相互变换的,分为加密密钥和解密密钥。

     1.2 密码系统各部分之间的关系图

02 现代密码体制的基本原则及公开算法的意义

     2.1 现代密码体制的分类

对称密码体制

加密密钥和解密密钥相同,或者虽然不相同,但由其中一个可以很容易的推出另一个

又称为:传统密码体制、秘密密钥体制或单密钥体制

从密钥使用方式上分为:分组密码和序列密码

非对称密码体制

加密密钥和解密密钥不相同,从一个很难(实际上不可能实现)推出另一个;

又称:公钥密码体制

用一个密钥进行加密(验证),另一个进行解密(签名)。其中一个密钥可以公开,成为公开密钥,简称公钥;另一个密钥需要秘密保存,称为私有密钥,简称私钥。

     2.2 基本原则

密码系统中的算法即使为密码分析者所知,也无助于用来推到明文或密钥。也就是说,密码系统的安全性不应取决于不易改变的密码算法(公开、标准化),而应取决于随时改变的密钥。(柯克霍夫原则)

加密算法的安全性并没有在理论上得到严格的证明,是实际上的安全。

     2.3 密码算法公开的意义

有利于增强密码算法的安全性;

有利于密码技术的推广应用;

有利于增加用户使用的信心;

有利于密码技术的发展。

03 密码的攻击类型及其含义

     3.1 密码攻击类型(类型依次增强,抵御这五种类型的攻击是密码算法的基本要求)

(1)惟密文攻击

(2)已知明文攻击

(3)选择明文攻击

(4)选择密文攻击

(5)选择文本攻击

     3.2 各自含义

(1)惟密文攻击

分析者除了拥有截获的密文外(密码算法是公开的),没有其他可以利用的信息。

分析者任务:恢复尽可能多的明文,或者最好能推算出解密密钥。

攻击方法:至少可以采用穷举搜索法;即对接货一定数量的密文依次用所有的密钥尝试,直到得到有意义的明文。

在这种情况下进行密码破译是最困难的,经不起这种攻击的密码体制被认为是完全不安全的。

(2)已知明文攻击

分析者不仅掌握了相当数量的密文,还有一些已知的明-密文对可供利用。

任务:用密文信息推导出解密密钥或推导出一个替代算法,对所获得的密文恢复出相应的明文。

对于现代密码体制的基本要求:不仅要经受得住惟密文攻击,而且要经受得住已知明文攻击(有内奸哦)

(3)选择明文攻击

分析者不仅能够获得一定数量的明-密文对,还可以选择任何明文并在使用同一未知密钥的情况下能得到相应的密文。

攻击者可以在加密系统中选择特定的明文消息,通过该明文消息对应的密文就有可能确定密钥的结构或获取更多关于密钥的信息。

选择明文攻击比已知明文攻击更加有效,这种情况我哪敢往事密码分析者通过某种手段暂时控制加密机。(暂时控制加密机)。

(4)选择密文攻击

分析者能选择不同被加密的密文,还可以得到对应的明文

任务:推出密钥及其他密文对应的明文。

这种情况往往是密码分析这通过某种手段暂时控制解密机(暂时控制解密机)。

(5)选择文本攻击

是选择明文攻击和选择密文攻击的组合,即分析者在掌握密码算法的前提下,不仅能够选择明文并得到对应的密文,而且还能选择密文得到对应的明文。

这种情况往往是密码分析者通过某种手段暂时控制加密机和解密机。(暂时控制加密机和解密机)

3.3 攻击密码体制的常用方法

(1)穷举攻击

分析者用试遍所有密钥的方法来破译密码。

当解密(加密)算法的复杂性增大时,完成一次解密(加密)所需的时间也增大,从而使穷举攻击的时间也增加(这也增加合法用户使用密码系统的计算量)

结论:抵御穷举攻击最好方法是有足够密钥空间。

(2)统计分析攻击

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

对抗统计分析攻击的方法是设法使明文的统计特征尽可能的不带入密文。如果密文不带有明文痕迹,统计分析攻击就不可行(譬如重合指数法)

(3)数学分析攻击

分析者针对加密变换所以来的数学难题,通过数学求解的方法来设法找到相应的解密变化,从而实现破译

对抗这种攻击,选用具有坚实的数学基础和足够复杂的加密方法。

     3.4 密码分析的启示:

          加密密码算法要公开;

          密钥空间足够大;

          同一密钥的密文数量尽可能少;

          明文密文对尽可能不要泄露。

3.5 算法复杂度的度量(n是变量)

若对某个常数t,算法的运算时间T=O(n^t),称该算法是多项式时间的(可解的)。

若对某个常数t(>1)和多项式h(n),算法的运行时间T=O(t^h(n)),层该算法是指数时间的(难解的)。

上一篇下一篇

猜你喜欢

热点阅读