2.1 密码学基本概念
密码学(Cryptology)是一门古老的学科,长期以来,密码学在军事、外交、情报等部门广泛使用。以军事领域为例,如果密码技术使用不当,没有发挥应有的防护效能,很可能导致战争失败。1942年6月,在关系到日美太平洋战争转折点的中途岛海战中,日军出现了两起严重泄密事件。首先,在战役发起前夕,日本海军第二联合特别陆战队的一个副官,用低等级密码发电说:6月5日以后本部队的邮件请寄到中途岛。其次,日军军港的一个后勤部门,用低等级密码发电报与担任进攻中途岛任务的部队联系淡水供应问题。两份电报均被设在珍珠港的美国海军破译,从而掌握了日军进攻中途岛的日期和兵力,致使日军在此次战役中遭到惨败。
密码学旨在发现、认识、掌握和利用密码内在规律,由密码编码学(Cryptography)和密码分析学(Cryptanalysis)两部分组成。密码编码学是对信息进行编码以实现信息隐藏的学科,主要依赖于数学知识。密码分析学与密码编码学相对应,俗称为密码破译,指的是分析人员在不知道解密细节的条件下对密文进行分析,试图获取机密信息、研究分析解密规律的学科。
随着计算机网络和计算机通信技术的发展,密码学作为最有效和最可靠的一种信息保护手段,已经成为信息系统安全领域的一个重要研究方向。
密码技术是实现保密通信的有效手段。密码技术通过对信息进行变换和编码,将机密的敏感信息转换成难以读懂的乱码型信息。在网络通信的过程中,常常采用密码技术对信息加密处理后再进行传输,加密的信息即使在传输的过程中被窃取,攻击者也难以从中获取原始的信息内容,从而可以保证信息在传输过程中的保密性。
在网络通信过程中使用密码技术可以达成两个目的。首先,信息在传输过程中的保密性可以得到保障。信息的保密性强调的是信息的开放范围,不让不应该获取信息的人掌握信息内容。由于信息是加密以后传输,除了正常的接收者,其他人通常无法解密也就无法获取密文背后的信息内容。其次,密码技术有利于防范通信中的身份伪造。如果信息发送者使用与接收者共享的密钥加密信息,或者使用只有自己知道但是接收者可以验证的密钥加密信息,接收者能够准确判断发送者的身份。
在网络信息系统中,密码技术是网络安全的核心和基石,对于保证信息的保密性、完整性、可用性及不可否认性等安全属性起着重要作用。
密码系统(Cryptosystem),通常也被称为密码体制。密码系统由五部分组成,以S表示密码系统,则可以描述为S={M,C,K,E,D},其中:
① M为单词Message的缩写,代表明文空间。所谓明文,就是需要加密的信息。明文空间指的是全体明文的集合。特定的明文通常以小写字母m表示。
② C是单词Ciphertext的缩写,代表密文空间。密文是明文加密后的结果,通常是没有识别意义的字符序列。密文空间是全体密文的集合。特定的密文通常以小写字母c表示。
③ K是单词Key的缩写,代表密钥空间。密钥是进行加密和解密运算的关键。加密运算使用的密钥称为加密密钥,解密运算使用的密钥称为解密密钥,两者可以相同也可以不同。密钥空间是全体密钥的集合。特定的密钥通常以小写字母k表示。
④ E是单词Encryption的缩写,代表加密算法。加密算法是将明文变换成密文所使用的变换函数,相应的变换过程称为加密。明文空间中的明文m,通过加密算法E和加密密钥k1变换为密文c,可以描述为c=E(k1,m)。
⑤ D是单词Decryption的缩写,代表解密算法。解密算法是将密文恢复为明文的变换函数,相应的变换过程称为解密。解密算法是加密算法的逆运算,两者一一对应。密文c通过解密算法D和解密密钥k2恢复为明文m,可以描述为m=D(k2,c)。
图2-1是一个典型密码系统的结构图。发送者使用加密算法在加密密钥k1的控制下将明文m转化成密文c后,通过可能不安全的信道传输信息。接收者在接收密文c后,使用解密算法在解密密钥k2的控制下将密文恢复为明文m。通信信道并不安全,攻击者可能截获发送的信息。由于信道上传输的是密文,攻击者在截获密文后还必须进行密码分析。
图2-1 密码系统
目前,密码系统的安全策略主要分为两种,一种是基于算法保密的安全策略,一种是基于密钥保护的安全策略。基于算法保密的安全策略,密码系统的加解密流程都必须完全保密。而基于密钥保护的安全策略,密码系统的加解密流程完全公开,只要求对密钥严格保密。
基于算法保密的安全策略由于攻击者对密码系统一无所知,破解密码系统难度很高。但是这种安全策略存在一些明显的缺陷,主要表现为三点。首先,算法泄密的代价高。加解密算法的设计非常复杂,一旦算法泄密,重新设计往往需要大量的人力、财力投入,而且时间较长。其次,不便于标准化。每个用户单位使用自己独立的加解密算法,不可能采用统一的软硬件产品进行加解密操作。再者,不便于质量控制。密码算法的开发,要求有优秀的密码专家,否则密码系统的安全性难以保障。由于这些原因,很少在现代密码学中采用基于算法保密的安全策略,只是在一些特殊场合,如军用系统中,采用这种安全策略。
现代密码学中,密码系统主要采用基于密钥保护的安全策略。密码系统的安全性不依赖于相对稳定的密码算法,而取决于灵活可变的密钥。判定一个密码系统是否安全,往往假定攻击者对密码系统有充分理解,并拥有合理的计算资源,在这种条件下,密码系统如果难以破译,才被认为具有足够的安全性。
将加解密算法的工作流程公开有诸多优点。首先,可以防止算法设计者在算法中隐藏后门。其次,有助于算法的软硬件实现,为算法的低成本、批量化应用奠定基础。再者,有利于将算法制定为密码算法的标准。
为了确保密码系统能抵抗密码分析,现代密码系统的设计一般需要满足以下要求:
(1)系统即使达不到理论上不可破解,也应当在实际上是不可破解的。大部分密码系统的安全性并没有在理论上得到证明,只是在密码系统提出以后,很多人长期细致地研究,没有找到有效的攻击方法,密码系统因此被认为是在实际上不可破解的。或者说,从截获的密文或某些已知的明文密文对,要确定密钥或者明文在计算上不可行,则可以认为密码系统在实际上是不可破解的。
(2)系统的保密性不依赖于加密体制或算法的保密,而依赖于密钥的保密。这个要求也被称为柯克霍夫(Kerckhoff)假设,它源于柯克霍夫在其名著《军事密码学》中提出的密码学基本假设,即密码系统使用的算法即使被密码分析者掌握,对推导出明文或密钥也没有帮助。
(3)加密算法和解密算法适用于密钥空间中的所有元素。
(4)密码系统既易于实现也便于使用。