分享

安全第2讲——现代密码学入门

 冬不拉拉 2021-05-16

上一讲介绍了凯撒加密、单字母替换加密、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、小结

本讲主要介绍一些加密、解密的概念,后面的完善加密解密、一次一密、香农定理,都需要使用数学公式进行精确证明,大家了解一下就行了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多