密码学相关概念

什么是密码

密码是一种用来混淆的技术,其目的是希望将正常信息转变为无法识别的信息。但这种无法识别的信息部分是可以再加工并恢复的。
加密是一种语言体系到另一种语言体系的变换,整个过程由四个部分组成,信息明文、加密方法、密钥、信息密文,可大致叙述为信息明文通过某种加密方法(输入密钥),产生了数据密文。
举个简单的例子,中英文的相互翻译,其实就可以理解为一种加密方式。假如数据窃取者只懂中文而不懂英文,他就无法从英文数据中获取相关的信息了。

密码学发展历史

古典密码阶段(1949年前)

  1. 主要是置换密码,即把明文中的字母重新排列,字母本身不变,但其位置改变了;
  2. 解决的问题:通过加密保证了数据信息的保密性;
  3. 存在的问题:加密方法和密钥都是保密的,密钥空间较小,信息的安全性主要依赖于对于加解密算法的保密;

对称密码阶段(1949~1975年,进入了现代密码学阶段)

  1. 对称密钥算法又称单密钥算法,整个加密过程中只使用一个密钥。所谓对称其实就是使用一把密钥加密,使用同一把密钥解密;
  2. 解决的问题:加密和解密算法无需保密;
  3. 存在的问题:在不可信信道下的秘钥传输问题,信息的安全性主要依赖于对秘钥的保密;

非对称密码阶段(1976~至今)

  1. 非对称加密又称为公钥密码;
  2. 解决的问题:通过产生公钥、私钥,使用公钥加密的数据可以通过私钥解密,因此可以公布公钥;
  3. 存在的问题:由于算法复杂,其加解密速度并没有对称加密的速度快。信息的安全性主要依赖于产生公私钥的算法和公私钥的位数;

加密算法的评判标准

评判的标准主要可以分为

  1. 体系结构(算法可以执行的结构和操作、其特性以及如何实现)
  2. 安全性(是否具有不可分辨性,可以使用已知的攻击模型和攻击策略来检测算法的漏洞和弱点,并评估其抵御不同类型攻击的能力)
  3. 灵活性(算法是否能够承受根据要求进行的微小修改)
  4. 可拓展性(取决于某些参数,内存使用率、加密速率、软硬件性能、计算效率)
  5. 限制(通过利用可用的计算机资源来定义算法的性能)

衡量一个加密算法是否安全

  1. 计算安全性:是破译一个密码体制于理论计算上所作出的最大努力值。如果算法用现在或者将来的可用资源都不能破译,那么,这个算法被认为是具有计算安全性的。通常可以用三种方式来衡量对算法的计算安全性:
    1.1. 数据复杂性(用于攻击算法所需要输入的数据量)
    1.2. 时间复杂性(执行某特定的基本步骤所需时间为单元,完成攻击过程所需要的总时间单元数)
    1.3. 空间复杂性(以某特定的基本存储空间为单元,完成攻击过程所需要的总存储单元数)
    当破译某个密码算法的所需的计算时间或经济的成本,远远超过信息有用的生命周期或者信息本身的价值时,那么该算法的破译,本身也就更加没有意义了。这时也可以粗略地认为该算法具有计算安全性。
  2. 可证明安全性:算法的安全性,也可被规约为某个经过深入研究的数学难题(如大整数素因子分解、计算离散对数等)。而当一个密码的数学难题被证明求解困难时,该密码算法的体制也会存在破解方面的困难;
  3. 无条件安全性:即使密码分析者拥有无限的计算资源和密文,都没有足够的信息恢复出明文;最简单的例子就是一次一密的加密算法。此种情形下,密钥流是完全随机的、与明文相同长度的比特串,即使给出无限多的资源仍然不可破。事实上,理论地讲,也有且仅有一次一密的密码本,才是绝对安全、永不可破的。然而,一次一密密码本虽然其具有理论上的绝对安全性,但考虑到密钥传输的代价,它又是不实用的。

一次性密码本

介绍

之所以称之为一次性密码本,是因为加密所用的密钥是一次性的,即密钥只会使用一次,不会出现因为密钥泄漏导致之前的加密内容被破解。

加解密方式

一次性密码本的加密方式非常简单,就是将明文和一串随机的二进制进行XOR运算,其算法步骤如下:

  1. 将明文编码,即转换为二进制
  2. 生成和明文二进制位数相同的密钥
  3. 将明文和密钥的二进制进行XOR操作,生成最后的结果
    一次性密码本的解密方式也很简单,可以通过将密文和密钥进行异或即可解密。

为什么无法破译

虽然一次性密码本非常简单,但是其是无法破译的。即使攻击者拥有无穷大的计算能力也无法破译。
因为攻击者是希望通过破解密钥,从而获取原文信息。但如果密钥长度与原文长度相同,攻击者通过暴力破解的话,其在破解过程中所生成的信息量大于等于其破解获得的信息量。因此,破解过程即毫无意义,即符合上述提及的无条件安全性。

缺陷

  1. 密钥太长:其密钥长度与原文的长度相同。若原文很大,那么相应的密钥也非常大。
  2. 无法重用密钥:在使用过程中,如需要不停的更换密钥,增加了复杂性。
  3. 密钥无法配送:在密钥传输过程中,若能机密的传输密钥到目标段,同样能机密的传输原文到目标段,因此加密毫无意义
  4. 密钥的保存:每次加密都需要换一个密钥,这意味着每一个明文都需要保存一个同样长度的密钥。如果能很好的保存同明文长度的密钥,同样能很好的保存明文,因此也无需加密。

密码学三大原则:扩散、混淆、雪崩效应

  • 扩散就是让明文中的每一位影响密文中的许多位,或者说让密文中的每一位受明文中的许多位的影响.这样可以隐蔽明文的统计特性。
  • 混淆就是将密文与密钥之间的统计关系变得尽可能复杂,使得对手即使获取了关于密文的一些统计特性,也无法推测密钥。使用复杂的非线性代替变换可以达到比较好的混淆效果,而简单的线性代替变换得到的混淆效果则不理想。
  • 雪崩效应(Avalanche effect)指加密算法(尤其是块密码和加密散列函数)的一种理想属性。雪崩效应就是一种不稳定的平衡状态也是加密算法的一种特征,它指明文或密钥的少量变化会引起密文的很大变化。雪崩效应是指当输入发生最微小的改变(例如,反转一个二进制位)时,也会导致输出的剧变(如,输出中一半的二进制位发生反转)。在高品质的块密码中,无论密钥或明文的任何细微变化都应当引起密文的剧烈改变。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容