3.密码学基本知识

重点:

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

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

密码的攻击类型及其含义

攻击密码体制的常用方法

算法复杂度的度量

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)),层该算法是指数时间的(难解的)。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • CTF中那些脑洞大开的编码和加密 0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到类似这样的问...
    查无此人asdasd阅读 11,325评论 0 19
  • 0x01 目录 常见编码: ASCII编码 Base64/32/16编码 shellcode编码 Quoted-p...
    H0f_9阅读 14,508评论 2 17
  • 公钥密码系统及RSA公钥算法 本文简单介绍了公开密钥密码系统的思想和特点,并具体介绍了RSA算法的理论基础,工作原...
    火狼o阅读 9,767评论 2 15
  • 密码编码学与网络安全 review lecture01 经典加密技术 什么是安全,如何认识信息安全? 安全性是绝对...
    lucipher1987阅读 7,334评论 1 1
  • 几天前我说出了一句极其牛逼的话:不是将来的你拯救现在的你,而是现在的你拯救未来的你。就是这么一句话高度概括了我的思...
    梦想起飞的鱼阅读 1,644评论 0 1