网络安全问题概述
网络安全工程:技术、管理、道德、法律
计算机网络面临的安全性威胁
计算机网络威胁$\star$:截获、中断、篡改、伪造
被动攻击:攻击者只是观察和分析某PDU而不干扰信息流
- 截获
- 流量分析
主动攻击:攻击者对某个连接中通过的PDU进行各种处理
- 更改报文流
- 拒绝服务
- 伪造连接初始化
- 恶意程序计算机病毒、计算机蠕虫、特洛伊木马、逻辑炸弹、后门入侵、流氓软件
- 拒绝服务DoS:向互联网上的某个服务器不停地发送大量分组,使互联网无法提供正常服务
- 分布式拒绝服务DDoS:从互联网上的多个网站集中攻击一个网站
常见攻击
- 重放攻击:截获$A$发给$B$的包,并直接发给$B$,使$B$误认为$C$是$A$,主要用于身份认证过程(防治:使用不重数)
- 中间人攻击(MIMT):攻击者$C$分别与$A$、$B$联系,而$A$、$B$误以为相互直接通信(防治措施:加密、设备或IP异常检测)
- 拒绝服务:指攻击者向因特网上的服务器不停地发送大量分组,使因特网或服务器一直处于“忙”的状态而无法为客户提供正常服务
- 访问控制:也称为存取控制或接入控制,指通过授权,控制用户访问资源的范围,防止非授权访问,保证网络和系统的安全
- 流量分析:通过观察PDU的协议控制信息部分,了解正在通信的协议实体的地址和身份,研究PDU的长度和传输的频度,以便了解所交换的数据的某种性质
- 恶意程序:通常是指带有攻击意图所编写的一段程序
计算机网络通信安全的目标
- 防止析出报文内容和流量分析
- 防止恶意程序
- 检测更改报文流和拒绝服务
- 对付被动攻击可采用各种数据加密技术。
- 对付主动攻击则需将加密技术与适当的鉴别技术相结合
安全的计算机网络目标
保密性
网络安全通信的最基本的内容
是对付被动攻击必备的功能,需要使用各种密码技术。
端点鉴别
鉴别信息的发送方和接收方的真实身份。
对付主动攻击
信息的完整性
信息的内容未被篡改过。
应对主动攻击
运行的安全性
系统能正常运行并提供服务。
访问控制:必须对访问网络的权限加以控制,并规定每个用户的访问权限。
网络安全指标:保密性、可靠性、完整性、不可抵赖性、可控性、可用性
密码
加密方法的安全性取决于密钥长度、攻破密文计算量与加密体制无关
对称密钥密码体制
特点:加密密钥与解密密钥的密码体制相同,收发双方共享密钥,对称密码的密钥保密
优点:加解密速度快,安全强度高,简便高效,密钥简短,破译极其困难,系统开销小,适合加密大量数据
缺点:密钥发送过程复杂,花费较高;用户多分布广时,密钥的分配存储复杂;通信双方必须统一密钥
数据加密标准 DES
加密算法
- 对整个明文进行分组。每一个组长为64位。
- 然后对每一个64位二进制数据进行加密处理,产生一组64位密文数据。
- 最后将各组密文串接起来,即得出整个的密文。
- 使用的密钥为64位实际密钥长度为56位,有8位用于奇偶校验
三重DES
64位明文用一个密钥加密,再用另一个密钥解密,然后再使用第一个密钥加密,即
$$
Y=DES_{K1}\left(DES^{-1}{K2}\left(DES{K1}(X)\right)\right)
$$
公钥密码体制
特点:加密密钥和解密密钥不同,加密密钥向公众公开,解密密钥保密
优点:密钥少,好管理,分配简单;不需要用密钥通道和复杂的协议来传送密钥;可实现数字签名和数字鉴别
缺点:加密速度慢,开销较大
数论基础:大数分解
公钥算法的特点
密钥对产生器产生出接收者$B$的一对密钥:加密密钥$PK_B$和解密密钥$SK_B$。
发送者$A$用$B$的公钥$PK_B$对明文$X$加密($E$运算)后,接收者$B$用自己的私钥$SK_B$解密($D$运算),即可恢复出明文
$$
D_{SK_B}(Y)=D_{SK_B}(E_{PK_B}(X))=X
$$
数字签名
用于证明真实性
数字签名必须保证以下三点:
- 报文鉴别——接收者能够核实发送者对报文的签名(证明来源)
- 报文的完整性——发送者事后不能抵赖对报文的签名(防否认)
- 不可否认——接收者不能伪造对报文的签名(防伪造)
- 现在已有多种实现各种数字签名的方法。但采用公钥算法更容易实现。
鉴别
鉴别:验证通信的对方的确是自己所要通信的对象
保密:网络信息不被泄露给非授权的用户、实体或过程
授权:确定所进行的过程是否被允许
- 报文鉴别:防止伪造或篡改的,包含端点鉴别和报文完整性的鉴别
- 实体鉴别:仅仅鉴别发送报文的实体。实体可以是一个人,也可以是一个进程(客户或服务器)
报文鉴别
许多报文并不需要加密,但却需要数字签名以便鉴别报文的真伪
报文摘要MD过程(数字签名过程)
- $A$把报文$X$经过报文摘要算法得到报文摘要$H$
- 用$A$私钥对$H$进行$D$运算数字签名,生成报文鉴别码$MAC$
- 把报文鉴别码追加$X$发送$B$
- $B$收到$X+MAC$后,将报文和鉴别码分离
- 用$A$的公钥对$MAC$进行$E$运算,还原报文摘要$H$
- 对$X$进行报文摘要运算,判断是否和$H$一致
报文摘要优点
- 耗费资源小
- 不可伪造,可检验、不可否认
报文摘要标准
密码散列函数
散列函数特点
- 输入长度很长,输出长度固定较短
- 输入和输出多对一
- 单向性:不同的报文具有同样的密码散列函数输出计算上不可行
MD5:对任意长报文运算,得到128bit的MD5报文摘要
- 附加:把任意长的报文按模$2^{64}$计算其余数($64$位),追加在报文的后面(长度项)。
- 填充:在报文和长度项之间填充$1\sim512$位,使得填充后的总长度是$512$的整数倍。填充的首位是$1$后面都是$0$
- 分组:把追加和填充后的报文分割为一个个$512$位的数据块,每个$512$位的报文数据再分成$4$个$128$位的数据块。
- 计算:将$4$个$128$位的数据块依次送到不同的散列函数进行$4$轮计算。每一轮又都按$32$位的小数据块进行复杂的运算。一直到最后计算出$ MD5$报文摘要代码($128$位)。
安全散列算法(SHA-1)
- 要求输入码长小于$2^{64}$位,输出码长为$160$位。
- 将明文分成若干$512$位的定长块,每一块与当前的报文摘要值结合,产生报文摘要的下一个中间结果,直到处理完毕。
- 共扫描$5$遍,效率略低于$MD5$,抗穷举性更高。
实体鉴别
在系统接入的全部持续时间内对和对方实体只需验证一次
使用对称密钥实体鉴别
- $A$发送给$B$的报文的被加密,使用的是双方约定好的对称密钥$K_{AB}$
- $B$收到此报文后,用共享对称密钥$K_{AB}$进行解密,因而鉴别了实体$A$的身份
- 无法对付重放攻击
使用不重数鉴别
不重数——不重复的大随机数
- $A$用明文发送其身份$A$和一个不重数$R_A$给$B$
- $B$用共享的密钥$K_{AB}$对$R_A$加密发回$A$,同时给出不重数$R_B$
- $A$再响应$B$的查问,用共享的密钥$K_{AB}$对$R_B$加密后发回$B$
密钥分配
密钥管理:密钥产生、分配、注入、验证、使用
密钥管理中最大的问题:密钥分配
分配方式:网内分配(密钥自动分配)
对称密钥的分配
常用的密钥分配方式:设立密钥分配中心KDC
步骤:
- 用户$A$向KDC发送明文,说明想和$B$通信(明文中给出$A$和$B$在KDC登记的身份)
- KDC用随机数产生一次一密的会话密钥$K_{AB}$,向$A$发送回答报文(用$A$的密钥$K_A$加密,包含$K_{AB}$、请$A$转给$B$的票据包含$A、B$在KDC登记身份以及$K_{AB}$,用$K_B$加密、时间戳)
- $B$收到$A$转来的票据并解密后,知道$A$要与其通信,同时也知道会话密钥$K_{AB}$
密钥分配中心KDC
KDC任务:给秘密通信的用户临时分配一个会话密钥
为防止重放攻击,$KDC$还可在报文中加入时间戳
会话密钥一次性
密钥分配协议 Kerberos
最常用:Kerberos V5,既是鉴别协议,又是KDC
加密方式:AES
Kerberos服务器:鉴别服务器AS、票据授予服务器TGS
用户:服务器-服务器非人对人
Kerberos 协议的优点:
安全性高:对用户的口令加密后作为用户的私钥,避免了用户的口令在网络上显示传输,使得窃听者难以在网络上取得相应的口令信息
透明性高:用户使用过程中仅登录时要求输入口令,与平常的操作完全一样
可扩展性好:为每一个服务提供认证,确保应用的安全
Kerberos协议的缺点:
- Kerberos服务器与用户共享的秘密是用户的口令字,服务器在回应时不验证用户的真实性,假设只有合法用户拥有口令字,如攻击者记录申请回答报文,就易形成代码本攻击
- AS和TGS是集中式管理,容易形成瓶颈,系统的性能和安全也严重依赖于AS和TGS的性能和安全,在AS和TGS 前应该有访问控制,以增强AS和TGS的安全;
- 随用户数增加,密钥管理较复杂。Kerberos拥有每个用户的口令字的散列值,AS与TGS负责户间通信密钥的分配。当N个用户想同时通信时,仍需要$N×(N-1)/2$个密钥。
公钥的分配
认证中心CA:将公钥与其对应的实体绑定
每个实体都有CA发来的证书(公钥及其拥有者的标识)
此证书被CA进行了数字签名,是不可伪造的
CA证书的吊销:
证书不是永久有效,可以过期,也可吊销。
- 原因:
用户私钥被泄漏
用户不再被CA认证
CA签署用户证书的私钥已被泄漏
- CA$建立并维护一个证书吊销列表。
互联网使用的安全协议
网络层安全协议
IP安全性问题
- 没有数据源鉴别机制
- 没有完整性保护机制;
- 没有机密性保护
- 设计和实现上存在安全漏洞,使各种攻击有机可乘
IPsec协议
IPsec组成:
- IP安全数据报格式的两个协议
- 鉴别首部AH协议提供源点鉴别和数据完整性,但不能保密
- 封装安全有效载荷ESP协议提供源点鉴别、数据完整性和保密
- 有关加密算法的三个协议
- 互联网密钥交换IKE协议
- lpsec支持IPv4和IPv6
IP安全数据报工作方式
运输方式
- 在运输层报文段前后添加若干控制信息,构成IPSec数据报
- 适用范围:于主机到主机之间的安全传送
- 使用要求:使用IPsec的主机都运行lPsec协议
隧道方式
在IP数据报前后添加若干控制信息,构成IPSec数据报
适用范围:常用来实现虚拟专用网
使用要求:在IPsec数据报所经过的所有路由器上都运行IPsec 协议
IP安全数据报的IP首部都是不加密的
IPsec其他构件
安全关联数据库SAD
- 存放SA的地方
- 当一个主机发送IPsec数据报,就在SAD中找相应SA,以便获得必要的信息对IPSec数据实施安全保护
- 当一个主机接收IPsec数据报,就在SAD中找相应SA,以便获得必要的信息检查该分组的安全性
安全策略数据库SPD:SPD指明什么样的数据报需要IPsec处理
运输层安全协议
SSL和TLS
协议:建立在可靠的TCP之上,与应用层协议独立无关
基本目标:实现两个应用实体之间的安全可靠通信。
适用范围:使用SSL最多的是HTTP, 但SSL可用于任何应用层协议
- HTTP调用SSL对整个网页进行加密时变成了https(TCP的HTTPS端口号是443,而不是平时使用的端口号80)
安全套接字SSL
- SSL服务器鉴别:允许用户证实服务器的身份。支持SSL的客户端通过验证来自服务器的证书,来鉴别服务器的真实身份并获得服务器的公钥
- SSL客户鉴别:SSL的可选安全服务,允许服务器证实客户的身份
- 加密的SSL会话:对客户和服务器间发送的所有报文进行加密,并检测报文是否被篡改
SSL工作过程:
- 浏览器向服务器发送浏览器的SSL版本号和密码编码参数选择
- 服务器向浏览器发送服务器的SSL版本号、密码编码参数选择及服务器的证书
- 浏览器收到服务器发来的证书时,检查证书是否在自己的可信的CA表中:如不在,则后面的加密和鉴别连接就不能进行下去;如在,浏览器就使用CA的公开密钥对证书解密,这样就得到了服务器的公开密钥
- 浏览器随机产生对称会话密钥,并用服务器的公开密钥加密,然后将加密的会话密钥发送给服务器
- 浏览器向服务器发送一个报文,说明以后浏览器将使用此会话密钥进行加密。然后浏览器再向服务器发送一个单独的加密报文,表明浏览器端的握手过程已经完成;
- 服务器也向浏览器发送一个报文,说明以后服务器将使用此会话密钥进行加密。然后服务器再向浏览器发送一个单独的加密报文,表明服务器端的握手过程已经完成;
- 开始SSL的会话过程。
运输层安全TLS
为所有基于TCP网络应用提供安全数据传输服务
应用层安全协议
PGP协议
- PGP是一个完整的电子邮件安全软件包,包括加密、鉴别、电子签名和压缩等技术IDEA和传统加密杂合算法
- 提供电子邮件安全性、发送鉴别和报文完整性
PGP工作原理
系统安全:防火墙与入侵检测
防火墙
防火墙是由软件、硬件构成的系统,是一种特殊编程的路由器,用来在两个网络之间实施访问控制策略。
防火墙功能:
阻止和允许
- “阻止”——阻止某种类型的通信量通过防火墙(从外部网络到内部网络
- “允许”——允许某种类型的通信量通过防火墙
- 防火墙必须能够识别各种类型的通信量。不过在大多数情况下防火墙的主要功能是“阻止”
防火墙技术分类
- 网络级防火墙:防止整个网络出现外来非法入侵;包括分组过滤和授权服务器
- 应用级防火墙:从应用程序进行访问控制;使用应用网关或代理服务器区分应用
入侵检测系统IDS
在入侵已经开始,但还没有造成危害或在造成更大危害前,及时检测到入侵,以便尽快阻止入侵,把危害降低到最小
工作原理:对进入网络的分组执行深度分组检查,当观募到可疑分组时,向网络管理员发出告警或执行阻断操作由于IDS的“误报”率通常较高,多数情况不执行自动阻断
功能:IDS能用于检测多种网络攻击,包括网络映射、端口扫描、DoS攻击、蠕虫和病毒、系统漏洞攻击等
基于异常的检测可以检测出未知攻击
入侵检测方法
基于特征的IDS维护一个所有已知攻击标志性特征的数据库。
基于特征的IDS 只能检测已知攻击,对于未知攻击则束手无策。
基于异常的IDS通过观察正常运行的网络流量,学习正常流量的统计特性和规律。当检测到网络中流量某种统计规律不符合正常情况时,则认为可能发生了入侵行为。