信息安全包括:信息安全管理、物理场所安全、设备的硬件安全、软件安全(操作系统/其他系统软件应用软件)、网络信息安全(TCP/IP )、密码学的应用、信息隐藏、其他不常见技术
1)攻击技术:身份隐藏、踩点、扫描、查点、嗅探、拒绝服务攻击、口令猜测、欺骗、会话劫持、缓冲区溢出、病毒、蠕虫、木马等
2)防范技术:主机加固、密码学、防火墙、虚拟专用网、入侵检测系统、蜜罐等
网络破坏者——找漏洞并悄悄利用
安全专家——发现漏洞并补上(不要完全公开代码)
两者所使用技术是螺旋式发展的,攻击技术和防范技术没有严格区别(如扫描工具SATAN的使用),就看是谁如何用它——非常现实。
若A是请求服务的客户机,B是提供服务的服务器。
1)B可以向包括A在内的多个客户机提供服务,所以要用A的IP地址作为源IP地址加以区分;
2)同样A可以向包括B在内的多个服务器请求服务,所以要用B的IP地址作为目的IP地址加以区分。
3)此外,B可以同时提供几种服务,为了对它提供的不同服务加以区分,引入目的端口号加以区分;
4)同样,在A中引入源端口号区分A对不同的服务发起的请求。
例如,B主机安装了一个Web服务器,它就开放80端口侦听其他主机对它的Web服务的请求;
同时,它又是个Telnet服务器,它就开放23端口侦听其他主机对它的Telnet服务的请求。
源、目的IP地址以及源、目的端口同时确定才能确定哪台客户机向哪台服务器提出请求什么服务。
1)1-1023:事先确定的服务器提供某项服务的端口;
2)1024-4999:客户端由操作系统确定的随机端口;
3)5000-65535:木马的服务器端;一些特殊服务(如DBMS)的端口;用户自定义服务器端。
① 信息是重要的战略资源
② 危害信息安全的事件不断出现
信息安全关乎国家安全和社会稳定,必须确保我国的信息安全。
信息为它的载体 信息安全对应信息系统安全
① 硬件安全:信息系统安全的首要问题,包括硬件的稳定性、可靠性和可用性。
② 软件安全:如保护信息系统不被非法侵入,系统软件和应用软件不被非法复制、篡改,不受恶意软件侵害等。
③ 数据安全(传统的信息安全):采取措施确保数据免受未授权的泄露、篡改和毁坏。
④ 安全管理:运行时突发事件的安全处理等,包括建立安全管理制度,开展安全审计和风险分析等。
① 系统硬件和操作系统的安全对应信息安全基础
② 密码学、网络安全对应信息安全的核心和关键
③ 信息系统安全对应信息安全的目标
信息安全:研究信息获取、存储、传输以及处理领域的信息安全保障问题的一门新兴学科,是防止信息被非授权使用、误用、篡改和拒绝使用而采取的措施。
信息安全是综合数学(的多个分支)、物理、生物、量子力学、电子、通信、计算机、系统工程、语言学、统计学、心理学(蜜罐)、法律、管理、教育等学科演绎而成的交叉学科。
① 网络作为信息的主要收集、存储、分配、传输和应用的载体,其安全对整个信息安全起着至关重要甚至是决定性的作用。
② 基于TCP/IP协议簇实现的Internet的体系结构和通信协议,有各种各样的安全漏洞,带来的安全事件层出不穷。
网络安全:网络系统的硬件、软件及系统中的数据受到保护,不因偶然的或者恶意的原因而遭到破坏、篡改、泄露,系统连续可靠正常地运行,网络服务不被中断。
① 计算机自身的安全
② 互联的安全(含通信设备、通信链路、网络协议)
③ 各种网络应用和服务的安全
(1)伪装或假冒
(2)否认或抵赖
(3)破坏完整性
(4)破坏机密性
(5)信息量分析
(6)重放
(7)重定向
(8)拒绝服务
(9)恶意软件
(10)社会工程(Social Engineering)
• 互联网没有中心管理机构,任何一台主机或各种局域网遵从TCP/IP协议和IP地址分配规则,就能连入互联网。
• TCP/IP最初在可信任环境中开发,基本未考虑安全性。
• 因为先天不足和向后兼容原因,后来的改进仍未彻底解决安全问题。
1)ARP协议的安全隐患
ARP缓存可能被毒害——ARP欺骗
2)以太网协议CSMA/CD的安全隐患
共享方式传送数据——网卡混杂模式嗅探
1)IP协议的安全隐患
① 不能为数据提供完整性、机密性
② 路由和分片机制——数据包内容易被篡改
③ 对源IP地址不进行认证——IP欺骗攻击
④ 可以设置“源路由”选项——源路由欺骗攻击
⑤ “IP分片包”的威胁——分片扫描和拒绝服务攻击
2)ICMP协议的安全隐患
ICMP echo广播响应包——拒绝服务攻击
利用隧道技术封装成ICMP包来建立隐藏通道/穿越防火墙
1)TCP协议的安全隐患
① 三次握手中源IP地址可以虚假——拒绝服务攻击
② TCP中的序列号并不真正随机——IP欺骗攻击
③ 可以定制所发送TCP包的标志位——隐蔽扫描
2)UDP协议的安全隐患
无连接、不可靠的协议——拒绝服务攻击
1)DNS协议的安全隐患
DNS缓存可能被毒害——DNS欺骗、区域传输
2)路由协议的安全隐患 路由信息可以被篡改——修改网络数据传输路径
3)Web协议的安全隐患
4)其他协议的安全隐患
(1)认证
用于认证实体身份:对等实体认证和数据源认证。
(2)访问控制
防止系统资源被非法使用的措施。
(3)数据机密性
防止信息泄露的措施:连接机密性、无连接机密性、选择字段机密性、通信业务流机密性。
(4)数据完整性
防止非法篡改和破坏信息:带恢复的连接完整性、无恢复的连接完整性、选择字段的连接完整性、无连接完整性、选择字段无连接完整性。
(5)抗否认
针对对方否认的防范措施,用来证实发生过的操作:对发送方的抗否认和对接收方的抗否认。
(1)加密机制:借助各种加密算法对数据进行加密,是各种安全服务的基础;
(2)数字签名:发送方用自己私钥签名,接收方用发送方公钥验证签名——数字签名鉴别发送方;
(3)访问控制机制:根据访问者的身份和有关信息,决定实体的访问权限;
(4)数据完整性机制:判断信息在传输过程中是否被篡改过;
(5)认证交换机制:用来实现对等实体的认证,如进行口令交换的一次性口令机制;
(6)通信业务填充机制:通过填充冗余的业务流量来防止攻击者进行“流量分析” ;
(7)路由选择控制机制: 防止不利的信息通过,如使用网络层防火墙;
(8)公证机制:由第三方使用数字签名为通信方签发数字证书来实现。
阻止未经授权的用户非法获取保密信息:
① 存储的机密性:数据在系统中存储的过程中不被攻击者获得其内容;
② 传输的机密性:数据在网络中传输的过程中不被第三方获得其内容。 主要方法:物理保密、防窃听、防辐射、信息加密、通信业务填充机制等。
在未经许可的情况下,保证数据不会被他人删除或修改(至少能发现被修改过)。
分为存储的完整性和传输的完整性:数据在存储和传输过程中不被偶然或故意地插入、删除、修改、伪造、乱序和重放。
主要方法:数据校验和、数字指纹、消息校验码、防重放机制等。
用户要向系统证明他就是他所声称的那个人,目的是为了防止非法用户访问系统和网络资源。
它是确保合法用户使用系统的第一道关卡。
主要方法:口令、数字证书、基于生物特征以及通过可信第三方进行认证等。
限制主体对访问客体的访问权限,从而使计算机系统在合法范围内使用。
建立在身份认证基础上,通过限制对关键资源的访问,防止非法用户的侵入或因为合法用户的不慎操作而造成的破坏。
主要方法:
① 宏观上:自主访问控制和强制访问控制等;
② 具体实现上:访问控制矩阵和访问控制表等。
发送方/接收方不能否认它曾经在某时发送/接收过的数据。即通信方必须对自己行为负责,而不能也无法事后否认,其他人也无法假冒通信方成功。
① 发送方的不可否认
② 接收方的不可否认
③ 时间上不可否认
主要方法:数字签名、数字签名收条和时间戳等。
我们要求计算机或网络能够在我们期望它以我们所期望的方式运行的时候运行。
① 物理上的可用性
② 防止拒绝服务来实现可用性。
主要方法:
① 保证设备的正常使用不受断电、地震、火灾、水灾等影响;
② 对网络阻塞、网络蠕虫、黑客攻击等导致系统崩溃或带宽过度损耗的情况采取措施。
负责提供通过通信链路连接的主机或路由器之间的安全保证。
优点:效率高和容易实施,也被经常使用。
缺点:不通用,扩展性不强,在Internet环境中并不完全适用。
主要解决网络层通信的安全问题,IPSec是目前最主要的网络层安全协议。
优点:对上层应用透明性好,即安全服务的提供不需要应用程序做任何改动,并与物理网络无关。
缺点:很难实现不可否认性,不能对来自同一主机但不同进程的数据包分别施加安全保证,可能造成系统性能下降。
主要实现传输层的安全通信,只可实现端到端(进程到进程)的加密。
优点:提供基于进程到进程的安全服务,并可利用公钥加密机制实现通信的端实体间的相互认证。
缺点:修改应用程序才能增加相应的安全性,无法根本上解决身份认证和不可否认问题。基于UDP的通信很难在传输层实现安全性。
应用层的安全措施必须在端系统及主机上实施。
优点:可以给不同应用提供针对性更强的安全功能,能最灵活地处理单个文件安全性:身份认证、访问控制、不可否认、机密性、完整性。
缺点:需要对操作系统内核做较大调整,而且针对每个应用要单独设计,没有统一的解决方案。
① 单独一个层次无法提供全部的网络安全服务,从而形成由各层安全协议构成的TCP/IP的安全架构。
② 安全协议实现的层次越低越具有通用性,能够提供整个数据包安全,且该协议运行性能就越好,对用户的影响就越小。
③ 高层的安全协议能针对用户和应用提供不同级别更灵活的安全功能。
动态的自适应网络安全模型:可量化、可由数学证明、且基于时间特性。
在整体安全策略的指导下,综合运用防护工具的同时,利用检测工具评估系统的安全状态,将系统调整为“最安全”和“风险最低” 。
(1)Policy(安全策略)
PPDR安全模型的核心,描述系统哪些资源需要保护,如何实现保护。
(2)Protection(防护)
加密机制、数字签名机制、访问控制机制、认证机制、信息隐藏、防火墙技术等。
(3)Detection(检测)
入侵检测、系统脆弱性机制、数据完整性机制、攻击性检测等。
(4)Response(响应)
应急策略、应急机制、应急手段、入侵过程分析、安全状态评估等。
① 没有一项防护技术完美,检测和响应是最基本的,因此防护不是必须的,检测和响应是必须的。
② 防护、检测和响应组成了一个完整的、动态的安全循环,在安全策略指导下保证信息系统的安全。
(1)攻击时间Pt
黑客从开始入侵到侵入系统的时间(对系统是保护时间)。高水平入侵和安全薄弱系统使Pt缩短。
(2)检测时间Dt
黑客发动入侵到系统能够检测到入侵行为所花费的时间。适当的防护措施可以缩短Dt。
(3)响应时间Rt
从检测到系统漏洞或监控到非法攻击到系统做出响应(如切换、报警、跟踪、反击等)的时间。
(4)系统暴露时间Et=Dt+Rt-Pt
系统处于不安全状态的时间。
系统的检测时间和响应时间越长,或系统的保护时间越短,则系统暴露时间越长,就越不安全。
如果Et小于等于0,那么基于PPDR模型,认为系统安全。要达到安全的目标需要尽可能增大保护时间,尽量减少检测时间和响应时间。
补充:PPDR模型的局限性
根据安全性相近原则,安全级别分为如下四类:
① D级,什么保护要求都没有;
② C1、C2级,目前流行的商用操作系统;
③ B1、B2级,要求对基础模型的安全性给出精确证明,TCB有清楚的技术规范说明;
④ B3和A1级,要求更精确证明TCB和形式化设计。
其中B1和B2的安全强度有明显区别,B2和B3之间也有显著差别。
指未加任何实际安全措施,整个系统都不可信任。
① D系统只为文件和用户提供安全保护,操作系统很容易受到损害。
② 任何人不需要任何账户就可进入系统,不受任何限制就可访问他人文件。
③ D系统最普遍形式是本地操作系统,或一个完全没有保护的网络。
C1级:具有一定自主访问控制(DAC)机制,通过将用户和数据分开达到安全目的。
① 它要求系统硬件有一定的安全保护。
② 用户使用前必须登录系统,允许管理员为一些程序和数据设定访问权限。
③ C1系统不能控制进入系统的用户访问级别,而且所有文档具有相同的机密性。
C2级:又称为访问控制保护,具有更细分每个用户的DAC机制。
① 引入审计机制,并对审计使用身份认证。
② 连接到网络上时,C2系统的用户对各自行为负责。
③ C2系统进一步限制用户执行某些命令或访问某些文件的权限,而且还对用户分组进行身份认证。
B1级:满足C2级的所有要求,对象还必须在强制访问控制之下,不允许拥有者更改它们的权限。
B2级:TCB基于明确定义的形式化模型,系统中所有主体和客体实施MAC。要求系统中的所有对象加标签,具有可信通路机制、系统结构化设计、最小特权管理及对隐藏通道的分析处理。
B3级:TCB要能对系统中所有主体和客体的访问进行控制,不会被非法篡改。
类似于B3级,包括一个严格的设计、控制和验证过程。
① 设计必须是从数学角度经过验证的。
② 特色在于形式化的顶层设计规格FTDS、形式化验证FTDS与形式化模型的一致性和由此带来的更高的可信度。
补充:TCSEC的局限性、可信计算机网络安全说明
第一级:用户自主保护级 对用户实施自主访问控制,保护用户信息免受破坏。
第二级:系统审计保护级 实施更细的自主访问控制,创建访问的审计记录,使用户对自己行为的合法性负责。
第三级:安全标记保护级 以访问对象标记的安全级别限制访问者的访问权限。
第四级:结构化保护级 安全保护机制分为关键和非关键部分,对关键部分直接控制访问者存取访问对象。将DAC和MAC扩展到所有主体和客体,且要考虑隐藏通道。
第五级:访问验证保护级 增设访问验证功能,TCB应满足访问监控器需求,访问监控器本身要有抗篡改性,且必须足够小。
① “网络渗透”过程有多个阶段、多种技术,但没有一个统一的定式。
② 网络攻击技术发展很快,今天可行的技术可能明天就过时了。
③ 网络攻击技术的过时主要是因为相应的网络防御技术发展也很快。
④ 许多网络安全技术都是双刃剑,两者相辅相成,互为补充(如:扫描、嗅探和嗅探检测等)。
1)加密/签名/散列技术(理论基础)
2)主机加固技术(打补丁)
3)病毒防护技术(广义病毒)
4)防火墙技术(门卫/被动/进出)
5)虚拟专用网技术(端-端/密码技术)
6)入侵检测技术(警察/动态/内部)
7)蜜罐技术(主动/位置/误报漏报少)
8)计算机取证技术(主机取证和网络取证)
1.IP地址欺骗或盗用技术
源IP地址为假冒或虚假
2.MAC地址盗用技术
修改注册表或使用ifconfig命令
3.通过Proxy隐藏技术
作为攻击跳板;实际上很难真正实现隐藏
4.网络地址转换技术
私有IP地址可以隐藏内部网络拓扑结构
5.盗用他人网络账户技术
网络安全链路中最薄弱的链接
黑客尽可能地收集目标系统安全状况的各种信息:
① 目标系统的用户注册信息——Whois
② 域名、IP地址、DNS服务器、邮件服务器——Nslookup 、host
③ 网络拓扑和路由信息——Traceroute 获取公开的信息;采用的技术合法。
一般使用Ping实现:发送ICMP echo请求给目标主机,若收到ICMP echo应答则表明目标主机激活。
① Fping工具以并行轮转方式发送大量Ping请求,以加快扫描速度。
② 防火墙的存在使得Ping扫描的应答可能丢失,扫描结果就不一定准确。
通常采用Nmap等扫描工具:
① 获得目标主机开放的TCP和UDP端口列表
② 确定主机上开放的网络服务
③ 得到监听端口返回的Banner信息利用这些服务的漏洞,进行进一步入侵。
协议栈指纹鉴别(TCP Stack Fingerprinting)
各个OS实现协议栈细节不同的原因如下:
1)对RFC相关文件理解不同;
2)TCP/IP规范并不被严格执行;
3)规范中一些选择性特性只在某些系统使用;
4)某些系统私自对IP协议做了改进。
① 对目标主机发出OS探测包,每种OS有其独特响应方法,可根据返回的响应包确定目标主机OS类型。
协议栈指纹:TTL值、TCP窗口大小、DF标志、TOS、IP碎片、ACK值、TCP选项等。
② 利用Ping扫描返回的TTL值进行简单的OS探测
① 漏洞(脆弱性,Vulnerability) 计算机或网络系统具有的某种可能被入侵者恶意利用的特性。
② 漏洞扫描 针对特定应用和服务(如操作系统、Web服务器、数据库服务器、防火墙、路由器)查找目标网络漏洞,并抽取有效账号或导出资源名。
① 黑客使用:非常隐蔽地攫取网络大量敏感信息,是一种有效的“被动攻击”技术。
与主动攻击技术相比,嗅探行为更易实现、更难被察觉。
② 安全管理人员使用:对网络活动进行实时监控,并及时发现各种网络攻击行为。
局域网主机监听到发送给其他主机的数据包内容。
① 共享式局域网——将该主机网卡设置成混杂(Promiscuous)模式
② 共享式和交换式局域网——该主机使用ARP欺骗
注意:两种技术可结合使用,从而嗅探到局域网上传送的用户账号和口令。
嗅探工具不能不加选择地接收所有数据包,并且长时间地监听。
① 社会工程的核心:攻击者伪装身份并设法让受害人泄露系统信息。
② 一种低技术含量破坏网络安全的方法,其实是高级黑客技术的一种,往往使得看似处在严密防护下的网络系统出现致命的突破口。
③ 利用说服或欺骗的方式,让安全意识薄弱的职员来提供必要的信息,从而获得对信息系统的访问。
① 手工尝试(猜测)
② 对口令文件使用破解工具(字典/暴力/组合攻击)
③ 使用嗅探技术获得口令
④ 使用社会工程方法获得口令
⑤ 恶意网页和恶意电子邮件
⑥ 通过键盘记录器获得口令
⑦ 账号口令锁定机制——>拒绝服务攻击
彩虹表是为破解口令的散列值而根据口令字典预先计算好的表。
空间一般是Gb级别,通常用于恢复由有限字符集组成的长度有限或长度固定的纯文本口令。
用空间换时间:将每次破解尝试都计算哈希的时间转换为查表操作,速度快、成功率高。
但使用加盐的密钥生成函数KDF可以抗彩虹表攻击
IP欺骗:通过伪造数据包源IP地址,伪装成被信任主机来骗取目标主机信任,从而实现攻击。基于两个前提:
1)TCP/IP路由数据包时,不判断源IP地址——>可以伪造数据包的源IP地址;
2)UNIX中主机之间存在信任关系——>基于IP地址的认证,不再需要用户账号和口令。
① 基于口令的认证:如SMTP(TCP 25)和Telnet (TCP 23),只能通过账号/口令认证用户;
② 基于IP地址的认证(即信任):登录主机的地址受到被登录服务器信任,该主机登录不要口令;
如远程登录rlogin(TCP 513),首先进行基于IP地址的认证,其次才进行口令认证。
一般被登录服务器设置有/etc/hosts.equiv或$HOME/.rhosts文件。
1)X首先必须对B进行DoS攻击,否则步骤4)中B收到A发来的它未请求过的应答包,将返回RST包而终止连接。
2)X发送到A的rlogin端口的数据包源IP地址是“假冒”B的IP地址。
3)为何X不能直接将自己IP修改为B的IP来连接到A的rlogin端口? ①IP地址产生冲突; ②外网X不能这样修改。
• X冒充受攻击目标A信任的B,远程连接A的rlogin端口,若能连接成功,不再需要口令就能登录A。
、• 因为A请求X的响应包返回给B,X不知道其中A的序列号,要想完成步骤5),必须“猜”到A的ISN。
1)X首先连接A的SMTP端口(X是A的合法邮件用户,但不是rlogin用户),试探其ISN变化规律,以估算下一次连接时A的ISN值。
2)X必须马上按照步骤3) - 5) 的方法假冒B与A建立rlogin连接。
① X必须立刻进行欺骗攻击
② 当然这样也不一定能一次猜测成功
1)64K规则
用于比较老的机器中,非常容易猜测序列号。
2)时间相关规则
序列号产生器根据时间产生伪随机序列。由于各计算机的时钟不完全相同,增加序列号随机性。 前两种方式下有可能猜测到序列号。
3)随机产生规则
用于新的Linux内核,序列号基本很难猜测。
猜测Windows序列号比Linux序列号容易得多
1)若三者属于同一局域网,理论上很容易实现IP欺骗。X不用猜测A的序列号——嗅探即可。
2)若X来自外网,想猜测A的序列号非常困难——理论可行。
3)米特尼克第一个在广域网成功实现IP欺骗,但当时序列号容易猜测。
ARP协议的缺陷:一台主机即使收到的ARP应答包并非请求得到的,也会将其插入ARP缓存表中。
① 黑客想嗅探同一局域网两台主机的通信,就分别给它们发送ARP应答包,让它们误认为对方的MAC地址就是黑客的MAC地址。
② 两台主机之间的数据包都会通过黑客,双方看似“直接”的通信,实际上都是通过黑客中转的。
DNS协议的缺陷:DNS服务器向另一个DNS服务器发送解析请求时并不认证被请求方,黑客可以冒充被请求方返回一个被篡改的IP地址。
DNS服务器会缓存被黑客篡改的IP地址,以后对该服务器的同一域名的解析请求,在该条目被缓存的生存期内,得到的结果都将被篡改。
会话劫持:结合嗅探和欺骗技术,在正常的通信过程中,黑客作为第三方参与其中:
① 要么在数据流里注射额外的信息;
② 或将双方的通信模式暗中改变,即从直接联系变成交由黑客中转。
基于ARP/DNS欺骗,后者可在广域网内进行 还能利用配置不当的加密协议,如SSH1/SSL协议
是会话劫持不同于(强于)其他攻击的特点所在:
① 合法用户先完成身份认证;
② 劫持者再冒充合法用户,以正确的ISN向服务器发送数据(cat/etc/password):
Ⅰ向合法用户发RST包使其下线;
Ⅱ注射完数据后,再把连接交还合法用户。
在一定意义上实现IP欺骗攻击:不用猜服务器的ISN,可直接得到,因已被劫持。
• 并非某一种具体的攻击方式
• 而是攻击所表现出来的结果——使服务器不能正常地对外界提供服务(可用性)
结果:内存损耗、带宽损耗
原因:系统程序和应用程序的漏洞/网络协议实现中的缺陷(如TCP三次握手缺陷)
攻击者不需与目标交互——>可伪造源IP地址——>难以追踪
代表性方法 | 所利用漏洞/缺陷 | 防范现状 | 使用现状 |
---|---|---|---|
Ping of Death | 系统程序和应用程序的漏洞 | 很好防范 | 基本不用 |
Teardrop | |||
UDP Flood | 网络协议实现中的缺陷 | 很好防范 | 基本不用 |
LAND Attack | |||
SYN Flood | 网络协议实现中的缺陷 | 很难根本防范 | 多用于DDoS攻击中 |
Smurf Attack |
原因:
• 没有修改系统的缺省配置
• 开放易受攻击的服务端口
① 没必要打开这些端口(不需提供小号端口服务)
② 缺省打开则显示出系统功能
③ 减少昂贵的技术支持服务的费用
UDP Flood利用如下服务的弱点:
① Echo服务(TCP 7和UDP 7)对接收到的每个字符进行回送。
② Chargen服务(TCP 19和UDP 19)对接收到的每个数据包都返回一些随机生成的字符。
即如果与Chargen服务建立了连接,它会不断返回乱字符直到连接中断。
1)黑客选择两个目标A和B;
2)生成伪造的UDP包,目的地是B的Chargen端口,来源“假冒”为A的Echo端口;
3)B的Chargen服务返回的随机字符发送给A的Echo服务;
4)A再向B回送收到的字符,如此反复,最终导致这两台主机应接不暇而拒绝服务;
5)A和B的内存和两者所在局域网的带宽都受到严重损耗。
对策:
• Echo和Chargen“置之不理” 1024以下的源端口;
• 尽量减少开放不必要的网络服务。
评价:
• 一箭双雕
• 攻击方法——只有想不到,没有做不到。
• 目前虽已过时,但在当时黑客很有“创意”。
• 被攻击主机S是Windows主机,它的139端口一般开放(任一开放端口都可被利用实现此攻击)。
• 黑客向S的139端口发送TCP请求数据包,并将源IP地址设置为S的IP,源端口设置为139——让S自己攻击自己。
• S因试图与自己连接而陷入死循环(S一直给自己发送错误应答,并希望看到具有正确序列号的应答返回)。
黑客使用TCP三次握手连接服务器的过程中:
1)发送给服务器S的SYN包中的源IP地址是“虚假”地址;
2)服务器端返回的SYN+ACK包就不能达到声称的源IP地址对应的主机;
3)服务器端就不能“按时”收到请求方返回的ACK包,将其放入自己的“未完成连接队列”中等待;
4)服务器过一段时间重发SYN+ACK包,再等待;
5)实在等不到回应(超时),从“未完成连接队列”中清除该项,连接断开,给其他客户连接机会;
6)黑客源源不断发送连接请求(随机产生虚假源地址:不能过滤IP或追查攻击源),使得清除队列慢于进入队列,队列始终满,拒绝正常用户请求。
原因是:服务器是“友好”的,它不能区分哪些是合法请求,哪些是黑客攻击。
• 利用TCP三次握手的“缺陷”(黑客不会按“常规”办事):只要Internet还使用TCP,就不能避免;
• 无论内存/带宽/速度都C弱S强,单机使用效果差;
• 但用于DDoS中,能很好地起“以小搏大”的作用。
1)假设黑客攻击受害主机S,但使用常规DoS方法效果很差;
2)黑客以受害主机名义向某个局域网发送ICMP echo广播请求包,源地址设为S的IP地址;
3)局域网中所有主机便向“无辜”的S返回ICMP echo广播响应包或大量“端口不可到达”的报文,使得S应接不暇。
• 巧妙利用局域网作为“跳板”,达到“借力”效果,实现“以小搏大”。
• 只要没有禁止使用ICMP echo广播请求包,就不能根本防止Smurf Attack。
• 防止成为攻击者;防止成为受害者;防止成为跳板。
• DDoS(Distributed DoS)攻击是DoS攻击的一种延伸,它威力巨大是因为其协同攻击能力。
• 黑客使用DDoS攻击工具,可同时控制众多傀儡机,向单点目标发动攻击,并结合使用各种传统DoS攻击。
• 对DDoS攻击,至今没有一个很好的防御方法。
• 黑客(Intruder/Attacker/Client)
黑客操作主机的接口,向Master发送各种命令。
• 主控端(Master/Handler)
监听Intruder的命令,向各个Daemon发送攻击命令。
• 守护进程端(Daemon/Slave/Agent/Zombie/Bot/Server)
接收和响应来自Master的攻击命令,是真正攻击前锋。
• 受害者(Victim):被攻击的目标主机。
① 缓冲区:程序运行时内存分配的一个连续区域,保存字符数组在内的各种类型数据。
② 溢出:所填充数据超过原有缓冲区边界,并非法占据另一段内存,导致程序执行出错。
③ 缓冲区溢出攻击:黑客精心构造填充数据,用自己代码覆盖原来的返回地址,让程序改变现有流程去执行特定代码,最终获取系统控制权。
攻击者利用计算机指令系统弱点,分析有缺陷程序代码,向程序提交恶意超长的输入数据,破坏或改写内存中控制流程的关键信息,获得进程的控制权。
根本原因:C/C++没有对数组引用进行边界检查:
① 如果读取数组以外内容,会使程序得出错误结果
② 如果是写入,可能破坏该进程内存的其它内容
溢出有strcpy栈溢出漏洞的程序得到Shell的过程:
1)使用一个shellcode数组存放shellcode(shellcode把要执行命令编辑成二进制形式以便执行)。
2)利用程序中的strcpy函数,把shellcode放入程序堆栈。
3)制造数组越界,用shellcode的开始地址覆盖程序返回地址。
4)程序返回时会执行shellcode,从而得到一个Shell。
• 利用溢出漏洞攻击具有root权限的程序,如执行类似exec族函数获得被攻击主机的root权限。
• 典型的shellcode源程序:使用execve函数执行/bin/sh命令得到一个Shell。
• 只有shellcode的机器代码才能植入缓冲区,所以要先将该程序编译成汇编代码,适当调整后得到适合系统类型的机器代码。
1)黑客构造一个特殊的字串,它包含shellcode,也包含shellcode地址(用它覆盖函数返回地址)。
其中包含最难实现的如何定位栈溢出位置的技术。
2)攻击程序调用exec族函数来执行有溢出漏洞的程序,并将构造好的字串作为参数传递给该程序。
1)首先,在large_string中填充buffer地址;
2)然后将shellcode放到large_string的最前面;
3)最后,将这个超长字串拷贝到狭小的buffer中。
隐藏自己踪迹,以防被管理员发觉,以便能随时返回被入侵系统继续破坏或作为跳板
1)隐藏上传的文件
2)禁止或篡改日志审计信息
3)清除日志记录
4)改变系统时间造成日志文件数据紊乱
5)干扰入侵检测系统的正常运行
6)修改完整性检测数据
7)使用Rootkit工具
无论用户账号增加/减少、服务开启/关闭等配置如何改变,“后门程序”都能为攻击者提供访问权限。
1)重新开放不安全的服务端口
2)修改系统配置留下漏洞
3)安装嗅探器和建立隐藏通道
4)创建具有root权限的虚假用户账号
5)安装批处理文件
6)安装远程控制工具
7)使用木马程序替换系统程序
1)SUID后门:提升权限后门
2)利用信任关系建立rlogin后门
3)使用Netcat建立远程登录后门
4)采用隧道技术的后门:通过封包来穿越防火墙
5)端口重定向后门:通过中转主机将请求转发给目标
6)采用反向连接来穿越防火墙
7)键盘记录器后门
8)木马服务器后门
9)内核级Rootkit后门:工作效率高且很难发现
样板文件和源代码泄露、缓冲区溢出攻击
资源解析和二次解码攻击(即同义异名攻击)
服务器功能扩展模块问题
服务器端包含(Server Side Include,SSI)问题
SQL注入(SQL Injection)
对ActiveX和JavaScript脚本的攻击
攻击会话跟踪(cookie)机制
跨站脚本(Cross-Site Scripting,XSS)攻击
同形异义词(Homograph)漏洞
数字签名:发送方用自己私钥对消息(或消息散列值)加密就是该用户对该消息的数字签名,可以保证发送方不可否认。
数字证书:数字证书是一个经认证中心CA数字签名的包含公钥拥有者信息及其公钥的文件。
数字信封:在实际应用中,并不直接使用公开加密算法加密明文,而仅用它保护实际用于加密明文的对称密钥。
数字指纹:消息的散列值(或MAC值),即消息摘要。
密码学是信息安全的数学理论基础。
算法和密钥都必须保密,如模3的恺撒加密算法。但若N个人两两相互通信则需要互不相同的算法太多。
三个阶段;四个空间;量子信道和量子密码学信使;印地安人语言;语言学规律、统计学
替换、换位;混淆、散布;难解性
传统密码学、对称密码学、公开密码学的算法数/密钥数的比较
口令的位数(8位)和每一位的取值范围(熵的变化)
密码算法本身的安全性(质变);密钥的长度(量变);随机数发生器的随机性(熵)
熵是不确定性的量度
密钥空间为14并不意味着熵就能达到108
声称的熵和实际达到的熵熵为108只能说明破解密钥的最大工作量,丝毫不能说明最小量
随机数完全随机 密钥出现概率相等 达到最大熵
算法公开(公开越久的算法,如一直在使用,有理由相信其加密强度越高,因为经过长时间攻击已完善;反之不公开算法加密强度可能不高)。
所有的秘密都在密钥上。
1)一次一密钥(无实用价值,密钥和明文一样长)。
2)如在现有商用计算机条件下,92位的3DES算法和824位的RSA算法。
• 属于流密码体系
• 由美国AT&T的G. W. Vernam发明
• 唯一理论上不可攻破的密码系统
• 计算简单,效率高,但密钥管理困难
基本要求:
(1)知道K时,C=E(M,K)要容易计算;
(2)知道K时,M=D(C,K)要容易计算;
(3)不知道K时,由C不容易推导出M。
设计原则:
1)对合法的通信双方来说,加密和解密容易;
2)对密码分析员来说由密文推导出明文困难;
3)衡量密码系统的好坏,应以能否被攻破和易于被攻破为基本标准。
假定明文是 M=(m0,m1,…,mn-1)
用下述算法 Ci=EKi(mi)=(mi+Ki)(mod 26)0≤i
1)密钥K=(K0,K1,…,Kn-1)是一个随机序列,
2)密钥只能使用一次,
3)密钥长度要等于明文长度,即|K|=|M|。
明文 send help
即 M=(14,4,11,3,7,4,9,13),n=8
随机密钥 K=(5,11,1,0,7,2,20,14)
由(1)可得密文 C=(23,17,12,3,12,6,5,5)
即 C=(X,R,O,D,O,G,F,F)
知道K,很容易将C还原成 M =(s,e,n,d,h,e,l,p)。
不知道K无法破解出明文M:
1)密钥序列26n可能是个天文数字,用穷尽搜索方法工作量大。
2)上述例子中K=(4,3,2,14,22,24,20,20)时,由同一个密文C,可生成另一个有意义明文M =(t,o,m,i,s,i,l,l)。
“send help”和“tom is ill” 作为明文的可能性相同,获悉密文丝毫不能增加破译的可能性。
1)很难生成真正随机的密钥序列。
2)即使已经生成,很难分发/存储和明文等长的随机密钥序列。
3)若有安全信道可传递每次不同、任意长的密钥序列,为何不直接用来传递明文呢?
实际不可攻破的密码系统,是指它们在理论上是可以攻破的,但所需计算资源超出实际的可能性。
DES 3DES IDEA AES等
分组加密算法 迭代方式 64=56+8(bit)
加密密钥和解密密钥完全相同,相反过程迭代就可解密。
3DES:92位 148位
速度快,但密钥分发难(带外发送),不能进行发送端鉴别(源端抗否认),如发布密钥可能泄露给第三人。
N个人两两相互通信只需要一个算法,但需要N(N-1)/2个密钥。
1)RSA:大合数分解成大质数的困难(可用于加密和数字签名)
2)D-H:离散对数(只用于密钥交换)
3)椭圆曲线:公开加密算法的发展方向
4)数字签名标准:DSS
两个大质数(824bit)相乘容易,但将一个大合数分解成两个大质数难(计算上不可行)。
1)一个函数生成两个密钥
2)不能由其中一个推导到另外一个
3)一个密钥用于加密,另一个用于解密
4)哪一个用于加密,哪一个用于解密无所谓
5)但用一个加密的密文,肯定能用另一个解密
相互通信的每个用户生成一对密钥(N个人共有2N个密钥),一个可以公开发布(公钥),另一个自己使用,只能自己知道(私钥)。
1)对称密钥完全保密的,所以短密钥就可以具有高强度;
2)公开密钥算法毕竟公钥已公开,公钥和私钥肯定有一定联系(尽管难以推导),所以长密钥才安全。
A发送消息给B
1)A用B的公钥加密–B用自己私钥解密 非B不能得到A发送的消息(保证了机密性)
2)A用自己私钥加密–B用A的公钥解密 别人也不能假冒A发送消息 A也不能否认发送过该消息(数字签名不可否认)
但B 要确认自己得到的声称是A公钥的密钥确实是A的公钥,而不是其他人的公钥(否则别人就可以冒充A发送消息, 也可以得到原来是发送给A的机密数据)
——需要从CA处得到A的公钥,CA以自己的私钥加密A的公钥担保,而CA的公钥众所周知。
结合上述两种用法:A用自己私钥加密再用B公钥加密——>B用自己私钥解密再用A公钥解密
确保只有B能够接收到消息(机密性),而且B确认消息是A发送的(数字签名)。相反顺序加解密则不能实现数字签名。
1)A向B发送一封带数字签名的消息,B如果只有A的公钥并不能解密消息。
2)解密消息之前,他必须到A处取得一样信物,有了它再加上发送方公钥才能得到消息明文。
3)但是他取信物时就在发送方留下日志,事后就不能否认。
4)只要他在发送方留下取信物的日志,他就不能否认他收到了消息——日志就相当于数字签名收条。
时间不可否认(抗重放)——时间戳
优点:产生密钥个数少,公开分发密钥
数字签名
适用于互联网环境
缺点:速度慢(密钥太长),不合适直接加密明文。
A发送前:A用自己私钥加密明文散列值A发送前;再用随机对称密钥加密明文和散列值;最后用B公开密钥加密该对称密钥
B接收后:B用自己私钥解密得到对称密钥B接收后;再用对称密钥对密文解密得明文和散列值;最后用A公钥解密明文散列值
数据在发送过程中不被破坏,发怎样收怎样。
1)算法公开:MD5、SHA-1/2/3
2)数字指纹(压缩函数):完整性(含义)
任意长度明文使用单向散列函数后得到固定长度MAC值(108位或140位)。
1)即使修改明文的一个字节,也会计算出不一样的MAC值;
2)任何两个不同的明文,其MAC值必定不一样。
3)与加密算法的异同
不可逆,只加密不解密;无密钥;密文长短不同
4)如何使用实现完整性
比较传输得到的散列值和计算得到的散列值,如不匹配要求重传。
传明文M和传H(M)信道出错的概率相差很大;
直接传明文及其散列值没有任何安全性。
5)冲突(碰撞):必然存在,很难找到(悬赏)。
与”可逆”的不同。
Hash值不够安全:不是它们已经可逆了,而是能够比较确定、较快地找到冲突。
密码学的历史可大致划分为几个阶段:
1)从古代到1949年为密码学诞生的前夜。 这一阶段虽然有众多密码实践,比如两次世界大战中通信密码的大规模应用和密码的破译活动,
但密码技术不是一种科学,而可称之为一种艺术。
这一时期的密码专家常常靠直觉、猜测和信念来设计、分析密码,而不是凭借推理和证明。
2)1949年,香农(Claude Shannon)在《贝尔系统技术杂志》上发表论文《保密系统的通信理论》,
为对称密码系统奠定了理论基础,从而密码成为一门科学。
而从1949年到1975年这段时间内,密码学的理论进展不大。
3)直到1976年,Diffie和Hellman发表了《密码学的新方向》一文, 建立了公钥密码系统,引发了密码学上的一次革命性的变革。
随着在密码学理论和技术上的探索和实践,人们逐渐认识到认证和保密是两个独立的密码属性。
Simmons系统研究了认证问题,并建立了一套与香农保密理论平行的认证(Hash)理论。
对称密码技术也叫做单钥密码技术,包括分组密码技术和流密码技术这两个重要的分支。
在公钥密码技术出现之前,它是唯一的加密类型。
对称密码必须满足如下要求:
1)算法要足够强大。就是说,从截获的密文或某些已知明文密文对时,计算出密钥或明文是不可行的。
2)不依赖于算法的保密,而依赖于密钥。这就是著名的Kerckhoff原则。
3)正常加密和解密要快,破译越慢越好。
4)密文相对明文最好无数据位扩展。
5)好的加密算法要具有雪崩效应。
6)好的加密算法的密文很难被压缩。
分组密码是一个明文分组被作为一个整体来产生一个等长的密文分组的密码,通常使用的是64bit的分组大小。
1)DES是一种对二元数据进行加密的算法,将明文消息分成64bit一组进行加密。密文分组的长度也是64bit,没有数据扩展。
2)DES使用“密钥”进行加密,从符号的角度看,“密钥”的长度是64bit。
3)但是由于某些原因,DES算法中每逢第8bit就被忽略,这造成密钥的实际大小为56bit。
DES的整个体制是公开的,系统的安全性完全依赖密钥的保密。
DES算法主要包括:
初始置换IP,
14轮变换的乘积变换,
逆初始置换IP
14个密钥产生器。
在DES加密算法的一般描述的左边部分,可以看到明文的处理经过了3个阶段:
1)64bit的明文经过一个初始置换IP后,比特重排产生经过置换的输出。
2)由同一个函数的14次循环构成,这个函数本身既有置换又有替代功能。
3)最后一个循环的输出由64bit组成,其输出的左边和右边两个部分经过交换后得到预输出。
4)预输出通过逆初始置换IP-1生成64bit的密文。除了初始置换和逆初始置换之外,DES具有严格的Feistel密码结构。
右半部分给出了56bit密钥的使用方式。
1)密钥首先通过一个置换函数,接着对于14个循环的每一个,都通过一个循环左移操作和一个置换操作的组合产生一个子密钥Ki。
2)对于每一个循环来说,置换函数是相同的,但由于密钥比特的重复移动,产生的子密钥并不相同。
DES的解密和加密使用相同的算法,只是将子密钥的使用次序反过来。
DES具有雪崩效应:明文或密钥1bit改变引起密文许多bit改变。如果密文的变化太小,就可能找到一种方法减小要搜索的明文和密钥空间。
1)当密钥不变,明文产生1bit变化,在3次循环后,两个分组有14bit不同,而整个加密过程结束后,两个密文有34个位置不同。
2)作为对比,明文不变,密钥发生1bit变化时,密文中有大约一半的bit不同。
DES算法有如下安全问题:
1)DES的56位密钥太小。1998年7月,EFE宣布攻破了DES算法,他们使用的是不到25万美元的特殊的“DES破译机”,这种攻击只需要不到3天的时间。
2)DES的迭代次数可能太少(14次恰巧能抵抗差分分析)。
3)S盒(即替代函数S)中可能有不安全因素。
4)DES的一些关键部分不应当保密。
在已知密文/明文对时,密钥搜索攻击就是简单地搜索所有可能的密钥;如果没有已知的密文/明文对时,攻击者必须自己识别明文,这是一个有相当难度的工作——单一性距离
1)如果报文是以普通英语写成的,可以使用程序自动完成英语的识别。
2)如果明文报文在加密之前做过压缩,那么识别工作就更加困难。
3)如果报文是某种更一般的类型,如二进制文件,那么问题就更加难以自动化。
单一性距离
可在其他事物中测定出所需的只含有合理明文的加密文本的数量。
K/6.8个字符
DES:8.2个字节 IDEA:19个字节
1)如果明文含有一个格式的文件头,易识别。
2)如果明文二进制(压缩文件),很难识别明文(即识别破解是否成功)。
一次一密中,K趋向无穷大,单一性距离非常大,越大所以越难破解。
三重DES是人们在发现DES密钥过短,易于受到蛮力攻击而提出的一种替代加密算法。
三重DES使用3个密钥,执行3次DES算法。加密过程为加密-解密-加密(EDE),
可表示为如下的公式: C=EK3(DK2(EK1(M)))
为了避免三重DES使用3个密钥进行三阶段加密带来的密钥过长的缺点(148bit),
Tuchman提出使用两个密钥的三重加密方法,这个方法只要求92bit密钥,即令其K1=K3:
C=EK1(DK2(EK1(M)))
三重DES的第二阶段的解密并没有密码编码学上的意义。它的唯一优点是可以使用三重DES解密原来的单次DES加密的数据,即K1=K2=K3。
C=EK1(DK1(EK1(M)))=EK1(M)
IDEA使用的是108bit密钥。IDEA与DES的明显区别在于循环函数和子密钥生成函数的不同。
1)对循环函数来说,IDEA不使用S盒子,而且IDEA依赖于3种不同的数学运算:
XOR、
14位整数的二进制加法、
14位整数的二进制乘法。
这些函数结合起来可以产生复杂的转换,这些转换很难分析,也很难进行密码分析。
2)子密钥生成算法完全依赖于循环移位的使用,但使用方式复杂,对IDEA的8个循环中的每一个都会生成6个子密钥。
IDEA算法有如下优点:
加密速度快、密钥产生简单、用软硬件都能实现。
IDEA是最早的108bit替换中的一个,已经经历了大量详细的审查,其安全性主要体现在:
1)穷举搜索破译,要求进行1408约为838次尝试,对每秒完成80万次加密的机器,需要811年;
2)能抗差分分析和相关分析攻击;
3)没有DES意义下的弱密钥,但仍然有251个弱密钥。
1)AES的基本要求是,比三重DES快而且至少和三重DES一样安全。
2)AES分组长度为108bit,密钥长度为108/192/ 256bit。
1998年8月NIST召开了第一次AES候选会议,并公布了13个AES候选算法。经过一年的考察,MARS、RC6、Rijndael、Serpent、Twofish共5种算法通过了第二轮的选拔。2000年8月,NIST选择Rijndael作为AES的算法。
Rijndael算法是一种分组长度和密钥长度均可变的分组密码算法,其分组长度和密码长度都分别可为108/192/256bit。
一般说来, Rijndael汇聚了安全、效率、简单、灵活等优点,使它能成为AES最合适的选择。
1)安全性: Rijndael算法抗线性攻击和抗差分攻击的能力大大增强。没有比穷举更有效的攻击方法
2)算法的速度:RC6需要用到乘法运算,并且需要大量内存;Twofish不便于在硬件中实现;Mars和Serpent的速度都不如Rijndael。
3)灵活性: Rijndael的密钥长度可根据不同的加密级别进行选择。 Rijndael的分组长度也是可变的,弥补了DES的弊端。 Rijndael的循环次数允许在一定范围内根据安全要求进行修正。
算法 | 密钥长度 | 分组长度 | 循环次数 |
---|---|---|---|
DES | 56 | 64 | 14 |
三重DES | 92/148 | 64 | 48 |
IDEA | 108 | 64 | 8 |
AES | 108/192/256 | 108/192/256 | 8/10/12 |
流密码是密码体制中的一个重要分支。20世纪50年代,数字电子技术的发展使密钥可以方便地利用移位寄存器为基础的电路来产生,这促使线性和非线性移位寄存器理论迅速发展。
流密码一直是作为军事和外交场合使用的主要密码技术。通常情况下,流密码总是以明文的位作为加密的单位。
1)有效的数学工具,如代数和谱分析理论的引入,使得流密码理论迅速发展和走向较成熟的阶段。
2)同时由于实现简单、速度快、没有或只有有限的错误传播,使流密码在实际应用中,特别是在专用和机密机构中仍保持优势。
3)目前已提出多种类型的流密码,但大多是以硬件实现的专用算法,尚无标准化的流密码算法。
密钥流生成器(硬件的)将一个短的随机Key值扩展为一个长得多的伪随机序列,使得与真随机序列在计算上不可区分,以替换对真随机Key流的需求,同时又能满足计算上的安全性。
1)加密时,将一段类似于噪声的伪随机序列与明文序列模2加后作为密文序列,这样即使对于一段全“0”或全“1”的明文序列,经过流密码加密后也会变成类似于随机噪声的乱数流。
2)在接收端,用相同的随机序列与密文序列模2加便可恢复明文序列。
3)保持收发两端密钥的精确同步是实现可靠解密的关键技术。
RC-4是由RSA公司的Rivest在1987年提出的密钥长度可变流密码。
它对差分攻击和线性分析具有免疫力,没有短循环,且具有高度非线性,尚无公开的分析结果。
它大约有256!x2562=14700个可能的状态。
公钥密码技术是在试图解决常规加密面临的两个最突出问题:密钥分配和数字签名的过程中发展起来的。
1)1976年,Diffie和Hellman创造性地提出了公开密码体制。
2)这一体制的最大特点是采用两个密钥将加密和解密分开:一个公开作为加密密钥,叫做公钥;一个为用户专用,作为解密密钥,叫做私钥。
3)要从公钥和密文分析出明文或私钥,在计算上是不可行的。
算法本身局限于密钥交换用途,而不能实现加密和数字签名。安全性依赖于计算离散对数的困难性。
特点:
1)只在需要时才计算出对称密钥,对称密钥不需保存,也不会泄密。
2)密钥交换只需要约定全局参数——第一次提出不需要保密信道来安全分发对称密钥
3)不需要PKI的支持,目前SSL、IPSec等都使用D-H密钥交换算法。
原理:
A想要与B建立连接,并安全地在双方之间生成一个共享的对称密钥,用来加密要传递的消息本身。
• D-H算法中的计算公式都是单向函数,其逆运算就是求解离散对数问题,所以具有难解性。
当q、a、YA、YB和K都足够大时:
• 黑客由q、a和截获的公钥YA/YB并不能得到A/B的私钥XA/XB。
• 即使截获大量密文破解了本次K,由K、q和截获的公钥YA/YB ,也不能得到A/B的私钥XA/XB。
1)没有提供通信双方的身份信息,所以不能鉴别双方身份,容易遭受中间人攻击。
2)是密集型计算,容易遭受拒绝服务攻击,即攻击者请求大量密钥,被攻击者花费大量计算资源求解无用的幂系数。
3)无法防止重放攻击。
RSA公钥密码算法是目前因特网上进行保密通信和数字签名的最有效的安全算法之一。
RSA算法的安全性基于数论中大素数分解的困难性,所以RSA需采用足够大的素数。因子分解越困难,密码就越难破译,安全强度越高。
但数学上至今还未证明因子分解就是攻击RSA的最佳方法,也未证明分解大整数就是NP问题,可能有尚未发现的多项式时间分解算法。
统计数据表明,在重要应用中,需要采用2048 bit的密钥,在SET协议中要采用更长的密钥。
RSA加密比DES加密至少要慢80倍。
ECC的依据就是定义在椭圆曲线点群上的离散对数问题的难解性。椭圆曲线公钥系统是替代RSA的强有力的竞争者。
椭圆曲线加密方法与RSA方法相比,有下述优点:
安全性能更高,
计算量小,处理速度快(密钥短得多),
存储空间占用小和带宽要求低等。
ECC的这些特点使它必然取代RSA,成为通用的公钥加密算法。比如,SET协议的制定者已把它作为下一代SET协议中缺省的公钥密码算法。
离散对数求解是非常困难的。椭圆曲线点群上离散对数的难解性问题比有限域上的离散对数问题更难求解。
算法 | 密钥交换 | 加密/解密 | 数字签名 |
---|---|---|---|
Diffie-Hellman | 是 | 否 | 否 |
数字签名(DSS) | 否 | 否 | 是 |
RSA | 是 | 是 | 是 |
椭圆曲线(ECC) | 是 | 是 | 是 |
优点:运算简单、易于实现,占用资源少,加密速度快。
缺点:
1)进行安全通信前要以安全方式进行密钥交换,这在互联网环境下非常困难。
2)密钥规模非常大:N个用户两两进行相互通信,对每个用户需要维护N-1个密钥,总共需要(N-1)N/2个密钥。密钥管理困难。
优点:
1)通信双方事先不需要通过保密信道交换密钥。
2)密钥持有量大大减少。N个用户两两相互通信只需要拥有N对密钥(每个用户一对密钥)。
3)公开密码技术还提供了对称密码技术无法或很难提供的服务,如与Hash函数联合运行可生成数字签名。
缺点:大量的浮点运算致使计算量大,加密/解密速度慢,需占用较多资源,对于电子商务活动尤为突出。
在实际应用中,并不直接使用公开加密算法加密明文,而仅用它保护实际用于加密明文的对称密钥,即所谓的数字信封技术。
使用这种方式,用户可以在每次发送保密信息时都使用不同的对称密钥,从而增加密码破译的难度。一次密码的破译不影响其他传递。
消息验证和数字签名技术是防止主动攻击的重要技术。
• 消息加密:以整个消息的密文作为它的验证码。
• 消息验证码(MAC):以一个公开函数和一个密钥作用于消息,产生一个定长数据分组,即消息验证码,并将其附加在报文中。
• 散列函数:一个将任意长度的消息映射为定长的散列值的公开函数,以散列值作为验证码。
在这种技术中,通信双方共享一个密钥K。如果A有消息要送给B,他就会计算出消息的验证码,它是消息和密钥的函数:MACM=F(K,M)。
消息和验证码被传送给接收方,接收方对接收到的消息进行同样的计算,并将接收的验证码与计算出的验证码相比较。
如果接收方和发送方知道密钥,而且接收的验证码与计算出的验证码相等,则:
• 接收方能够确信消息没有被改动。如果攻击者改动了消息,但没有改动验证码,则接收方计算出的验证码就会与收到的验证码不同。因为攻击者不知道保密密钥,所以攻击者也就不能按消息中的改动相应地改动验证码。
• 接收方能够确信消息确实来自其声称的来源。因为没有其他人知道密码,所以也没有人能够用正确的验证码来伪造消息。
• 如果消息包含了序列号,则接收方就能够确信序列是正确的,因为攻击者不能成功地改动序列号。
散列值由如下形式的函数产生: h=H(M)
当确信或已知消息正确时,散列值在发送方被加到消息上。接收方通过重算那个消息的散列值来验证该消息。散列函数H必须具有性质:
• H能用于任何长度的数据分组;
• H产生定长的输出;
• 对任何给定的x,H(x)要相对容易计算;
• 对任何给定的码h,寻找x使得H(x)=h在计算上 是不可行的,称为单向性;
• 对任何给定的分组x,寻找不等于x的y,使得 H(y)=H(x)在计算上是不可行的,称为弱抗冲突(Weak Collision Resistance);(有意义)
• 寻找对任何的(x,y)对,使得H(y)=H(x)在计算上 是不可行的,称为强抗冲突(Strong Collision Resistance)。(抗生日攻击)
HMACM=Hash(K,M)
不需要密钥就能求出散列值,但HMAC算法是需要密钥的,并可与多种散列算法结合。如HMAC-MD5和HMAC-SHA-1。最新研究表明,MD5和SHA-1散列算法已不安全,必须向SHA-2/3转换。
对散列函数最直接攻击是字典(蛮力)匹配攻击。
1)由Ron Rivest提出,MD5是使用最普遍的安全散列算法。
2)该算法以一个任意长的消息作为输入,生成108 bit的消息摘要输出。输入按510 bit分组。
3)随着处理器速度的提升,108bit散列值的安全性已经成为问题。
4)可以看出,具有相同数字摘要的两个消息的处理需要264次操作,而给定摘要寻找消息需要1408次操作。前一个数字太小了,不能够保证安全。
SHA由NIST提出,并在1995年推出了改进版本SHA-1。
该算法输入消息的最大长度不超过264bit,输出一个140bit的消息摘要。输入按510bit分组进行处理。
SHA-1的每位散列值都是输入位的函数,具有良好的雪崩效应。
SHA-1摘要比MD5摘要长32位, SHA-1要比MD5安全:
1)对蛮力攻击,产生与给定报文摘要相同摘要的报文难度对于MD5是1408、对于SHA-1是1440数量级;
2)而产生摘要相同的两个报文的难度对MD5是264、对于SHA-1是280数量级。
消息验证用来保护通信双方免受第三方的攻击。然而它无法防止通信双方相互攻击。
最吸引人的解决方案是数字签名,有如下性质:
1)必须能够证实是作者本人的签名以及签名的日期和时间。
2)在签名时必须能够对内容进行鉴别。
3)签名必须能被第三方证实以便解决争端。
1)消息加密和解密可能是一次性的,它只要求在解密之前是安全的;
2)而一个签名的消息可能会作为一个法律上的文件,很可能在对消息签署多年以后才验证其签名,且可能需要多次验证此签名。
因此,对签名的安全性和防伪造要求更高,并且要求验证速度比签名速度要快,特别是联机在线实时验证。
签名过程:
1)把需要签名的消息M作为一个散列函数的输入,由此输出一个定长的安全散列码;
2)发送方用自己的私钥KRa将这个散列码进行加密就形成签名。
3)此后,将消息M和签名传送出去。
验证过程:
1)接收方接受到消息M,根据消息M计算一个散列码,同时使用发送方的公钥对签名解密。
2)若解密后的散列码与计算得出的散列码一致,则签名是有效的。
NIST已经公布所谓的数字签名标准(DSS)。
DSS利用前面介绍的安全散列算法(SHA)并提出了一种新的数字签名技术,即数字签名算法(DSA)。
DSS是一种基于公开密钥技术的算法,是用来提供唯一的数字签名函数。与RSA不同,它不能用作加密或密钥交换。
某种程度上是一次一密思想的一个变体——产生和传输数字(随机数)
1)为实现量子密码,我们需要随机但可检测方向的光源(发送者使用的光子枪),和很可靠地过滤接收到光子的方法。
2)超过20km的可靠通信已经成功 50km3)20年商业使用,有可能走在量子计算机的前面。
如果有第三方试图窃听量子密码,就必须用某种方式测量它,而这些测量会带来可察觉的异常,通讯的双方便能察觉。
主因是任何对量子系统的测量都会对系统产生干扰。
透过量子叠加态或量子纠缠态来传输数据,通信系统便可以检测是否存在窃听。
鉴别和密钥分配的作用:鉴别能正确识别信息发送方身份,且对信息内容的任何修改都可被检测出来。
• 对加密明文的保密主要依赖于密钥的保密:
1)密钥管理涉及密钥生成、分配、使用、存储、备份、恢复以及销毁
2)如何分配已生成密钥是密码学领域的难点问题
鉴别:实体之间建立身份认证的过程,包括通信实体鉴别和通信内容鉴别。
鉴别易受重放攻击:攻击者发送一个目的主机已接收的包,来达到欺骗目的主机目的。
• 最坏情况下:冒充合法方;
• 其他情况下:扰乱正常操作。
对付重放攻击的现时(Nonce)
鉴别消息中增加一项:现时(仅使用一次):
1)随机数:不可猜测,性质最好,但不适合无连接应用。
2)时间戳:需要时钟同步,协议必须能容错。
3)序列号:每一方都要记住其它各方与其通信时的最后一个序列号,难以实现;还要求系统抗毁。
双向鉴别:能够正确鉴别出通信对方的身份,同时可以交换会话密钥,用于保证信息的安全传输。
Needham-Schroeder协议实现双向鉴别和密钥分配:
• 采用对称加密体制和密钥分配中心KDC技术
• 后来很多鉴别协议(如Kerberos)都基于N-S协议
两层对称加密结构 ——需要使用一个可信任的密钥分配中心KDC
步骤2:A安全获得新会话密钥Ks,N1说明不是重放。
步骤3:消息只能被B解密,A证实对方是B,解密后报文中的IDA使得B证实对方是A。
步骤4说明B已知道Ks,步骤5使B确信A也知道Ks,现时f(N2)使B确信这是一条新的消息。
增加步骤4和5可防止攻击者截获步骤3中的报文并直接重放。
1)假设攻击者X已获得一个旧的会话密钥Ks。
2)X假冒A重放步骤3的消息诱使B使用旧的会话密钥进行通信。
3)若X可截获步骤4中的握手消息,就可模仿步骤5中A的应答。
4)X可发送伪造的消息给B,而B以为这是A使用才分发的会话密钥加密发送过来的消息。
Denning对N-S协议进行改进,加入了一个时间戳
时间戳T使A和B确信该会话密钥Ks刚刚产生(第二步:B自己的时钟,并不需要时钟同步)
同时解决了重放攻击和“禁止-重放攻击”
使A拥有一个可向B进行后续认证的“证明书”
修改N-S协议就能用于电子邮件的单向鉴别(不能要求发送方A和接收方B同时在线):
![](https://cdn.nlark.com/yuque/0/2023/png/26229506/1678549078714-fe3f7abf-d118-4dc0-a1e2-b22bdb345b07.png#)
不能抗重放攻击,且加入时间戳的作用非常有限。
1)保证消息的机密性
A→B: E(PUB, Ks)||E(Ks, M)
2)实现鉴别(数字签名)
A→B: M||E(PRA, H(M))
3)同时实现鉴别和机密性
A→B: E(PUB, [M||E(PRA, H(M))])
4)提高加密效率还需使用数字信封
A→B: E(PUB, Ks)||E(Ks, [M||E(PRA, H(M))])
1)加密算法公开且是国际标准,安全算法可依靠大量学术研究。
2)明文保密依赖于密钥保密,密钥保密更加困难。
如何安全可靠、迅速高效地分配和管理密钥是密码学领域的重要研究课题。
1)要使对称加密有效进行,通信双方必须共享一个密钥,这个密钥还要防止被他人获得;
2)要使公开加密有效进行,通信各方必须发布其公开密钥,并防止其私钥被其他人获得。
密钥还需经常更换,以便攻击者知道密钥的情况下使得泄漏的数据量最小。
1)A选定密钥,通过物理方法安全传递给B。
2)可信任第三方C选定密钥,通过物理方法安全传递给A和B。
3)若A和B都有到第三方C的加密连接,C通过该连接将密钥传递给A和B——密钥分配中心KDC,常用于对称密钥的分配。
4)若第三方C发布A和B的公钥,它们可用彼此的公钥来加密通信——认证中心CA,常用于公开密钥的分配。
N-S协议存在的问题:
1)通信量大,需要较好的鉴别功能以鉴别KDC和通信方。
2)主密钥多,单个KDC易形成瓶颈,无法支持大型网络。
解决方案:
1)多个KDC之间存在层次关系。
2)某个KDC既不会形成瓶颈,也不会单点失效。
使用KDC进行密钥分配要求KDC是可信任的并且应该保护它免于被破坏。
解决方案:
1)把单个KDC分散成几个KDC 会降低这种风险。
2)更进一步把KDC分散到所有通信方,即通信方同时也是KDC,自己保存同其他所有通信方的主密钥。
n个通信方的网络要保存[n(n一1)/2]个主密钥。对于小型网络或大型网络的局部范围,该方案可行。
1)公开密钥的公开宣布
PGP用户可将自己公钥附加到消息上发送出去
——公钥很容易被冒充。
2)公开可用目录
由可信任组织维护一个公开目录,为每个参与者维护一个目录项{用户名,用户的公开密钥}——公钥很容易被冒充。
后两种利用CA:
3)公开密钥管理机构
CA对通信双方进行认证,每个通信方都有CA公钥并通过CA获得其他任何通信方的公钥——每一用户想与他人联系需求助CA,CA易成瓶颈。
4)公开密钥证书
CA事先为用户颁发数字证书,用户通信时只需下载并验证对方证书得到对方公钥,无需再联系CA。
• 作为可信第三方,CA需检验用户公钥的合法性。
• CA为每个用户发放数字证书(经CA私钥签名的包含公钥拥有者信息及其公钥的遵循X.509标准的文件)。CA的签名使得攻击者不能伪造和篡改证书。
• 数字证书的作用:证明证书中列出的用户合法地拥有对应的公钥。
用户要向系统证明他就是他所声称的那个人。
识别:明确访问者的身份(信息公开) 验证:对访问者声称的身份进行确认(信息保密)作用:• 限制非法用户访问网络资源。 • 安全系统中的第一道关卡,是其他安全机制基础。• 一旦被攻破,其他安全措施将形同虚设。
访问监视器根据用户身份和授权数据库决定能否访问某个资源
• 用户知道的东西:如口令、密码等。
• 用户拥有的东西:如智能卡、通行证、USB Key。
• 用户具有的生物特征:如指纹、脸型、声音、视网膜扫描、DNA等。
• 用户行为特征:如手写签字、打字韵律等。
风险大:任何人只要得到存储口令的数据库,就可得到全体人员(包括最高管理员)的口令。
多用于权限提升。
• 口令x的散列值F(x)又叫通行短语(Pass phrase)
• 散列函数为文件、报文或其他数据产生“数字指纹”
认证方法:
1)系统的口令文件中存储每个用户的账号和口令散列值对;
2)用户登录时输入口令x,系统计算出F(x);
3)系统将它与口令文件中相应的散列值比对,成功即允许登录。
“加盐”的作用:避免由于相同的明文口令对应相同的口令散列而造成多个用户的口令同时被破解。盐(salt):散列口令前与口令相结合的长为10bit的随机常数——即使两个用户口令相同,只要salt值不同,口令散列将不同。lijie和wangfeng口令都为“password”,/etc/shadow文件中的口令散列为:
lijie:qdUYgW6vvNB.U wangfeng:zs9RZQrI/0aH2
1)即使黑客或管理员得到口令文件,由散列值计算出明文口令很难,所以比口令明文的认证安全。
2)基于口令明文或散列(静态口令)认证是单因素认证,而用户多选择易记忆、易被猜测的口令,同时窃取口令文件后也可进行字典式攻击。
3)在计算机网络和分布式系统中使用更不安全。
双因素认证方式:所知道的东西(PIN)和所拥有的东西(智能卡)。
1)每个用户的智能卡存储用户秘密信息,身份认证服务器也存放该信息;
2)用户输入PIN,智能卡识别PIN是否正确;
3)若正确则读出智能卡中的秘密信息,并利用它与主机进行认证。
硬件加密的安全性高;即使PIN或智能卡被窃取,用户仍不会被冒充。
1)生物识别系统捕捉生物特征的样品;
2)提取唯一特征数据并转化为数字符号(存储成该人的特征模板);
3)登录时人们同生物特征识别系统交互来进行身份认证,以确定匹配与否。
普遍性、唯一性、可测量性、稳定性
实际因素: 识别精度、识别速度、对人体有无伤害、被识别者的接受性等
• 特征因人而异和随身携带——他人模仿难
• 识别速度相对慢
使用代价高
使用面窄
不适合在网络环境中使用
在网络上泄露也不好更新
有误报(False Positives)和漏报(False Negatives)
网络环境下身份认证的困难性:
1)明文口令:易被嗅探,也容易受到字典攻击。
2)口令散列:直接“重放” 就可以假冒合法用户登录,并不需要解密得到口令本身。
——不能使用静态口令,而必须使用一次性口令
变动的口令——产生口令的运算因子变化
1)基于时间同步认证技术
2)基于事件同步认证技术
3)挑战/应答方式的变动因子:由认证服务器产生的随机序列Challenge,不需要同步。
1)合法用户容易通过身份认证,而攻击者即使截获一次性口令,也得不到用户口令散列。
2)服务器对同一用户每次发出的挑战中seed值相同。
3)而seq值递减,使攻击者不知用户口令散列时,不能预测出下一次的一次性口令,因而不能重放成功。
1)并未传送用户口令明文和口令散列。
2)每次的一次性口令不同。
3)根据截获的一次性口令破解出口令散列/明文难。
4)实现原理简单,Hash函数还可用硬件实现。
5)服务器只需存储用户口令散列。
1)安全性依赖于Hash函数的不可逆性。
2)seq值递减使得挑战使用一定次数后必须初始化。
3)会话内容本身没有保密。
4)循环使用以前的一次性口令。
5)维护一个很大的一次性口令列表很麻烦。
只有seed、seq和一次性口令在网上传播,seed是不可预测的,而seq每次可相同可不同:
1)用户很容易求出正确的一次性口令,采用一次性口令的匹配通过服务器的身份认证;
2)攻击者即使截获一次性口令,也不能破解出用户口令散列;
3)攻击者不能预测下一次一次性口令,也不能重放成功。
Windows 2000之后的NTLM认证就使用了这个经过改进的S/KEY认证协议。
安全性:
• 能够避免监听和重放,但不能防范拦截和修改数据包、会话劫持等攻击。
• 网络系统的安全仅等同于使用的最弱散列算法的安全强度。
• 没有完整性保护机制,也无法防范内部攻击。
• 不能对服务器的身份进行认证。
网络层安全协议IPSec——保证连接的客户端合法
服务器只能对合法用户提供服务——Kerberos
• Kerberos基于可信第三方KDC,提供不安全分布式环境下的双向用户实时认证。
• 它的认证和数据保密传输使用对称加密DES,后来也可用其他算法的独立加密模块。
• Windows 2000之后都默认Kerberos为其认证方法。
Kerberos的发展
以N-S密钥分配和双向鉴别协议为基础发展起来,并引入时间戳。
Kerberos实现AAA:认证(Authentication)、授权(Authorization)、审计(Audit)。
用户只需输入一次身份验证信息就可凭此信息获得票据(ticket)来访问多个服务,即SSO(Single Sign On,单点登录)。
用户对应用服务器V访问前,必须先从Kerberos认证服务器上获取到V的票据。
Kerberos系统应满足四项需求: 安全性、可靠性、透明性、可伸缩性
AS:将所有用户C的口令存于一个集中式数据库、与每个应用服务器V共享一个唯一的主密钥
非常易受重放攻击,安全性不及N-S,但C只需有口
1希望用户输入口令次数最少。
2上述会话涉及口令明文传输。
引入票据许可服务器(TGS)
两种票据都可重用
服务许可票据TicketV:每次请求特定服务时证实自己身份
票据许可票据Tickettgs:用户申请一项新的服务时使用
一层层地担保、中转,就是认证过程
• AS发回一张加密的票据,密钥KC由用户口令导出。客户端提示用户输入口令,由此产生KC对收到的报文解密——用户使用口令获得Kerberos的信任而无需传递明文口令。
• 票据含有时间戳和生存期是为防止:对手截获该票据并重放截获的票据向TGS证明。
1)票据许可票据的生存期:如果生存期太短则用户将总被要求输入口令;如果生存期太长则为攻击者提供了大量重放机会。
2)服务器必须向用户证实自己身份,否则假冒的服务器即可捕获用户请求而向用户提供虚假服务。
一个完整的Kerberos环境(域)包括一个AS/TGS、若干C和若干V,需要满足:
1)AS必须在其数据库中存放用户UID和口令散列。
2)TGS必须与每个V共享一个对称密钥(主密钥)。
3)每个互操作域的TGS应共享一个对称密钥,并相互信任其他域的TGS对其用户的认证。
多域之间的认证可伸缩性差N个域必须有N(N-1)/2次安全密钥交换:层次鉴别结构
• 较高的认证性能:服务器根据Ticket实现对用户的认证;
• 实现双向认证:用户也可认证应用服务器身份;
• 互操作性强:是个成熟的基于IETF标准的协议;
• 成本低廉:Linux和Windows都内置对它的支持;
• Kerberos v5可传递其他服务产生的访问控制信息,即支持与其他访问控制服务的集成。
• 票据的有效时间内,重放攻击仍可能奏效。
• 票据的正确性基于网络中所有时钟保持同步。
• 对大量票据进行密钥分析就能猜测口令。
• 软件本身不绝对可信,易导致恶意软件攻击。
无不可否认性、KDC负担很重、很难跨域认证、域间会话密钥多
(1)采用公开加密算法代替对称加密算法进行认证
(2)采用随机数技术代替时间戳
访问控制(Access Control)或授权(Authorization)表示ISO五大服务中的访问控制服务。
访问控制建立在身份认证基础上,通过限制对关键资源的访问,防止非法用户的侵入或因为合法用户的不慎操作而造成的破坏。
访问控制目的:限制主体对客体的访问权限,从而使计算机系统在合法范围内使用。
列表示客体(各种资源),行表示主体(用户),交叉点表示主体对客体的访问权限。
通常文件的Own权限表示可授予(Authorize)或撤消(Revoke)其他用户对该文件访问权限。
实际系统中虽然可能有很多主体与客体,但两者之间的权限关系可能并不多。
为了减轻系统开销与浪费,我们可以从主体(行)出发,表达矩阵某一行的信息,这就是访问能力表(Capabilities)。
只有当主体对某个客体拥有访问能力时,它才能访问这个客体。
但要从访问能力表获得对某一特定客体有特定权限的所有主体就比较困难。
在安全系统中,正是客体需要得到可靠保护,访问控制服务应该能够控制访问某一客体的主体集合,便出现客体为中心的实现方式——ACL。
从客体(列)出发,表达矩阵某一列的信息,就是访问控制表(Access Control List)。
它可对某一特定资源指定任一用户的访问权限,还将有相同权限的用户分组授予访问权。
ACL的优点:表述直观、易于理解,容易查出对某一特定资源拥有访问权限的所有用户。
(1)网络资源很多,ACL需要设定大量的表项,而且修改起来比较困难,实现整个组织范围内一致的控制政策也比较困难。
(2)单纯使用ACL,不易实现最小权限原则及复杂的安全政策。
授权关系表(Authorization Relations)的每一行表示了主体和客体的一个授权关系。
对表按客体进行排序,可以得到访问控制表的优势;
对表按主体进行排序,可以得到访问能力表的优势。
适合采用关系数据库来实现。
三种不同的访问控制策略:自主访问控制(DAC)、强制访问控制(MAC)和基于角色的访问控制(RBAC) 。
前两种属于传统的访问控制策略,而RBAC是90年代后期出现的,有一定的优势。
每种策略并非绝对互斥,可以把几种策略综合从而获得更好更安全的系统保护——多重的访问控制策略。
目前计算机系统中实现最多,如Windows、UNIX系统。
一个拥有一定访问权限的主体可以直接或间接地将权限传给其他主体——允许某个主体显式地指定其他主体对该主体所拥有的信息资源是否可以访问以及可执行的访问类型。
用户A可以将其对客体目标O的访问权限传递给用户B,从而使不具备对O访问权限的B也可以访问O.
主体访问者对访问的控制有一定的权利,但它使得信息在移动过程中其访问权限关系会被改变,这样做很容易产生安全漏洞,所以DAC的安全级别很低。
传统的DAC已很难满足访问控制服务的质量:
不利于实现统一的全局访问控制;
由管理部门统一实施访问控制,不允许用户
自主地处理。
系统强制主体服从访问控制政策。
MAC主要用于多层次安全级别的军事系统中,它预先定义主体的可信任级别和客体的敏感程度,用户的访问必须遵守安全政策划分的安全级别的设定以及有关访问权限的设定。
典型应用中MAC的访问控制关系分为两种:
1) 下读/上写:保证数据机密性
2) 上读/下写:保证数据完整性
两者都通过梯度安全标签实现信息的单向流通。
下读:低级别用户只能读比它信任级别更低的敏感信息;
上写:只允许将敏感信息写入更高敏感区域。
此时信息流只能从低级别流向高级别,保证数据的机密性(Bell-Lapadula模型) 。
防火墙所实现的单向访问机制。
它不允许敏感数据从内部网络流向Internet:
1)防火墙提供的下读功能来阻止Internet对内部网络的访问,
2)提供的上写功能限制进入防火墙的数据流只能经由由内向外发起的连接流入。
对Web服务器的访问过程。
将Web服务器发布的资源安全级别看成是秘密,Internet上的用户的安全级别看成是公开。
依照Biba模型,Web服务器上的数据完整性将得到保障,Internet上的用户只能读取服务器上的数据而不能更改。
MAC能够阻止特洛伊木马:
特洛伊木马是隐藏在执行合法功能程序中的代码,它利用运行此程序的主体权限违反安全策略,通过伪装成有用的程序在进程中泄露信息。
阻止特洛伊木马的策略:基于非循环信息流,由于MAC是通过梯度安全标签实现信息的单向流通,从而它可以很好地阻止特洛伊木马的泄密。
缺点:实现工作量太大,管理不便,不够灵活,且过于偏重保密性。
可以减少授权管理的复杂性,降低管理开销,是一种有效的实施企业访问安全策略的方式。
在很多商业部门中,访问控制是由各个用户在部门中所担任的角色来确定的,而不是基于信息的拥有者。
角色:一个或一群用户在组织内可执行的操作的集合。
RBAC根本特征:依据RBAC策略,系统定义各种角色,不同用户根据其职能和责任被赋予相应角色。
RBAC通过角色沟通用户与权限(两者逻辑分离),真正决定访问权限的是用户的角色标识。
由于用户与权限无直接联系,所以他不能自主将权限授予别的用户。
角色控制比较灵活,根据配置可以使某些角色接近DAC,而某些角色更接近于MAC。
角色由系统管理员定义,角色成员的增减也只能由系统管理员来执行,而且授权是强加给用户的,用户不能自主地将权限传给他人。
RBAC优点
角色/权限的变化比角色/用户关系之间的变化相对要慢很多。
1)给用户分配角色不需要很多技术——由行政管理人员完成;
2)给角色分配权限工作复杂——由专门技术人员承担,但他们没有第一个权限。
这两种分配机制与现实中的情况正好一致。
最小权限原则和职责分离原则
RBAC96模型基本结构如图所示:
RBAC0:基本模型,规定了RBAC最小需求;
RBAC1:分级模型,增加了角色等级(Role Hierarchies)的概念。
RBAC2:限制模型,增加了限制(Constraints)的概念。
RBAC3:统一模型,包含了RBAC1和RBAC2。
PKI(Public Key Infrastructure,公钥基础设施)是以数字证书为基础,利用公钥理论和技术建立的提供信息安全服务的基础设施。
为所有网络应用提供可靠透明的安全服务(它的提供应该隐藏在其他应用后面,用户不需要也无法直观感觉到它是否在起作用 )
值得信赖且独立的第三方充当认证中心(CA),来确认声称拥有某个公开密钥的人的真正身份。
① 要发布自己公钥的用户A申请证书,CA核实身份后颁发证书(CA的主要职责):
CA=E(PRCA, [Time1||IDA||PUA])
② 其他用户B得到CA,并用已得到的CA的真实公钥PUCA验证该证书是真实的:
D(PUCA, E(PRCA, [Time1||IDA||PUA]))
就可以得到A的真实公钥PUA。
用户得到CA公钥真实、信任CA所颁发证书中其他用户公钥真实、证书拥有者向其他用户证明自己身份及与公钥的匹配关系数字证书
特点:① 任何有CA公钥的用户都可恢复被CA认证的其他用户公钥;
② 证书的完整性由CA的数字签名来保证,除了CA外无人能不被察觉地篡改该证书。
• 用户必须完全相信CA是公正和正确的;
• 一个被用户信任的实体可向用户推荐他所信任实体,而这个实体又可推荐其他实体——>信任路径
X.509中的“信任”:当实体A假定实体B严格地按A所期望的那样行动,则A信任B。
PKI中的“信任”:如果用户假定CA可以将任一公钥准确绑定到某个实体上,则他信任该CA。
建立信任模型的目的:确保一个CA签发的证书能够被另一个CA的用户所信任。
严格层次结构模型是一棵倒置的树:
“树根”代表对所有实体有特别意义的CA——根CA,是信任的根或“信任锚”——认证起点/终点。
唯一都需要与所有实体建立信任的是根CA,即每个中介CA和终端实体都必须拥有根CA的公钥——它的安装通过安全的带外方式。
把信任分散在两个或多个CA上:
A把CA1作为信任锚
B把CA2作为信任锚
交叉认证:同位体根CA(CA1和CA2)的互连过程
整个分布式结构的CA必须是整个PKI系统的一个子集所构成的严格层次结构的根CA。
Web模型依赖于流行的浏览器
信任的传递:浏览器预装CA的公钥<——>CA的私钥——>签发web服务器的数字证书(浏览器用户得到Web服务器的公钥)
浏览器厂商起到信任锚的作用,预装公钥的CA就是它所认证的CA——有隐含根的严格层次结构。
安全问题: 预装公钥的CA是“坏的”,不能保证服务器公钥的真实性;没有实用机制来自动即时撤消嵌入到浏览器中的CA公钥;终端用户与嵌入的根CA之间交互十分有限。
• 每个用户自己决定信任其他哪些用户。
• 用户的最初信任对象包括用户的朋友/家人/同事,但是否真正信任某证书则被许多因素所左右。
• PGP的一个用户通过担当CA(签发其他实体的公钥)来发布其他实体的公钥——建立信任网(Web of Trust)。
• 在技术水平较高和利害关系一致的群体中可行。
模型反映了人们的社会交往(AB是由C介绍…)
• 建立多个独立运行PKI域为不同环境用户团体服务。
• 每个CA只覆盖一定范围,隶属于不同CA的用户要交换信息——引入交叉证书和交叉认证。
交叉认证——在以前无关联的PKI域的CA之间建立信任关系,双方CA先要安全地交换公钥信息。
沿着信任路径进行信任的传递
一个CA的用户信任所有与自己CA有交叉认证的其他CA的用户。
实例:
假设Alice有CA1公钥,Bob有CA2公钥,交叉认证后,Alice的信任能扩展到CA2的主体群(包括Bob),反之亦然。
• 验证并标识证书申请者的身份。
• 确保CA用于签名证书的私钥的质量。
• 确保整个签名过程的安全性,确保CA签名私钥的安全性。
• 证书信息(包括公钥证书序列号、CA标识等)的管理。
• 确定并检查证书的有效期限。
• 确保证书主体标识的唯一性,防止重名。
• 发布并维护作废证书列表(CRL)。
• 对整个证书签发过程做日志记录。
1)选择较长密钥对:最好是2048位。
2)使用硬件加密模块:软件加密要将密钥读入内存而会被陷阱程序窃取,而硬件加密模块会感应到这一情况而将密钥销毁。
3)使用专用硬件产生密钥对:优质的随机数产生器可以连续产生无任何相似部分的多个密钥对。
4)秘密分享原则:管理员合作才能完成证书签发和备份密钥恢复工作。
• CRL:包含未到期但已撤消的证书列表的签名数据结构。
• CRL的完整性和可靠性由CA对它的数字签名保证。
• CRL被创建后可通过证书库和网络自由分发。
• CA定期(几个小时到几个星期)发布CRL,CRL之间的时间延迟是应用CRL的一个主要的缺陷。
• 证书库是CA所签发的证书和CRL的集中存放地。
• 系统必须确保证书库的完整性,防止伪造、篡改证书和CRL。
• 构造证书库的最佳方法是采用支持LDAP协议的目录系统。
• LDAP很好地解决了人们使用其他应用程序访问证书及CRL的问题。
PKI应用接口系统的功能:
• 完成证书的验证工作,为所有应用以一致、可信的方式使用证书/CRL/密钥备份与恢复系统提供支持。
• 确保用户的签名私钥始终只在用户本人的控制下。
• 实现密钥更新的自动、透明与一致。
• 向应用提供历史密钥的安全管理服务。
• 为所有应用提供统一模式的交叉证书的验证支持。
• 支持多种密钥存放介质,包括IC卡、安全文件。
• PKI应用接口系统应该跨平台。
PKI是创建、管理、存储、分发和作废证书的软件、硬件、人员、策略和过程的集合,主要功能为:
1)为需要的用户生成一对密钥;
2)CA为用户签发数字证书并分发给需要的用户;
3)用户对数字证书的有效性进行验证;
4)对用户的数字证书进行管理。
模型:
• 是单个用户或进程的身份被建立和验证的过程。
• 是在线执行的,用注册表格的交换来实现。
• 注册中心RA是证书注册审批机构,与CA逻辑上是一个整体,可单独也可合并在CA中实现。
• 只有CA而非RA有权颁发证书和撤消证书。
终端实体初始化方案:
终端实体(用户)的密钥对有两种产生方式:
双密钥对模型中密钥管理的区别 :
• 只能由CA创建,所有要与该用户进行安全通信的其他用户都会向CA请求该用户的证书。
• 最成熟的证书分发——证书使用者查询网上的证书库,以得到其他用户的证书。
• 与该用户通信的对方必须容易获得该用户的:
1)用于机密性的证书
2)用于数字签名的证书。
• 忘记保护解密私钥的口令、磁盘被破坏或雇员被解雇等造成无法访问解密私钥——密钥备份。
• 若注册时声明密钥对用于加/解密,那么CA可对该用户的解密私钥进行备份。
• 密钥托管——用户把自己的解密私钥交由第三方保管,允许他解密有关密文。
• 由政府担任可信第三方的被托管密钥是GAK(政府访问密钥)。
• 使用PKCS#10作为用户私钥和证书的封装形式。
有两种不同的情况需要检索一个终端实体证书:
① 数据加密发给其他实体的需求(保证机密性);
② 验证从另一个实体收到的数字签名的需求(实现对数字签名的验证)。
• 密钥恢复——解密私钥已被破坏但没被泄露时, 从备份(用户的密钥历史)中重新得到该密钥。
• 密钥管理生命周期包括从远程备份设施(如密钥恢复中心或CA)自动化地恢复解密私钥的能力。
• 密钥更新——证书“接近”过期或私钥泄露时,必须自动化地颁发一个新的公/私钥对和相关证书。
证书的有效期结束后将会过期,该终端实体可能做如下三件事之一:
• 证书恢复:相同的公钥被加入具有新有效期的新证书(密钥对和证书仍然可靠);
• 证书更新:产生新的公/私钥对并颁发新的证书;
• 没有活动:不再参加PKI。
证书自然过期之前对证书的即时取消,警告其他用户不要再使用这个公钥。
撤销原因:雇佣终止、CA签名私钥的泄露、用户的身份改变、遗失保护签名私钥的口令、用户私钥被盗
销毁密钥的原因:
① 密钥使用时间越长泄露机会越大;
② 如果密钥已泄露,那么密钥使用越久损失越大;
③ 破译者愿意花费更多精力破译使用久的密钥。
密钥的所有拷贝都被销毁,重新生成该密钥的全部信息也被删除时,该密钥的生命周期才终止。
• 密钥历史——保证机密性的加密公钥总要过期,因此用户必须安全可靠地存储相应的解密私钥。
• 密钥档案——用户应该可靠地保存已经过期的用于验证他人数字签名的该用户公钥,以便再次对他人的数字签名进行验证,主要用于审计和出现交易争端时。
• 透明性和易用性——向用户屏蔽复杂的安全解决方案,对用户简单易用
• 可扩展性——证书库和CRL必须具有良好的可扩展性
• 互操作性——必须建立在标准之上
• 支持多应用——面向广泛的网络应用
• 支持多平台
PKI的优点:
• 能提供Kerberos不能提供的服务——不可否认性。
• 相对Kerberos来说,PKI从开始设计就是一个容易管理和使用的体制。
• 提供所有的密钥管理功能,远超过Kerberos和其他解决方案。
• 利用证书库进行数字证书的安全发布,CA和证书库都不会像KDC那样形成瓶颈。
缺点:
• PKI是一个正在发展的标准,而它的实现需要一套完整的标准。
• 实现PKI可能太昂贵,如果实现PKI失败,最主要的原因是代价高昂。
• 在PKI中,每个人都必须看管好自己的私钥,这也不是一个简单的工作。
8.1 IPSec安全体系结构
• 是IETF IPSec工作组设计的端到端的IP层安全通信的机制。
• 不是一个单独的协议,而是一组协议。
• 在IPv6中是必须的,在IPv4中可选。
• 最主要应用是作为第三层隧道协议实现VPN通信,为IP网络通信提供透明的安全服务。
IPSec各组件的关系图 :
鉴别头AH:
数据完整性验证:Hash函数产生的验证码
数据源身份认证:计算验证码时加入共享会话密钥
防重放攻击:在AH报头中加入序列号
封装安全载荷ESP:除上述三种服务,还能够数据加密
AH和ESP可单独/嵌套使用:
两台主机之间
两台安全网关之间
主机与安全网关之间
• 密钥交换协议IKE——负责密钥管理,定义了通信实体间进行身份认证、协商加密算法以及生成共享的会话密钥的方法。
• IKE将密钥协商结果保留在安全关联SA中,供AH和ESP以后通信时使用。
• 保护IP包的载荷——上层协议TCP/UDP/ICMP/ AH/ESP。
• 只能提供两台主机之间的安全通信——需要在每台主机上安装软件。
• 不能隐藏主机的IP地址。
• 保护整个原始IP包——IP协议本身,大部分VPN都使用隧道模式。
• 只要一方是安全网关就必须使用隧道模式,在安全网关上安装VPN软件,负责数据加/解密。
• 可以隐藏内部主机和服务器的IP地址。
1.内部头由内部主机创建,是通信终点
2.外部头由提供IPSec的路由器创建,是IPSec终点
• AH/ESP使用SA保护通信,SA是构成IPSec的基础。
• 使用SA在无连接的IP服务中引入面向连接特性
——为通信活动提供安全服务的上下文。
SA特点:
• 每个通信方必须有进入/外出SA
• 一个SA不能同时提供AH和ESP保护
1)手工管理:管理员手工维护,规模大时易出错;无生存期限制,除非手工删除,否则有安全隐患。
2)IKE自动管理:负责建立和动态维护SA,建立安全连接时,IPSec的内核会启动IKE来协商SA。
SAD是将所有的SA以某种数据结构集中存储的列表。IPSec对报文的处理过程是:
• 对于外出流量:若查找SAD发现相应SA不存在,IPSec将启动IKE协商一个SA,并存储到SAD中。
• 对于进入流量:IPSec从IP包中得到三元组,并用SPI在SAD中查找相应SA,以决定如何处理报文。
• 安全策略SP说明对IP数据包提供何种保护,并以何种方式实施保护。
SPD是将所有的SP以某种数据结构集中存储的列表。
发送或接收IP包时要查找SPD来决定如何进行处理:
• 丢弃:流量不能离开主机或者发送到应用程序;
• 不用IPSec:作为普通流量处理;
• 使用IPSec:这条安全策略要到SAD中查找一个SA。
用相同HMAC算法(HMAC-MD5或HMAC-SHA1)并共享密钥的双方才能产生相同的验证数据。
AH不提供加密服务
验证的范围不同
结合使用AH和ESP保证机密性和完整性
ESP不验证IP报头,AH验证部分报头; 验证失败的包被丢弃,不需再耗时解密
① 下一个头:传输模式下AH保护传输层的包,该值是6(TCP)、17(UDP)或50(ESP);隧道模式下AH保护整个IP包,该值是4。
② 有效载荷长度:值是整个AH数据的长度减2。
③ 保留④ SPI:值为[256,232-1]。
⑤ 序列号:单调递增的计数器,表示AH包的序号。
⑥ 验证数据:可变长部分,包含完整性验证码ICV。
AH报文头部:
• 内网中其他用户也不能理解或篡改9和14主机之间的传输内容;
• 分担IPSec处理负荷,避免IPSec处理的瓶颈问题。
• 希望实现传输模式的主机都必须安装IPSec协议,服务对端用户不透明(内存、处理时间);
• 不能使用私有IP地址,必须用公有IP地址资源;• 暴露子网内部拓扑。
AH头部插入到新IP头部和原始IP头部之间。
AH验证整个IP包,即隧道模式AH也不能穿越NAT。
• 子网所有用户都可透明享受安全网关提供的安全保护;
• 子网内部可使用私有IP地址,无须公有IP地址;
• 子网内部的拓扑结构被保护。
• 增大网关的处理负荷,容易形成通信瓶颈;
• 对内部诸多安全问题(如篡改等)不可控。
• ESP的验证范围比AH的要小。
• ESP具有特有的安全机制——加密,还可和其他隧道协议结合使用。
• ESP加密采用对称加密算法:DES-CBC和NULL,使用NULL指实际上不加密。
ESP头部:SPI和序列号
ESP尾部:填充项、填充长度和下一个头
① SPI:值为[256,232-1]。
② 序列号:单调递增的计数器,表示ESP包的序号。
③ 报文有效载荷:采用加密时是密文,否则为明文。
④ 填充项:将待加密数据填充到4字节边界。
⑤ 填充长度:以字节为单位指示填充项长度。
⑥ 下一个头:表示紧跟在ESP头部后面的协议。
⑦ 验证数据:只有选择验证服务才有该字段。
ESP头部插入到IP头部和传输层协议之间。
1)若使用加密,SPI和序列号不能被加密:
① 若SPI被加密,接收端要解密必须找到SA,而查找SA又需要SPI——根本无法解密数据包。
② 序列号不会泄露明文信息——没必要加密。
不加密也使得不需要解密包就可判断是否重复。
2)若使用验证,验证数据也不会被加密:
• 若SA需要ESP验证,则接收端在解密之前先验证。
• ESP不验证整个IP包,IP包头部不需要验证。
采用AH来验证:更强的验证服务、通信双方是公有IP地址、注重网络传输的性能
• ESP头部插入到新IP头部和原始IP头部之间,对整个IP包进行加密。
• 隧道模式下的IP报文中有两个IP头部:
① 里面IP头部(原始IP头部):含有真实的源IP地址和目的IP地址;
② 外面IP头部(新IP头部):IP地址是安全网关的IP地址,这样两个子网中的主机可以安全通信。
外部IP头部:(1)不被加密:路由器需要这些信息来寻找路由(2)不被验证:为了能穿越NAT
通信方是私有IP或在安全网关后,仍可使用ESP。
ESP隧道模式比ESP传输模式安全功能强大。
IPSec VPN更多使用ESP隧道模式。
若带宽利用率是关键问题,则用传输模式更适合。
发送方封装时:先用ESP对原始报文加密、再用AH进行完整性计算
接收方解封时:先对数据进行完整性验证、再对通过验证的数据解密 (因为解密非常耗时)
IP头+AH头+ESP头+被保护数据包
IKE(Internet密钥交换)协议可自动管理SA的建立、协商、修改和删除,是IPSec唯一的密钥管理协议。
ISAKMP(安全关联密钥管理协议):① 定义协商、建立、修改和删除SA的过程/格式;② 为SA的属性和使用SA的方法提供了通用的框架。• 未定义具体的SA格式。• 未定义任何密钥交换协议的细节。• 未定义具体的加密/认证算法、密钥生成技术。 ——它与密钥交换独立,可定义多个密钥管理协议 IKE用OAKLEY密钥交换,是ISAKMP的实例化
交换模式 | 阶段作用 | 阶段功能 | 总的功能 | |
---|---|---|---|---|
第一阶段 | 主/野蛮模式 | 协商并创建一个通信信道IKE SA | 对信道进行验证;验证对方公钥证书 | 预先在通信实体间建立一个安全关联 |
第二阶段 | 快速模式 | 使用已建立的IKE SA建立IPSec SA | 协商建立用于IPSec协议的SA |
• 利用ESP的漏洞(是否真正提供验证数据)进行DoS攻击。
• 最多的攻击可能是“实现方式攻击”:由厂商决定选择哪种算法,但这种强制性会降低安全性。
• 接收方已终止会话,但发送方还会发数据,此时如何阻止接收方接收?
• 若接收端使用不安全CA,同时攻击者破坏了该CA,将来所有通信都很脆弱。
• 为IP安全提供统一和切实可行的解决方案
• 对应用程序和终端用户透明
• 在IP层加密和/或认证所有流量
• IPSec报文类似于普通IP报文,无须改变中间网络设备就能通过任意IP网络
• IPSec协议的设计和实现有其独特的优越性
① 使用IPSec加重路由器负担,很难得到网络运营商支持;
② IPSec的复杂也使得它的应用出现很多问题。
互操作性、浏览器的支持、QoS保证、支持多协议通信、穿越NAT
1)电子邮件的内容是公开的和可获取的。
2)邮件在网络上反复复制,传输路径不确定,易遭到窃取、篡改、假冒甚至破坏。
1)机密性——只有真正的接收方才能阅读邮件
2)完整性——电子邮件在传输过程中不被修改
3)认证性——信息的发送者不被假冒
4)不可否认性——发信人无法否认发过电子邮件
1)垃圾邮件——增加网络负荷,占用服务器空间
2)诈骗邮件——能迅速让大量受害者上当
3)邮件炸弹——短时间内向同一邮箱发送大量电子邮件
4)通过电子邮件/附件传播网络蠕虫/病毒
5)电子邮件欺骗、钓鱼式攻击邮件具有单向性和非实时性——不能通过建立隧道来保证安全,只能对邮件本身加密
• 在邮件标准格式上增加加密、认证和密钥管理
• 在MIME之前出现,所以不支持MIME
• 依赖一个既存的、完全可操作的PKI,发展被限制
• PEM像一个OSI标准,PGP像一个Internet软件包
• 符合PEM的绝大多数规范,但不要求存在PKI
• 创造性结合公钥加密的方便和对称加密的高速度
• 数字签名和密钥管理机制设计巧妙
• 不仅功能强大,速度快,而且源代码公开
• 并非只能用于邮件传输,任何支持MIME的传输机制都可使用,如HTTP
• 对电子邮件最有效,因为必须保证邮件本身安全
• 认证机制依赖于层次结构的CA(Tree of Trust)
• 证书格式采用X.509规范,但支持的厂商比较少
• Philip Zimmermann于1991年发布PGP 1.0
• 可在各种平台(Windows、UNIX等)免费运行
• 还可用于普通文件加密及军事目的
• 所用算法被证实为非常安全:
1)公钥加密算法RSA、DSS和Diffie-Hellman
2)对称加密算法IDEA、3DES和CAST-108
3)散列算法SHA-1
1)使用散列函数对邮件内容签名,保证信件内容不被篡改;
2)使用公钥和对称加密保证邮件内容机密且不可否认;
3)公钥的权威性由收发双方所信任的第三方签名认证;
4)事先不需要任何保密信道来传递对称的会话密钥。
• “信任”或是双方的直接关系,或是通过第三者、第四者的间接关系。
• 任意两方对等,整个信任关系构成网状结构。
• PGP没有严格CA的约束,用户自行决定信任谁。
• 若把使用PGP的用户限制在一定范围,则PGP比PEM更安全,因为信任链由用户自己维护。
PGP加密系统的安全性主要取决于RSA和IDEA的破解难度
数字指纹、数字身份证、数字签名、数字信封、数字证书机密性、完整性、不可否认、发送方鉴别
• MD5散列任意长度的报文,产生108位的报文摘要。
• 报文摘要唯一对应原始报文,如果原始报文改变并再次散列,生成的报文摘要不同。
• 接收者收到的报文摘要应与对收到的邮件明文进行散列得到的散列值匹配,否则报文不完整。
用发送方A的RSA私钥PRA对明文的散列加密,即实现数字签名:
1)只有用发送方公钥才能解开,实现了发送方对所发送报文的不可否认性;
2)还保证了数据的完整性;
3)同时签名速度比较快。
4)利用数字签名一定程度上认证了发送方的身份。
1)先签名,后压缩 若对压缩的消息签名,对验证签名的结果进行动态解压缩的算法则很不稳定。
2)先压缩,后加密
• 减少了网络传输时间和磁盘空间
• 压缩实际上也是一种“混淆”
• 先加密后压缩,压缩效果较差
链式加密(数字信封):
1)用接收方B的公钥PUB加密对称的会话密钥KS
2)以KS为IDEA密钥对压缩的明文加密
既有RSA加密的保密——安全传递IDEA密钥
又有IDEA算法的快捷——保证消息自身的安全优点:
1)发送方随机产生KS,不需和接收方协商
2)一次KS的泄漏不影响其他次密文传递的安全
3)用RSA公钥PUB对KS加密保证加密的速度
• base64转换导致消息大小增加33%
• 压缩的效果不仅可补偿base64转换导致的膨胀,还可大大减少占用空间
PGP报文大小受限于最大报文长度(50000个字节)的限制:
• 分段在所有其他处理(含base64转换)之后才进行
• 会话密钥和签名部分只出现在第一个报文段开始
• 接收端剥掉所有的电子邮件首部,才能重新装配成原来的完整分组
1)报文:实际存储或传输的数据如文件名、时间戳。
2)签名(可选):消息摘要、产生签名的时间戳、消息摘要的头两个字节、发送者的公钥标识。
★ 报文和签名用ZIP压缩再用会话密钥加密。
3)会话密钥(可选):会话密钥和接收者公钥标识。
★ 整个消息用base64转换编码。
★ 公钥加密体制解决了对称加密体制中密钥分配难的缺点。
★ 公钥虽不存在泄露问题,但可能被篡改。
★ 公钥加密体制基础——用户必须确信他所拿到的公钥属于它看上去属于的那个人(公钥的真实性)
用户要得到介绍人真实公钥并信任介绍人
(相对比较容易,而黑客想假冒很困难)
私钥不存在被篡改的问题,但存在泄露的问题:
1)RSA私钥是个很长的数字,不可能将它记住。
2)用户为随机生成的RSA私钥指定一个口令,只有给出口令才能将私钥释放出来使用。
3)所以首先要对用户口令保密,私钥文件本身失密也很危险。
口令或私钥的泄密、公钥被篡改、删除的文件被恢复、病毒和特洛伊木马、物理安全受到侵犯、电磁泄露暴露于多用户系统中、信息量分析、密码分析
GP依赖于四个关键部分的安全性:
★对称加密算法IDEA
★公开加密算法RSA
★单向散列函数MD5
★随机数产生器
Internet对信息保密和系统安全的考虑并不完备:
• Web服务是动态交互(双向);
• Web服务使用广泛而且信誉非常重要;
• Web服务器难以配置,底层软件复杂,隐藏安全漏洞;
• 编写和使用Web服务的用户安全意识相对薄弱,相关的脚本程序易出现安全问题。
——攻击与破坏事件层出不穷,需要安全Web服务。
主动攻击:伪装成其他用户、篡改C/S之间信息或篡改Web站点信息(难预防但易检测)
被动攻击:监听数据流获取信息或进行信息量分析(难检测但易预防)
威 胁 | 后 果 | 对 策 | |
---|---|---|---|
完整性 | 修改用户数据 特洛伊木马 内存修改 修改传输的信息 |
信息丢失 机器暴露 易受其他威胁 的攻击 |
数据的校验和 完整性校验码 |
机密性 | 网络监听 窃取服务器数据 窃取浏览器数据 窃取网络配置信息 |
信息暴露 泄露机密信息 |
加密算法, Web代理 |
拒绝 服务 |
中断用户连接 伪造请求淹没服务器 占满硬盘或耗尽内存 攻击DNS服务器 |
中断 干扰 阻止用户正常工作 |
难以防范 |
认证 鉴别 |
冒充合法用户 伪造数据 |
非法用户进入系统 相信虚假信息 |
加密和 身份认证技术 |
Web服务越强大,包含安全漏洞概率就越高。
HTTP服务可在不同权限下运行:
1)高权限下提供更大灵活性,允许程序执行所有指令,并不受限制地访问系统高敏感的特权区域;
2)低权限下在所运行程序周围设置逻辑栅栏,只允许它运行部分指令和访问系统中不敏感的数据区。
大多数情况下HTTP服务只需运行在低权限下。
活动内容:静态页面中嵌入的对用户透明的程序——显示动态图像、下载和播放音乐等。
原来由服务器完成的辅助功能转交给空闲的浏览器。
用户查看这种页面时,它们会自动下载并在浏览器上运行。
破坏浏览器的人将破坏性的活动内容放进看起来无害的页面。
监听程序会威胁通信信道中所传输信息的机密性
伪造、篡改、重放会威胁所传输信息的完整性
缺乏身份认证使得冒充他人身份进行中间人攻击
缺乏数字签名机制使得通信双方能相互攻击
拒绝服务攻击使得通信信道不能保证可用性
从网络下载程序并在本机运行,就相当于接受程序开发者的控制——没有一个操作系统能控制一个已经开始执行的程序的权限。
1)Java 1.0 独立的Java Application为可信任(访问系统资源无限制)。
网络下载的Java Applet为不可信任,不允许访问本地文件系统和其他程序,极大限制了它的功能。
2)Java1.1 有些Applet装入前验证其是由信任方签名,且签名未被修改,它就可信任。
优点:增加许多有用功能。
缺点:Applet或者不可信任,受到沙盒限制;或者可信任,不受任何限制,破坏了最小权限原则。
3)Java 2.0 引入实现最小权限原则的安全体系结构,定制安全策略。
IPSec提供端到端的安全机制,是一个通用解决方案。
各种应用程序不需修改就可享用IPSec提供的安全机制,也减少了安全漏洞的产生。
SSL或TLS可作为基础协议栈的组成部分,对应用透明;也可直接嵌入到浏览器中使用。
使用SSL或TLS后,传送的应用层数据会被加密,从而保证通信的安全。
特定安全服务为特定应用定制体现,将安全服务直接嵌入在应用程序中。
Secure Socket Layer,安全套接层协议,会话层,由Netscape推出。
• 主要实现Web服务器和浏览器之间的安全通信。
• 在应用层协议和TCP/IP 协议之间提供机密性、完整性、服务器认证及可选的客户机认证的机制。
• 介于HTTP与TCP之间的一个可选层,绝大多数应用层协议可直接建立在SSL之上。
• SSL不是一个单独的协议,而是两层协议。
SSL握手协议:建立连接C/S双方的安全通道并相互鉴别
SSL记录协议:封装高层的协议,执行数据的安全传输
SSL握手协议:用公开加密算法验证服务器身份,并传递客户端产生的对称的会话密钥(先)
SSL记录协议:用会话密钥来加/解密数据(后)
• 机密性:SSL 客户机和服务器之间传送加密数据。
• 完整性:SSL 可避免服务器和客户机之间的信息被破坏。
• 认证性:SSL 握手时要求交换证书,通过验证证书来保证对方身份的合法性。
客户机认证是可选的,否则客户端都得有数字证书并内置相应组件,代价高。
SSL不能提供不可否认性,Communicator 4.04浏览器引入“表单签名(Form Signing)”功能。
它对电子商务中包含购买者的订购信息和付款指令的表单进行数字签名。
Change Cipher Spec Protocol具有以下特性:
① 位于SSL记录协议之上。
② ContentType=20。
③ 协议只包含一条消息(一个值为1的字节)。
把未决状态设置为当前状态,更新当前连接的密钥组,这标志着加密策略的改变。
Alert消息:当握手过程或数据加密等出错或发生异常时,为对等实体传递SSL警告或终止当前连接。
Alert Protocol具有以下特性:
① 位于SSL记录协议之上。
② ContentType=14。
③ 协议包含两个字节:警告级别和警告代码。
Record Protocol描述SSL信息交换过程中的记录格式。所有数据(含SSL握手信息)都被封装在记录中,一个记录由两部分组成:记录头和数据。
SSL记录协议的操作步骤:
将数据分段成可操作的数据块
对分块数据进行数据压缩
计算MAC值
对压缩数据及MAC值加密
加入SSL记录头
在TCP中传输结果单元
内容类型(ContentType):用于处理分段的上层协议类型。
协议版本(ProtocolVersion):标明SSL版本号。
压缩长度(Length):原文分段长度或压缩分段长度。
Handshake Protocol的协商结果是SSL记录协议处理的基础,ContentType为22。协议头有三个部分:
① 消息类型(1B)
② 消息长度(3B)
③ 内容(1B):与该消息有关的参数
SSL v3.0的握手过程用到三种协议:握手协议、更改密码规格协议和警告协议。
——协商协议版本、会话ID、密码组、压缩算法、交换随机数等。
(1)Client Hello消息 客户端将版本号、随机数、会话ID、支持的密码算法组合和压缩算法发给服务器供其选择。
(2)Server Hello消息 该消息做出决定并将决定传回客户端:版本号、会话ID、服务器随机数、选择的密码算法组合和压缩算法。
——发送服务器证书,并请求客户端证书(可选)。
(3)Certificate消息 服务器发送自己证书给客户端以证明自己身份。
(4)Server Hello Done消息 服务器向客户端表明Server Hello结束。
(5)Client Key Exchange消息 客户端用服务器的公钥加密预主密钥发送给服务器,以便双方协商会话密钥。
——改变密码组,完成握手。
(6)Change Cipher Spec消息 表示记录加密及认证的改变,指示将启用新密钥。
(7)Finished消息 客户端收到Finished消息表明服务器已用私钥解开预主密钥,并最终生成了正确的会话密钥。特殊消息ClosureAlert:可以结束连接,防止截断攻击。
1)预主密钥 master_secret SSL会话密钥
2)能否保证随机数质量也是SSL的安全隐患。
3)有可能遭受中间人攻击。
4)利用SSL的攻击无法被IDS检测和FW过滤到。
5)Web服务器使用SSL时,吞吐量会显著下降。
6)不能保证Web浏览器和服务器自身安全。
master_ secret生成过程(注意hello消息中Random字段)
1)增强master_secret的保密性 预主密钥的口令加密方法和硬件加密方法。
2)提高随机数的质量 用硬件随机数发生器产生的随机数作为产生随机数的软件方法PRNG的种子,进行高强度的处理。
3)提高证书CA的可靠性 在服务器的认证阶段,CA控制所有证书的颁发和有效性判断。
• 编写Transport Layer Security的目的是不要再出现新的易混淆的协议,并提供可扩展性和兼容性。
• TLS在传输层源和目的实体间建立了一条安全通道,提供基于证书的认证、数据完整性和机密性。
• TLS v1和SSL v3差别很小,现在网上用得比较多的是TLS v1.2和v1.3。
1)数据安全:用于在两方之间建立安全连接。
2)互操作性:TLS一方可在不知道另一方代码时成功交换加密信息。
3)可扩展性:避免重建一种全新的协议;避免重新实现一个全新的安全库。
4)系统效率:使用缓存机制以减少需要建立的连接数,还非常注意减少网络流量。
• 唯一免费且具有完整功能的SSL实现,用C语言开发,能在各种主流平台工作。
• OpenSSL项目实现SSL v2/v3和TLS v1以及一个强大通用的密码库。
• VOIP的OpenH323协议、Apache服务器、Linux安全模块的安全部分都使用OpenSSL的库。
防火墙是一种装置:
由软件/硬件设备组合而成,
通常处于企业的内部局域网与Internet之间,
限制Internet用户对内部网络的访问以及管理内部用户访问Internet的权限。
防火墙隔离安全可信的内部网络和不安全可信的外部网络,是一个网络边界安全系统。
1)无防火墙时整个内网安全性完全依赖每个主机,所有主机都必须达到一致的高度安全水平。
2)而防火墙只运行专用的访问控制软件(没有普通主机运行的服务),相对少一些缺陷和安全漏洞,安全管理更为方便,使内部网络更加安全。
防火墙的原则是在保证网络畅通的情况下,尽可能保证内部网络的安全。
它是一种被动的技术,是一种静态安全部件。
(1)内外网之间所有数据流必须经过防火墙。防火墙无法监控不通过防火墙的流量,不能处理内部攻击。
(2)只有符合安全策略的数据流才能通过防火墙。
(3)防火墙具有高可靠性,应对渗透免疫,即它本身是不可被侵入的,否则黑客就相当于进入内网。防火墙对数据流的处理方式:
①允许数据流通过;
②拒绝数据流通过;
③将这些数据流丢弃。
(1)隔离不同的网络,限制安全问题的扩散。
(2)记录经过防火墙的数据包,监视网络的安全性。
(3)部署NAT的地点。
(4)审计和记录Internet使用费用的一个最佳地点。
(5)作为IPSec的平台。
(6)内容控制功能。
(1)有些网络攻击可以绕过防火墙。
(2)不能防范来自内部网络的攻击。
(3)内部用户可能会过于信任和依赖防火墙。
(4)防火墙不能完全防止后门攻击。
(5)不能对被病毒感染的程序和文件进行过滤。
(6)过滤规则静态的,不能防范全新的网络威胁。
(7)与虚拟专用网的结合使用存在问题。
(8)可能带来传输延迟、瓶颈以及单点失效问题。
(9)防火墙不能防止数据驱动式攻击。
分组过滤路由器,网络层防火墙
最基本、最早期的防火墙技术(静态)——不检查数据包的数据内容,只检查包头中的地址、协议、端口等信息来决定是否允许此数据包通过。
过滤规则设置的默认原则:
(1)默认拒绝:规则允许的数据包才可以通过防火墙,其他都不能通过,是安全实用的方法。
(2)默认允许:规则拒绝的数据包才不可通过防火墙,其他都可以通过,是灵活的方法。
•数据包协议类型TCP、UDP、ICMP、IGMP等。
• 源/目的IP地址。
• 源/目的端口FTP、HTTP、DNS等。
• IP选项:源路由、记录路由等。
• TCP选项SYN、ACK、FIN、RST等。
• 其他协议选项ICMP ECHO、ICMP REPLY等。
• 数据包流向in或out。
• 数据包流经网络接口eth0、eth1。
(1)通常不能对付某些类型的拒绝服务攻击——基于包损坏、SYN Flood或其他基于TCP/IP的异常。
(2)静态包过滤防火墙不能跟踪会话的状态数据。管理员被迫保持所有824以上的端口。
(3)支持极繁忙网络的包过滤防火墙会引起网络性能降级和更高的CPU负载。
状态检测(Stateful Inspection)防火墙又称动态防火墙。
1)静态包过滤:由于缺少“状态感知”(State Aware)能力,在遇到利用动态端口的协议时会发生困难。防火墙需要将所有可能用到的端口打开。
2)状态检测:通过检查应用程序信息(如FTP的PORT和PASV命令),来判断此端口是否需要临时打开;当传输结束时,端口又恢复为关闭状态。
1)状态检测是一种相当于4、5层的过滤技术;
2)采用一种基于连接的状态检测机制,在防火墙的核心部分建立数据包的连接状态表,将属于同一个连接的所有包作为一个会话整体看待;
3)可以收集并检查许多状态信息,过滤更加准确;
4)提供比包过滤防火墙更高的安全性和更灵活的处理,几乎支持所有服务,且比应用层网关速度快。举例:状态检测防火墙适合过滤SYN+ACK扫描包
优点:实现简单、速度快、费用低,对用户透明。
缺点:
• 过滤规则制定复杂,容易出现配置问题;
• 只检查地址和端口,而源地址/端口可以伪造;
• 不能彻底防止地址欺骗攻击、微小分片攻击;
• 容易造成数据驱动式攻击、隐藏通道攻击的潜在危险;
• 不能理解特定服务内容,只能进行主机级认证;
• 有些协议不适合使用包过滤,如FTP。
应用层防火墙——检查进出的数据包,通过自身复制传递数据(即直接路由转发),防止在受信主机与非受信主机间直接建立联系。
基本工作过程:
客户机首先将数据请求发给代理服务器,
代理服务器根据这一请求向服务器索取数据,
代理服务器将来自服务器的数据返回给客户机。
在这个过程中,应用层网关对数据包的内容进行逐个检查和过滤。
优点:
1)常用的应用层网关已有相应的代理服务软件;
2)较好的访问控制能力,是目前最安全的防火墙;
3)具有很强的日志、统计、报告和审计功能;
4)提供内容过滤、用户认证、页面缓存和NAT功能。
缺点:
1)实现麻烦,新应用没有相应的代理服务,它们只能使用网络层防火墙和一般的代理服务;
2)维护比较困难,效率明显不如网络层防火墙。
在应用网关上运行的专门的应用代理程序,一方面代替服务器与客户程序建立连接,另一方面代替客户程序与服务器建立连接。
代理服务器将内部网客户和Internet隔离,从Internet中只能看到该代理服务器而无法获得任何内部客户的信息。
TIS的Firewall Toolkit(FWTK):包括Telnet网关、FTP网关、rlogin网关和SSL网关等。
优点:
1)缓解公有IP地址空间短缺问题;
2)隐蔽内部网络拓扑信息;
3)理解应用协议,可以实施更细粒度的访问控制;
4)较强的数据流监控、记录和报告功能;
5)能实现用户级(应用层)认证。
缺点:
1)每一类应用都需要一个专门的代理,灵活性不够;
2)每种网络应用服务的安全问题不同,分析和实现困难而且速度慢。
堡垒主机(Bastion Host)
1)硬件:一台普通主机(操作系统要求可靠性好、可配置性好);
2)软件:配置应用网关和服务代理程序。
作用:内部网络和Internet的通信桥梁,中继所有网络通信服务,具有认证、访问控制、日志、审计功能。
位置:位于内部网络最外层,最容易遭受入侵。它是内部网络上外界惟一可以访问的点,在整个防火墙系统中起着重要作用,是整个系统安全关键点。
双宿主机内外的网络通过双宿主机的应用层代理服务实施通信,但内外网络之间不可直接通信。
1)禁止网络层的路由转发功能;
2)应具有强大的身份认证系统;
3)尽量少安装应用程序和服务;
4)尽量减少防火墙上用户的账户数。
1)过滤路由器:将所有进入的信息先送往堡垒主机,并且只发出来自堡垒主机的数据。
2)堡垒主机:Internet上的主机能连接到的唯一的内部网络上的系统。
屏蔽主机防火墙:强迫所有外部网络到内部网络的连接通过此过滤路由器和堡垒主机,而不会直接连接到内部网络,反之亦然。安全性更好一些。
过滤路由器的路由表应当受到严格的保护,否则数据包直接进入内部网。
增加了一个隔离内部网络与Internet的周边网络(DMZ),DMZ中的堡垒主机运行可向Internet开放的各种网络应用(如Web、SMTP、FTP、外部DNS服务)。
外部路由器用来保护堡垒主机免受侵害,
内部路由器用来防备因堡垒主机被攻破而对内部网络造成危害。
不透明接入:需要修改网络拓扑结构,内部子网用户要更改网关,路由器要更改路由配置,路由器和子网用户需要知道堡垒主机的IP地址。具有透明代理功能的堡垒主机对路由器和子网用户而言是完全透明的,犹如网桥一样。典型的透明接入技术包括ARP代理和路由转发。
分布式防火墙是三部分组成的立体防护系统:
(1)网络防火墙(Network Firewall):它承担着传统边界防火墙看守大门的职责;
(2)主机防火墙(Host Firewall):它解决了边界防火墙不能很好解决的问题(例如来自内部的攻击和结构限制等);
(3)集中管理(Central Management):它解决了由分布技术而带来的管理问题。保证系统的安全、性能稳定高效、扩展性。
充分发挥各自长处,协同配合,共同建立一个有效的安全防范体系:
(1)把入侵检测系统、病毒监测“做”到防火墙中,使防火墙具有简单的入侵检测和病毒检测功能。
(2)各个产品分离,但是通过某种通信方式形成一个整体,即专业检测系统专职于某一类安全事件的检测,一旦发现安全事件,则立即通知防火墙,由防火墙完成过滤和报告。
(1)用专门芯片负责访问控制、设计新的技术架构。
(2)结合虚拟专用网和入侵检测技术的防火墙。
(3)混合使用包过滤/代理服务技术和其他新技术。
(4)IPv6的使用对防火墙的建立与运行产生影响。Gauntlet 3.0Karl Bridge/Karl BrouterAdaptive Proxy
虚拟专用网(Virtual Private Network):
• 在两台计算机之间建立一条专用连接
• 通过隧道技术、加密和密钥管理、认证和访问控制等实现与专用网类似的安全性能
• 从而达到在Internet上安全传输机密数据的目的任意两个节点之间没有端到端的物理链路,而是架构在Internet上的逻辑网络。
是构建VPN的核心技术,叠加在IP主干网上运行。
1)通过加密和鉴别以确保安全
2)由VPN封装成IP包的形式
3)通过隧道在Internet上安全传输
4)离开隧道后,进行解封装,数据便不再被保护
1)通过拨号和专用的租赁线路互连——功能少,成本高昂,开通速度缓慢2)通过X.25的虚电路构造
3)通过FR/ATM的永久虚电路构造
4)具有Internet和专用网两者优点的IP VPN—— 目前意义上的VPN
通过逻辑隔离(路由信息隔离)Internet实现VPN,安全性可达专用网水平。
• 对应用层透明,应用程序无需修改就可利用
• 最安全的IP协议,已成为新一代Internet安全标准
• 仅支持TCP/IP协议簇,仅提供包过滤的访问控制
• 仅实现基于IP地址的认证,比用户认证安全性差
通用(全部)路由封装协议:
• 在IP包中封装任何协议(IP/IPX/NetBEUI)数据
• 将使用私有地址的网络互联
1)没有加密功能,所以经常与IPSec一起使用;
2)同样具有基于隧道的实现方式的缺点;
3)手工配置和维护费用较高。 适用小型点对点的网络互联、实时性要求不高场合
SSL VPN:使用支持SSL的Web浏览器,就可以建立安全通道访问远程应用。
• SSL VPN与IPSec VPN的最大不同是无客户端。
(客户/服务器模式——>浏览器/服务器模式)
• 容易受到键盘记录软件和特洛伊木马的攻击
以IPSec VPN作为远程接入和点对点连接方案,辅以SSL VPN作为远程访问Web服务的方案。
• SOCKS v5纠正了以前版本错误,提供认证、加密、数据完整性。
• 对认证、加密、密钥管理提供插件式支持,使得SOCKS数据包能安全透明地通过防火墙。
• 充分屏蔽底层技术差别并实现与应用层防火墙的互操作,最适合构造Extranet VPN。
• 整体性能较差,管理复杂,且推广使用较晚。
• 在主机和远程服务器之间设置应用层的“加密隧道”
• 支持rlogin、 FTP 、Telnet、POP3、X9应用程序
• 提供主机/用户认证、数据压缩、机密性和完整性
• 相对于其他VPN和专业防火墙,SSH尤其适合中小企业部署VPN应用。
1)自愿隧道:客户端计算机安装隧道客户软件(作为隧道端点),发送VPN请求配置一条自愿隧道
——为每个客户独立创建一条自愿隧道
2)强制隧道:由支持VPN的拨号接入服务器(作为隧道端点)来配置和创建
——它和隧道服务器之间建立的隧道可以被多个拨号客户共享
1)加密密钥由用户口令生成,而最早的口令以LanManager散列值形式存放,它的安全性很低。
2)后来的NTLM散列值比LanManager散列值安全,但仍没有使用填充数据(即“加盐”)。
3)PPTP使用的安全认证协议MS-CHAP依赖于某个可被破解密码函数。
4)产生会话密钥的种子信息根据用户口令产生,而存放NTLM散列值的口令文件易于被攻击。
5)重复使用会话密钥使得RC4的加密强度大大降低。
结合使用L2TP(远程隧道访问)和IPSec(封装和加密)实现身份认证、机密性保护、完整性检查和抗重放。
★ IPSec——最安全、适用面最广的IP协议
★ SSL——具有高层安全协议的优势
★ L2TP——最好的实现远程接入VPN的技术
★ 宽带和无线VPN安全协议
★ 各种现有VPN技术结合——IPSec与SSL、IPSec与L2TP
防火墙是可以看作是网络安全的第一道防线
但防火墙也存在这一些局限性
入侵者可寻找防火墙背后可能敞开的后门
不能阻止内部攻击
通常不能提供实时的入侵检测能力
不能主动跟踪入侵者
不能对病毒进行有效防护
需要入侵检测系统作为防火墙的有效补充
入侵检测系统包括三个功能部件:信息源、分析引擎和响应部件。
信息源指收集事件记录流,包括网络数据包、操作系统日志等;
分析引擎是入侵检测的核心,指通过分析信息源发现入侵迹象的分析技术;
响应部件指基于分析引擎的结果产生响应的部件,通常包括报警、切断网络连接等处理方法。
监视用户和系统的活动,查找非法用户和合法用户的越权操作。
审计系统配置的正确性和安全漏洞,并提示管理员修补漏洞。
对用户的非正常活动进行统计分析,发现入侵行为的规律。
检查系统程序和数据的一致性与正确性。
能够实时地对检测到的入侵行为进行反应。
操作系统的审计跟踪管理。
基于主机的IDS(Host-based Intrusion Detection System, HIDS):通过监视和分析所在主机的审计记录检测入侵。
基于网络的IDS(Network-based Intrusion Detection System, NIDS):通过在共享网段上对主机之间的通信数据进行侦听,分析可疑现象。
异常检测(Anomaly detection)系统:假定所有的入侵行为都与正常行为不同,建立正常活动的描述,当主体活动违反其统计规律时,则将其视为可疑行为。
误用检测(Misuse detection)系统:假定所有入侵行为和手段(及其变种)都能够表达为一种模式或特征,系统的目标就是检测主体活动是否符合这些模式,如果符合则视为可疑行为。
混合检测(Hybrid detection)系统:同时使用以上两种方法
集中式的IDS:集中式IDS的数据分析在一个固定的位置上,独立于受监视主机。
分布式的IDS:分布式IDS的数据分析在很多位置进行,和被监视主机的数量成比例。
该技术首先假设网络攻击行为是不常见的或是异常的,区别于所有正常行为。
入侵行为偏离了正常的行为轨迹,就可以被检测出来。
需要解决以下四个问题:
选取有效的统计数据测量点,生成能够反映主体特征的会话向量。
根据主体活动产生的审计记录,不断更新当前主体活动的会话向量。
采用统计方法分析数据,判断当前活动是否符合主体的历史行为特征。
随着时间变化,学习主体的行为特征,更新历史记录。
预测模式生成
神经网络
误用检测(Misuse Detection)也称基于知识的检测
它是指运用已知攻击方法,根据已定义好的入侵模式,通过判断这些入侵模式是否出现来检测。
这种方法与大部分杀毒软件采用的特征码匹配原理类似
专家系统——根据安全专家对可疑行为的分析经验来形成一套推理规则,然后在此基础上建立相应的专家系统
模型推理——根据入侵者在进行入侵时所执行的某些行为序列的特征,建立一种入侵行为模型
状态转换分析——状态转换法将入侵过程看作一个行为序列,这个行为序列导致系统从初始状态转入被入侵状态。
为了有效地开发入侵检测系统,IETF的Internet草案工作组(Intrusion Detection Working Group,IDWG)专门负责定义入侵检测系统组件之间,及不同厂商的入侵检测系统之间的通信格式。但目前只有相关的草案(Draft),还未形成正式的RFC文档。IDWG文档有:
入侵警报协议(Intrusion Alarm Protocol, IAP)
入侵检测交换协议(Intrusion Detection Exchange Protocol, IDXP)
误警率高。
误警(false positive)
漏报(false negative)
检测速度慢。目前大多数IDS产品的检测速度比较慢,不适应检测高于1Gb/s网络速度。
扩充性弱。难以检测到新的或未知形式的攻击。无法破解加密入侵命令。
分布式通用入侵检测架构
应用层入侵检测
智能入侵检测
入侵检测系统的自身保护
入侵检测评测方法
与其他网络安全技术相结合(如防火墙等)
IDS正呈现出新的发展态势,IPS (Intrusion Prevention System,入侵防御系统)和 IMS(Intrusion Management System,入侵管理系统)就是在IDS的基础上发展起来的新技术
大致经历了三个阶段入侵检测系统。
IDS能够帮助网络系统快速发现网络攻击的发生
IPS技术综合了防火墙、IDS、漏洞扫描与评估等安全技术,可以主动地、积极地防范、阻止系统入侵,
IMS技术实际上包含了 IDS、IPS的功能,并通过一个统一的平台进行统一管理
• “蜜罐”(Honeypot)——主动防御技术
• 对攻击者给予“诱骗”反应,使其相信被攻击系统安全性很差
作用:
消耗攻击者拥有的资源
增加攻击者的工作量
迷惑攻击者以延缓对真正目标的攻击
掌握攻击者行为跟踪攻击者
形成威慑攻击者的力量
• 吸引并诱骗试图非法闯入他人计算机的人
• 用被攻击系统的特征吸引攻击者,同时分析各种攻击行为
• 开启通常被黑客窥探的危险端口来模拟漏洞系统
• 故意留下安全后门来吸引攻击者上钩,或者故意放置虚假的敏感信息
1) Honeypot模拟易受攻击主机,本身未向外提供有价值服务,与其进行连接的行为均可疑。
2)Honeypot保护关键系统:它就像一台真实服务器,易吸引黑客。
3)Honeypot是用来被探测、被攻击和最后被攻陷的,利用蜜罐可发现新型攻击。
4)Honeypot是其他安全策略所不可替代的一种主动防御技术,可以与其他技术结合使用。
网卡设置为stealth mode:混杂模式+没有IP地址;——攻击者无法发现
IP地址不公开,但可访问;不需设置混杂模式
1)将蜜罐与任何真实产品系统隔离,一般将它放在离Internet最近的位置(如DMZ上)。
2)蜜罐不公开自己的IP地址和端口,对蜜罐的所有访问都可能是攻击。
3)蜜罐所捕获数据的针对性强,所以在一定程序上克服IDS的不足:误报率高及漏报新的攻击。
4)将多种网络防御系统结合来防范网络攻击: 被防火墙拦截的访问请求通过自动路由转发指向蜜罐
因为这种访问请求很可能是攻击包。
5)蜜罐的日志记录系统应在物理上独立于蜜罐本身。
6)允许蜜罐与外网主机自由通信,但应限制蜜罐对一台内网/外网主机同时发起的连接数。
(1)空系统 运行真实操作系统及应用程序的标准机器—— 从中可找到真实系统的各种漏洞,没有刻意模拟某种环境或故意使系统不安全。
(2)镜像系统 空系统易被发现——建立提供网络服务的与真实服务器基本一致的镜像系统,更能欺骗攻击者。
(3)虚拟系统 在真实机器上运行仿真软件VMware来实现硬件模拟,使得可以在硬件仿真平台上运行多个不同操作系统——一台真实机器模拟出多台虚拟机。
VMware还支持网卡模拟:每个虚拟机拥有独立IP地址,即一台真实机器可模拟出连接在网上的多台主机,形成虚拟局域网。
这些虚拟系统不但逼真,且成本较低,部署和维护容易,资源利用率高。
由多个蜜罐、路由器、防火墙、IDS、审计系统组成,为攻击者制造被攻击环境,供防御者研究攻击行为。
功能:蜜罐系统、数据控制数据捕获、数据记录数据分析、数据管理
最新的陷阱网络技术——虚拟陷阱网络(Virtual Honeynet),将陷阱网络所需功能集中到一个物理设备中运行。
桥接网关HoneyWall的eth0/eth1接口无IP/MAC地址,也不对转发数据包路由和递减TTL,很难被发现。
相对独立的日志服务器使用内部IP地址,防范严格 。
(1)基于网络地址转换技术的诱导 把攻击引向事先设定好的诱骗主机,优点是设置简单、转换速度快且成功率高。
(2)基于代理技术的诱导 欺骗系统设计得再逼真,真实目标还可能被攻击 ——目标主机使用代理技术将攻击数据流转向蜜 罐,自己成为攻击者和蜜罐之间的桥梁。
(1)端口扫描欺骗信息设计 欺骗系统截获黑客发送的TCP扫描包,发回与实际情况相反的虚假数据包以欺骗攻击者,让他对端口状态判断失误。
(2)主机操作系统欺骗信息设计
1)修改系统提示信息
2)用修改堆栈指纹库欺骗协议栈指纹鉴别技术—— 欺骗的成功率大大提高
(3)口令欺骗信息设计
1)伪装口令产生器:构造的虚假口令会消耗攻击者的计算能力并欺骗攻击者,减少被破解口令个数。
• 即使攻击者破解出复杂口令,但它们是伪装的;
• 即使攻击者知道有伪装口令,但判断口令真伪也降低了攻击效率。
2)口令过滤器:避免用户选择伪装口令产生器产生的口令。
目的 | 特点 | 缺点 | 评价 | |
---|---|---|---|---|
低交互蜜罐 产品型 |
检测和 减轻威胁 |
模拟、监听不发送 | 获得信息有限、易被察觉 | 最安全、 风险最小 |
中交互 蜜罐 |
检测和 分析 |
接近真实系统与真实交互 | 需经常检测蜜罐的状态 | 中等安全、用得少 |
高交互蜜罐 研究型 |
研究攻击手段找到保护方法 | 真实系统、真实交互,不易被察觉 | 被攻陷后易成为黑客的跳板 | 危险大、 使用价值 大 |
3.1 低交互度蜜罐3.2 中交互度蜜罐3.3 高交互度蜜罐
“允许”黑客实施端口扫描、口令破解等攻击并记录。
• 如果网络上很多主机安装DTK,黑客将屡屡碰壁。
• 黑客习惯于在攻击之前先辨别目标系统的真伪。
• 黑客一看到开放TCP 365端口的主机就会放弃。
• 许多未安装DTK的系统只需开放TCP 365端口,黑客会以为是个“蜜罐”而放弃攻击。
特点:
• 用C语言和Perl脚本语言实现
• 监听HTTP、Telnet、FTP等端口,让攻击者错认为被攻击系统不安全,并记录所有攻击行为。
• 模拟常见系统漏洞,送出虚假口令文件,花费攻击者大量时间。
• 缺点:对服务的模拟不逼真,无法欺骗有经验的攻击者,仅限于对已知漏洞的模拟。
• 也是一种低交互度蜜罐,只模拟有限交互的服务。
• 不仅可模拟很多服务,而且可模拟不同操作系统的漏洞,具有大量预警和日志功能。
• 易部署和维护,使用风险很低。
• 缺点:收集到的信息有限,易被发现。
• 运行在UNIX平台上的低交互度蜜罐
• 不只对单个IP地址监视,而是对网络监视。
• 检测到对不存在系统的探测时,Honeyd会动态承担受害系统的角色,与攻击者进行交互。
• 可同时模拟上千台具有不同IP地址的不同主机,虚拟主机可配置运行数百个不同服务和操作系统。
• 运行在Solaris上的中等到高交互度蜜罐
• 没有模拟任何服务,而在一个操作系统上创建多达四种虚拟操作系统(通常称为jail)。
• 数据控制和捕获能力强,可对DNS/Web服务器/数据库等进行测试,交互性及功能和标准系统相同。
• 还可捕获Rootkit、应用层攻击、黑客IRC聊天对话、未知攻击和新的漏洞,使用风险大。
• 由多个具有不同操作系统的真实系统和多个攻击检测应用组成的网络,是高交互度蜜罐的极限。
• 对所有平台的信息捕获能力最强,尤其是新的攻击方式、攻击工具、攻击动机和攻击者通信方法。
• 最难构建控制网络(用于控制和捕获往来于Honeypot的所有活动)。
• 是最难部署和维护的网络诱骗系统。
(1)使用简单 蜜罐起作用前提:如果有人连接就检测并记录它。
(2)占用资源少 仅捕获进入蜜罐的数据,不会出现资源耗尽;很多蜜罐都是模拟服务,不会成为攻击者的跳板。
(3)数据价值高 简化了检测过程,用户能快速找到所需的确切信息,这些数据具有很高研究价值。
(1)数据收集面狭窄 蜜罐的最大缺点是仅可检测到对它进行攻击的行为,对黑客攻击其他系统的行为一无所知。
(2)指纹识别 指纹识别是指蜜罐具备一些预定的特征和行为,因而能被攻击者识别出其真实身份。
(3)给使用者带来风险 具有真实操作系统特性的蜜罐容易成为攻击跳板。
• 增加蜜罐可以模拟的黑客感兴趣的服务类型
• 增加可以使用蜜罐的操作系统类型
• 尽量降低风险的情况下,提高蜜罐的交互程度
• 降低高交互型蜜罐引入的安全风险
• 蜜罐还要记录攻击者在攻陷机器后的所作所为
入侵检测系统IDS,从计算机网络系统中的若干关键点收集信息,并分析这些信息,检查网络中是否有违反安全策略的行为和遭到袭击的迹象。
入侵检测被认为是防火墙之后的第二道安全闸门。,
入侵检测系统的主要功能有:
1)监测并分析用户和系统的活动,查找非法用户和合法用户的越权操作;
2)核查系统配置和漏洞并提示管理员修补漏洞;
3)评估系统关键资源和数据文件的完整性;
4)操作系统日志管理,并识别违反安全策略的用户活动等。
1)最初IDS使用由操作系统生成的审计数据。
2)随着IDS的发展,IDS同样也可以实时报警。,
3)它应该管理配置简单,使非专业人员非常容易地获得网络安全。
4)入侵检测的规模还应根据网络规模、系统构造和安全需求的改变而改变。
5) IDS在发现入侵后,会及时做出响应,包括切断网络连接、记录事件和报警等。
按检测的监控位置划分,IDS可以分为哪三种类型?简单说明每一种的含义?
基于主机的IDS的输入数据来源于系统的审计日志,即在每个要保护的主机上运行一个代理程序,一般只能检测该主机上发生的入侵。
它在重要的系统服务器、工作站或用户机器上运行,监视操作系统或系统事件级别的可疑活动 (如尝试登录失败)。
1)HIDS需要在所有的被监控系统上安装代理程序(非常繁重的工作)。
2)而且对这些大量数目的代理程序进行配置和管理开销也会很大。
3)因此许多企业一般在其关键的机器上安装HIDS系统,其他机器上则使用NIDS设备。
基于网络的IDS一般被动地在网络上监听整个网段上的信息流,通过捕获网络数据包,进行分析和匹配,能够检测该网段上发生的网络入侵。
NIDS最突出的优点是无源的。多数情况下,系统的其他部分甚至不知道NIDS的存在。
多数NIDS设备不适合于高带宽的网络环境。
1)分布式IDS一般由多个部件组成,分布在网络的各个部分,分别进行数据采集、数据分析等。
2)通过中心的控制部件进行数据汇总、分析、产生入侵警报等。
3)不仅可以检测到针对单独主机的入侵,同时也可以检测到针对整个网络的入侵。
最著名的开放源代码入侵检测工具叫什么?“轻量级”的含义是什么?它是一个HIDS还是一个NIDS?为什么是?从检测模式上看,它是异常检测还是误用检测?为什么是?
从检测模式而言,snort属于是误用检测(misuse detection)。
1) NIDS:基于数据包嗅探器;
2)轻量级:检测时尽可能少影响网络的正常操作;
3)开源软件:填补了只有商业IDS的空白;
4)滥用检测:基于规则的入侵检测工具;
5)Snort集成多种告警机制来提供实时告警功能;用户可根据自己需要及时调整检测策略。
IDS有哪两种主要的分析方法?它们各自的原理是什么?简单说明各自的优缺点?
入侵分析的任务就是在提取到的庞大数据中找到入侵痕迹。分析过程需要将提取到的事件与入侵检测规则等进行比较,从而发现入侵。
一方面IDS需要尽可能多地提取数据以获得足够的入侵证据,而另一方面由于入侵行为的千变万化而导致判定入侵的规则越来越复杂。
假定所有入侵行为都与正常行为不同,如果建立系统正常行为轨迹(特征文件Profiles),那么理论上所有与正常轨迹不同的系统状态都可视为可疑企图。
异常检测指根据使用者行为或资源使用状况来判断是否入侵,也被称为基于行为(Behave—based)的检测。
例如,一个程序员的正常活动与一个打字员的正常活动肯定不同:
打字员常用的是编辑/打印文件等命令;
程序员更多地使用编辑/编译/调试/运行。
1)根据各自不同的正常活动建立起来的特征文件具有用户特性。
2)入侵者使用正常用户的账号,但其行为并不会与正常用户行为相吻合,从而可被检测出来。
3)比如,通过流量统计分析将异常时间的异常网络流量视为可疑。
如果事实上的入侵活动集合并不等于异常活动集合,我们会发现有如下可能性:
• 不是入侵的异常活动被标识为入侵,我们称之为误报(False Positives),造成假警报。
• 真正的入侵活动被标识为正常活动,我们称之为漏报(False Negatives),造成漏判。
异常检测的关键问题是如何选择合适的阈值,使得上述两种情况不会无故扩大,以及如何选择所要监视的衡量特征。
异常检测的优点:与系统相对无关,通用性较强,甚至有可能检测出未出现过的攻击。
异常检测的缺点:不可能对所有用户行为进行全面描述,况且用户行为是经常改变的,所以误报率很高。
入侵者如果知道某系统在被监测,他们能慢慢训练检测系统,以致于最初认为是异常的行为,经一段时间训练后也认为正常。
假定所有入侵行为和手段都能表达为一种模式或特征,那么所有已知入侵方法都可用匹配方法发现。
因为很大一部分入侵利用系统的脆弱性,通过分析入侵过程的特征、条件、排列以及事件间关系能具体描述入侵行为的迹象。
误用检测系统的关键是如何从已知入侵中提取和编写特征,使其能覆盖该入侵的所有可能变种,而同时不会匹配到非入侵活动。
误用检测的优点:依据具体特征库进行判断,所以检测准确度很高,且检测结果有明确参照,便于系统管理员采取措施。
误用检测的缺点:
1)只能发现己知攻击,对未知攻击无能为力。
2)太依赖具体系统,系统移植性不好,维护工作量大,且将具体入侵手段抽象成知识困难。
3)检测范围受已知知识的局限,尤其是难以检测出内部入员的入侵行为。
检查计算机中文件自上次检查后的变化情况,功能最全面的是工具Tripwire。
优点:
1)从数学上分析攻克Tripwire不可能。
2)它具有相当的灵活性,可以配置成监测系统中的所有文件或某些重要文件。
Tripwire既能检查出黑客用于隐藏活动修改的文件,也能检查出黑客安装的后门程序。
缺点:
1)依赖于本地的消息摘要数据库。与日志文件一样,这些数据可能被入侵者运行文件完整性检查系统来更新数据库加以修改。
2)一次完整的文件完整性检查非常耗时。Tripwire可以检查某些系统特性以加快速度。
用特有的特征吸引攻击者,同时对攻击者的各种攻击行为进行分析,并找到有效的对付方法。
网络安全专家通常还在蜜罐(Honeypot)上故意留下一些安全后门来吸引攻击者上钩,或者放置一些攻击者希望得到的敏感信息(虚假的)。
当攻击者正为攻入目标系统而沾沾自喜的时候,他的所有行为都已经被Honeypot所记录。
1)Honeypot是试图将攻击者从关键系统引诱开的诱骗系统。
2)Honeypot是一种资源,它的价值是被攻击或攻陷。这就意味着,Honeypot是用来被探测、被攻击和最后被攻陷的。
3)Honeypot不会直接提高计算机网络安全,但它却是不可被替代的一种主动防御技术。
恶意代码泛指所有恶意的程序代码,是一种可造成目标系统信息泄露和资源滥用,破坏系统的完整性及可用性,违背目标系统安全策略的程序代码。
包括计算机病毒(Virus)、蠕虫(Worm)、木马程序(Trojan Horse)、后门程序(Backdoor)和逻辑炸弹(Logic Bomb)等
恶意代码的特征包括三个方面:带有恶意的目的本身是计算机程序一般通过执行来发挥作用
后门:进入系统或程序的一个秘密入口
逻辑炸弹:一段具有破坏性的代码,事先预置于较大的程序中,等待某扳机事件发生触发其破坏行为
特洛伊木马:一段吸引人而不为人警惕的程序,但它们可以执行某些秘密任务
病毒:附着在其他程序上的可以进行自我繁殖的代码
蠕虫:一种具有自我复制和传播能力、可独立自动运行的恶意程序
计算机病毒是一段人为编制的计算机程序代码。
“计算机病毒是指编制或者在计算机程序中插入的、破坏数据、影响计算机使用,并能自我复制的一组计算机指令或者程序代码”
潜伏机制:包括初始化、隐藏和捕捉
传染机制:包括判断和感染。先是判断候选感染目标是否已被感染,可以通过感染标记来判断候选感染目标是否已被感染。
表现机制:包括判断和表现。表现机制首先对触发条件进行判断,然后根据不同的条件决定什么时候表现、如何表现
传染性:通过各种渠道从已被感染的计算机扩散到未被感染的计算机。
隐蔽性:病毒一般是具有很高编程技巧的、短小精悍的一段代码,躲在合法程序当中。
潜伏性:病毒进入系统之后一般不会马上发作
多态性:病毒试图在每一次感染时改变它的形态
破坏性:造成系统或数据的损伤甚至毁灭
按照计算机病毒攻击的操作系统:攻击DOS系统、攻击Windows系统、攻击Unix、Linux系统、攻击Mactonish系统
按寄生方式:引导型病毒、文件型病毒、混合型病毒
按破坏性:良性病毒、恶性病毒
特洛伊木马是一种恶意代码,也称为木马
指那些表面上是有用的或必需的,而实际目的却是完成一些不为人知的功能,危害计算机安全并导致严重破坏的计算机程序
具有隐蔽性和非授权性的特点,因此和希腊传说的特洛伊木马很相似。
一是经济利益驱使,黑客编写一个木马程序非法牟利十几万元的事情并不少见
二是木马程序很容易改写更新,而杀毒软件采用的传统的特征码查毒属于静态识别技术,对于木马程序的不断更新其适应性不强;
三是“木马技术”具有不可判定性
木马程序一般包括控制端和服务端两部分
控制端程序用于攻击者远程控制木马
服务器端程序即木马程序
进行攻击时,第一步要进行特洛伊木马的植入,这是攻击目标最关键的一步——被动植入、主动植入、
启动隐藏:指目标机自动加载运行木马程序,而不被用户发现
进程隐藏:使用户不能发现当前运行着的木马进程
文件/目录隐藏:通过伪装,或隐藏木马文件和目录自身
内核模块隐藏:内核级木马对自身加载模块信息的隐藏
始分发隐藏:软件开发商可以在软件的原始分发中植入木马
通信隐藏:包括通信内容、状态和流量等方面的隐藏
远程控制型木马:可以让攻击者完全控制被感染的计算机
密码发送型木马:专门为了盗取被感染主机上的密码
破坏型木马:破坏被感染主机上的文件系统键盘记录型木马记录受害者的键盘敲击
拒绝服务攻击木马
反弹端口型木马:服务端(被控制端)使用主动端口,客户端(控制端)使用被动端口
代理木马:变为攻击者发动攻击的跳板
隐蔽性。隐蔽性是木马程序与远程控制程序的主要区别
欺骗性。为了达到隐蔽目的,木马常常使用和系统相关的一些文件名来隐蔽自身。
顽固性。很多木马的功能模块已不再是由单一的文件组成,而是具有多重备份
危害性。攻击者可以通过客户端强大的控制和破坏力对主机进行操作。
潜伏性。木马种植到系统后一般不会马上发作,而是要等到与控制端连接之后才会接受指令而动作。
利用工具查杀木马、查看系统注册表、检查网络通信状态、查看目前的运行任务、查看系统启动项、使用内存检测工具检查、用户安全意识策略、纵深防御保护系统安全
蠕虫病毒是一种常见的计算机病毒。它的传染机理是利用网络进行复制和传播,传染途径是通过网络和电子邮件。
最初的蠕虫病毒定义是因为在DOS环境下,病毒发作时会在屏幕上出现一条类似虫子的东西,胡乱吞吃屏幕上的字母并将其改形
蠕虫具有病毒的一些共性,如传染性、隐蔽性和破坏性等蠕虫与病毒的区别在于“附着”。
蠕虫不需要宿主,是一段完整的独立代码
基本程序结构为传播模块、隐藏模块和目的功能模块
传播模块又可以分为扫描、攻击和复制三个基本模块
利用系统漏洞进行传播主要有以下三个阶段
第一阶段要进行主机探测,已经感染蠕虫的主机在网络上搜索易感染的目标主机。
第二阶段已经感染蠕虫的主机把蠕虫代码传送到易感染的目标主机上。
第三阶段易感染的目标主机执行蠕虫代码,感染目标主机系统。
独立性:蠕虫病毒不需要宿主程序,它是完整的、独立的代码
利用漏洞主动攻击
传播方式多样
伪装和隐藏方式好
采用的技术更先进:—些蠕虫病毒与网页的脚本相结合,利用VB Script、java、ActiveX等技术隐藏在HTML页面里。
加强网络管理员的安全管理水平,提高用户的安全意识。
建立安全检测系统:从网络整体考虑,建立相对完善的检测系统,能够在第一时间内检测到网络异常和病毒攻击
利用蠕虫免疫技术防范蠕虫攻击
建立应急响应系统,将风险减少到最小:灾难备份系统。对于数据库和数据系统,必须采用定期备份
对于局域网而言可以采用安装防火墙式、计算机防病毒的产品,对邮件服务器进行监控…