- 第01讲 网络安全概述、数据加密 第一节 网络安全概述
第二节 数据加密
第三节 消息完整性与数字签名
第四节 身份认证
第五节 密钥分发中心与证书认证机构
第六节 防火墙与入侵检测系统
第七节 网络安全协议
[ 讲义编号NODE50923300080100000101:针对本讲义提问 ] - 学习目标:
1.了解网络安全现状、网络安全威胁,掌握网络安全基本概念。
2.理解密码学基础,掌握传统数据加密方式与典型的对称密钥加密算法和公开密钥加密算法。
3.理解消息完整性的意义,掌握报文认证与数字签名的基本原理与过程。
4.掌握身份认证的基本原理与过程。
5.理解密钥分发与证书认证的意义,掌握密钥分发与证书认证的基本原理与过程。
6.理解防火墙的基本概念与原理,掌握防火墙的类别,了解入侵检测系统的基本概念。
7.掌握PGP基本原理与过程,理解SSL与IPSec的基本原理与主要协议。
[ 讲义编号NODE50923300080100000102:针对本讲义提问 ]
第一节 网络安全概述
一、基本概念
网络安全领域的拟人模型
Alice和Bob是期望进行安全通信的情侣(Alice和Bob可以是电子交易过程的Web浏览器/服务器,例如,网购,网络银行的客户-服务器,DNS服务器,两台需要安全地交换路由表的路由器等)。Alice作为数据报文的发送方,Bob作为数据报文的接收方,Trudy是企图破坏Bob和Alice通信的入侵者(intruder),试图拦截、删除或添加信息到报文中,也可以通过Internet向主机植入恶意软件,例如,病毒、螺虫、间谍软件等。
Alice和Bob要进行数据通信,Alice希望能够实现即使在不安全的媒介上通信,所传输的报文也不会被除Bob以外的人理解,于是Alice和Bob需要协定一个安全通信,以防止入侵者Trudy截获甚至破解。
网络安全,就是网络安全通信所需要的基本属性。
[ 讲义编号NODE50923300080100000103:针对本讲义提问 ]- 1)机密性(confidentiality)。只有发送方与预定接收方能够理解报文内容。发送方发送前将报文加密,防止入侵者截获窃取,接收方接收到报文后对报文解密。
2)消息完整性(message integrity)。发送方与接收方希望确保消息未被篡改(传输途中或者后期),发生篡改一定会被检测到。考虑到即使接收方能够与发送方相互鉴别,还需要检测报文在传输过程中是否被篡改。
3)可访问与可用性(access and availability)。可访问与可用性是网络信息可被授权实体访问并按需求使用的特性,即网络信息服务在需要时,允许授权用户或实体使用的特性,或者是网络部分受损或需要降级使用时,仍能为授权用户提供有效服务的特性。
4)身份认证(authentication)。发送方与接收方希望确认彼此的真实身份。身份认证是对数据的来源进行确认,比如用户A和用户B通过网络传输数据,他们都希望自己收到的数据是来自B和A,而不是由其他人伪造的。
网络安全的基本特征:相对性、时效性、相关性、不确定性、复杂性以及重要性等。
相对性指的是网络永远只有相对的安全,没有绝对的安全,要时刻注意网络安全防护。
时效性能够反映出网络的不确定性和复杂性,新的漏洞和攻击方法层出不穷,攻击时间、攻击目标、攻击地点都不确定,需要做到随时随地的保护。
[ 讲义编号NODE50923300080100000104:针对本讲义提问 ]
二、网络安全威胁
网络主要面临哪些安全威胁呢?
报文传输方面,主要有窃听、插入、假冒、劫持等安全威胁。
√窃听指的是在报文传输过程中窃听信息,获取报文信息,获取报文信息。
√插入威胁指的是攻击者主动在连接中插入信息,混淆信息,让接收信息者收到虚假信息。
√假冒指的是可以伪造分组中的源地址(或者分组的任意其他字段)。
√劫持指的是通过移除/取代发送方或者接收方“接管”连接。
常见的网络攻击还包括拒绝服务DoS以及分布式拒绝服务DDoS等。拒绝服务是指阻止服务器为其他用户提供服务,例如,通过向接收方恶意泛洪分组,淹没接收方,导致带宽耗尽,资源耗尽等过载资源情况。分布式拒绝服务DDoS是指利用多个源主机协同淹没接收方 。
映射安全威胁,攻击原理如下:在发起攻击前先“探路”,找出网络上在运行什么服务,然后利用ping命令确定网络上的主机的地址,最后使用端口扫描的方法依次尝试与每个端口建立TCP连接。Nmap就是国外广为使用的端口扫描工具之一。
[ 讲义编号NODE50923300080100000105:针对本讲义提问 ]- 分组“嗅探”安全威胁。“嗅探”通常发生在共享式以太网或者无线网络中,“嗅探”主机通过混杂模式网络接口卡,可以接收或记录所有广播介质上的分组/帧,可以读到所有未加密数据,例如,口令等。当然,“嗅探”也并非都是安全威胁,“嗅探”也是协议分析或网络管理等所采用的技术手段,例如,Wireshark就是一个典型的分组嗅探软件。
IP欺骗安全威胁,它可以直接由应用生成“原始”IP分组,设置分组的源IP地址字段为任意值,接收方无法判断源地址是否被欺骗,可能导致错误数据的接收,或者隐藏网络安全攻击身份。
[ 讲义编号NODE50923300080100000106:针对本讲义提问 ]
第二节 数据加密
密码技术是保障信息安全的核心基础,解决数据的机密性、完整性、不可否认性以及身份识别等问题均需要以密码为基础。简单来说,密码学(Cryptography)包括密码编码学和密码分析学两部分。
密码编码学是指将密码变化的客观规律应用于编制密码来保守通信秘密。
研究密码变化客观规律中的固有缺陷,并应用于破译密码以获取通信情报的,称为密码分析学。
如图8.2所示通信加密模型。一般来说,未加密消息在密码学中被称为明文,伪装消息以隐藏消息的过程称为加密,而被加密的消息称为密文,把密文转变为明文的过程称为解密。
[ 讲义编号NODE50923300080100000107:针对本讲义提问 ]- 根据密码学的定义,可以得到一套完整密码体制,其中包括M、C、K、E、D共5个要素。
M是可能明文的有限集称为明文空间。
C是可能密文的有限集称为密文空间。
K是一切可能密钥构成的有限集称为密钥空间。
E为加密算法,对于任一密钥,都能够有效地计算。
D为解密算法,对于任一密钥,都能够有效地计算。
该套密码体系必须满足如下特性:加密算法(Ek:M→C ) ,解密算法(Dk:C→M),(x∈M),满足:Dk(Ek(x))=x
保证破译者不能在有效的时间内破解出密钥K或明文x。
◆根据密码体制的特点及出现的先后时间——传统密码算法、对称密钥算法、公开密钥算法。
◆依据处理数据的类型——分组密码和序列密码。
分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n 的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。
序列密码又称流密码,是利用密钥产生一个密钥流,然后对明文串分别加密的过程。
[ 讲义编号NODE50923300080100000108:针对本讲义提问 ]
一、传统加密方式
加密方法被分为替代密码和换位密码两大类。两种技术的核心都是将明文通过一些算法加密,保证明文的安全性。
替代密码是将明文字母替换为其他字母、数字或符号的方法。
换位密码是通过置换而形成新的排列。
1.替代密码
替代密码是将明文字母表M中的每个字母用密文字母表C中的相应字母来代替,常见的加密模型有移位密码、乘数密码、仿射密码等。
移位密码是将字母表的字母右移k个位置,并对字母表长度作模运算,每一个字母具有两个属性,本身代表的含义和可计算的位置序列值。
恺撒密码是移位密码的一个典型应用。恺撒密码据传是古罗马恺撒大帝用来保护重要军情的加密系统,通过将字母按顺序推后3位起到加密作用。改进版的恺撒密码可以将一个字母利用字母表中该字母后面的第k个字母替代,k有25种可能的密钥。
恺撒密码是单字母密码,仅仅采用了简单的替代技术,优点是算法简单,便于记忆;缺点是结构过于简单,密码分析者只要通过很少的信息就可以破译密文。
[ 讲义编号NODE50923300080100000109:针对本讲义提问 ]- 2.换位密码
换位密码,又称置换密码,是根据一定的规则重新排列明文,以便打破明文的结构特性。置换密码的特点是保持明文的所有字符不变,只是利用置换打乱了明文字符的位置和次序。也就是说,改变了明文的结构,不改变明文的内容。
列置换密码是指明文按照密钥的规定,按列换位,并且按列读出新的序列得到密文的方法。
加密过程:首先,将明文P 按密钥K的长度n进行分组,并且每组一行按行排列,即每行有n个字符。若明文长度不是n的整数倍,则不足部分用双方约定的方式填充,如双方约定用字母“x”替代空缺处字符。设最后得到的字符矩阵为Mmn,m为明文划分的行数。然后,按照密钥规定的次序将Mmn对应的列输出,便可得到密文序列C。密钥K通常用一个无重复字母的单词表示,而单词中每个字母在字母表中的相对次序,则规定了Mnm的列输出次序。
[ 讲义编号NODE50923300080100000110:针对本讲义提问 ] - 假设采用密钥K=nice的列置换密码,对明文“bob i love you”进行加密,加密得到的密文是什么?
【解】密钥K=nice,则密钥长度n=4,密钥的字母顺序为(4,3,1,2),即密钥规定的列输出顺序为第4列一第3列一第1列一第2列。因此将明文排列成M34矩阵,每行分别为bobi、love、youx,其中最后的“x”为填充字母。依据密钥规定的列输出顺序输出各列,便得到密文为:iex bvu bly ooo。
[ 讲义编号NODE50923300080100000111:针对本讲义提问 ]
二、对称密钥加密
无论是简单的替代密码还是换位密码,安全性都很低,很容易被攻破。现代密码学将替代密码和换位密码相结合,并利用复杂的加密过程,提高密码的安全性。现代密码又可以分为对称密钥密码和非对称密钥密码两大类,其中对称密钥密码的加密秘钥和解密秘钥是相同的,非对称密钥密码的加密秘钥与解密秘钥是不同。
对称密钥加密系统分为分组密码和流密码。
流密码又称序列密码,是通过伪随机数发生器产生性能优良的伪随机序列(密钥流),用该密钥流加密明文消息流,得到密文消息序列。解密时使用相同的密钥流,按加密的逆过程进行解密。
分组密码又称块密码,是将明文消息分成若干固定长度的消息组,每组消息进行单独加密/解密。计算机网络常用的对称密钥加密为分组密码,比较常见的分组密码有DES、AES和IDEA等。
[ 讲义编号NODE50923300080100000112:针对本讲义提问 ]- 1.DES加密算法
DES是典型的分组密码,使用56位的密钥,明文为64位分组序列,共进行16轮的加密,每轮加密都会进行复杂的替代和置换操作,并且每轮加密都会使用一个由56位密钥导出的48位子密钥,最终输出与明文等长的64位密文。
2.三重DES
由于DES密钥只有56位,易于遭受穷举式攻击。作为一种替代加密方案,Tuchman提出使用两个密钥的三重DES加密方法,并在1985年成为美国的一个商用加密标准。该方法使用两个密钥,执行三次DES算法。加密的过程是加密-解密-加密,解密的过程是解密-加密-解密。
[ 讲义编号NODE50923300080100000113:针对本讲义提问 ] - 3.AES加密算法
随着DES逐渐不能适应现代密码安全性需求,就连三重DES也无法适应,于是,美国国家标准及技术委员会,提出美国政府需要一种新的密码标准。
AES加密过程涉及4种操作:字节替代、行移位、列混淆和轮密钥加。解密过程分别为对应的逆操作。由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。加解密中每轮的密钥分别由初始密钥扩展得到。
AES加密算法特点:
●分组长度和密钥长度均可变。
●循环次数允许在一定范围内根据安全要求进行修正。
●汇聚了安全、效率、易用、灵活等优点。
●抗线性攻击和抗差分攻击的能力大大增强。
●如果1s暴力破解DES,则需要149万亿年破解AES。
[ 讲义编号NODE50923300080100000114:针对本讲义提问 ] - 4.IDEA加密算法
国际数据加密算法(IDEA)是1992年由Lai和Massey提出的一个非常成功的分组密码,并且广泛应用在安全电子邮件PGP中。
IDEA加密算法是一个分组长度为64位的分组密码算法,密钥长度为128位,同一个算法即可用于加密,也可用于解密。算法运用硬件与软件实现都很容易,而且比DES算法在实现上快得多。IDEA自问世以来,已经经历了大量的详细审查,对密码分析具有很强的抵抗能力,在多种商业产品中被使用。
[ 讲义编号NODE50923300080100000115:针对本讲义提问 ]
三、非对称/公开密钥加密
对称密钥加密算法经过多年的发展与改进,在防止暴力破解上做得已经非常完美了,但是仍然面临着一个最大的问题,就是密钥分发问题。不管使用的密码系统有多强,如果密码分析者能直接偷取到密钥,则整个系统将变得毫无价值。因此,想要解决这个问题,需要对密钥进行保护,以防被偷,但是密钥总需要发送给用户(需要解密密文的一方)。如何既方便密钥的分发,又确保密码体系的安全,是密码体系面临的一个重要问题。非对称密钥密码,或称公开密钥密码(简称公钥密码),则便于解决密钥分发问题。
假设Alice要和Bob通信,这时Alice和Bob并未共享一个密钥(如同在对称密钥系统情况下),而Bob有两个密钥,一个是世界上的任何人(包括入侵者Trudy),都可得到的公钥(public key),另一个是只有Bob自己知道的私钥(private key),分别使用符号KB+和KB-表示。
[ 讲义编号NODE50923300080100000116:针对本讲义提问 ]- 为了与Bob通信,Alice首先取得Bob的公钥KB+,然后用这个公钥和一个众所周知的(即已标准化的)加密算法,加密她要发送给Bob的报文m;即Alice计算KB+(m),并发送给Bob。Bob接收到Alice的加密报文后,用其私钥KB-和一个众所周知解密算法解密Alice的加密报文,即Bob计算KB-(KB+(m))还原明文m。也就是说,用Bob.的公钥KB+加密报文(得到KB+(m),然后再用Bob的私钥KB-解密报文的密文形式(即计算KB-(KB+(m)))就能得到最初的明文m。
使用公开密钥加密算法,Alice和Bob双方都不需要分发密钥,Alice可以使用Bob公开的密钥直接给Bob发送机密消息,既能够保证密文的安全性和正确性,又能保证密钥的安全性和可用性。
RSA算法是目前应用比较广泛的公开密钥算法,算法安全性高,但计算量非常大,因此通常RSA会与对称密钥密码(如DES或AES)结合使用。例如,利用DES加密/解密报文,利用RSA分发DES密钥。
公开密钥密码有一个重要特性:如果对报文m利用私钥加密,则可以利用其公钥进行解密。
KB-(KB+(m))=m=KB+(KB-(m))成立。
[ 讲义编号NODE50923300080100000117:针对本讲义提问 ] - 第02讲 消息完整性与数字签名、身份认证、密钥分发中心与证书认证机构、防火墙与入侵检测系统第三节 消息完整性与数字签名
报文/消息完整性(message integrity),也称为报文/消息认证(或报文鉴别),其主要目标是:
●证明报文确实来自声称的发送方;
●验证报文在传输过程中没有被篡改;
●预防报文的时间、顺序被篡改;
●预防报文持有期被篡改;
●预防抵赖(如发送方否认已发送的消息或接收方否认己接收的消息)。
[ 讲义编号NODE50923300080200000101:针对本讲义提问 ]
一、消息完整性检测方法
为了实现消息完整性检测,需要用到密码散列函数H(m),表示对报文m进行散列化。
密码散列函数应具备主要特性:
●一般的散列函数具有算法公开。
●能够快速计算。
●对任意长度报文进行多对一映射均能产生定长输出。
●对于任意报文无法预知其散列值。
●不同报文不能产生相同的散列值。
密码散列函数还应该具有单向性、抗弱碰撞性、抗强碰撞性。
●单向性保证了散列值持有者,无法根据散列值逆推出报文,即对于给定散列值h,无法计算找到满足h=H(m)的报文m。
●抗弱碰撞性(Weak Collision Resistance,WCR),即对于给定报文x,计算上不可能找到y且y≠x,使得H(x)=H(y)。
●抗强碰撞性(Strong Collision Resistance,SCR)表明了在计算上不可能找到任意两个不同报文x和y(y≠x),使得H(x)=H(y)。
●满足上述特性的典型散列函数有MD5和SHA-1。
[ 讲义编号NODE50923300080200000102:针对本讲义提问 ]- 1.MD5
MD5(Message-Digest Algorithm5)是在20世纪90年代初由MIT计算机科学实验室和RSA数据安全公司的Ronald L.Rivest开发出来。MD5对报文散列后,得到128位的散列值。
1996年,Dobbertin找到了两个不同的512位块,在MD5计算下产生了相同的散列值。2004年8月17日,在美国加州圣巴巴拉召开的国际密码学会议(Crypto2004),来自山东大学的王小云教授,做了破译MD5等算法的报告。不久,密码学家Lenstra利用王小云提供的MD5碰撞,伪造了符合X.509标准的数字证书,说明了MD5的破译已经不仅仅是理论破译的结果,而且可以导致实际的攻击,MD5的撤出已迫在眉睫。
2.SHA-1
安全散列函数(SHA)是由NIST提出的,于1993年作为美国联邦消息处理标准(FIPS PUB 180)公布,1995年NIST发布了修订版(FIPS 180-1),通常称为SHA-1。作为散列数据的标准,SHA-1可产生一个160位的散列值。SHA-1是典型的用于创建数字签名的单向散列算法。
[ 讲义编号NODE50923300080200000103:针对本讲义提问 ]
二、报文认证
消息完整性码,称为报文摘要。消息完整性检测的一个重要目的就是要完成报文认证的任务。
报文认证是使消息的接收者能够检验收到的消息是否是真实的认证方法。报文(消息)认证的目的有两个:消息源的认证,即验证消息的来源是真实的;消息的认证,即验证消息在传送过程中未被篡改。
[ 讲义编号NODE50923300080200000104:针对本讲义提问 ]- 1.简单报文验证
发送方对报文m应用散列函数H,得到一个固定长度的散列码,获得报文摘要h=H(m),将扩展报文(m,H(m))发送给接收方。接收方收到扩展报文(m,h)后,提取出报文m和报文摘要h,同样对报文m应用散列函数H获得新的报文摘要H(m),将H(m)与h作比较,若H(m)与h相等,则认为报文认证成功,否则报文认证失败。如下图:
该方案有一个明显的缺陷,密码散列函数是公开的,攻击者可以通过截获报文,同样用散列函数H获得报文摘要然后组成扩展报文进行发送,接收方接收后能成功完成报文认证。虽然同样是完成了报文认证,但是第二次的认证显然是不安全的,因为它没有达到对消息来源认证的目的。
[ 讲义编号NODE50923300080200000105:针对本讲义提问 ] - 2.报文认证码MAC(Message Authentication Code)
发送方和接收方共享一个认证密钥,发送方对报文m和认证密钥s应用散列函数H得到报文认证码H(m+s),将扩展报文(m,H(m+s))发送给接收方。接收方收到扩展报文(m,h)后,提取出报文m和报文认证码h,对报文m和认证密钥s应用散列函数H获得新的报文认证码H(m+s),将H(m+s)与h作比较,若H(m+s)与h相等,则认为报文认证成功,否则报文认证失败。
该方法也存在着缺陷,比如接收方自己写一份报文用同样的步骤生成一份扩展报文,并且说这份扩展报文就是发送方发来的,这时发送方就百口莫辩了。这说明了该方法没有达到对消息认证的目的,即没法保证消息在接收方没有被篡改。
[ 讲义编号NODE50923300080200000106:针对本讲义提问 ]
三、数字签名
在报文完整性认证的过程中,亟待解决的问题有:
>>发送方不承认自己发送过某一报文。
>>接收方自己伪造一份报文,并声称来自发送方。
>>某个用户冒充另一个用户接收和发送报文。
>>接收方对收到的信息进行篡改。
解决这些问题的有效技术手段是数字签名。
在公钥密码体制中,一个主体可以使用他自己的私钥“加密”消息,所得到的“密文”可以用该主体的公钥“解密”来恢复成原来的消息,如此生成的“密文”对该“消息”提供认证服务。公钥密码提供的这种消息认证服务可以看成是对消息原作者的签名即数字签名。
[ 讲义编号NODE50923300080200000107:针对本讲义提问 ]- 数字签名在信息安全,包括身份认证、数据完整性、不可否认性以及匿名性等方面有重要应用,特别是在大型安全通信中的密钥分配、认证以及电子商务系统中具有重要作用。数字签名是实现认证的重要工具。
数字签名与消息认证的区别:消息认证使接收方能验证发送方以及所发消息内容是否被篡改过。当收发者之间没有利害冲突时,这对于防止第三者的破坏来说是足够了。但当接收者和发送者之间有利害冲突时,就无法解决他们之间的纠纷,此时须借助满足前述要求的数字签名技术。
数字签名应满足以下要求:
1)接收方能够确认或证实发送方的签名,但不能伪造。
2)发送方发出签名的消息给接收方后,就不能再否认他所签发的消息。
3)接收方对已收到的签名消息不能否认,即有收报认证。
4)第三者可以确认收发双方之间的消息传送,但不能伪造这一过程。
[ 讲义编号NODE50923300080200000108:针对本讲义提问 ] - 1.简单数字签名
数字签名就是用私有密钥进行加密,而认证就是利用公开密钥进行正确的解密,所以报文加密技术是数字签名的基础。
Bob通过利用其私钥KB-对报文m进行加密,创建签名报文KB-(m),将扩展报文(m,KB-(m))发送给Alice。假设Alice收到报文m以及签名KB-(m),再利用Bob的公钥KB+解密KB-(m),并检验KB+(KB-(m))=m来证实报文m是否是Bob签名的。如果KB+(KB-(m))=m成立,则签名m的一定是Bob的私钥。通过数字签名进行消息认证Alice可以证实确实是Bob签名了m而不是其他人,并且确定Bob签名的是m而不是其他报文m’。
[ 讲义编号NODE50923300080200000109:针对本讲义提问 ] - 2.签名报文摘要
简单数字签名确实可以很好地达到信息验证的目的,但是由于数字签名利用私有密钥对整个报文m进行加密,造成加密算法在报文很大时计算量很大,运行效率很低,同时生成的扩展报文是原始报文数据量的两倍多,这样就造成了接收方流量的极大浪费。
图8.8展示了签名报文摘要的工作流程,Bob对报文m应用散列函数H生成报文摘要H(m),然后Bob通过其私钥KB+对报文摘要进行加密生成加密的报文摘要KB-(H(m)),将扩展报文(m,KB-(H(m)))发送给Alice。
假设Alice收到报文m以及加密的报文摘要KB-(H(m)),Alice利用Bob的公钥KB+解密KB-(H(m)),并检验KB+(KB-(H(m)))来证实报文m是否是Bob签名的。如果KB+(KB-(H(m)))=H(m)成立,则签名报文m的一定是Bob的私钥。
[ 讲义编号NODE50923300080200000110:针对本讲义提问 ]
第四节 身份认证
身份认证又称身份鉴别,是一个实体经过计算机网络向另一个实体证明其身份的过程。例如,一个人向某个电子邮件服务器证明其身份。人们互相鉴别方式:识别容貌,电话听声等。在本节中主要讨论经由网络通信的双方如何能够鉴别彼此,尤其关注当通信实际发生时鉴别“活动的”实体。这与证明在过去的某点接收到的报文确实来自声称的发送方稍有不同。
假设Alice要向Bob鉴别她自己的身份,如果Alice直接发送给Bob—条消息“我是Alice”,Bob收到消息后不能确定消息确实就是Alice发来的,因为在网络中Bob“看”不到Alice,Trudy(入侵者)也可以发送这样的报文。
如果Alice在自己发送的报文中加入个人标识呢?例如,Alice的常用IP地址,加入报文发送给Bob,Bob收到消息后,通过验证Alice携带鉴别报文的IP数据报的源地址,是否与其常用IP地址相匹配来进行鉴别。显然,这仍然不可靠,因为Trudy可以通过IP欺骗,生成一个IP数据报,在数据报中填入Alice的IP地址,再发送给Bob。
[ 讲义编号NODE50923300080200000111:针对本讲义提问 ]- 如果Alice在之前报文的基础上添加一条秘密口令后,再发送给Bob是否就能成功完成身份认证呢?很遗憾,这种身份认证的方式的安全性缺陷相当明显:如果Trudy窃听Alice的通信,则可得到Alice的口令。Trudy通过嗅探在局域网上传输的所有数据分组,就有可能窃取到口令。
那么如果对口令进行加密是否可以防止攻击呢?事实证明还是不行!虽然口令加密确实可以防止Trudy通过嗅探获得Alice的口令,但是,这种方法并不能解决身份认证问题,因为Bob依然可能遭受一种攻击,即回放攻击(playback attack)。Trudy只需窃听Alice的通信,并记录下加密口令(可能并不知道口令内容),并向Bob回放该加密的口令,就可以假冒她就是Alice。
使用加密口令方式失败的情况,是因为Bob不能区分Alice的初始鉴别报文和后来入侵者回放的Alice的初始鉴别报文。也就是说,Bob无法判断Alice是否还活跃(即当前是否还在连接的另一端),或接收到的报文是否就是前面鉴别Alice时录制的回放。回顾TCP连接建立的三次握手过程,也需要处理类似的问题。如果服务器端的TCP接收到的SYN报文段,是较早连接的一个SYN报文段的旧副本(重传的结果),那么服务器端的TCP不会接受该连接请求。
[ 讲义编号NODE50923300080200000112:针对本讲义提问 ] - 服务器端的TCP如何“判断客户是否真正还活跃”呢?TCP的解决方案是,选择一个很长时间内都不会再次使用的初始序号,然后把这个序号发给客户,然后等待客户以包含这个序号的ACK报文段来响应。类似地,为了预防重放攻击,比较有效的解决方式是引入一次性随机数(Nonce),该随机数在一个生命期内只使用一次。
1)Alice向Bob发送报文“我是Alice”。
2)Bob选择一个一次性随机数R,然后把这个值发送给Alice。
3)Alice使用她与Bob共享的对称秘密密钥KA-B来加密这个一次性随机数,然后把加密的一次性随机数KA-B(R)发回给Bob。由于Alice知道KA-B并用它加密了R,就使得Bob知道收到的报文是由Alice产生的,于是,这个一次性随机数便可用于确定Alice是活跃的。
4)Bob解密接收到的报文。如果解密得到的一次性随机数等于他发送给Alice的那个一次性随机数,则可确认Alice的身份。
[ 讲义编号NODE50923300080200000113:针对本讲义提问 ] - 一个改进的方法:在使用一次性随机数的基础上,再利用公钥加密技术:
1)Alice向Bob发送报文“我是Alice”。
2)Bob选择一个一次性随机数R,然后把这个值发送给Alice。
3)Alice使用她的私钥来加密然后把加密结果发回给Bob。
4)Bob向Alice索要她的公钥。
5)Alice向Bob发送自己的公钥。
6)Bob用Alice的公钥解密收到的报文。如果解密得到的一次性随机数等于他发送给Alice的那个一次性随机数R,则可确认Alice的身份。
[ 讲义编号NODE50923300080200000114:针对本讲义提问 ] - 依然存在比较明显的安全漏洞,如图8.11所示。
Alice向Bob发送消息,但是发送的消息被中间人Trudy劫持;Trudy劫持消息后将其转发给Bob;Bob收到消息后向他认为的“Alice”发送一次性随机数R,同样被Trudy劫持;
Trudy将一次性随机数R转发给Alice;Alice收到后,向她认为的“Bob”发送用自己私钥加密的一次性随机数KA-(R);与此同时,Trudy也向Bob发送用自己私钥加密的一次性随机数KT-(R),并向Alice索要Alice的公钥;Bob收到KT-(R)后,向“Alice”索要公钥;然后,Trudy成功获取了Alice发来的公钥KA+,并将自己的公钥KT+发送给Bob。
[ 讲义编号NODE50923300080200000115:针对本讲义提问 ] - 至此,Trudy已经完全成为了“中间人”,Bob与Alice可以收到彼此发送的所有信息,但同时Trudy也收到了所有信息。
之所以会存在中间人攻击的安全隐患,跟密钥的可信性有很大关系,Trudy将自己的公钥发给Bob,并声称是Alice的公钥,Bob没有验证公钥的真实性,于是中间人攻击就成功了。解决这一问题的关键,是要解决(对称)密钥分发和(公开)密钥本身的认证问题。
[ 讲义编号NODE50923300080200000116:针对本讲义提问 ]
第五节 密钥分发中心与证书认证机构
一、密钥分发中心
为了证明是“真实的”Alice,Bob向Alice发送一个随机数R,Alice必须返回R,并利用共享密钥进行加密,那么Alice和Bob之间如何实现对称密钥的共享呢?
在对大量信息进行加密时,对称密钥密码因为其加/解密效率高、速度快等特点,而比非对称密钥密码更为有效。然而对称密钥密码的应用,需要在通信方之间建立一个共享密钥。如果一方需要和N方进行保密通信,则需要建立N对共享密钥。显然,解决对称密钥的安全可靠分发,是成功利用对称密钥密码的关键。
对称密钥分发的典型解决方案:通信各方建立一个大家都信赖的密钥分发中心(Key Distribution Center,KDC),并且每一方和KDC之间都保持一个长期的共享密钥。通信双方借助KDC,在通信双方之间创建一个临时的会话密钥(Session Key)。在会话密钥建立之前,通信双方与KDC之间的长期共享密钥,用于KDC对通信方进行验证以及双方之间的验证。
基于KDC的密钥生成和分发方法可以有很多种。例如,会话密钥可以由通信的发起方生成,也可以由KDC生成。假设通信方Alice与KDC之间长期共享密钥为KA-KDC,通信方Bob与KDC之间长期共享密钥为KB-KDC。
[ 讲义编号NODE50923300080200000117:针对本讲义提问 ]- 方式一:通信发起方生成会话密钥,如图8.12
1)假设Alice要与Bob进行保密通信,Alice随机选择一个会话密钥Ks;用KA-KDC加密会话密钥,即得到KA-KDC(Ks,B),并发送给KDC。
2)KDC收到后,用KA-KDC解密获得Alice所选择的会话密钥Ks,以及所希望的通信方Bob。KDC将(Ks,A)用其和Bob共享的密钥KB-KDC加密,并将KB-KDC(Ks,A)发送给Bob。
3)通信方Bob收到后,用与KDC的共享密钥解密,从而得知希望和自己通信的是Alice,并获得会话密钥Ks。
这样Alice和Bob就可以利用会话密钥Ks进行双方之间的保密通信了,因为大家都信任KDC。
[ 讲义编号NODE50923300080200000118:针对本讲义提问 ] - 方式二:由KDC为Alice、Bob生成通信的会话密钥,如图8.13所示。
1)通信方Alice在希望与Bob通信时,首先向KDC发送请求消息。
2)KDC收到来自于Alice的消息后,随机选择一个会话密钥Ks,并将KB-KDC(Ks,A)发送给Bob,将KA-KDC(Ks,B)发送给Alice。
3)Alice、Bob收到来自于KDC的密文消息后,分别用自己与KDC的共享密钥解密,获得会话密钥Ks。
显然,通过方式二也可以在Alice、Bob之间建立其会话密钥,以支持双方的保密通信。
[ 讲义编号NODE50923300080200000119:针对本讲义提问 ]
二、证书认证机构
考虑一个因特网版的“比萨恶作剧”。
假定Alice正在从事比萨派送业务,从因特网上接受订单。Bob是一个爱吃比萨的人,他向Alice发送了一份包含其家庭地址和他希望的比萨类型的明文报文。Bob在这个报文中也包含一个数字签名(即对原始明文报文的签名的散列),以向Alice证实他是该报文的真正来源。为了验证这个数字签名,Alice获得了Bob的公钥(也许从公钥服务器或通过电子邮件报文)并核对该数字签名。通过这种方式,Alice确信是Bob而不是某些青少年恶作剧者下的比萨订单。
在聪明的Trudy出现之前,这一切看起来进行得相当好。如图8.14所示,Trudy向Alice发送一个报文,在这个报文中说她是Bob,给出了Bob家的地址并订购了一个比萨。在这个报文中,也包括了她(Trudy)的公钥,Alice自然地假定它就是Bob的公钥。
[ 讲义编号NODE50923300080200000120:针对本讲义提问 ]- Trudy也附加了一个签名,但是这是用她自己(Trudy)的私钥生成的。在收到该报文后,Alice就会用Trudy的公钥(Alice认为它是Bob的公钥)来解密该数字签名,并得到结论:这个明文报文确实是由Bob生成的。然而,当外送人员带着腊肠比萨到达Bob家时,他会感到非常惊讶,因为Bob根本就不喜欢腊肠。
要使公钥密码有效,需要能够证实你拥有的公钥,实际上就是要与你通信的实体(人员、路由器、浏览器等)的公钥。
例如,当Alice与Bob使用公钥密码通信时,她需要证实她认为是Bob的那个公钥确实就是Bob的公钥。
[ 讲义编号NODE50923300080200000121:针对本讲义提问 ] - 将公钥与特定实体绑定,通常是由认证中心(Certification Authority,CA)完成的。CA具有以下作用:
1)CA可以证实一个实体(一个人、一台路由器等)的真实身份。当通信方与CA打交道时,需要信任这个CA能够执行严格的身份验证。例如,如果Trudy可以进入某证书权威机构,并宣称“我是Alice”,就可以得到该机构颁发的与Alice的身份相关联证书的话,则人们不会对该证书权威机构所签发的公钥证书有太多的信任。
[ 讲义编号NODE50923300080200000122:针对本讲义提问 ] - 2)一旦CA验证了某个实体的身份,CA会生成一个把其身份和实体的公钥绑定起来的证书(Certificate),其中包含该实体的公钥及其全局唯一的身份识别信息(例如,人的姓名或IP地址)等,并由CA对证书进行数字签名。图8.15所示为Bob获取个人数字证书的过程。Bob向CA提供自己的身份证明,CA创建绑定Bob及其公钥的证书,证书包含由CA签名的Bob公钥并且声明:“这是Bob的公钥”。
此时,当Alice想要Bob的公钥时,首先获取Bob的公钥证书,然后应用CA的公钥解密证书中签名的公钥从而获得Bob的公钥。有了CA便可以对抗披萨恶作剧了,也可以解决图8.11所示的中间人攻击问题了。
[ 讲义编号NODE50923300080200000123:针对本讲义提问 ]
第六节 防火墙与入侵检测系统
一、防火墙的基本概念
因特网并不是一个安全的地方,隐藏着各种危险,危机四伏。在众多网络安全防护措施里,防火墙(firewall)是比较有效并且被广泛部署使用的设施。防火墙是能够隔离组织内部网络与公共互联网,允许某些分组通过,而阻止其他分组进入或离开内部网络的软件、硬件或者软件硬件结合的一种设施。
防火墙发挥作用的基本前提,是需要保证从外部到内部和从内部到外部的所有流量都经过防火墙,并且仅被授权的流量允许通过,防火墙能够限制对授权流量的访问。
[ 讲义编号NODE50923300080200000124:针对本讲义提问 ]
二、防火墙分类
防火墙大致可以分为三类:
◆无状态分组过滤器(stateless packet filters);
◆有状态分组过滤器(stateful packet filters);
◆应用网关(application gateway)。
[ 讲义编号NODE50923300080200000125:针对本讲义提问 ]- 1.无状态分组过滤器
无状态分组过滤器是典型的部署在内部网络和网络边缘路由器上的防火墙。一个机构网络通常都会有至少一个将其内部网络与外部Internet相连的网关路由器。所有进入和离开内部网络的流量都会经过网关路由器。分组过滤是网关路由器的重要功能之一,路由器逐个检查数据报,然后基于特定的规则对分组是通过还是丢弃进行决策。
[ 讲义编号NODE50923300080200000126:针对本讲义提问 ] - 进行过滤时通常基于以下参数进行决策:
1)IP数据报的源IP地址和目的IP地址。
2)TCP/UDP报文段的源端口号和目的端口号。
3)ICMP报文类型。
4)TCP报文段的SYN和ACK标志位等。
例如,分组过滤器如果设置阻止上层协议字段等于17的IP数据报,以及源或目的端口号等于23的TCP报文段的进入与离开,结果是所有进入或者离开的UDP流量以及Telnet连接均会被阻止;分组过滤器如果设置阻止进入的ACK等于0的TCP报文段,结果是阻止外部客户与内部主机主动建立TCP连接,但是允许内部客户与外部主机进行主动连接建立。
[ 讲义编号NODE50923300080200000127:针对本讲义提问 ] 2.有状态分组过滤器
无状态分组过滤器弊端如:不加区分的放行所有满足条件的分组,假如某路由器中的访问控制列表允许来自外部的ACK=1且源端口为80的任何分组通过该过滤器到达内部网络。这样的分组能够被攻击者利用进行拒绝服务攻击或者绘制内部网络。
而有状态分组过滤器会使用连接表跟踪每个TCP连接,如表8.3所示。分组过滤器跟踪连接建立(SYN),拆除(FIN),根据状态确定是否放行进入或者外出的分组。对于超时的非活动连接,则不再允许分组通过。
表8.3 某路由器接口的有状态分组过滤器的连接记录表
[ 讲义编号NODE50923300080200000128:针对本讲义提问 ] | 源地址 | 目的地址 | 源端口 | 目的端口 | | —- | —- | —- | —- | | 172.212.12.204 | 112.23.14.22 | 10231 | 80 | | 172.212.12.117 | 152.43.61.73 | 10803 | 80 | | 172.212.12.117 | 166.45.22.98 | 10223 | 80 |3.应用网关
前面介绍的两个分组过滤器可以实现根据IP的内容和TCP/UDP首部信息执行粗粒度的过滤,但它们都无法鉴别用户身份或针对授权用户开放特定服务,因为有关用户身份的信息都是应用层数据,都不在TCP/UDP传输层数据头部中。
因此,为了进一步提高防火墙的安全性,防火墙还必须把分组过滤器和应用程序网关结合起来,图8.17所示的是应用网关实现授权用户通过网关访问外部网络的Telnet服务。
[ 讲义编号NODE50923300080200000129:针对本讲义提问 ]- 首先,所有用户必须通过应用网关才能访问外部网络的Telnet服务,应用网关会进行身份鉴别,只有授权用户,应用网关代理用户与目的主机建立Telnet连接,并且在两个连接之间进行数据中继,而路由器会阻止所有不是应用网关发起的Telnet连接。所以,该Telnet应用网关不仅执行用户授权,同时也充当Telnet服务器和Telnet客户。
防火墙和应用网关局限性:
第一,路由器无法确定数据是否来自声称的源,攻击者会利用此进行IP欺骗。
第二,应用网关通用性不好,如果不同应用有不同需求,每个应用需要一个独立的应用网关,此外,客户软件需要知道如何连接网关。
第三,针对UDP的流量经常全部通过或者全部不通过。通常,网络中防火墙的设置会进行折中,确定安全级别,不同安全级别对内部网络与外部网络的通信影响程度不同。
[ 讲义编号NODE50923300080200000130:针对本讲义提问 ]
三、入侵检测系统IDS
防火墙在决定让哪个分组经过防火墙时,分组过滤器检查IP、TCP、UDP、ICMP首部字段。为了检测多种攻击类型,则需要执行深度分组检查,查看首部字段之外的部分,深入查看分组携带的实际数据。
入侵检测系统(Intrusion Detection System,IDS)是当观察到潜在的恶意流量时,能够产生警告的设备或系统,IDS不仅仅针对TCP/IP首部进行操作,而且会进行深度包检测,并检测多数据之间的相关性。IDS能够检测多种攻击,例如,网络映射、端口扫描、TCP栈扫描、DoS拒绝服务攻击等。
一个机构可能在它的机构网络中部署一个或者多个IDS传感器,如图8.18所示,非军事区(DeMilitarized Zone,DMZ)是代表较低安全度区域。IDS不仅要进行深度分组检查,同时还要将每个过往的分组与大量特征进行比较,这可能会导致极大的数据处理量。
[ 讲义编号NODE50923300080200000131:针对本讲义提问 ]- 第03讲 网络安全协议第七节 网络安全协议
在互联网中如何使用工具提供安全性保障?
例如,通过加密网络层数据报中的所有数据,即传输层所有报文段,以及鉴别源和目的IP地址,在网络层能够提供“全覆盖”的安全性保障。(仍然不能够提供用户级的安全性)
例如,前面说到的有状态分组过滤器存在的缺陷,要提供更高层的安全性,需要对应用层的数据进行加密、身份认证等。
从应用层开始,自顶向下介绍各层解决安全性的实例协议,包括安全电子邮件、安全套接字层SSL和IPSec等。
[ 讲义编号NODE50923300080300000101:针对本讲义提问 ]
—、安全电子邮件
1.安全电子邮件基本原理
电子邮件安全性问题例如:
>>常见的垃圾邮件;
>>诈骗邮件;
>>网络蠕虫和病毒邮件等。
作为一个网络应用,电子邮件对网络安全的需求有:
1)机密性:传输过程中不被第三方阅读到邮件内容,只有真正的接收方才可以阅读邮件。
2)完整性:支持在邮件传输过程中不被篡改,若发生篡改,通过完整性验证可以判断出该邮件被篡改过。
3)身份认证性:电子邮件的发送方不能被假冒,接收方能够确认发送方的身份。
4)抗抵赖性:发送方无法对发送的邮件进行抵赖。接收方能够预防发送方抵赖自己发送过的事实。
电子邮件系统具有单向性和非实时性,发送方利用用户代理编写邮件,发送到所注册的邮件服务器,邮件服务器将邮件放到外出队列中,在合适时期发送到接收方注册的服务器,最后由接收方服务器将邮件放到接收方邮箱中,接收用户在邮箱中读取信件。因此,电子邮件不适合采用如虚拟专用网VPN等技术建立安全隧道,进行邮件加密传输,只能对邮件本身进行加密。
[ 讲义编号NODE50923300080300000102:针对本讲义提问 ]- 2.安全电子邮件标准
1991年提出的PGP(Pretty Good Privacy)标准。
PGP可以免费运行在各种操作系统平台之上,可用于普通文件加密以及军事目的,所使用的算法,例如,公钥加密算法(如RSA)、对称加密算法(如3DES)、散列算法(如SHA-1),都已被证明是安全可靠的。
PGP能够提供诸如邮件加密、报文完整性等安全服务,满足电子邮件对网络安全的需求。PGP标准会对邮件内容进行数字签名,保证信件内容不被篡改。同时会使用公钥和对称密钥加密,保证邮件内容机密且不可否认,公钥的权威性由收发双方所信任的第三方签名认证,并且事先不需要任何保密信道来传递对称的会话密钥。
[ 讲义编号NODE50923300080300000103:针对本讲义提问 ] - 以Alice向Bob发送保密邮件为例,PGP的加密阶段。Alice先对报文m使用SHA-1散列函数进行散列,采用Alice的私钥KA-,通过公钥加密算法(如RSA)对摘要进行数字签名,得到KA-(H(m));邮件报文m和数字签名在PGP中会进行压缩;再使用对称加密算法如3DES进行对称加密,对称密钥为Ks;为了将对称密钥Ks安全分发到Bob手中,使用Bob的公开密钥KB+对Ks进行加密;加密的密钥和加密的压缩报文会进行Base64的编码,把非7位ASCII码内容编码为7位ASCII码,以便利用SMTP进行传输。同时可能要进行分段,因为PGP报文有大小限制。
[ 讲义编号NODE50923300080300000104:针对本讲义提问 ] - PGP的解密阶段。Bob接收邮件后先利用Base64进行还原,再进行分离;然后先利用Bob的私钥KB-解密得到对称密钥Ks;利用Ks进行3DES解密,解压缩后进一步分离;对数字签名KA-(H(m))使用Alice的公钥KA+进行解密得到H(m);对原报文m利用相同的散列函数H进行散列,比较两个H(m)即可对报文完整性进行验证。
PGP允许用户选择功能内容,例如,选择保密或身份认证等。安装PGP时,PGP会为用户生成公用密钥对,公钥放置在用户网站或者某公共服务器。用户为随机生成的RSA私钥生成一个口令,只有给出口令才能将私钥释放出来进行使用。PGP公钥认证机制与传统认证中心CA差异比较大,可以通过可信的Web认证,或者用户可以自己认证任何其信任的“公钥/用户名”对。同时用户还可以为其他公钥认证提供担保。Alice可以直接从Bob手中得到公钥,或者通过电话认证密钥,或者从双方信任的第三方那里获取Bob的公钥,或者通过认证中心CA来获得,防止公钥被篡改。
[ 讲义编号NODE50923300080300000105:针对本讲义提问 ]
二、安全套接字层SSL
1.SSL简介
Web应用的安全性问题,Web服务器越强大,包含安全漏洞的概率越高,会遇到各种各样的安全威胁,例如,活动Web页面可能隐藏恶意程序。
普通Web应用的应用层数据(即HTTP报文),在传输过程中都是以明文形式传输的,因此,在传输过程中也可能受到攻击,例如,受到监听、伪造、篡改、重放或中间人攻击等威胁。
为了解决Web应用安全问题,可以从多个层次入手,例如,在电子商务背景下提出的HTTP安全电子交易协议,属于应用层解决方案。另一种Web安全解决方案,是在传输层之上构建一个安全层,最典型的就是安全套接字层(Secure Socket Layer,SSL)或传输层安全(Transport Layer Security,TLS)。SSL/TLS介于应用层和传输层之间,类似于会话层,可作为基础协议桟的一部分,也可直接嵌入到浏览器中使用。TLS是SSL的变体,差异不大。
[ 讲义编号NODE50923300080300000106:针对本讲义提问 ]- 安全套接字层SSL是由NetScape最先实现,并广泛部署的安全协议,几乎所有的浏览器和Web服务器都支持。SSL可以提供机密性、完整性、身份认证等安全服务。SSL最初提出的目标是面向Web电子商务交易,尤其是加密信用卡号,提供Web服务器的认证、可选的客户认证,方便用户和新商户进行商务活动。HTTP协议使用SSL进行安全通信时,称为安全HTTP,简记为HTTPS。
目前,所有基于TCP的网络都可以应用SSL,SSL提供了安全套接字接口,数据处理后再交付给TCP传输。可以说,SSL可以为所有基于TCP的网络应用提供应用编程的接口,具有较好的通用性。SSL可以提供类似PGP的安全功能,但是SSL需要发送字节流以及交互数据,而电子邮件主要是单向传输。另外,SSL需要一组密钥用于链接,并且需要在握手阶段进行证书交换并作为协议的一部分。SSL比较复杂,下面首先介绍一个简化的SSL,来展示SSL的核心功能。
[ 讲义编号NODE50923300080300000107:针对本讲义提问 ] - 简化的SSL主要包含4个部分:
1)发送方和接收方利用各自的证书、私钥认证、鉴别彼此,并交换共享密钥。
2)密钥派生或密钥导出,发送方和接收方利用共享密钥派生出一组密钥。
3)数据传输,将传输数据分割成一系列记录,加密后传输。
4)连接关闭,通过发送特殊消息,安全关闭连接,不能留有漏洞被攻击方利用。
简化SSL的握手过程如图8.21所示。
Bob接收Alice给出的hello信息后,向Alice提供(发送)公共密钥证书,Alice会对该证书进行鉴别,再利用Bob的公钥KB+对主密钥MS进行加密,得到EMS后发送给Bob。
[ 讲义编号NODE50923300080300000108:针对本讲义提问 ] - 发送方和接收方利用不同密钥完成不同操作会更加安全,例如,报文认证码MAC和数据加密密钥通常而言都是不一样的。因此,SSL在密钥派生阶段,通过密钥派生函数(Key Derivation Function,KDF)可以实现密钥派生,提取主密钥和一些额外随机数,生成密钥。在SSL密钥派生过程中,会派生出4个密钥。
1)Kc:用于加密客户向服务器发送数据的密钥(对称密钥)。
2)Mc:用于客户向服务器发送数据的MAC密钥。
3)Ks:用于加密服务器向客户发送数据的密钥。
4)Ms:用于服务器向客户发送数据的MAC密钥。
SSL在数据传输过程中,会将待传输数据分割为一系列记录,因为如果直接加密待发送的TCP字节流,则没有合适的位置放置报文认证码MAC。一般来说,MAC都会放在数据最后,这样,只有接收方接收了所有数据后,才能进行完整性验证。例如,基于TCP的即时消息系统中,在显示一段消息之前,无法针对发送的所有字节进行完整性校验,而必须等待整个会话结束,才能进行完整性校验,显然这是不可行的。因此,SSL的解决方案,是将字节流分割为一系列记录,每个记录携带一个MAC。
[ 讲义编号NODE50923300080300000109:针对本讲义提问 ] - 为了防止攻击者捕获和重放记录或者重新排序记录,SSL会在报文认证码MAC中,增加序列号以及使用一次性随机数nonce。在SSL纪录前增加序列号,使用MAC密钥进行散列得到MAC,但在SSL记录中没有序列号字段,序列号信息由接收方和发送方按着一定规律自己生成。
为了防止截断攻击,即攻击者伪造TCP的断连过程,使得通信的一方或者双方认为对方没有数据发送,连接被恶意断开。SSL会使用一个类型的记录专门用于断连,例如type=0的记录用于发送数据,type=l的记录用于断连,只有接收到type=l的记录时,SSL才进行断连。
上述SSL是简化版本,可以看作SSL的基本原理,很多方面并不完整,例如,使用哪种加密协议和加密算法,4个密钥的协商细节等。
[ 讲义编号NODE50923300080300000110:针对本讲义提问 ] 2.SSL协议栈
图8.22所示是SSL协议栈。SSL是介于TCP和HTTP等应用层协议之间的一个可选层,绝大多数应用层协议可以直接建立在SSL协议之上,SSL不是单独的协议,而是两层协议。
图8.22 SSL协议栈
SSL密码组
SSL在安全加密/解密过程中,涉及多种密码,已介绍的密钥派生过程中的4种密码。同时SSL也会使用到多种加密算法,主要有:
1)公开密钥加密算法:SSL主要使用RSA,其他多种公钥加密算法也支持。
2)对称密钥加密算法:SSL支持DES分组密码、3DES分组密码等。
3)MAC算法:MD5或SHA-1。
[ 讲义编号NODE50923300080300000111:针对本讲义提问 ] | SSL握手协议 | SSL更改密码协议 | SSL警告协议 | | —- | —- | —- | | SSL记录协议 | | | | TCP | | | | IP | | |密码组由客户和服务器协商确定,客户端提供支持的可选加密算法,服务器从中挑选构成密码组。
SSL更改密码规格协议用于通信过程,通信双方修改密码组,标志着加密策略的改变。从图8.22中可以看出,SSL更改密码规格协议是运行在SSL记录协议之上,最后报文内容会封装到记录协议报文之中。
图8.22 SSL协议栈
SSL警告协议同样位于记录协议之上,用于在握手过程或者数据加密等出错或者发生异常时,为对等实体传递SSL警告或者终止当前连接。协议包含两个字节:警告级别和警告代码。
SSL握手协议在SSL协议栈中的地位十分重要,因为SSL需要握手协议交换许多重要信息。SSL握手协议主要是协商密码组和建立密钥,在协商确认后,才能进行派生密钥的导出等操作,协商结果是SSL记录协议的基础。握手协议也会进行服务器认证与鉴别和客户认证与鉴别。在SSL3.0版本中,握手过程用到3个协议:SSL握手协议、SSL更改密码规格协议、SSL警告协议。
[ 讲义编号NODE50923300080300000112:针对本讲义提问 ] | SSL握手协议 | SSL更改密码协议 | SSL警告协议 | | —- | —- | —- | | SSL记录协议 | | | | TCP | | | | IP | | |SSL记录协议描述了SSL信息交换过程中的消息格式,前面的3个协议都需要记录协议进行封装与传输。SSL记录协议会将数据分段成可操作的数据块,如图8.23所示,将分块数据进行数据压缩,为了实现对每一个记录进行完整性认证,需要对每个记录计算MAC值,压缩后数据进行连接,再进行加密,加入SSL记录头(Recorder Header)构成记录,放入TCP报文段中传输。
SSL记录头部由3部分组成:1字节的内容类型ContentType、2字节的SSL版本号和3字节的数据长度。MAC中包括序列号以及MAC的密钥Mx。
[ 讲义编号NODE50923300080300000113:针对本讲义提问 ]- 3.SSL的握手过程
SSL协议的握手过程主要有以下几个步骤:
1)客户发送其支持的算法列表,以及客户一次随机数nonce,服务器从算法列表中选择算法,并发给客户自己的选择、公钥证书和服务器端一次随机数nonce。
2)客户验证证书,提取服务器公钥,生成预主密钥(pre_master_secret),并利用服务器的公钥加密预主密钥,发送给服务器,实现密钥的分发。
3)客户与服务器基于预主密钥和一次随机数,分别独立计算加密密钥和MAC密钥,包括前面提到的4个密钥。
4)客户发送一个针对所有握手消息的MAC,并将此MAC发送给服务器。
5)服务器发送一个针对所有握手消息的MAC,并将此MAC发送给客户。
最后两步是为了保护握手过程免遭篡改,因为在密钥分发和派生之前,所有的握手过程都是明文。例如,客户端提供的算法安全性有强有弱,明文传输中可能会被中间人攻击截获,把安全性强的算法删除,为后期的攻击埋下伏笔,而针对所有消息的MAC能够预防这类攻击事件的发生。
客户端和服务器各自都选择了一个一次性随机数,是为了确保在一定时间内加密密钥的不同,避免被重放攻击。例如,攻击者嗅探了Alice和Bob之间的所有报文,第二天攻击者向Bob建立了TCP连接,发送完全相同的报文序列,如果Bob是淘宝卖家的话,他可能会认为Alice对同一产品下发两个分离的订单。如果Bob每次连接时发送完全不同的随机数,两次场景的加密密钥就会不同。攻击者的报文将无法通过Bob完整性检验。
SSL密钥派生时,客户端的一次性随机数、服务器端的一次性随机数和预主密钥作为随机数发生器的输入,产生主密钥MS。主密钥和新一次的随机数输入到另一个随机数发生器,就会按照密钥派生函数,生成密钥块,之后的4个基本密钥都是由密钥块进行切片后得到,分别是客户端MAC密钥、服务器MAC密钥、客户加密密钥、服务器加密密钥。同时,密钥块切分后也会得到客户端初始向量和服务端初始向量,用于各自的MAC生成。
[ 讲义编号NODE50923300080300000114:针对本讲义提问 ]
三、虚拟专用网VPN和IP安全协议IPSec
网络层解决安全问题可以认为是“全覆盖”的解决,因此在网络层之上的所有传输层协议,包括一些应用都可以基于网络层的安全机制实现可靠通信。最典型的网络层安全协议,就是使用最广泛和最有代表性的IP安全协议,一般被称为IPSec(IP Security),为网络层的信息传输提供了安全性。IPSec能够为任意两个网络层实体之间IP数据报的传输提供安全,可以提供机密性、身份鉴别、数据完整性验证和防重放攻击保护等服务。许多机构组织会使用IPSec创建运行在公共网络之上的虚拟专用网络(Virtual Private Networks,VPN)。
[ 讲义编号NODE50923300080300000115:针对本讲义提问 ]- 1.VPN简介
专用网络(Private Networks,PN)。PN是基于专属的网络设备、链路或协议等建立的专门服务于特定组织机构的网络,例如,民航网络、军事网络等,是不与公共网络互连,只在组织内部使用的网络。
若要实现PN,可以自己构建专用物理链路,但是考虑到经济等因素,这种情况十分少见,更多的情况下,组织机构会向通信链路提供商租用链路,利用租用链路实现专用网络连接。可以看到,专用网络PN可以提供十分安全的服务,但是构建以及管理维护成本都十分昂贵。
虚拟专用网络VPN通过建立在公共网络,例如,Internet上的安全通道,实现远程用户、分支机构、业务伙伴等与机构总部网络的安全连接,从而构建针对特定组织机构的专用网络,如图8.24所示。
[ 讲义编号NODE50923300080300000116:针对本讲义提问 ] - VPN通过隧道技术、加密技术、密钥管理、身份认证和访问控制等,实现与专用网类似的功能,可以达到PN安全性的目的,同时成本相对而言要低很多。VPN最重要的特点就是虚拟,连接总部网络和分支机构之间的安全通道实际上并不会独占网络资源,是一条逻辑上穿过公共网络的安全、稳定的隧道。
VPN的实现需要涉及的技术有很多,关键技术有隧道技术、数据加密、身份认证、密钥管理、访问控制和网络管理等,其中相对核心的是隧道技术。隧道即通过Internet提供的点对点的数据传输安全通道,实际是逻辑连接。通过数据加密保证安全,数据分组进入隧道时,由VPN封装成IP数据报,通过隧道在Internet上传输;离开隧道后,进行解封装,数据便不受VPN保护。
[ 讲义编号NODE50923300080300000117:针对本讲义提问 ] - 隧道协议包括以下3种协议。
1)乘客协议,确定封装的对象属于哪个协议。
2)封装协议,确定遵循哪一种协议进行封装,需要加什么字段等。
3)承载协议,确定最后的对象会放入哪类公共网络,如在Internet网络中传输。
常见的隧道协议有两个层次:
◆第二层协议,有PPTP、L2TP,主要用于远程客户机访问局域网方案;
◆第三层协议,如IPSec,主要用于网关到网关,或者网关到主机的方案,但不支持远程拨号访问。
VPN的实现技术上有很多,如IPSec,是最安全、使用最广的技术;同时VPN也可以利用SSL协议(SSL具有高层安全协议的优势,使用常见的浏览器就可以部署);此外还有L2TP等。实际实现中,会将多种技术相结合,例如,IPSec和SSL,IPSec和L2TP等。
[ 讲义编号NODE50923300080300000118:针对本讲义提问 ] - 2.IPSec体系简介
IPSec是网络层使用最广泛的安全协议,但IPSec不是一个单一的协议,而是一个安全体系,IPSec体系结构如图8.25所示。
[ 讲义编号NODE50923300080300000119:针对本讲义提问 ] - IPSec体系结构给出了一个整体性的对IPSec的描述,主要包括:封装安全载荷协议(Encapsulation Security Protocol,ESP)、认证头(Authentication Header,AH)协议、安全关联(Security Association,SA)、密钥交换与管理(Internet Key Exchange,IKE)。
IPSec提供的安全服务包括机密性、数据完整性、源认证和防重放攻击等。提供不同服务模型的两个协议分别是ESP和AH协议。
IPSec有两种典型的传输模式:传输模式和隧道模式。
传输模式又称作主机模式,IPSec数据报的发送和接收都是由端系统完成的,主机是IPSec感知的。
隧道模式可以联想到VPN,将IPSec的功能部署在网络边缘的路由器上,边缘路由器是IPsec感知的,路由器和路由器之间构建起安全的隧道,数据报在隧道中进行安全封装,主机和边缘路由器之间的数据传输还是传统的IP数据报传输。
[ 讲义编号NODE50923300080300000120:针对本讲义提问 ] - 3.安全关联SA
作为IPSec的通信实体,可以是主机或者路由器,在发送数据之前,需要在发送实体和接收实体之间进行安全关联SA。SA是单工的,双向需要两个SA。发送实体和接收实体之间都需要维护SA的状态信息,类似TCP连接中端点也需要维护状态信息。因此传统的IP是无连接的,但是IPSec是面向连接的。
在SA建立时需要维护很多参数,主要有以下几个。
1)安全参数索引(Security Parameter Index,SPI),是32位SA唯一标识。
2)序列号,用于抗重放攻击。
3)抗重放窗口,接收方利用滑动窗口检测恶意主机重放数据报。
4)生存周期,每个SA都有使用周期。
5)运行模式,分为传输模式和隧道模式。
6)IPSec隧道源和目的地址,只有隧道模式下才会有这两个参数。
[ 讲义编号NODE50923300080300000121:针对本讲义提问 ] - 例如,利用IPSec构建总部与分支机构的连接,网络结构如图8.26所示,路由器R1在创建SA时,首先需要存储32位SA标识ID、安全参数索引SPI,还需要记录隧道源接口地址200.168.1.100和目的接口地址193.68.2.23,此外还需要维护各种加密参数信息,如加密类型、加密密钥、完整性检验类型、认证/鉴别密钥等。
只要建立IPSec通信,就需要建立SA,随着双方IPSec连接数量的不同,SA信息需要存储的信息就会很多。一般来说,IPSec端点会将SA状态保存在安全关联数据库(Security Association Database,SAD)中,在处理IPSec数据报时,会定位这些信息。在图8.26的例子中,对于n个销售人员,1个分支机构VPN,总部的路由器R1的SAD中存储2+2n条SA,因为需要建立双向的SA。当发送IPSec数据报时,R1访问SAD,确定如何处理数据报。当数据报到达R2,R2会检验IPSec数据报中的SPI,利用SPI检索SAD,对数据报进行处理。
但实际应用中,并不是所有数据报都需要经过IPSec,例如,访问公共互联网服务。所以哪些应该按照IPSec,哪些应该做其他处理和传输?安全策略数据库(Security Policy Database,SPD),定义了针对数据流实施怎样的安全处理,主要分为3类:应用IPsec、普通IP数据报绕过IPSec、丢弃违背安全策略的数据报。安全策略组成了SPD,每个记录就是一条SP。在接收到新的数据报后,端点会提取关键信息填充到一个称为“选择符”的结构中,其中包括源和目标IP地址、传输层协议、源和目的端口号等。
利用“选择符”去搜索SPD,检索匹配SP,如果匹配不成功,会按照默认方式处理;如果匹配成功,会进行安全处理,安全处理需要的参数,存储在SP指向的SA结构中。
[ 讲义编号NODE50923300080300000122:针对本讲义提问 ] - 4.AH协议和ESP
AH协议和ESP是IPSec的核心。AH协议在IP数据报中,报头对应协议号为51,提供源认证和鉴别、数据完整性检验。ESP在IP数据报中的协议号是50,提供源认证和鉴别、数据完整性检验以及机密性,比AH协议应用更加广泛。两种不同协议和两种模式(传输模式、隧道模式)结合起来共有4种组合:传输模式AH、隧道模式AH、传输模式ESP、隧道模式ESP。
[ 讲义编号NODE50923300080300000123:针对本讲义提问 ] - (1)传输模式AH
传输模式AH数据报结构,是在原IP头和原IP数据报载荷之间加入AH头构成,如图8.27所示。AH头部前32位主要包括下一个头和载荷长度字段,例如,原IP数据字段载荷是TCP报文段,下一个头指向的就是TCP的头部。
保留字段后面是安全参数索引SPI和序列号。认证数据根据认证算法不同,长度也不一样,如MD5是128位。传输模式AH是对原IP头不变字段、AH头、原IP数据报载荷所有内容进行认证,认证不包括原IP头部中可变字段,如选项字段。
[ 讲义编号NODE50923300080300000124:针对本讲义提问 ] - (2)隧道模式AH
隧道模式AH数据报结构如图8.28所示。可以看到,与传输模式AH的主要不同是构建了新的IP头部,认证时也包括新的IP头部。因为数据报被边缘路由器进行封装后,会放入到公共网络如Internet中传送,因此需要增加一个新的IP头部。
[ 讲义编号NODE50923300080300000125:针对本讲义提问 ] - (3)传输模式ESP
传输模式ESP数据报结构如图8.29所示。可以看出,首先在原IP数据报载荷后面添加ESP尾部,尾部中会进行0~255字节的填充,填充是为了提供机密性,加密过程中一般使用分组密码,加密过程中需要满足分组密码要求。
例如,长度限定为64位等。ESP头部中是安全参数索引SPI和序列号。ESP头部加上原IP数据报载荷以及ESP尾部,三部分在一起会进行认证计算MAC,认证的结果加入尾部,为ESP认证数据。这4个部分构成新的IP数据报载荷,原IP头部信息依然保持不变。
[ 讲义编号NODE50923300080300000126:针对本讲义提问 ] - (4)隧道模式ESP
隧道模式ESP是使用最广泛的,最重要的IPSec形式。隧道模式ESP数据报结构如图8.30所示。ESP头部、尾部和ESP认证和传输模式ESP是一样的。
ESP头部、原IP头部、原IP载荷、ESP尾部、ESP认证在一起会封装到新的IP数据报载荷中。与隧道模式AH—样,在前面加入新的IP头部,因为隧道模式最终会把内容封装成普通的数据报内容进行传输。
对于新的SA,发送方将序列号初始化为0,每次通过SA发送数据报,发送方会增加序列号计数,将序列号置于序列号字段。IPSec序列号的使用可以预防分组嗅探和回放攻击,接收方能够依据序列号识别出接收重复、已认证的IP分组。但实际接收方无需记录所有已接收的分组,而是设置一个合理的窗口,窗口内的序列号不重复,实际也就不重复了。
[ 讲义编号NODE50923300080300000127:针对本讲义提问 ] - 5.IPsec密钥交换IKE
在IPSec通信之前需要进行安全关联SA。在SA协商建立过程中,需要彼此确认加密算法和认证密钥等一些信息。IPSec能够支持手工建立和自动建立两种SA的建立和密钥管理方式。
手工建立中,所有信息需要手动配置,SA永远存在,但只适用于结构简单的网络。
自动建立中,SA可以通过协商方式产生,SA过期之后可以重新协商,提高了安全性,适用于复杂拓扑和较高安全性要求的网络。IPSec进行自动协商建立安全关联和交换密钥的方式就是互联网密钥交换协议IKE。
IKE自动管理SA的建立、协商、修改和删除,是IPsec唯一的密钥管理协议。IKE包括3个主要部分。
1)互联网安全关联与密钥管理协议(Internet Security Association and Key Management Protocol,ISAKMP),定义了协商、建立、修改和删除SA过程的通用框架。
2)密钥交换协议OAKELY,允许认证过的双方通过不安全网络交换密钥草书。
3)共享和密钥更新技术SKEME,提供了IKE交换密钥的算法。
[ 讲义编号NODE50923300080300000128:针对本讲义提问 ] - 可以看到,IKE是IPSec运行必不可少的基础设施,IKE为IPSec提供了密钥交换管理、身份认证以及SA的协商与管理。IKE在支持通信实体认证的过程中,有两种方式可供选择:预共享密钥PSK和公钥基础设施PKI。PSK是基于共享的密钥,运行IKE认证彼此,并建立一个IPsec SAs(每个方向一个),包括数据加密和数据认证的密钥。PKI是基于公开/私有密钥对以及公钥证书,运行IKE认证彼此,并建立IPSec SAs,类似于SSL握手过程。
IKE进行密钥交换和SA协商建立是个比较复杂过程。首先,建立双向IKE SA,也称为ISAKMP安全关联,保证双方进一步的IKE通信的机密性、数据完整性以及提供数据源认证服务,后期的Ipsec SA建立就可以通过这个通道建立。IKE提供两种模式:野蛮模式,或称积极主动模式,只需要交换3个消息,使用较少信息;主模式,需要6个消息的交互,更加灵活,并且提供身份保护。注意,这里的IKE SA不同于IPSec,之后基于ISAKMP协议,进行IPSec协商。
[ 讲义编号NODE50923300080300000129:针对本讲义提问 ] - 本章小结
网络安全基本属性包括机密性、身份认证、消息完整性和可访问与可用性等。实现网络安全的基础是数据加密。
传统密码学主要包括替代密码和置换密码。
现代密码可以分为对称秘钥密码和非对称密钥密码(或称公开密钥密码),对称密钥密码的加密和解密使用相同的密钥;公开密钥密码的加密密钥和解密密钥不同,公钥是公之于众的,私钥是自己秘密保存的。典型的对称密钥密码有DES、3DES、AES和IDEA等,典型的公开密钥密码有Diffie-Hellman算法和RSA算法等。
[ 讲义编号NODE50923300080300000130:针对本讲义提问 ] - 消息完整性的主要目标是证明报文确实来自声称的发送方,验证报文在传输过程中没有被篡改,预防报文持有期被篡改,预防抵赖。
主要利用两种方法(报文认证码MAC和数字签名)来验证消息完整性。两者都需要使用散列函数,并且都能够验证报文的源以及报文自身的完整性,但MAC不依赖加密,而数字签名依赖公钥基础设施。比较有效的数字签名是对报文摘要进行数字签名。典型的散列函数有MD5和SHA-1。
身份认证又称身份鉴别,是一个实体经过计算机网络向另一个实体证明其身份的过程。身份认证可以通过彼此共享的对称密钥进行认证,也可以利用公钥进行身份认证。身份认证过程中通过引入一次性随机数可以预防重放攻击。密钥分发中心和证书认证机构,可以解决对称密钥的分发和公钥证书的认证。对于身份认证,可以避免中间人攻击。
[ 讲义编号NODE50923300080300000131:针对本讲义提问 ] - 防火墙和IDS系统是典型的网络安全防护措施。防火墙的主要功能是分组的过滤。防火墙大致可以分为三类:无状态分组过滤器、有状态分组过滤器和应用网关。IDS可以进行深度包检测,并检测多数据之间的相关性,能够检测网络映射、端口扫描、TCP栈扫描、DoS拒绝服务等多种攻击。
网络安全性服务可以在任意一个层实施。
安全电子邮件PGP是典型的应用层安全协议,提供邮件加密、报文完整性、数字签名等服务。
SSL是传输层(准确说是传输层之上,应用层之下)安全协议,是面向TCP的安全套接字接口,提供机密性、完整性、身份认证等安全服务。
IPSec是网络层安全协议,核心协议是AH协议和ESP协议。AH协议可以提供源认证和鉴别、数据完整性检验;ESP可以提供源认证和鉴别、数据完整性检验以及机密性。
两种不同协议和两种模式(传输模式、隧道模式)结合起来共有4种组合:传输模式AH、隧道模式AH、传输模式ESP、隧道模式ESP。
[ 讲义编号NODE50923300080300000132:针对本讲义提问 ] [ 讲义编号NODE50923300080300000133:针对本讲义提问 ] | 经典例题
一、选择题
1.关于虚拟专用网VPN,说法错误的是( )。
A.VPN可以实现与虚拟专用网类似的功能
B.VPN的实现使用了隧道技术和数据加密
C.VPN建立的安全通道独占网络资源
D.VPN可用时使用IPSec技术和SSL协议| | | | —- | —- | —- | | | | | | | 『正确答案』C
『答案解析』VPN最重要的特点就是虚拟,连接总部网络和分支机构之间的安全通道实际上并不会独占网络资源,是一条逻辑上穿过公共网络的安全、稳定的隧道。参见教材P296。| |
[ 讲义编号NODE50923300080300000134:针对本讲义提问 ] | 2.当观察到网络上潜在的恶意流量时,能够产生警告的设备或者系统是( )。
A.代理服务器
B.无状态的分组过滤器
C.入侵检测系统
D.有状态的分组过滤器| | | | —- | —- | —- | | | | | | | 『正确答案』C
『答案解析』入侵检测系统(Intrusion Detection System,IDS ) 是当观察到潜在的恶意流量时,能够产生警告的设备或系统。参见教材P289。| |
[ 讲义编号NODE50923300080300000135:针对本讲义提问 ] | 二、填空题
1.密钥K=3,字符集为a~z26个字母,利用恺撒密码加密computer的密文是__。| | | | —- | —- | —- | | | | | | | 『正确答案』frpsxwhu
『答案解析』往后挪三位。参见教材P273。| |
[ 讲义编号NODE50923300080300000136:针对本讲义提问 ] | 2.阻止服务器为其他用户提供服务的网络攻击称为__。
| | | | —- | —- | —- | | | | | | | 『正确答案』拒绝服务攻击(Dos)
『答案解析』阻止服务器为其他用户提供服务的网络攻击称为拒绝服务攻击(Dos)。参见教材P290。| |
[ 讲义编号NODE50923300080300000137:针对本讲义提问 ] | 3.当HTTP采取SSL进行安全通信时,称为安全HTTP,简记为__。
| | | | —- | —- | —- | | | | | | | 『正确答案』HTTPS
『答案解析』 HTTP协议使用SSL进行安全通信时,称为安全HTTP ,简记为HTTPS。参见教材P292。| |
[ 讲义编号NODE50923300080300000138:针对本讲义提问 ] | 三、简答题
简述报文在网络传输方面面临的安全威胁及其含义。| | | | —- | —- | —- | | | | | | | 『正确答案』从报文传输方面,主要包括窃听、插入、假冒、劫持等安全威胁(1分)。窃听指的是报文传输过程中窃听信息,获取报文信息(1分)。插入威胁指的是攻击者主动在连接中插入信息,混淆信息,让接收信息者收到虚假信息(1分)。假冒指的是可以伪造分组中的源地址(或者分组的任意其他字段)(1分)。劫持指的是通过移除/取代发送方或者接收方“接管”连接(1分)。
『答案解析』参见教材P271。| |