文章目录
- 一、网络安全问题概述
- 1、计算机网络面临的安全性威胁
- 2、安全的计算机网络
- 3、数据加密模型
- 二、两类密码体制
- 1、对称密钥密码体制
- 2、公钥密码体制
随着计算机网络的发展,网络中的安全问题也日趋严重。当网络的用户来自社会各个阶层与部门时,大量在网络中存储和传输的数据就需要保护。由于计算机网络安全是另一门专业学科,所以本章只对计算机网络安全问题的基本内容进行初步的介绍。
- 计算机网络面临的安全性威胁和计算机网络安全的主要问题。
- 对称密钥密码体制和公钥密码体制的特点。
- 鉴别、报文鉴别码、数字签名、证书、证书链的概念
- 网络层安全协议IPsec 协议族和运输层安全协议 TLS的要点。
- 应用层电子邮件的安全措施。
- 系统安全:防火墙与入侵检测。
一、网络安全问题概述
本节讨论计算机网络面临的安全性威胁、安全的内容和一般的数据加密模型。
1、计算机网络面临的安全性威胁
计算机网络的通信面临两大类威胁,即被动攻击和主动攻击(如下图所示)。
被动攻击是指攻击者从网络上窃听他人的通信内容。通常把这类攻击称为截获。在被动攻击中,攻击者只是观察和分析某一个协议数据单元PDU(这里使用PDU这一名词是考虑到所涉及的可能是不同的层次)而不干扰信息流。即使这些数据对攻击者来说是不易理解的,他也可通过观察PDU的协议控制信息部分,了解正在通信的协议实体的地址和身份,研究 PDU 的长度和传输的频度,从而了解所交换的数据的某种性质。这种被动攻击又称为流量分析(trafc analysis)。在战争时期,通过分析某处出现大量异常的通信量,往往可以发现敌方指挥所的位置。
主动攻击有如下几种最常见的方式。
- 篡改:攻击者故意篡改网络上传送的报文。这里也包括彻底中断传送的报文,甚至是把完全伪造的报文传送给接收方。这种攻击方式有时也称为更改报文流。
- 恶意程序(rogue program):种类繁多,对网络安全威胁较大的主要有以下几种:
- 计算机病毒(computer virus):一种会“传染”其他程序的程序,“传染”是通过修改其他程序来把自身或自己的变种复制进去而完成的。
- 计算机蠕虫(computer worm),一种通过网络的通信功能将自身从一个节点发送到另一个节点并自动启动运行的程序。
- 特洛伊木马(Trojan horse),一种程序,它执行的功能并非所声称的功能而是某种恶意功能。如一个编译程序除了执行编译任务以外,还把用户的源程序偷偷地复制下来,那么这种编译程序就是一种特洛伊木马。计算机病毒有时也以特洛伊木马的形式出现。
- 逻辑炸弹(logic bomb),一种当运行环境满足某种特定条件时执行其他特殊功能的程序。如一个编辑程序,平时运行得很好,但当系统时间为13日又为星期五时,它会删去系统中所有的文件,这种程序就是一种逻辑炸弹。
- 后门入侵(backdoor knocking),是指利用系统实现中的漏洞通过网络入侵系统。就像一个盗贼在夜晚试图闯入民宅,如果某家住户的房门有缺陷,盗贼就能乘虚而入索尼游戏网络(PlayStation Network)在 2011年被入侵,导致 7700 万用户的个人信息,诸如姓名、生日、E-mail地址、密码等被盜。
- 流氓软件,一种未经用户允许就在用户计算机上安装运行并损害用户利益的软件,其典型特征是:强制安装、难以卸载、浏览器劫持、广告弹出、恶意收集用户信息恶意卸载、恶意捆绑等。现在流氓软件的泛滥程度已超过了各种计算机病毒,成为互联网上最大的公害。流氓软件的名字一般都很吸引人,如某某卫士、某某搜霸等因此要特别小心。
上面所说的计算机病毒是狭义的,也有人把所有的恶意程序泛指为计算机病毒。例如1988年10月“Morris 病毒”入侵美国互联网,舆论说该事件是“计算机病毒入侵美国计算机网”,而计算机安全专家却称之为“互联网蠕虫事件”。
- 拒绝服务DoS(DenialofService) 指攻击者向互联网上的某个服务器不停地发送大量分组,使该服务器无法提供正常服务,甚至完全瘫痪。2000年2月7日至9日美国几个著名网站遭黑客"袭击,使这些网站的服务器一直处于“忙”的状态,因而无法向发出请求的客户提供服务。这种攻击被称为拒绝服务。又如在2014年圣诞节,索尼游戏网(PlayStation Network)和微软游戏网(Microsoft Xbox Live)被黑客攻击后瘫痪,估计有 1.6 亿用户受到影响[W-DOS1。
若从互联网上的成百上千个网站集中攻击一个网站,则称为分布式拒绝服务DDOS(Distributed DenialofService)。有时也把这种攻击称为网络带宽攻击或连通性攻击。
2018年2月,6日世界标准时间零时,亚太地区许多计算机同时向根服务器系统发动袭击,企图使之瘫痪。它们每秒传送的数据量相当于服务器每分钟要接收75 万封电子邮件结果至少有6个根服务器系统受到影响,两个破坏严重。有分析认为攻击来自韩国,但ICANN 不认为黑客一定是韩国人,他可以是任何地点的任何人,只不过是操纵了韩国的计算机而已。
还有其他类似的网络安全问题。例如,在使用以太网交换机的网络中,攻击者向某个以太网交换机发送大量的伪造源 MAC 地址的帧。以太网交换机收到这样的帧,就把这个假的源MAC地址写入交换表中(因为交换表中没有这个地址)。由于这种伪造的地址数量太大,因此很快就把交换表填满了,导致以太网交换机无法正常工作(称为交换机中毒)。
对于主动攻击,可以采取适当措施加以检测。但对于被动攻击,通常却是检测不出来的。根据这些特点,可得出计算机网络通信安全的目标如下:
- 防止析出报文内容和流量分析。
- 防止恶意程序。
- 检测更改报文流和拒绝服务。
对付被动攻击可采用各种数据加密技术,而对付主动攻击,则需将加密技术与适当的鉴别技术相结合。
2、安全的计算机网络
人们一直希望能设计出一种安全的计算机网络,但不幸的是,网络的安全性是不可判定的[DENN82]。目前在安全协议的设计方面,主要是针对具体的攻击设计安全的通信协议但如何保证所设计出的协议是安全的?这可以使用两种方法。一种是用形式化方法来证明,另一种是用经验来分析协议的安全性。形式化证明的方法是人们所希望的,但一般意义上的协议安全性也是不可判定的,只能针对某种特定类型的攻击来讨论其安全性。对于复杂的通信协议的安全性,形式化证明比较困难,所以主要采用人工分析的方法来找漏洞。对于简单的协议,可通过限制入侵者的操作(即假定入侵者不会进行某种攻击)来对一些特定情况进行形式化的证明,当然,这种方法有很大的局限性。
根据上一节所述的各种安全性威胁,不难看出,一个安全的计算机网络应设法达到以下四个目标:
- 机密性(或私密性):就是只有信息的发送方和接收方才能懂得所发送信息的内容,而信息的截获者则看不懂所截获的信息。显然,机密性是网络安全通信最基本的要求,也是对付被动攻击所必须具备的功能。通常可简称为保密。尽管计算机网络安全并不仅仅依靠机密性,但不能提供机密性的网络肯定是不安全的。为了使网络具有机密性,需要使用各种密码技术。
- 端点鉴别:安全的计算机网络必须能够鉴别信息的发送方和接收方的真实身份。网络通信和面对面的通信差别很大。现在频繁发生的网络诈骗,在许多情况下,就是由于在网络上不能鉴别出对方的真实身份。当我们收到一封电子邮件时,发信人也可能并不是邮件上所署名的那个人。当我们进行网上购物时,卖家也有可能是犯罪分子假冒的商家。不能解决这个问题,就不能认为网络是安全的。端点鉴别在对付主动攻击时是非常重要的。
- 信息的完整性:即使能够确认发送方的身份是真实的,并且所发送的信息都是经过加密的,我们依然不能认为网络是安全的。还必须确认所收到的信息都是完整的,也就是信息的内容没有被人篡改过。保证信息的完整性在应对主动攻击时也是必不可少的。信息的完整性和机密性是两个不同的概念。例如,商家向公众发布的商品广告当然不需要保密,但如果广告在网络上传送时被人恶意删除或添加了一些内容,那么就可能对商家造成很大的损失。
实际上,信息的完整性与端点鉴别往往是不可分割的。假定你准确知道报文发送方的身份没有错(即通过了端点鉴别),但收到的报文却已被人篡改过(即信息不完整),那么这样的报文显然是没有用处的。因此,在谈到“鉴别”时,有时是同时包含了端点鉴别和报文的完整性。也就是说,既鉴别发送方的身份,又鉴别报文的完整性。 - 运行的安全性:现在的机构与计算机网络的关系越密切,就越要重视计算机网络运行的安全性。上一节介绍的恶意程序和拒绝服务的攻击,即使没有窃取到任何有用的信息,也能够使受到攻击的计算机网络不能正常运行,甚至完全瘫痪。因此,确保计算机系统运行的安全性,也是非常重要的工作。对于一些要害部门,这点尤为重要。
访问控制(accesscontrol)对计算机系统的安全性非常重要。必须对访问网络的权限加以控制,并规定每个用户的访问权限。由于网络是个非常复杂的系统,其访问控制机制比操作系统的访问控制机制更复杂(尽管网络的访问控制机制是建立在操作系统的访问控制机制之上的),尤其在安全要求更高的多级安全(multilevel security)情况下更是如此。
3、数据加密模型
一般的数据加密模型如下图所示。用户A向B发送明文 X,但通过加密算法 E 运算后,就得出密文 Y。
图中所示的加密和解密用的密钥K(key)是一串秘密的字符串(即比特串)。公式就
Y
=
E
k
(
X
)
Y=E_k(X)
Y=Ek(X)是明文通过加密算法变成密文的一般表示方法。
在传送过程中可能出现密文的截取者(或攻击者、入侵者)。公式 D k ( Y ) = D k ( E k ( X ) ) = X D_k(Y)=D_k(E_k(X))=X Dk(Y)=Dk(Ek(X))=X表示接收端利用解密算法 D运算和解密密钥K,解出明文 X。解密算法是加密算法的逆运算。在进行解密运算时,如果不使用事先约定好的密钥就无法解出明文。
这里我们假定加密密钥和解密密钥都是一样的。但实际上它们可以是不一样的(即使不一样,这两个密钥也必然有某种相关性)。密钥通常由密钥中心提供。当密钥需要向远地传送时,一定要通过另一个安全信道。
密码编码学(cryptography)是密码体制的设计学,而密码分析学(cryptanalysis)则是在未知密钥的情况下从密文推演出明文或密钥的技术。密码编码学与密码分析学合起来即为密码学(cryptology)。
如果不论截取者获得了多少密文,但在密文中都没有足够的信息来唯一地确定出对应的明文,则这一密码体制称为无条件安全的,或称为理论上是不可破的。在无任何限制的条件下,目前几乎所有实用的密码体制均是可破的。因此,人们关心的是要研制出在计算上(而不是在理论上)是不可破的密码体制。如果一个密码体制中的密码,不能在一定时间内被可以使用的计算资源破译,则这一密码体制称为在计算上是安全的。
早在几千年前人类就已经有了通信保密的思想和方法。直到1949年,信息论创始人香农(C.E.Shannon)发表著名文章[SHAN49],论证了一般经典加密方法得到的密文几乎都是可破的。密码学的研究曾面临着严重的危机。但从20世纪60年代起,随着电子技术、计算技术的迅速发展以及结构代数、可计算性和计算复杂性理论等学科的研究,密码学又进入了一个新的发展时期。在 20 世纪 70年代后期,美国的数据加密标准 DES (Data Encryption Standard)和公钥密码体制(public key crypto-system,又称为公开密钥密码体制)的出现,成为近代密码学发展史上的两个重要里程碑。
二、两类密码体制
1、对称密钥密码体制
所谓对称密钥密码体制,即加密密钥与解密密钥都使用相同密钥的密码体制。
数据加密标准 DES属于对称密钥密码体制。它由IBM 公司研制出,于1977年被美国定为联邦信息标准后,在国际上引起了极大的重视。ISO曾将DES作为数据加密标准。
DES是一种分组密码。在加密前,先对整个的明文进行分组。每一个组为64位长的二进制数据。然后对每一个64位二进制数据进行加密处理,产生一组64位密文数据。最后将各组密文串接起来,即得出整个的密文。使用的密钥占有64位(实际密钥长度为56位,
外加8位用于奇偶校验)。
DES 的机密性仅取决于对密钥的保密,而算法是公开的。DES 的问题是它的密钥长度56位长的密钥意味着共有2种可能的密钥,也就是说,共有约7.6x10’种密钥。假设一台计算机1μs 可执行一次 DES 加密,同时假定平均只需搜索密钥空间的一半即可找到密钥,那么破译DES要超过 1000年。
然而芯片的发展出乎意料地快。不久,56位DES已不再被认为是安全的。
对于 DES 56位密钥的问题,学者们提出了三重 DES(Triple DES或记为 3DES)的方案,把一个64位明文用一个密钥加密,再用另一个密钥解密,然后再使用第一个密钥加密,即:
这种三重 DES 曾广泛用于网络、金融、信用卡等系统。
在 DES之后,1997年美国标准与技术协会(NIST),对一种新的加密标准即高级加密标准 AES(Advanced Encryption Standard)进行遴选,最后由两位年轻比利时学者 Joan Daemen 和Vincent Rijmen 提交的 Rijndael 算法被选中,在 2001年正式成为 NIST的加密标准。在 2002年成为美国政府加密标准。现在AES也是ISO/IEC18033-3标准。
AES是一种分组密码,分组长度为128位。AES有三种加密标准,其密钥分别为128位、192位和 256位,加密步骤相当复杂,运算速度比3DES快得多,且安全性也大大加强在 2001年,NIST曾有一个大致的估计,就是假定有一台高速计算机,仅用1秒钟就能够破译56位的DES(也就是采用穷举法,在1秒钟内能够把DES所有的 2 56 2^{56} 256个密钥逐个进行解密运算一遍),那么要破译128位的AES,就需要 1 0 12 10^{12} 1012年!但是计算机运算速度的提高是很难预测的。因此美国国家安全局NSA认为,对于最高机密信息(这类信息必须保证数十年以上的安全性)的传递,至少需要192或256位的密钥长度。
到2020年5月为止,尚未见到能够成功破解AES密码系统的报道。有人认为,要破解AES可能需要在数学上出现非常重大的突破。
2、公钥密码体制
公钥密码体制的概念是由斯坦福(Stanford)大学的研究人员Diie与Hellman于1976年提出的[DIFF76]。公钥密码体制使用不同的加密密钥与解密密钥。这种加密体制又称为非对称密钥密码体制。
公钥密码体制的产生主要有两个方面的原因,一是由于对称密钥密码体制的密钥分配问题,二是由于对数字签名的需求。
在对称密钥密码体制中,加解密的双方使用的是相同的密钥。但怎样才能做到这一点呢?一种是事先约定,另一种是用信使来传送。在高度自动化的大型计算机网络中,用信使来传送密钥显然是不合适的。如果事先约定密钥,就会给密钥的管理和更换带来极大的不便若使用高度安全的密钥分配中心KDC(Key Distribution Center),也会使得网络成本增加。
对数字签名的强烈需要也是产生公钥密码体制的一个原因。在许多应用中,人们需要对纯数字的电子信息进行签名,表明该信息确实是某个特定的人产生的。
公钥密码体制提出不久,人们就找到了三种公钥密码体制。目前最著名的是由美国三位科学家 Rivest,Shamir和 Adleman于1976年提出并在 1978年正式发表的RSA 体制,它是一种基于数论中的大数分解问题的体制[RIVE78]。
在公钥密码体制中,加密密钥PK(PublicKey,即公钥)是向公众公开的,而解密密钥SK(SecretKey,即私钥或密钥)则是需要保密的。加密算法E和解密算法D也都是公开的。
公钥密码体制的加密和解密过程有如下特点:
- 密钥对产生器产生出接收者B的一对密钥:加密密钥 P K B PK_B PKB和解密密钥 S K B SK_B SKB。发送者A所用的加密密钥 P K B PK_B PKB就是接收者B的公钥,它向公众公开。而B所用的解密密钥 S K B SK_B SKB就是接收者B的私钥,对其他人都保密。
- 发送者A用B的公钥
P
K
B
PK_B
PKB通过E运算对明文X加密,得出密文,发送给B。Y=
E
P
K
B
(
X
)
E_{PK_{B}}(X)
EPKB(X)
B用自己的私钥 S K B SK_B SKB通过D运算进行解密,恢复出明文,即 D S K B ( Y ) = D S K B ( E P K B ( X ) ) = X D_{SK_B}(Y)=D_{SK_B}(E_{PK_B}(X))=X DSKB(Y)=DSKB(EPKB(X))=X - 虽然在计算机上可以容易地产生成对的 P K B PK_B PKB和 S K B SK_B SKB,但从已知的 P K B PK_B PKB实际上不可能推导出 S K B SK_B SKB,即从 P K B PK_B PKB到 S K B SK_B SKB是“计算上不可能的”。这就是说,除了B以外,其他任何人都无法解密出明文X。
- 虽然公钥可用来加密,但却不能用来解密,即
- 先后对X进行D运算和E运算或进行E运算和D运算,结果都是一样的:
请注意,通常都是先加密然后再解密。但仅从运算的角度看,D运算和E运算的先后顺序则可以是任意的。对某个报文进行D运算,并不表明是要对其解密。
下图给出了用公钥密码体制进行加密的过程
公开密钥与对称密钥在使用通信信道方面有很大的不同。在使用对称密钥时,由于双方使用同样的密钥,因此在通信信道上可以进行一对一的双向保密通信,每一方既可用此密钥加密明文,并发送给对方,也可接收密文,用同一密钥对密文解密。这种保密通信仅限于持有此密钥的双方(如再有第三方就不保密了)。
但在使用公钥密码体制时,在通信信道上可以是多对一的单向保密通信。例如在上图中,可以有很多人同时持有B的公钥,并各自用此公钥对自己的报文加密后发送给B。只有B能够用其私钥对收到的多个密文一一进行解密。但使用这对密钥进行反方向的保密通信则是不行的。在现实生活中,这种多对一的单向保密通信是很常用的。例如,在网购时,很多顾客都向同一个网站发送各自的信用卡信息,就属于这种情况。
请注意,任何加密方法的安全性取决于密钥的长度,以及攻破密文所需的计算量,而不是简单地取决于加密的体制(公钥密码体制或传统加密体制)。我们还要指出,公钥密码体制并没有使传统密码体制被弃用,因为目前公钥加密算法的开销较大,在可见的将来还不会放弃传统加密方法。