网络安全
需要掌握的内容
两种体制特点,
数字签名实现,报文鉴别
HTTPS
防火墙和入侵检测的作用(这个不考了)
网络安全问题概述
随着计算机网络的发展,网络中的安全问题也日趋严重。
本节讨论计算机网络面临的安全性威胁、安全的内容和一般的数据加密模型。
计算机网络面临的安全性威胁
计算机网络上的通信面临以下两大类威胁:被动攻击和主动攻击。
被动攻击主要有:
-
截获
指攻击者从网络上窃听他人的通信内容。
通常把这类攻击称为截获。 -
流量分析
在被动攻击中,攻击者只是观察和分析某一个协议数据单元 PDU,以便了解所交换的数据的某种性质。但不干扰信息流。
这种被动攻击又称为流量分析 (traffic analysis)。
主动攻击主要有:
-
篡改
故意篡改网络上传送的报文。这种攻击方式有时也称为更改报文流。 -
恶意程序
种类繁多,对网络安全威胁较大的主要包括:计算机病毒、计算机蠕虫、特洛伊木马、逻辑炸弹、后门入侵、流氓软件等。 -
拒绝服务
指攻击者向互联网上的某个服务器不停地发送大量分组,使该服务器无法提供正常服务,甚至完全瘫痪。
分布式拒绝服务 DDoS
若从互联网上的成百上千的网站集中攻击一个网站,则称为分布式拒绝服务 DDoS (Distributed Denial of Service)。
有时也把这种攻击称为网络带宽攻击或连通性攻击。
计算机网络通信安全的目标
对于主动攻击,可以采取适当措施加以检测。
对于被动攻击,通常却是检测不出来的。
根据这些特点,可得出计算机网络通信安全的目标:
- 防止分析出报文内容和流量分析。
- 防止恶意程序。
- 检测更改报文流和拒绝服务。
实现:
- 对付被动攻击可采用:加密技术。
- 对付主动攻击则需要:加密技术 与 鉴别技术 相结合。
数据加密模型
用户 A 向 B 发送明文 X,通过加密算法 E 运算后,就得出密文 Y。
因为加密算法是公开的,只有密钥是私密的,因此密钥不泄露是安全的基础,因此一定要保证密钥的安全。
密钥
加密和解密用的密钥K (key) 是一串秘密的字符串(即比特串)。
加密
明文通过加密算法 E 和加密密钥 K 变成密文:
\(Y EK(X)\)
解密
接收端利用解密算法 D 运算和解密密钥 K 解出明文 X。解密算法是加密算法的逆运算。
\(DK(Y) DK(EK(X)) X\)
加密密钥和解密密钥可以一样,也可以不一样。
密钥通常由密钥中心提供。
当密钥需要向远地传送时,一定要通过另一个安全信道。
一些重要概念
密码编码学(加密) (cryptography) 是密码体制的设计学。
密码分析学(破解) (cryptanalysis) 则是在未知密钥的情况下从密文推演出明文或密钥的技术。
密码编码学与密码分析学合起来即为密码学 (cryptology)。
两类密码体制
有两类体制:
- 对称密钥密码体制
- 公钥密码体制
对称密钥密码体制
所谓 常规密钥密码体制 ,即加密密钥与解密密钥是相同的密码体制。
这种加密系统又称为 对称密钥系统。
数据加密标准 DES
数据加密标准 DES 属于对称密钥密码体制,是一种分组密码。
在加密前,先对整个明文进行分组。每一个组长为 64 位。
然后对每一个 64 位 二进制数据进行加密处理,产生一组 64 位密文 数据。
最后将各组密文串接起来,即得出整个的密文。
使用的密钥为 64 位(实际密钥长度为 56 位,有 8 位用于奇偶校验)。
DES 的保密性
DES 的保密性仅取决于对密钥的保密,其算法是公开的。
目前较为严重的问题是 DES 的密钥的长度。
现在已经设计出搜索 DES 密钥的专用芯片。56位 DES 已不再认为是安全的了。
三重 DES
使用两个 56 位的密钥。
把一个 64 位明文用一个密钥加密,再用另一个密钥解密,然后再使用第一个密钥加密,即
\(Y = DESK1(DES-1K2(DESK1(X)))\)
公钥密码体制
公钥密码体制(又称为公开密钥密码体制 或者 非对称密钥密码体制)使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
公钥密码体制产生的主要原因:
- 常规密钥密码体制的密钥分配问题。
- 对数字签名的需求。
实现:
缺点: 不能识别发送者身份。
加密密钥与解密密钥
在公钥密码体制中,加密密钥 PK(public key,即公钥)是向公众公开的,而解密密钥 SK(secret key,即私钥或秘钥)则是需要保密的。
加密算法 E 和解密算法 D 也都是公开的。
虽然私钥 SK 是由公钥 PK 决定的,但却不能根据 PK 计算出 SK。
注意
-
任何加密方法的安全性取决于密钥的长度,以及攻破密文所需的计算量。
在这方面,公钥密码体制并不具有比传统加密体制更加优越之处。 -
由于目前公钥加密算法的开销较大,在可见的将来还看不出来要放弃传统的加密方法。
公钥还需要密钥分配协议,具体的分配过程并不比采用传统加密方法时更简单。
公钥算法的特点
密钥对产生器产生出接收者 B 的一对密钥:加密密钥 PKB 和解密密钥 SKB 。
加密密钥 PKB 就是接收者B的公钥,它向公众公开。
解密密钥 SKB 就是接收者B的私钥,对其他人都保密。
发送者 A 用 B 的公钥 PKB 对明文 X 加密(E 运算)后,接收者 B 用自己的私钥 SKB 解密(D 运算),即可恢复出明文:
加密密钥是公开的,但不能用它来解密,即:
加密和解密运算可以对调,即加密和解密是互逆的:
公钥密码体制
公开密钥与对称密钥的区别
在使用对称密钥时,由于双方使用同样的密钥,因此在通信信道上可以进行一对一的双向保密通信,每一方既可用此密钥加密明文,并发送给对方,也可接收密文,用同一密钥对密文解密。这种保密通信仅限于持有此密钥的双方(如再有第三方就不保密了)。
在使用公开密钥时,在通信信道上可以是多对一的单向保密通信。
公钥密码体制
如果某一信息用公开密钥加密,则必须用私有密钥解密,这就是实现保密的方法
如果某一信息用私有密钥加密,那么,它必须用公开密钥解密。这就是实现数字签名的方法
数字签名
用于证明真实性。
数字签名必须保证以下三点:
- 报文鉴别——接收者能够核实发送者对报文的签名(证明来源);
- 报文的完整性——发送者事后不能抵赖对报文的签名(防否认);
- 不可否认——接收者不能伪造对报文的签名(防伪造)。
现在已有多种实现各种数字签名的方法。但采用公钥算法更容易实现。
基于公钥的数字签名的实现
解释:
- 因为除 A 外没有别人能具有 A 的私钥,所以除 A 外没有别人能产生这个密文。因此 B 相信报文 X 是 A 签名发送的。
- 若 A 要抵赖曾发送报文给 B,B 可将明文和对应的密文出示给第三者。第三者很容易用 A 的公钥去证实 A 确实发送 X 给 B。
- 反之,若 B 将 X 伪造成 X',则 B 不能在第三者前出示对应的密文。这样就证明了 B 伪造了报文。
缺点: 不能加密内容。
具有保密性的数字签名
如果想同时识别发送者身份 和 内容加密 需要多次加密。
鉴别
- 报文鉴别:对内容鉴别
- 实体鉴别:对发送方的鉴别(身份等等)
鉴别
在信息的安全领域中,对付被动攻击的重要措施是加密,而对付主动攻击中的篡改和伪造则要用鉴别 (authentication)。
报文鉴别使得通信的接收方能够验证所收到的报文(发送者和报文内容、发送时间、序列等)的真伪。
使用加密就可达到报文鉴别的目的。但在网络的应用中,许多报文并不需要加密。应当使接收者能用很简单的方法鉴别报文的真伪。
鉴别与授权不同
鉴别与授权 (authorization) 是不同的概念。
授权涉及到的问题是:所进行的过程是否被允许(如是否可以对某文件进行读或写)。
鉴别分类
-
报文鉴别:即鉴别所收到的报文的确是报文的发送者所发送的,而不是其他人伪造的或篡改的。这就包含了端点鉴别和报文完整性的鉴别。
-
实体鉴别:仅仅鉴别发送报文的实体。实体可以是一个人,也可以是一个进程(客户或服务器)。这就是端点鉴别。
(数字签名即可实现)
报文鉴别
许多报文并不需要加密,但却需要数字签名,以便让报文的接收者能够鉴别报文的真伪。
然而对很长的报文进行数字签名会使计算机增加很大的负担(需要进行很长时间的运算)。
当我们传送不需要加密的报文时,应当使接收者能用很简单的方法鉴别报文的真伪。
密码散列函数
数字签名就能够实现对报文的鉴别。
但这种方法有一个很大的缺点:对较长的报文(这是很常见的)进行数字签名会使计算机增加非常大的负担,因为这需要较多的时间来进行运算。
密码散列函数 (cryptographic hash function)是一种相对简单的对报文进行鉴别的方法。
散列函数的两个特点
-
散列函数的输入长度可以很长,但其输出长度则是固定的,并且较短。散列函数的输出叫做散列值,或更简单些,称为散列。
-
不同的散列值肯定对应于不同的输入,但不同的输入却可能得出相同的散列值。这就是说,散列函数的输入和输出并非一一对应,而是多对一的。
在密码学中使用的散列函数称为密码散列函数。
特点:单向性。
要找到两个不同的报文,它们具有同样的密码散列函数输出,在计算上是不可行的。
也就是说,密码散列函数实际上是一种单向函数 (one-way function)。
实用的密码散列函数 MD5 和 SHA-1
通过许多学者的不断努力,已经设计出一些实用的密码散列函数(或称为散列算法),其中最出名的就是 MD5 和 SHA-1。
报文摘要算法 MD5 公布于RFC 1321 (1991年),并获得了非常广泛的应用。
SHA-1比 MD5 更安全,但计算起来却比 MD5 要慢些。
MD5 算法
MD5 是报文摘要 MD (Message Digest) 的第 5 个版本。报文摘要算法 MD5 公布于 RFC 1321 (1991 年),并获得了非常广泛的应用。
MD5 的设计者 Rivest 曾提出一个猜想,即根据给定的 MD5 报文摘要代码,要找出一个与原来报文有相同报文摘要的另一报文,其难度在计算上几乎是不可能的。
散列长度:128位
基本思想:
用足够复杂的方法将报文的数据位充分“弄乱”,报文摘要代码中的每一位都与原来报文中的每一位有关。
安全散列算法(SHA-1)
安全散列算法 SHA (Secure Hash Algorithm)是由美国标准与技术协会 NIST 提出的一个散列算法系列。
散列长度:160位
SHA 比 MD5 更安全,但计算起来却比 MD5 要慢些。
已制定 SHA-1、SHA-2、 SHA-3 等版本。
SHA-1已经被SHA-2、 SHA-3替代
报文鉴别码 MAC
MD5 实现的报文鉴别可以防篡改,但不能防伪造,因而不能真正实现报文鉴别。
例如:
(1) 入侵者创建了一个伪造的报文 M,然后计算出其散列 H(M ),并把拼接有散列的扩展报文冒充 A 发送给 B。
(2) B 收到扩展的报文 (M, H(M )) 后, 通过散列函数的运算,计算出收到的报文 MR 的散列 H(MR)。
(3) 若 H(M ) = H(MR),则 B 就会误认为所收到的伪造报文就是 A 发送的。
为防范上述攻击,可以对散列进行一次加密。
散列加密后的结果叫做报文鉴别码 MAC (Message Authentication Code)。
由于入侵者不掌握密钥 K,所以入侵者无法伪造 A 的报文鉴别码 MAC,因而无法伪造 A 发送的报文。这样就完成了对报文的鉴别。
密钥分配
对称密钥的分配
目前常用的密钥分配方式是设立密钥分配中心 KDC (Key Distribution Center)。
KDC 是大家都信任的机构,其任务就是给需要进行秘密通信的用户临时分配一个会话密钥(仅使用一次)。
假设用户 A 和 B 都是 KDC 的登记用户,并已经在 KDC 的服务器上安装了各自和 KDC 进行通信的主密钥(master key)KA 和 KB。 “主密钥”可简称为“密钥”。
实际不安全,后面有改进
公钥的分配
需要有一个值得信赖的机构——即认证中心 CA (Certification Authority),来将公钥与其对应的实体(人或机器)进行绑定 (binding)。
认证中心一般由政府出资建立。
作用: 对通信双方发送公钥
(虽然私钥也有ca发放,但是ca产生完后,就发送到设备上了,ca不存放)
每个实体都有 CA 发来的证书。
数字证书
证书 (certificate),里面有公钥及其拥有者的标识信息。
此证书被 CA 进行了数字签名,是不可伪造的,可以信任。
证书是一种身份证明,用于解决信任问题。
注意:
任何用户都可从可信的地方(如代表政府的报纸)获得认证中心 CA 的公钥,此公钥用来验证某个公钥是否为某个实体所拥有(通过向 CA 查询)。
有的大公司也提供认证中心服务。
互联网使用的安全协议
网络层安全协议 IP报文加密:IPsec
运输层安全协议:运输层报文加密:SSL
应用层安全协议:https
IPsec 协议
IPsec 就是“IP 安全 (security)”的缩写。
IPsec 并不是一个单个的协议,而是能够在 IP 层提供互联网通信安全的协议族。
IPsec 是个框架,它允许通信双方选择合适的算法和参数(例如,密钥长度)。
为保证互操作性,IPsec 还包含了所有 IPsec 的实现都必须有的一套加密算法。
IPsec 由三部分组成
IP 安全数据报格式的两个协议
鉴别首部 AH (Authentication Header) 协议
封装安全有效载荷 ESP (Encapsulation Security Payload) 协议
有关加密算法的三个协议(在此不讨论)
互联网密钥交换 IKE (Internet Key Exchange) 协议
IP 安全数据报有两种工作方式
运输方式 (transport mode)
在整个运输层报文段的前后分别添加若干控制信息,再加上 IP 首部,构成 IP 安全数据报。
适合于主机到主机之间的安全传送。
需要使用 IPsec 的主机都运行 IPsec 协议。
隧道方式 (tunnel mode)
在原始的 IP 数据报的前后分别添加若干控制信息,再加上新的 IP 首部,构成一个 IP 安全数据报。
需要在 IPsec 数据报所经过的所有路由器上都运行 IPsec 协议。
隧道方式常用来实现虚拟专用网 VPN。
运输层安全协议
现在广泛使用的有以下两个协议:
安全套接字层 SSL (Secure Socket Layer)
运输层安全 TLS (Transport Layer Security)
SSL 和 TLS
安全套接层 SSL 由 Netscape 于 1994 年开发,广泛应用于基于万维网的各种网络应用(但不限于万维网应用)。
SSL 作用在端系统应用层的 HTTP 和运输层之间,在 TCP 之上建立起一个安全通道,为通过 TCP 传输的应用层数据提供安全保障。
1996 年发布 SSL 3.0,成为 Web 安全的事实标准。
1999 年,IETF 在 SSL 3.0 基础上推出了传输层安全标准 TLS,为所有基于 TCP 的网络应用提供安全数据传输服务。
在发送方,SSL 接收应用层的数据,对数据进行加密,然后把加了密的数据送往 TCP 套接字。在接收方,SSL 从 TCP 套接字读取数据,解密后把数据交给应用层。
应用层使用 SSL 最多的就是 HTTP,但 SSL 并非仅用于 HTTP,而是可用于任何应用层的协议。
应用程序 HTTP 调用 SSL 对整个网页进行加密时,网页上会提示用户,在网址栏原来显示 http 的地方,现在变成了 https。
系统安全:防火墙与入侵检测
防火墙
防火墙是由软件、硬件构成的系统,是一种特殊编程的路由器,用来在两个网络之间实施访问控制策略。
访问控制策略是由使用防火墙的单位自行制订的,为的是可以最适合本单位的需要。
防火墙内的网络称为“可信的网络”(trusted network),而将外部的互联网称为“不可信的网络”(untrusted network)。
防火墙可用来解决内联网和外联网的安全问题。
防火墙的功能有两个:阻止和允许。
“阻止”就是阻止某种类型的通信量通过防火墙(从外部网络到内部网络,或反过来)。
“允许”的功能与“阻止”恰好相反。
防火墙必须能够识别各种类型的通信量。不过在大多数情况下防火墙的主要功能是“阻止”。
入侵检测系统
防火墙试图在入侵行为发生之前阻止所有可疑的通信。
入侵检测系统 IDS (Intrusion Detection System) 能够在入侵已经开始,但还没有造成危害或在造成更大危害前,及时检测到入侵,以便尽快阻止入侵,把危害降低到最小。
两种入侵检测方法
1.基于特征的 IDS 维护一个所有已知攻击标志性特征的数据库。
这些特征和规则通常由网络安全专家生成,由机构的网络管理员定制并将其加入到数据库中。
基于特征的 IDS 只能检测已知攻击,对于未知攻击则束手无策。
2.基于异常的 IDS 通过观察正常运行的网络流量
学习正常流量的统计特性和规律。当检测到网络中流量某种统计规律不符合正常情况时,则认为可能发生了入侵行为。