安全第2讲——现代密码学入门
上一讲介绍了凯撒加密、单字母替换加密、Vigenere加密三种古典加密方法,在计算机辅助下进行攻击,它们几乎都不堪一击。
但实际上,对程序员们来说,这三种加密方法、或者从它们衍生出的加密方法,依然是经常使用的方法,只不过它们不被用于商用系统,也不被用于对自身机密信息的保护。我们自己编写一些好玩的小程序,想进行简单鉴权,我们还是会优先想到凯撒加密等算法。
对商用系统,或者对个人机密信息保护的系统,则要求使用现代加密算法。下面介绍一些现代密码学的入门知识。
1、算法的表示
加密方案涉及到三种算法,分别是:
(1)密钥产生算法Gen;
(2)加密算法Enc;
(3)解密算法Dec;
2、取值空间的表示
取值空间常用手写体的大写字母表示,分别为:
(1)明文空间M;
(2)密文空间C;
(3)密钥空间K;
3、具体取值的表示
具体取值有三种,用小写字母表示,分别为:
(1)明文m;
(2)密文c;
(3)密钥k;
4、随机值的表示
随机值也有三种,常用打印体的大写字母表示,分别为:
(1)明文随机值M;
(2)密文随机值C;
(3)密钥随机值K;
5、出现概率的表示
出现概率有三种,分别为:
(1)Pr[K=k]表示密钥k的出现概率,即Gen算法生成k的概率;
(2)Pr[M=m]表示明文m的出现概率;
(3)Pr[C=c]表示密文c的出现概率;
6、算法的使用
(1)k:=Gen(),k∈K
解释:通过执行Gen算法,我们可以得到密钥k,得到的密钥属于密钥空间K。
(2)对于k∈K、m∈M,则c:=Enc(k, m),c∈C
解释:通过执行Enc算法,输入密钥k和原文m,可以得到密文c,得到的密文属于密文空间C。
有的的Enc算法,对于给定的密钥k和原文m,生成固定的密文c;但也有Enc算法,对于给定的密钥k和原文m,每次执行生成的密文c不同。
(3)对于k∈K、m∈M,则m:=Dec(k, Enc(k, m))
解释:对于通过Enc,传入参数密钥k和原文m,得到的密文c;我们可以使用Dec,传入参数密钥k和密文c,可以得到原文m。
7、现代密码学的三大原则
第一原则:形式化的安全定义;
安全形式化定义的模板是:如果特定的攻击者,不能采用特定的攻击方法攻破系统,则该系统对给定任务的密码学方案是安全的。
第二原则:精确描述依赖的假设
某个安全方案,有可能使用一些我们认为是正确的假设,我们必须该假设进行精确的描述。
当我们对多个安全方案进行选择时,就可以根据安全方案以来的假设,来判断那个方案更优。
当未来证明假设前提不成立时,我们就可以判定对应的方案并不安全。
第三原则:严格的安全证明
现在,软件的概念深入人心,我们会经常从非计算机从业者口中听到“这个app有bug”之类的语言。
其实,软件有bug导致的后果,和软件有安全隐患的后果比起来,是小巫见大巫。软件有bug,我们大不了重新操作一次,重启一下程序、电脑、或手机,或者换一种方式操作即可,但软件有安全隐患,面对居心叵测的攻击者,则可能导致不可估量的巨大损失。
因此,我们采用某种安全方案,一定要经过严格的安全证明。
严格的安全证明,常常使用下面的规约:
如果以来的假设X是正确的,根据给定的定义Y,则我们设计的方案Z是安全的。
8、显而易见的概率分布要求
对于一个加密系统,最起码需要满足这些显而易见的要求:
(1)|M|>1
解释:如果|M|=1,表示明文是确定的,这样不仅加密毫无必要,即使是通信也毫无必要。
(2)K和M没有相关性,即密钥和明文是独立选择的,相互之间没有影响。
解释:如果K和M有相关性,表示一个密钥只能加密一个明文,根本没法用。
9、完善加密系统的要求
对于一个完善的加密系统,需要满足下面的要求:
(1)明文和密文的分布是独立的,即Pr[M=m | C=c]=Pr[M=m];
解释:密文没有泄漏任何明文的信息,即使攻击者截获了密文,他也不能得到任何关于明文的信息。
(2)Pr[C=c | M=m]=Pr[C=c],这个等式可以根据上一条的规定证明出来;
(3)Pr[C=c | M=mo]=Pr[C=c | M=m1],这个等式可以根据上一条的规定证明出来;
10、一次一密
一次一密由Vemam提出,是一种完善保密加密的算法,也叫Vemam加密。
一次一密的算法依赖于下面的原理:
如果X与A执行异或操作得到Y,则Y与A执行异或操作,也能得到X。
这个原理显而易见,计算机、电子专业的同学在《离散数学》或者《数字电子技术》课程里学过,非计算机、电子专业的程序员在编程中也多半用过。
一次一密的规定如下:
(1)原文m与密钥k异或得到密文c;
(2)密文c与密钥k异或得到原文m;
(3)原文m、密文c、密钥k的长度都相等;
(4)密钥只用一次。
由于密钥只用一次,导致一次一密的算法安全度特别高,当年美国与苏联争霸时,据说顶级军事机密使用过这种算法。
一次一密算法的主要问题是使用起来不方便,主要是密钥的传输和保存比较麻烦,而且密钥特别长。
11、香农定理
美国数学家香农(Shannon)不仅是通信领域的顶级科学家,在计算机安全方面也是,完善加密解密系统的概念就由他提出。
自从完善加密解密系统的概念提出后,可用性高的完善加密解密系统成为广大的计算机科学家的开发目标。
但可惜的是,香浓证明,完善加密解密系统满足 |K| = |M| = |C| 的条件,因此,可用性高的完善加密解密系统是不可能开发出来的。
此外,香浓还给出了香浓定理——
设加密方案(Gen, Enc, Dec)的明文空间为M, 且 |K| = |M| = |C|,则当且仅当下列条件成立时,此方案是完善保密加密:
(1)由Gen产生的任意密钥k∈K的概率都是1/|K|;
(2)对任意明文m∈M和任意密文c∈C, 只存在唯一的密钥k∈K使得Enc(k, m)输出c。
12、小结
本讲主要介绍一些加密、解密的概念,后面的完善加密解密、一次一密、香农定理,都需要使用数学公式进行精确证明,大家了解一下就行了。