首页 理论教育 密码学的基本理论和概念的介绍

密码学的基本理论和概念的介绍

时间:2023-06-09 理论教育 版权反馈
【摘要】:在历史上,军事人员、外交人员、日记作者有意或者无意地用到了密码学,并且为之做出了贡献。对方收到以后,再由密文转换回明文,这个过程称为解密。在英文中,Cryptography和Cryptology都可代表密码学,前者又称密码术。密码学的基本规则:必须假定密码分析者知道加密和解密所使用的方法。因此,密码学的基本模型是一个稳定的、广泛公开的通用方法,它采用一个秘密的、易改变的密钥作为参数。若密钥长度为3个数字,则意味着共有1000种可能。

密码学的基本理论和概念的介绍

在历史上,军事人员、外交人员、日记作者有意或者无意地用到了密码学,并且为之做出了贡献。在这些人中,军事人员扮演了重要的角色,而且几个世纪以来他们不断完善着这个领域。在军事联盟内部,需要加密的消息通常被交给下级译码军士来加密和传输,由于消息的数量不大,所以这项工作不必依赖密码专家来完成。

在计算机出现以前,密码学的一个主要限制是译码军士执行各种必要的明密文变换的能力,尤其在战场上往往缺乏相应的装备予以辅助;另一个限制是很难从一种密码方法切换到另一种密码方法,因为这需要重新训练大批译码员。然而,由于译码军士有可能被敌人俘虏,所以,在必要的时候能及时地直接更换密码方法变得非常关键。这些相互矛盾的需求导致产生了如图2-1所示的模型。

978-7-111-39843-1-Chapter02-1.jpg

图2-1 对称密码模型

从前,密码学几乎专指加密(Encryption)算法和解密(Decryption)算法。待加密的消息称为明文(Plaintext),它经过一个以密钥(Key)为参数的函数变换,这个过程称为加密,输出的结果称为密文(Ciphertext),然后密文被传送出去,往往由通信员或者无线电方式来传送。对方收到以后,再由密文转换回明文,这个过程称为解密。一般情况下,加密即同时指称加密(Encrypt或Encipher)与解密(Decrypt或Decipher)的技术。

加解密的具体运作由两部分决定:一个是算法,另一个是密钥。密钥是一个用于加解密算法的秘密参数,通常只有通信者拥有。假设敌人或者入侵者窃听到了完整的密文,并且将密文精确地复制下来,然而,与目标接收者不同的是,他们不如道解密密钥是什么,所以无法轻易地对密文进行解密。有时候入侵者不仅可以监听通信信道(被动入侵者),而且还可以将消息记录下来并且在以后某个时候回放出来,或者插入他们自己的消息,或者在合法消息到达接收方之前对消息进行篡改(主动入侵者)。

密码协议(Cryptographic Protocol)是使用密码技术的通信协议(Communication Protocol)。近代的密码学者多认为除了传统上的加解密算法外,密码协议也一样重要,两者为密码学研究的两大课题。在英文中,Cryptography和Cryptology都可代表密码学,前者又称密码术。但更严谨地说,Cryptography指密码技术的使用,而Cryptology指研究密码的学科,包含密码术与密码分析。密码分析(Cryptanalysis)是研究如何破解密码学的学科。但在实际使用过程中,通常都称密码学(英文通常称Cryptography),而不具体区分其含义。

通常的做法是,用一种合适的标记法将明文、密文和密钥的关系体现出来,这往往会非常有用。通常使用C=EK(P)来表示用密钥K加密明文P得到密文C。类似地,P=DK(C)代表了解密C得到P的过程。由此可以得到:

DK(EK(P))=P(www.xing528.com)

这种标记法也说明了E和D只是数学函数,事实上也确实是这样。唯一值得特别注意的地方是,它们都是带两个参数的函数,但是其中一个参数(密钥)被写成下标的形式,而不写成实参的形式,从而将它与消息本身区别开来。

密码学的基本规则:必须假定密码分析者知道加密和解密所使用的方法。换句话说,密码分析者知道图2-1中加密方法E和解密方法D的所有操作细节。每次当旧的加解密算法泄露(或者认为它们被泄露)以后,总是需要重新设计、测试和安装新的算法,这使得将加解密算法本身保持秘密的做法在现实中并不可行。

密钥是由一段相对比较短的宇符串构成的。一般的加解密算法可能几年才会发生变化,与此不同的是,密钥可以根据需要频繁地被改变。因此,密码学的基本模型是一个稳定的、广泛公开的通用方法,它采用一个秘密的、易改变的密钥作为参数。“让密码分析者知道加解密算法,并且把所有的秘密信息全部放在密钥中”,这种思想被称为Kerckhoff原则,这是用密码学家Auguste Kerckhoff的名字来命名的,因为他在1883年第一次声明了这种思想。

Kerckhoff原则:所有的算法必须是公开的,只有密钥是保密的。

强调算法的公开性是合理的,企图使算法保持秘密的做法(这种做法也称为含糊的安全性)不会一直有效。算法公开以后,密码设计者可以自由地与大量学院派的密码学家进行交流探讨,这些密码学家一直在研究如何破解密码系统,从而可以发表论文来证明自己的学术水平。如果一个密码算法被公开了5年,在此期间许多人试图破解该算法,但是无人能够成功,那么,说明这个算法应该是非常可靠的。

由于真正的秘密在密钥中,所以它的长度是一个非常重要的设计要素。考虑一个简单的密码锁,一般的原则是,按照顺序输入正确的号码即可打开锁,每个人都知道这点,但是锁的号码(即密钥)是保密的。如果密钥长度是两个数字,则意味着共有100种可能。若密钥长度为3个数字,则意味着共有1000种可能。同样的,6位数字的密钥意味着有百万种可能,密钥越长,则密码分析者要应对的破译难度也越高。通过穷举搜索整个密钥空间来破解密码系统,这种做法产生的工作量是密钥长度的指数量级。保密性来自于两个方面,一是强而牢固的(但是公开的)算法,二是长的密钥。例如,为了防止攻击者阅读个人的电子邮件,64位密钥就足够了,但是,对于常规的商业用途,至少应该使用128位密钥,而对于其他一些特殊部门,则至少需要256位密钥。

从密码分析者的角度来看,密码分析问题有4种主要的类型。当密码分析者得到了一定量的密文,但是没有对应的明文时,他面对的是“唯密文”(Ciphertext-only)问题,报纸上猜谜栏目中的密码难题就属于这一类问题。当密码分析者有了一些相匹配的密文和明文时,密码分析问题被称为“已知明文”(Known Plaintext)问题。最后,当密码分析者能够加密某一些自己选择的明文时,问题就变成了“选择明文”(Chosen Plaintext)问题,相反,当密码分析者能够解密某些自己选择的密文时,则变成了“选择密文”(Chosen Ciphertext)问题。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈