文章更新于:2020-04-02
注:本文参考自机械工业出版社《密码工程原理与应用》。
点击目录可跳转
一、密码学研究范围
密码学是一门关于加密的艺术和科学。
1.1、密码学的作用
密码学是整个安全系统的一部分,但也是最关键的一部分。
密码学通常提供系统的访问控制功能。
1.2、木桶理论
每个安全系统的安全性都取决于它最脆弱的部分。
为了提高系统的安全性,我们需要提高系统最脆弱地方的安全性。所以我们必须先知道那些是最脆弱的。这可以用一个分层的树结构来完成,系统的每部分都是有哪些环节,同时每个环节还有哪些子环节。我们可以将这些环节组织成一颗攻击树(attack tree)
。
1.3、对手的设定
因为如果有攻击者想要攻击系统,它一定会攻击系统最薄弱的环节。
所以我们必须把对手设定为最狡猾
的对手,这样我们才能更好的完善我们系统的安全性!
二、密码学简介
注1:密码学传统上为了方便举例称发送方为 Alice
,接收方为 Bob
,窃听者为 Eve
。
注2:如果你查字典,你会发现密钥读(yue)。但是一些密码学的老教授读的时候会读 (yao)。所以在不致产生歧义(密钥(yue)和蜜月同音~))的时候,你读哪种应该都是可以的。
2.1、加密
-
为了不让我们发送的信息被窃听,我们可以选择在发送信息前,将明文
m
通过加密函数E
用密钥 ke 进行加密成密文c
,然后再发送。 -
接收方受到密文
c
以后通过解密函数D
用密钥 ke 进行解密为明文m
,至此,信息发送完成。 -
如果
Eve
进行了窃听,那么他只能得到密文,没有密钥 ke 它将无法得到明文。 -
那么问题来了,如何传送密钥吗?如果有安全的信道用来传送密钥,那么直接用来发送信息好了?
这涉及到了密钥的分发问题,这里先不拓展。暂且认为
Alice
和Bob
使用了另外一个安全的信道进行密钥的协商。比如上次见面的时候协商,或写在纸上邮寄过去等。 -
kerckhoff
原则加密方案的安全性必须仅仅依赖于对于密钥 ke 的保密,而不依赖于对于算法的保密。
事实证明,不公开的算法往往是存在问题的,是经不起检验的。
2.2、认证
在上一章节中,我们解释了如何进行加密以防止 Eve
窃听到明文。但是这却防不住 Eve
对信息进行修改。
因为 Eve
既然可以窃听到信道,那么他相应的也有可能对信息进行修改、拦截删掉、或者改变几个信息的顺序,这些都是可能的。
而接收方却无法分辨信息是否被篡改。为了解决这个问题,我们引入了认证
的概念。
-
和加密一样,认证也需要使用一个密钥,这里记为 ka
-
在发送信息之前,我们先使用 ka 对信息进行计算得到一个消息认证码(Mes