3.1. 什么是密码学?什么是密码系统?什么是明文?什么是密文?什么是加密?什么是密钥?
用这样的一个故事或许可以解释:
Julius Caesar 想发消息给她信任的熟人,但是她不相信中间负责传递消息的信使Adam。于是Caesar把消息中的每一个字母A替换成了字符D,每一个字母B替换成了E,并且依此把所有字母进行了替换。现在,只有知道了“替换距离为3”这个准则的人才可以解密得到她原本要传送的消息。
一个密码系统即为一种伪装消息,使得只有特定的对象才可以看破的手段。
密码系统就是一门创造和使用密码系统的艺术。同样,密码分析就是一门破解密码系统的艺术---揭开伪装,即便你本不应该有这个能力。而密码学就是同时研究这两门艺术的一门学科。
未经过处理的消息就是我们所说的明文,经过伪装处理过的消息就是我们所说的密文。加密指的是从明文转变成为密文的过程。同样,解密即为从密文转变成明文的过程。
一个密码系统一般由多个算法组成。这些算法是可标识的;而标识所用的标签就是我们所说的密钥。举一个例子,这里的Caesar加密所使用的替换距离3---3可以说就是一个密钥。对于Caesar可以使用任意的整数作为密钥。
3.3.如何开始进行密码分析?
在经典的密码分析中,需要对分析和推断的结合,需要数学工具的巧妙运用,对特定模式的识别,毅力和运气。而这方面能找到的最好的教材非<<the Military Cryptanalytics>>系列莫属。显而易见,就绝大部分的人而言,对于密码分析的熟练度来自对于给定系统的不断尝试破解。这样的经验是非常可贵的,以至于盟军在二战中的一些密码分析直到现在仍处于保密状态。
现代公钥密码分析主要由整数分解或者解决离散对数难题构成。这和经典密码分析区别较大。一些计算数论的理论家可能是公钥密码体制最成功的分析员。
3.4. 什么是暴力搜索?什么是密码相关性
对于一个等式$f(x) = y$, 如果我们知道y的值以及函数$f$,那么尝试所有可能的$x$值计算$f(x)$直到等于$y$就找到了需要的$x$。这就是暴力搜索
或许我们可以用下面一个例子更好地解释什么是暴力搜索(brute-force search):
假设一个密码分析员找到了一组密文和对应的明文,但是他不知道密钥到底是什么。此时,他可以简单的尝试每一个可能的密钥对明文进行加密,或者对密文进行解密直到明文和密文相匹配,就可以找到本次加解密所使用的密钥。
对于每一个精心设计好的密码系统,应该存在一个非常大的密钥空间,使得暴力搜索变得不切实际。
科技上的进步把很多的不切实际的事情变成了可行之事。举一个例子,被广泛使用超过了十年的DES密码体制,拥有2^56 (约等于10^17)个可能的密钥。在上个世纪七十年代,这个计算量几乎是不可能被做到的。但是今时不同往日,随着计算机的处理迅速提升,大量的并行计算处理器使暴力破解成为可能,对DES的安全性造成了巨大的威胁
5.2. 乘积密码的安全性由何保证?
没有人知道如何在数学上证明乘积密码是完全安全的。所以在实际上,一个方法是从密文的高度随机性来论证的。举个例子,即密码系统为非线性的,其可以产生函数依赖于明文的每一个比特以及密钥的密文。Meyer的一篇论文中指出来只要有五轮或者以上的DES算法就可以保证这样的一个依赖。从这个意义上来讲,一个乘积密码体制应该表现为一个将结合明文,密钥产生密文的非线性混淆函数。
5.6. 对称分组密码体制可以用作消息认证吗?
你可以使用对称分组密码体制来向你自己证明你发送了一条消息,并且在发送之后这条消息并没有被更改。但是你并不能向其他人证明此事,除非你向其揭露了你的密钥。但是在那之后,你再也无法验证
用此密钥加密的消息的真实性。
5.9. 什么是差分分析?
差分分析是一种可用于分析存在重复映射(即基于重复的轮函数的映射)的统计攻击。这种方法在二十年前风靡一时,但是很快被人指出DES密码体制中的S-盒就已经做到最优化防范差分攻击了。差分攻击已经被有效证明对某些乘积密码非常奏效。
差分分析基于对大量密文对$Y,Y'$以及相对应的明文对$X,X ’$($X,X'$满足差分关系$D=X \oplus X'$)的大量观察分析。在基础的Biham-Shamir攻击中,至少需要$2^{47}$对明文对才能破解DES得到密钥。大体上,如果DES算法中的迭代轮数只有6或8轮的话只需要更少的明文对。在这些轮数较少的情况中,实际上使用几千个明文对就足以在大约十几分钟内得到密钥,而在标准的16轮迭代DES中,这种攻击是几乎不切实际的,因为他需要太多的已知明文对了。
Biham和Shamir在DES上的工作披露了关于此算法的很多惊人的资料。最重要的一项是如果密钥移位变换步骤被从DES中移除,而使用一个768bit(每一轮使用48比特,有十六轮)的密钥,这个密钥可以在少于$2^{64}$步内被破解因此,独立的子密钥并不会使得DES的安全性大大增强。更进一步,DES中的S-盒是极其敏感的,对于其表项中的一些改变都会给差分攻击带来很大的便利。
6.6. RSA真的安全吗?
这个问题至今仍是无人知晓。一个针对RSA的明显攻击是将$n=pq$分解,得到两个素数$p$,和$q$。但是大数的因式分解问题真的可解吗?目前还没有得到严格的数学证明,但是依照现在的计算机运行速度来说,如果私钥和$n$选择的位数太大是不可能在一个合理的时间内分解出来的,所以我们认为RSA是计算上安全的。