密码学是网络安全、信息安全、区块链等产品的基础,常见的非对称加密、对称加密、散列函数等,都属于密码学范畴。
密码学有数千年的历史,从最开始的替换法到如今的非对称加密算法,经历了古典密码学,近代密码学和现代密码学三个阶段。密码学不仅仅是数学家们的智慧,更是如今网络空间安全的重要基础。
发送者和接收者
发送者和接收者就不必多说了,一方发送消息,另一方接收消息,以至于第三方(窃听者)不能阅读(拦截)消息。
- 消息和加密
消息即明文,通过某种方法或技术去伪装明文的过程称为加密,被加密的消息称为密文,把密文转变明文的过程称为解密(如图1-1)
![](https://i-blog.csdnimg.cn/blog_migrate/0ae767be3fe224e7e8d4d52c3be9f66f.png)
密码学是数学的一个分支,包括密码编码学和密码分析学两部分,那种去伪装明文的技术或科学就是密码编码学(也就是加密),破译密文的技术和科学就是密码分析学(也就是解密)。
- 秘钥
加解密运算中都依赖于秘钥。由此可以组成密码系统(如图)
![](https://i-blog.csdnimg.cn/blog_migrate/8f52c11f401038ceeb95da144846f8d1.png)
- 算法
基于秘钥的算法通常有两类:对称算法和公开秘钥算法。对称算法就是加密秘钥能从解密秘钥中推算出来,解密秘钥能从加密秘钥中推算出来(两种秘钥能够互推出来)。对称算法分两种:一种是一次只对明文中的单个位运算的算法称为序列算法(序列密码);另一种是对明文的一组位进行运算的算法称为分组算法(分组密码),其中的位组称为分组。公开秘钥算法(非对称算法):用作加密的秘钥不同于用作解密的秘钥(两种秘钥不一样,而且不能互推),加密秘钥能够公开,但只有用相应的解密秘钥才能解密信息,加密秘钥叫做公开密钥(公钥),解密密钥叫做私人秘钥(私钥)。
- 密码分析学
对密码硬性分析的尝试称为攻击,常用的密码分析攻击有四类(简单理解就是常用的破解情况有四种):1.唯密文攻击:密码分析者有一些消息的密文,这些消息都用相同的加密算法加密。(分析者要尽可能多的恢复明文,最好能推算出加密的秘钥)2.已知明文攻击:密码分析者不仅可得到一些消息的密文,也知道这些消息的明文。(分析者任务就是用这些加密信息推出加密的秘钥或者是算法,可以对相同秘钥加密的消息进行解密)3.选择明文攻击:密码分析者不仅得到一些消息的密文和相应的明文,而且他们也可选择加密的明文。(比已知明文攻击更有效,因为分析者能选择特定的明文块进行加密,从而可以产生更多关于秘钥的信息)4.自适应选择明文攻击(选择明文攻击的特殊情况):密码分析者不仅能选择被加密的明文,而且也基于以前加密的结果修正这个选择。(分析者可以基于第一块的结果选择另一明文块)。