2.1 密码学的基本概念
密码学 CC ptology) 是一门古老的科学。大概自人类社会出现战争便产生了密码,
以后逐渐形成一门独立的学科。在密码学形成和发展的历程中,科学技术的发展和战争
的剌激都起了积极的推动作用。电子计算机一出现便被用于密码破译,使密码进入电子
时代。 1949 年香农 C.D.Shannon) 发表了《保密系统的通信理论》的著名论文,担密
码学置于坚实的数学基础之上,标志着密码学作为一门科学的形成。 1976 W.Diffie
M.Hellman 提出公开密钥密码,从此开创了一个密码薪时代。 1977 年美国联邦政府颁布
数据加密标准 CDES) ,这是密码史上的一个创举。 1994 年美国联邦政府颁布密钥托管
加密标准 CEE韵, 1994 年美国联邦政府颁布数字签名标准 CDSS) 2001 年美国联邦政
府颁布高级加密标准 CAES) 。我国国家密码管理局一直高度重视密码标准管理工作,从
2000 年就开始组织相关规范的组织编写工作,先后用自皮书的形式发布了系列技术标
准,规范了商用密码产品的研发与应用。 2011 年,经国标委披准设立了密码行业标准化
技术委员会,标志着密码标准化工作正式纳入到国家标准管理体系。目前,我国许可并
大力推广应用的通用密码算法是 SM2 椭圆曲线公钥密码算法、 SM3 密码杂凑算法和 SM4
分组密码算法。同时,在智能电网、居民健康卡、社会保障等领域允许使用 SMl 分组密
码算法,在电子标签、重要门禁系统等领域采用 SM7 分组密码算法,在通信领域采用
ZUC 祖冲之密码算法。这些都是密码发展史上的一个个重要的里程碑。
研究密码编制的科学称为密码编制学(Cryptogr hy) ,研究密码破译的科学称为密码
分析学(Cryptanalysis) ,密码编制学和密码分析学共同组成密码学(Cryptology)
密码学作为信息安全的关键技术,其安全目标主要包括三个非常重要的方面:保密
confidentiality )、完整性(如tegrity) 和可用性 availability )。
2.1.1 密码学的基本安全自标
2.1.1.1 保密性
保密性是确保信息仅被合法用户访问,而不被地露给非授权的用户、实体或过程,
或供其利用的特性。即防止信息泄漏给非授权个人或实体,信息只为授权用户使用的特
性。这里的"访问"是指不仅可以读,还能浏览、打印或简单了解一些特殊资源是否
存在。常用的保密技术包括:防侦收(使对手侦收不到有用的信息)、防辐射(防止有用
信息以各种途径辐射出去)、数据加密(在密钥的控制下,用加密算法对信息进行加密处
理。即使对手得到了加密后的信息也会因为没有密钥而无法读懂有效信息)、物理保密(利
用各种物理方法,如限制、隔离、掩蔽、控制等措施,保护信息不被地露)等。
2.1.1.2 完整性
完整性是指所有资源只能由授权方或以授权的方式进行修改,即信息未经授权不能
进行改变的特性。信息在存储或传输过程中保持不被偶然或蓄意地删除、修改、伪造、
乱序、重放、插入等破坏和丢失的特性。完整性是一种面向信患的安全性,它要求保持
信息的原样,即信息的正确生成和正确存储和传输。
完整性与保密性不同,保密性要求信息不被泄露给未授权的人,而完整性则要求信
息不致受到各种原因的破坏。影响网络信息完整性的主要因素有:设备故障、误码(传
输、处理和存储过程中产生的误码,定时的稳定度和精度降低造成的误码,各种干扰源
造成的误码〉、人为攻击、计算机病毒等。
2.1.1.3 可用性
可用性是指所有资源在适当的时候可以由授权方访问,即信息可被授权实体访问并
按需求使用的特性。信息服务在需要时,允许授权用户或实体使用的特性,或者是网络
部分受损或需要降级使用时,仍能为授权用户提供有效服务的特性。可用性是信息系统
面向用户的安全性能。信息系统最基本的功能是向用户提供服务,而用户的需求是随机
的、多方面的、有时还有时间要求。可用性一般用系统正常使用时间和整个工作时间之
比来度量。
可用性还应该满足以下要求:身份识别与确认、访问控制(对用户的权限进行控制,
只能访问相应权限的资源,防止或限制经隐蔽通道的非法访问)。
2.1.2 密码体制
密码技术的基本思想是伪装信息,使未授权者不能理解它的真实含义。所谓伪装就
是对数据进行一组可逆的数学变换。伪装前的原始数据称为明文 Plaintext) ,伪装后的
数据称为密文(Ciphertext) ,伪装的过程称为加密 CEnc ption) 。加密在加密密钥 CKey)
的控制下进行。用于对数据加密的一组数学变换称为加密算法。发信者将明文数据加密
成密文,然后将密文数据送入网络传输或存入计算机文件,而且只给合法收信者分配密
钥。合法收信者接收到密文后,施行与加密变换相逆的变换,去掉密文的伪装恢复出明
文,这一过程称为解密 Decryption) 。解密在解密密钥的控制下进行。用于解密的一组
数学变换称为解密算法,而且解密算法是加密算法的逆。因为数据以密文形式在网络中
传输或存入计算机文件,而且只给合法收信者分配密铝。这样,即使密文被非法窃取,
因为未授权者没有密钥而不能得到明文,因此未授权者也不能理解它的真实含义,从而
达到确保数据秘密性的目的。同样,因为未授权者没有密钥也不能伪造出合理的明密文,因雨篡改数据必然被发现,从而达到确保数据真实性的目的。与能够检测发现篡改数据
的道理相同,如果密文数据中发生了错误或毁坏也将能够检测发现,从而达到确保数据
完整性的目的。
一个密码系统,通常简称为密码体制 (Cryptosystem) ,由五部分组成(如图 2- 1)。
(1)明文空间M 它是全体明文的集合。
(2) 密文空间 C,它是全体密文的集合。
(3) 密钥空间 K它是全体密钥的集合。其中每一个密钥K 均由加密密钥 Ke 和解
密密钥 Kd 组成,即 K=< Ke Kd>
(4) 加密算法E 它是一族由 M到C 的加密变换。
(5) 解密算法 它是一族由 的解密变换。
对于每一个确定的密钥,加密算法将确定一个具体的加密变换,解密算法将确定一
个具体的解密变换,而且解密变换就是加密变换的逆变换。对于明文空间 M 中的每一个
明文 加密算法 在密钥 Ke 的控制下将明文 加密成密文 C:
C=E (M, Ke)
而解密算法 D在密钥Kd的控制下将密文 C解密出同一明文M:
M=D (C, Kd ) =D (E (M, Ke),Kd)
如果一个密码体制的 Kd=Ke,或由其中一个很容易推出另一个,则称为单密钥密码
体制或对称密码体制或传统密码体制。否则称为双密钥密码体棋。进而,如果在计算上
Kd不能由 Ke 推出,这样将 Ke公开也不会损害 Kd 的安全,于是便可将 Ke公开。这种
密码体制称为公开密钥密码体制,简称为公钥密码体制。公开密铝密码体制的概念于
1976 年由W.Di M.Hellman 提出。它的出现是密码发展史上的一个里程碑。
如果能够根据密文系统地确定出明文或密钥,或者能够根据明文"密文对系统地确定
出密铝,则我们说这个密码是可破译的。研究密码破译的科学称为密码分析学。
密码分析者攻击密码的方法主要有以下三种。
(1)穷举攻击。所谓穷举攻击是指,密码分析者采用依次试遍所有可能的密钥对所
获得的密文进行解密,直至得到正确的明文:或者用一个确定的密钥对所有可能的明文
进行加密,直至得到所获得的密文。显然,理论上,对于任何实用密码只要有足够的资
源,都可以用穷举攻击将其攻破。从平均角度讲,采用穷举攻击破译一个密码必须试遍
所有可能密钥的一半。
值得注意的是,如果分析者不得不采用穷举攻击时,他们往往会首先尝试那些可能
性最大的密钥。例如,基于用户为了容易记忆往往会选择一些短的数据或有意义的数据
作为口令(如姓名、生日、电话号码、邮件地址等)这样的事实,黑客在攻击用户口令
时往往首先尝试这些短的和有意义的口令。这一事实告诉我们,为了口令的安全用户不
应选择这种短的数据或有意义的数据作为口令。
(2) 数学分析攻击。所谓数学分析攻击是指密码分析者针对加解密算法的数学基础
和某些密码学特性,通过数学求解的方法来破译密码。数学分析攻击是对基于数学难题
的各种密码的主要威盼。为了对抗这种数学分析攻击,应当选用具有坚实数学基础和足
够复杂的加解密算法。
(3)基于物理的攻击。侧信道密码分析利用密码系统实现时泄露的额外信息,推导
密码系统中的秘密参数。主要方法包括功耗攻击、电磁场攻击和时间攻击等。其中功耗
攻击是最常用的手段之一,包括简单功耗分析攻击 (SimplePower Analysis attacks, SPA)
和差分功耗分析攻击 (Differential Power Analysis attacks DPA) ,与传统密码分析学相比,
这些攻击手鼓攻击效果显著。有效性远高于基于数学进行密码分析的方法,因此给密码
设备带来了严重的威胁。
此外,根据密码分析者可利用的数据资源来分类,可将攻击密码的类型分为以下
四种:
(1)仅知密文攻击 (Ciphertext-onlya ack) 。所谓仅知密文攻击是指密码分析者仅根
据截获的密文来破译密码。因为密码分析者所能利用的数据资源仅为密文,因此这是对
密码分析者最不利的情况。
(2) 已知明文攻击(Known-plaintext ck) 。所谓己知明文攻击是指密码分析者根
据己经知道的某些明文-密文对来破译密码。例如,密码分析者可能知道从用户终端送到
计算机的密文数据从一个标准词 "LOGIN" 开头。又例如,加密成密文的计算机程序文
件特别容易受到这种攻击。这是因为诸如 "BEGIN" "END" "IF" "THEN" "ELSE"
等词的密文有规律地在密文中出现,密码分析者可以合理地猜测它们。再例如,加密成
密文的数据库文件也特别容易受到这种攻击。这是因为对于特定类型的数据库文件的字
段及其取值往往具有规律性,密码分析者可以合理的猜测它们。如学生成绩数据库文件一定会包含诸如姓名、学号、成绩等宇段,而且成绩的取值范自在 0-100 之间。近代密
码学认为,一个密码仅当它能经得起己知晓文攻击时才是可取的。
(3) 选择明文攻击( Chosen-plaintext 忧郁k) 。所谓选择明文攻击是指密码分析者能
够选择明文并获得相应的密文。这是对密码分析者十分有利的情况。计算机文件系统和
数据库系统特别容易受到这种攻击,这是因为用户可以随意选择明文,并获得相应的密
文文件和密文数据库。例如, Windows 环境下的数据库 SuperBase 的密码就被作者用选
择明文方法破译。如果分析者能够选择明文并获得密文,那么他将会特意选择那些最有
可能恢复出密钥的明文。
(4) 选择密文攻击 (Chosen ciphertext ck) 。所谓选择密文攻击是指密码分析者能
够选择密文并获得相应的明文。这也是对密码分析者十分有利的情况。这种攻击主要攻
击公开密钥密码体制,特别是攻击其数字签名。
一个密码,如果无论密码分析者截获了多少密文和用什么技术方法进行攻击都不能
被攻破,则称为是绝对不可破译的。绝对不可破译的密码在理论上是存在的,这就是著
名的"一次一密"密码。但是,由于在密钥管理上的困难"一次一密"密码是不实用的。
理论上,如果能够利用足够的资源,那么任何实际可使用的密码又都是可破译的。
如果一个密码,不能被密码分析者根据可利用的资源所破译,则称为是计算上不可
破译的。因为任何秘密都有其时效性,因此,对于我们更有意义的是在计算上不可破译
( Computationlly unbreakable) 的密码。
2.1.3 古典密码
虽然用近代密码学的观点来看,许多古典密码是很不安全的,或者说是极易破译的。
佳是我的不能忘记古典密码在历史上发挥的巨大作用。另外,编制古典密码的基本方法
对于编制近代密码仍然有效,例如置换和代替的方法。
2.1.3.1 古典密码实例
1.置换密码
把明文中的字母重新排列,字母本身不变,但其位置改变了,这样编成的密码称为
置换密码。
例如捂明文按某一顺序排成一个矩阵,其中不足部分用 填充,而 是明文中不会
出现的一个符号。然后按另一顺序选出矩阵中的字母以形成密文,最后最后截成固定长度的
字母组作为密文。
明文 MING CHEN WU DIAN FA DONG FAN GONG
矩阵 MINGCH 选出顺序 按列
ENWUDI
ANFADO
NGFANG
ONG其中为明文中不会出现的字符,表示空。
密文 MEANO INNGN NWFFG GUAA0 CDDN0 HIOG0
由此可以看出,改变矩阵的大小和选出顺序可以得到不同形式的密换。置换密码的
密钥就是矩阵的大小和选出顺序。置换密码比较简单,但它经不起己知明文攻击。但是,
把它与其他密码技术相结合,可以得到十分有效的密码。
- 代替密码
首先构造一个或多个密文字母表,然后用密文字母表中的字母或字母组来代替明文
字母或字母组,各字母或字母组的相对位置不变,但其本身改变了。这样编成的密码称
为代替密码。按代替所使用的密文字母表的个数可将代替密码分为单表代替密码、多表
代替密码和多名代替密码。
单表代替密码又称为简单代替密码。它只使用一个密文字母表,并且用密文字母表
中的-个字母来代替一个明文字母表中的一个字母。