2.1 密码学概论
2.1.1 密码学术语
人类早在远古时期就有了相互隐瞒信息的想法,应用文字的代替和移位,实现用文字秘密传递信息。
密码学(Cryptology)研究进行保密通信和如何实现信息保密的问题,具体指通信保密传输和信息存储加密等。它以认识密码变换的本质、研究密码保密与破译的基本规律为对象,主要以可靠的数学方法和理论为基础,对解决信息安全中的机密性、数据完整性、认证和身份识别,对信息的可控性及不可抵赖性等问题提供系统的理论、方法和技术。简单地说,密码是按特定的法则编成用以对通信双方的信息进行明密变换的符号序列。
密码学包括两个分支:密码编码学(Cryptography)和密码分析学(Cryptanalyst)。密码编码学研究怎样编码,以及如何对消息进行加密;密码分析学研究如何对密文进行破译。
下面是密码学中一些常用的术语:
明文(Message):指待加密的信息,用M或P表示。明文可能是文本文件、位图、数字化存储的语音流或数字化的视频图像的比特流等。明文的集合构成明文空间,记为SM={M}。
密文(Ciphertext):指明文经过加密处理后的形式,用C表示。密文的集体构成密文空间,记为SC={C}。
密钥(Key):指用于加密或解密的参数,用K表示。密钥的集合构成密钥空间,记为SK={K}。
加密(Encryption):指用某种方法伪装消息以隐藏它的内容的过程。
加密算法(Encryption Algorithm):指将明文变换为密文的变换函数,通常用E表示,即E:SM→SC,表示为C=EK(M)。
解密(Decryption):指把密文转换成明文的过程。
解密算法(Decryption Algorithm):指将密文变换为明文的变换函数,通常用D表示,即D:SC→SM,表示为M=DK(C)。
密码分析(Cryptanalysis):指截获密文者试图通过分析截获的密文从而推断出原来的明文或密钥的过程。
密码分析员(Cryptanalyst):指从事密码分析的人。
被动攻击(Passive Attack):指对一个保密系统采取截获密文并对其进行分析和攻击。这种攻击对密文没有破坏作用。
主动攻击(Active Attack):指攻击者非法侵入一个密码系统,采用伪造、修改、删除等手段向系统注入假消息进行欺骗。这种攻击对密文具有破坏作用。
密码体制:即由明文空间SM、密文空间SC、密钥空间SK、加密算法E和解密算法D构成的五元组{SM,SC,SK,E,D}。实际上,密码体制可以理解为一个密码方案,这里特别强调了一个“密码方案”概念的完整性。通常所说的密码方案,一定要包含这五个组成部分。对于一个密码体制而言,如果加密密钥和解密密钥相同,则称为对称密码体制或单钥密码体制,否则称其为非对称密码体制或双钥密码体制。
密码系统(Cryptosystem):指用于加密和解密的系统。加密时,系统输入明文和加密密钥,加密变换后,输出密文;解密时,系统输入密文和解密密钥,解密变换后,输出明文。一个密码系统由信源、加密变换、解密变换、信宿和攻击者组成,如图2-1所示。密码系统强调密码方案的实际应用,通常应当是一个包含软硬件的系统。从图2-1可以看出,密码系统也是一个保密通信系统。
图2-1 密码系统模型
密码系统的安全性取决于密钥,而不是密码算法,即密码算法要公开。这是荷兰密码学家Kerckhoff于1883年在名著《军事密码学》中提出的基本假设。被称为柯克霍夫(Kerckhoffs)原则。遵循这个假设的好处如下:
(1)它是评估算法安全性唯一可用的方式。因为如果密码算法保密,密码算法的安全强度就无法进行评估。
(2)防止算法设计者在算法中隐藏后门。因为算法被公开后,密码学家可以研究分析其是否存在漏洞,同时也接受攻击者的检验。
(3)有助于推广使用。当前网络应用十分普及,密码算法的应用不再局限于传统的军事领域,只有公开使用,密码算法才可能被大多数人接受并使用。同时,对用户而言,只须掌握密钥就可以使用了,非常方便。
从这个方面来说,现代密码学是从1949年开始的,由于计算机的出现,算法的计算变得十分复杂,因此算法的保密性不再依赖于算法,而是密钥。