一、概述
1.【重点】基本概念
- CIA(机密性、完整性和可用性)
- 机密性 Confidentiality:避免信息的非授权泄露
- 加密(Encryption)
- 访问控制(Access control)
- 认证(Authentication)
- 授权(Authorization)
- 物理安全(Physical security)
- 完整性 Integrity:确保信息不被非授权修改的属性
- 备份(Backup):定期归档
- 数据校验和(Checksum):计算一个函数将文件内容映射为一个数值。
- 数据纠错码(data correcting codes):检测并纠正数据
- 保护元数据(metadata):描述数据的数据。
- 可用性 Availability:确保授权用户能够对信息进行及时访问和修改的属性(目标用户能使用权限)
- 物理保护:在物理环境恶劣变化时也能够保护信息的可用性。。
- 计算冗余:在部分计算机或者存储设备失效的情况下依然可以提供信息。例如采用磁盘冗余阵列(RAID)和多台计算机。
- 3A(保证,真实性,匿名性)
-
Assurance 保证:指计算机系统中信任 (个人理解为权限及其分配问题)如何被提供和管理
系统资源的管理和保护:确保系统资源如何在设定策略下使用
信息使用方式的管理:确保信息如何在设定策略下使用
信任管理:
- 策略(policy): 指人或者系统对他们或者其他个体的行为预期
- 权限(permission): 指在与人和系统交互时所允许的行为
- 保护(protection): 指为了实施权限和策略所提供的机制
- 例子:在线音乐系统(为用户如何访问歌曲设定策略;为购买特定歌曲的用户提供访问权限;为系统提供保护以防止用户未授权的访问)
-
Authenticity 真实性:确定人或者系统所发布的声明、策略和权限真实性的能力
真实性的满足能够确保在线交易的可行性。
不可抵赖性(Nonrepudiation):一个人或者系统不能否认其所发布的真实声明
主要工具:
- 数字签名(digital signatures): 一种加密计算方法,允许人或者系统以唯一的方式认可与其相关数据的真实性。数字签名可实现不可抵赖性。
- 与纸质签名类比
原题关注:数字签名为确保真实性工具
-
Anonymity 匿名性:确保特定的记录或者交易不归因于任何个体的属性。
不希望隐私泄露,如个体的医疗记录、购物记录等
确保匿名性的方法:
- 数据聚集(Aggregation)
- 数据混淆(Mixing)
- 使用代理(Proxy) (笑死)
- 使用化名(Pseudonym)
2. 十大安全原则
- 机制的经济性
- 故障安全默认配置
- 完备调停
- ……这么多条考个锤子
3. 【重点】四种控制访问模型
-
访问控制矩阵:定义访问权限的表。
- 优点:
- 很容易确定主客体对的访问控制权限;
- 管理者能够简单、直观地观察访问控制;
- 关系控制粒度细。
- 缺点:
- 缺乏可扩展性,访问控制矩阵有可能会很大。
个人总结:详尽但是体积庞杂
- 优点:
-
访问控制列表:对于每个客体o,定义列表L, L为客体o的访问控制列表,该列表列举了所有对客体o有访问权限的主体。
-
优点:
- 与访问控制矩阵比小很多,可将客体的列表以元数据形式存储。
- 缺点:
- 枚举每个主体的访问权限复杂度高。这种枚举是必须的,例如将一个主体从系统中移除的时候。
个人总结:精炼但关系复杂
-
-
能力列表:本质上,能力列表使用访问控制矩阵的每一行并忽略其空白单元格。
- 优缺点与访问控制列表类似。
-
基于角色的访问控制:定义角色,并对角色指派访问控制权限,而不是直接对主体。
-
优点:
- 存储高效,降低需要记录的规则数量
- 缺点:
- 在目前操作系统中未实现。
个人总结:不错,牛逼,很好,不过在梦里才有。
-
3. 【重点】加密概念
-
加密(Encryption):一种手段使得通信双方(Alice和Bob)在易受窃听的不安全信道上建立保密通信。
比如两方通信经过加密解密算法,关键词:对称与非对称加密,公钥私钥
-
数字签名(Digital Signatures):公钥加密体制可以用来构造数字签名。
-
密码学哈希函数(Cryptographic Hash Function):消息M的一个校验和,需要满足单向性和抗碰撞性。
-
消息认证码(Message Authentication Codes):共享密钥,A发送消息与其哈希值,B收到消息再本地验证所收到消息的哈希值。
- 数字证书:比如https,可信机构对网站颁布证书
4. 实现和可用性相关问题
-
效率和可用性:计算机安全解决方案应该高效;
-
【基本理解】对密码的字典攻击:暴力破解会逐一尝试所有可能的组合密码,而字典式攻击会使用一个预先定义好的单词列表(可能的密码);
-
社会工程(Social Engineering)
-
……
二、物理安全
1. 弹子锁
钥匙凹凸对应锁内圆柱高低分布
变成了__的形状
2. 身份认证技术
-
条形码:登机牌
-
磁条卡漏洞:易于读取和复制,如初高中破解饭卡水卡
-
智能卡:包含一个集成电路,可选配一个具有读写功能的板载微处理器
-
【重点】SIM 卡安全
-
SIM卡具有集成电路卡ID(ICCID),这是一个唯一的18位数字,用于硬件识别;
-
SIM卡包含128位密钥。 此密钥用于向移动网络验证电话;
- PIN在访问卡上的信息时作为额外的安全机制
-
- 【重点】GSM挑战 - 响应协议
- 手机连接并发送其IMSI到网络提供商拥有的本地基站;
- IMSI匹配网络提供商的数据库中的用户,则基站将128位随机数发送到手机;
- 随机数由手机编码存储在SIM卡中,用户的密钥使用A3的专有加密算法,从而产生发送回基站的密文;
- 基站使用其存储的用于用户密钥的值来执行相同的计算。 密文匹配,则手机被认证享受相应连接服务。
3. 针对计算设备的攻击
- 环境攻击:攻击(指物化环)
- 窃听
- 信号发射:检测信号
- 键盘记录器
4. ATM
ATM交易的当前行业标准是Triple DES(3DES)密码系统,这是一种传统的对称密码系统,具有高达112位的安全性。
三、 操作系统安全
1. 【重点】进程安全
-
信任传递
- 进程间通信
- 读写文件
- 共享内存
- 管道(pipe)和套接字(socket)
- 信号(signal)
- 进程间通信
-
进程监控
Windows系统可以使用任务管理器查看;Linux可以使用ps、top、pstree、kill等命令
-
管理和日志
事态感知:记录那些进程正在运行、哪些计算机在联网;如果操作系统遇到任何意外或者可疑操作,都会留下重要线索。
2. 【重点】内存与文件系统安全
-
内存安全
- 五段内存区中,每一段都有自己的访问权限,由操作系统执行这些权限;
- 对操作系统安全至关重要:不允许进程访问其他进程的地址空间;
- 加强地址空间边界保护;
- 操作系统一般将地址空间分为两个区:用户空间和内核空间。内核空间是为操作系统内核功能保留的特殊空间,有着最为严格的访问特权。
-
虚拟内存安全
-
Windows系统中,虚拟内存页面存储在C:\pagefile.sys中
-
Linux系统需用户自己设定一个硬盘分区作为交换分区,存储内存页面
-
关闭计算机时,硬盘上的虚拟内存页面会被删除
-
虚拟内存安全问题:如果攻击者突然将计算机断电,没有正常关闭计算机,此时虚拟内存页面可能未被删除攻击者通过外部介质引导另一个操作系统,能够查看这些文件并重建部分内存,导致信息泄露
解决办法:对硬盘内容进行加密
-
-
认证
- 通过身份验证
- 防范字典攻击:使用密码盐(password salt)技术:它是一种加密技术,使用随即位作为散列函数或加密算法的部分输入,从而增加输出的随机性
-
文件权限
- Linux的权限控制
- Windows的傻逼权限设计
-
文件描述符
- 存储在文件描述符表中的索引值,用来索引特定文件
- 漏洞:当程序以高权限打开文件描述符,但未关闭,然后又创建了低权限的进程,那么新进程就能够读写相关文件,但子进程本身不具有打开该文件的权限。
-
符号链接
快捷方式以及Linux软连接
- 漏洞:恶意方会利用符号链接诱使应用程序执行不良的操作
3.【理解掌握】应用程序安全
- 编译和链接
- DLL注入:通过共享库向程序注入任意代码的过程。优点是便于调试,缺点是潜在的安全风险,恶意用户能向合法程序注入自己的代码。
- 缓冲区溢出攻击
- 当缓冲区是局部变量或帧的参数时,用户的输入可能覆盖返回地址,改变程序的执行;
- 攻击者利用栈缓冲区的脆弱性,在栈中注入恶意代码,覆盖当前调用的返回地址,从而将执行权限传递给攻击者的恶意代码。
- 格式化字符串攻击
- C库函数如果不输入格式化信息,而是直接使用printf(str),会出现漏洞;
- 攻击者指定所使用的格式化字符串作为输入,并可以将输入写入内存的任意位置。如果写入的位置正好覆盖了返回地址、函数指针等,则攻击者能够取得控制权,并在程序的上下文中执行任意代码。
四、恶意软件
1. 内部攻击
内部攻击(insider attack)是指控制和保护资产的内部人员利用安全漏洞进行的攻击。也就是内部中出了一个内鬼
-
后门
后门(backdoor) 是程序中隐藏的功能或命令,有时也称为活门,它允许用户执行一些操作,在正常情况下,这些操作是不允许用户执行的。
-
逻辑炸弹
逻辑炸弹(Logic bomb)是一种程序,它根据一定的逻辑条件执行恶意操作。
2. 【重点】计算机病毒
计算机病毒是一种能自我复制的计算机指令或程序代码,它通过修改其他文件与程序来插入代码,且能进一步自我复制
病毒的另一个特性是其复制需要某种类型的用户协助,如打开电子邮件附件或共享USB驱动器;
- 特征
- 传染性;
- 隐蔽性:代码短小精悍,隐藏巧妙;
- 潜伏性:病毒内部有一套触发机制,不满足触发条件时,除了传染外什么都不破坏;
- 多态性:不断变种,以防查杀;
- 破坏性:一旦出发,后果极为严重。
- 四个阶段
- 潜伏阶段:此阶段,病毒只是存在——病毒很低调并避免被检测到;
- 繁殖阶段:此阶段,病毒进行自我赋值,感染新系统中的新文件;
- 触发阶段:此阶段,一些逻辑条件导致病毒从潜伏或繁殖阶段转换为执行病毒预定的操作;
- 行动阶段:病毒会执行恶意的操作,这些执行是早已设计好的,成为有效载荷。
3. 恶意软件攻击
主要考病毒、蠕虫和木马的区别
-
计算机蠕虫
计算机蠕虫是一种恶意程序,不需将自己注入其他程序就能传播自己的副本,并且不需要与人交互。
从技术角度而言,计算机蠕虫不是计算机病毒(不会感染其他程序)
-
木马
表面上,它会执行一些有用的任务,
同时会隐形地执行具有负面后果的任务(间谍)
-
Rootkits
修改系统实用程序或操作系统本身来防止检测
4. 对策
-
签名:一个签名是一个病毒指纹,如果文件中包含签名,则文件被感染
类似于病毒抗原,签名数据库用来储存计算机病毒特征
-
黑/白名单
-
启发式分析:用于识别新的和“零日”恶意软件
零日攻击:指利用未公开或未修复的安全漏洞进行的攻击,这种攻击往往能够造成巨大的破坏,因为厂商或用户没有足够的时间和手段来防范。名称来源于开发人员发现漏洞时补丁存在的天数:零天
- 代码分析:根据说明,防病毒软件可以确定该程序是否是恶意的,即程序 包含删除系统文件的说明
- 执行仿真
- 在隔离的仿真环境中运行代码
- 监控目标文件所采取的操作
5. 网络安全I
1. 以太网
- 基本概念
- 以太网包括通信所使用的物理介质以及链路层的协议标准IEEE 802.3,是现有局域网采用的最通用的技术标准;
- 不同帧在以太网电缆上同时传输时会产生冲突,需要丢弃并重传冲突帧。
2.【理解】 ARP欺骗(链路层,ARP spoofing)
-
ARP
-
地址解析协议,链路层;
-
功能是将给定主机的网络层地址解析为主机的硬件地址。
- ARP协议简单高效,但缺乏身份认证,容易受中间人攻击。
-
-
ARP欺骗
- 原理:攻击者可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机
- 预防措施
- 检查相同MAC地址是否在局域网中多次出现;
- 静态ARP表:网络管理员手动指定路由器的ARP缓存来将具体的MAC地址和特定的IP地址进行绑定。
- 更加复杂和灵活的措施:anti-arpsroof、XArp、Arpwatch,这些程序会仔细检查所有的ARP数据包,并与所存储的ARP表项记录做比较,以检测并防止ARP欺骗。
3.【理解】IP欺骗(IP spoofing)
-
IP
- 网络层协议
-
功能是尽力将一个数据包从源节点路由到目的节点
- IP包路由:如果数据包的目的地址与发送数据包的主机在同一个局域网内,则使用ARP协议确定目的地址的MAC地址,并发送包;反之,数据包被传送至局域网的网关处,网关根据路由表来确定如何转发数据包;
- TTL(time-to-live):每个数据包在路由过程中的生存周期,用跳数来决定,一般最大跳数为255;
- 路由器操作:对每个数据包执行丢弃、发送或转发三个操作;
- 路由协议:
- OSPF(Open shortest path first)协议决定如何在自治系统中路由数据包,其策略是数据包应沿最短路径传输。
- BGP (Border gateway protocol)决定如何在自治系统之间路由数据包。
-
IP地址欺骗(IP spoofing)
- 原理:恶意用户产生的IP数据包中的源IP地址是伪造的,以便冒充其他系统或发件人的身份。
- 如果攻击者用假冒的源IP地址,那么他不会收到服务器的响应。服务器会把数据包返回给具有假冒IP地址的主机。
- 拒绝服务攻击
-
应对措施
- 边缘路由器在配置时,可以阻止源地址在域内,但实际地址是域之外的数据包;
- IP追踪技术:追踪数据包返回到实际源地址的路径。根据追踪到的信息,可以向各种自治系统发送请求,要求自治系统阻止来自该路径的数据包,直到确定恶意软件或恶意用户被清除为止。
4. 【理解】网际控制消息协议(网络层,ICMP)
- ICMP协议:用于在主机、路由器之间传递控制消息。
- ICMP消息类型
- 回显请求(echo request)
- 回显响应(echo response)
- 超时(time exceeded)
- 目的地不可达(destination unreachable)。
5. 数据包嗅探
-
Wireshark:网络数据包分析软件。功能是撷取网络封包,并尽可能显示出最为详细的网络数据包资料。
使用WinPCAP作为接口,直接与网卡进行数据报文交换。使用时网卡被设置为混杂(promiscuous)模式。
-
防止嗅探
- 使用以太网交换机替代集线器,但不适用于无线网络;
- 检测网卡是否被设置为混杂模式;
- 高层协议使用加密防止敏感信息泄露,如HTTPS协议。
6. 传输层协议
- 端口:16比特的端口号,用来标识应用层不同服务。
- UDP:无连接的、不可靠但速度快。
- TCP:面向连接的、可靠的。
- 【重点】TCP会话劫持
- TCP序列号预测:TCP序列预测攻击企图猜测TCP会话时的初始序列号,以建立伪造的TCP会话。
- 攻击者针对受害客户端发动拒绝服务攻击;
- 攻击者向服务器发送一个SYN包,将源IP地址伪造成受害客户端的IP地址;
- 等待服务器向客户端发送响应之后,攻击者通过发送一个ACK数据包来结束TCP握手,该数据包的序列号是预测的下一个序列号;
- 攻击者以受害客户端名义向服务器发送请求。
- 盲注入(Blind injection):注入包含命令的数据包,从而建立将响应返回给攻击者的连接。
- ACK风暴(Blind injection)
- 盲注入后客户端不会向服务器发送同步消息,导致不同步现象
- 此时,客户端和服务器会向对方发送ACK消息,每一方都想告诉对方需要开始使用正确的序列号。
- 这种反复的通信被称为ACK风暴。
- 完全会话劫持 (complete session hijacking)
- 当攻击者与目标服务器或客户端在同一网段时,攻击者可以完全劫持已有的TCP会话。使用数据包嗅探攻击,攻击者可以知道建立会话时数据包的序列号。
- 完全会话劫持与ARP欺骗结合的中间人攻击:攻击者首先使用ARP欺骗,将会话双方的通讯流暗中改变,这种改变对会话双方来说是透明。其次,攻击者利用完全会话劫持来截获会话双方的所有消息
- 针对会话劫持的安全措施
- 在IP层或者应用层使用认证和加密
- 网站应避免创建以安全身份验证措施开始,但后来切换到未加密交换的会话,这样会产生的风险。
7. DOS攻击
任何旨在使计算机或系统不可用或无法执行基本功能的攻击
- TCP泛滥攻击
- DNS放大攻击
8. IP地址回溯
IP地址回溯能够确定数据包的真实来源,而不依赖于数据包头部的IP地址。
- 【重点】数据包标记技术:路由器基于数据包的相关路径信息确定地或者概率地标注转发数据包。
- 节点采样:不在每个数据包中追加路径信息,而使用IP数据包中的一个字段就可以记录路径信息。
6. 网络安全II
1. DNS
-
域名系统(DNS):应用层协议,负责将域名映射到IP地址。
-
域名解析
- DNS数据包:DNS查询和应答是通过UDP数据包传输的,但当请求或应答超出512B时,会用TCP替代UDP。
-
DNS攻击
-
网络嫁接与网络钓鱼:
-
攻击者把网站发送的请求解析成自己恶意服务器的伪装IP地址,导致受害人浏览或下载不需要的内容
- 网络嫁接的一个主要用途是将域名解析为一个网站,该网站表面与所请求网站相同,但实际上是恶意网站,这种攻击被称为网络钓鱼
-
-
DNS缓存中毒
- 攻击者欺骗DNS服务器缓存保存虚假的DNS记录
- 当域名服务器出现以下情况时,缓存可能会中毒
- 忽略标识符
- 具有可预测的ID
- 接受未经请求的DNS记录
-
2. 防火墙
- 防火墙:一种集成的安全措施集合,旨在防止对网络计算机系统未经授权的访问。
- 防火墙策略:部署防火墙过滤流入或流出的流量,基于的预定义规则集称为防火墙策略
- 有
- 无
3. 【重点】隧道技术
TCP数据包的内容是不加密的,如果有人窃听TCP连接,他会知道该会话中有效载荷的所有内容;
在隧道协议中,客户端和服务器之间的通信自动加密。
-
【重点】SSH
- 客户端通过一个TCP会话连接到服务器;
- 客户端与服务器交换管理细节的信息,如支持的加密方法、各自协议的版本,每一方都要选择另一方支持的一组协议;
- 客户端和服务器进行密钥交换,创建共享的秘密会话密钥,用会话密钥加密双方的通信(但不用于身份验证)。
- 公共密钥身份验证,客户端向服务器发送自己的公钥;
- 服务器检查是否这密钥已存储在其授权的密钥列表之中。如果在,服务器使用客户的公钥加密挑战,并将其发送给客户端;
- 客户用自己的私钥解密挑战,并向服务器发回响应,证明自己的身份;
- 服务器向客户端发送可接受身份验证列表,客户端将按顺序尝试。
- 一旦身份验证已顺利完成,服务器允许客户端访问相应的资源,如命令提示符;
-
IPSec
- IPSec定义了一组协议,为IP数据包提供机密性和真实性;
- 每个协议都能运行在两种模式下,传输模式或隧道模式
- 传输模式:在原数据包的数据之前,会插入额外的IPSec的头信息,只对数据包的有效载荷继续加密或身份验证
- 隧道模式:构造一个新的数据包,将IPSec头信息和整个原数据包(包括它的头)一起封装为新数据包的有效载荷;
-
虚拟专用网络VPN(了解)
尽管使用不受信任的网络进行传输,VPN也能提供数据的保密性、完整性
- 远程访问VPN:允许授权的用户访问私有网络,一般将这种私有网络称为内网;
- 站点到站点VPN:旨在为两个或更多远程网络提供安全的桥梁
4. 入侵检测
考点:真阳假阳
-
入侵检测事件两种类型的错误
- 误报:当事件是良性活动而不是入侵时就发出警报(浪费时间和资源);
- 漏报:当事件是入侵的恶意事件,未发出警报(系统受到损害,管理员未察觉);
-
【重点】基率谬误:根据理解进行简单计算
假设IDS准确度为99%,假阳性或假阴性的概率为1%
入侵检测系统生成1,000,000+100个日志条目,1,000,000个良性事件,100个恶意事件
- 假阴性的概率为1%:100个恶意事件中,99个将被检测为恶意,有1个假阴性;
- 假阳性的概率为1%:1,000,000个良性事件中,10,000个将被错误地识别为恶意事件。
7. Web安全
1. 网络钓鱼
伪造网页以欺诈方式获取敏感资料;
用户一般是从垃圾邮件中访问网络钓鱼页面。
-
混淆方式
-
错误拼写URL链接(粤利粤)
-
URL混淆:
-
Unicode 攻击
之前了解过的Cyrillic和ASCII字符
- 移除或伪造地址栏
-
2. 可移动代码
可执行、通过网络发送、在目标电脑上执行的代码程序。
- JavaScript :直接由浏览解释的脚本语言。
- ActiveX控件:是一个开放的集成平台,为开发人员提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内容的方法。Java插件:可以将Java编译后的程序添加到其他项目中。
- 集成的Java虚拟机:是运行所有Java程序的抽象计算机,是Java语言的运行环境。
3. Cookies
存储在计算机上、与特定服务器关联的一小部分信息。
- 访问特定网站时,可能会将信息存储为cookie
- 每次重新访问该服务器时,cookie都会被重新发送到服务器用于在会话中保存状态信息
- 可以保存敏感信息
4. 【重点】XSS跨站脚本攻击
攻击者将脚本代码注入Web应用程序生成的页面
网站输入框内输入恶意代码,服务器将合并到返回的页面使得代码被运行
- 通常在有漏洞的程序中插入Javascript,VBScript,ActiveX或Flash以欺骗用户
-
XSS发起条件:
-
Web服务器没有对用户输入进行有效性验证或者验证强度不够;
-
允许用户在表格或编辑框中输入不相关字符;
- 存储并允许把用户输入显示在返回给终端的页面上,而没有去除非法字符或者重新进行编码。
-
-
客户端对于XSS的防御:
-
基于代理
-
分析浏览器和Web服务器之间的HTTP通信量;
-
寻找HTML中的特殊字符;
- 执行Web页面之前对它们进行编码。
-
-
应用层防火墙
- 分析HTML页面中可能导致敏感信息泄漏的超链接;
- 对于使用不良请求的一系列链接进行停止操作。
-
审计制度
- 监视JavaScript代码的执行,并将操作与高级策略进行比较,以检测恶意行为。
-
5. 【重点】SQL注入攻击
通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
-
SQL注入条件
- web应用程序从表单中获取用户输入;
- 用户输入的信息直接用于构造提交到数据库的SQL查询;
SQL注入之万能密码:' or '1'='1
- SQL 注入的防范
- 使用预编译语句,绑定变量;
- 对用户提交的数据和输入参数进行严格的过滤;
- 过滤逗号,单引号,分号等;
- 如果 select,delete,from,”,union 之类的字符串同时出现多个的话,要重视;
- 对用户提交参数的长度进行判断
- 使用安全函数:比如 OWASP ESAPI;
- 摒弃动态SQL语句,改用存储过程来访问和操作数据;
- 最小权限原则:避免 Web 应用直接使用 root,dbowner 等高权限账户直接连接数据库。
8.密码学概述
1. 加密基本概念
- 场景 (Scenario)
- Alice希望发送一条消息(明文P)给Bob。
- 通信信道是不安全的,有可能被窃听。
- 如果Alice和Bob之前已经协商好了一个对称加密方案和一个密钥K,那么该消息就可以加密后再进行传输(密文C)。
- 符号 (Notation)
- 密钥
K - 加密算法
E_K(P) - 解密算法
D_K(C) - 密文长度通常和明文长度相同
- 加密/解密是所有n位二进制序列(n-bit arrays)构成的集合上的(双射)置换函数
- 密钥
- 效率 (Efficiency)
- 加密算法
E_K(P) 和解密算法D_K(C) 必须是高效的
- 加密算法
- 一致性 (Consistency)
- 对密文解密后可恢复出明文:
D_K(E_K(P))=P
- 对密文解密后可恢复出明文:
2. 【理解区分】攻击者的主要类型
-
唯密文攻击(ciphertext-only attack)
攻击者收集一个或多个消息的密文;
-
已知明文攻击(known-plaintext attack)
攻击者收集一个或多个 明文—密文对;
-
选择明文攻击(chosen-plaintext attack)
攻击者可收集指定的明文对应的密文信息;
-
选择密文攻击(chosen-ciphertext attack)
攻击者可收集指定的密文对应的明文信息。
3. 替换密码和频率分析
n位二进制位的英语文本信息熵
2^{1.25*n/8}≈2^{0.16n}
4. 一次一密
每次都是完全随机地选择移动量,在密文中字母表的每个字母出现的概率几乎相同
弱点:密钥块的长度m必须和明文的长度n相同
5. 分组密码
明文和密文具有固定的长度b(例如,128位);
长度为 n 的明文被划分为 m 个序列块
P[0], …, P[m-1](n ≤ bm< n + b );每条消息被划分成一系列的块,基于这些数据块来进行加密或解密。
- 高级加密标准(AES):AES加密算法的128位版本进行十轮的处理
- 每一轮都对128位的数组(
state )执行可逆替换; - 初始
stateX_0 是明文P与密钥K的异或:X_0 = P XOR K ; - 第
i 轮 (i = 1, …, 10 ) 接受state X_{i-1} 作为输入,并产生state X_{i-1} ; - 最后一轮输入密文
C :C = X_{10} ;
- 每一轮都对128位的数组(
6. 【区分】分组密码优缺点
- 电子密码本(ECB)模式 (最简单的一种模式)
- 优点:ECB模式适合于数据较少的情况,比如密钥和初始向量的加密;
- 缺点:对于文件和图片这类很长的消息,ECB模式可能是不安全的,因为ECB模式会揭示在分组流中出现的模式,即相同的分组会使用相同的加密方式。
- 密码分组链接(CBC)模式
- 优点:
- 没有在明文中泄露明文的模式;
- 是最常用的模式之一;
- 快速且相对简单。
- 缺点
- 需要所有数据块进行有序的可靠传输;
- CBC模式不适用于允许丢包的应用程序,如音频流和视频流。
7. 流密码
- 密钥流
- 伪随机序列
S = S[0], S[1], S[2], …… - 可以每次生成1位或者1个字节
- 伪随机序列
- 流密码
- 密钥流和明文流进行对位异或操作
C[i] = S[i]⊕P[i] ; - 适用于快速写入的任意长度的明文,例如流媒体数据.
- 密钥流和明文流进行对位异或操作
- 同步流密码
- 密钥流的生成只依靠密钥K
- 如果明文是带有序列号的包,那么同步流密码可在不可靠信道下工作
- 自同步流密码
- 使用密钥K和前q个密文来生生成密钥流
- 在接收到q个密文后会自动与密钥流生成器同步,如果数字被丢弃或添加到明文流中,更容易恢复
8. 【计算】
1. 辗转相除法
-
指用于计算两个正整数a,b的最大公约数
gcd(a, b) = gcd(b, \text{ a mod b}) - EuclidGCD算法的最大迭代次数为
1 +\text{2 log max(a ,b)}
2. 【会算逆元】乘法逆元
-
一个正整数 n 的剩余类可表示成以下集合的形式
Z_n = {0, 1, 2, …, (n -1)} - 令 x 和 y 是
Z_n 中的元素,则\text{xy mod n = 1} , 我们称 y 是 x 在Z_n 的 乘法逆元,记作y = x^{-1}
3. RSA密码系统
4. 哈希函数
h将可变长度的消息P作为输入,产生固定长度的Hash值
x = h(P) ,称函数值h(P)为P的哈希值或消息摘要。
- 碰撞(collision):指的是存在两个消息P和Q被映射到相同的哈希值,即
h(P) = h(Q) - 碰撞是不可避免的
- 哈希值的计算时间应该和输入消息的长度成正比
生日攻击
- 攻击者可以通过生日攻击的蛮力技术来对密码学Hash函数进行攻击,主要危害其抗碰撞性,主要步骤如下:
- 随机产生消息序列
X_1, X_2, X_3, … - 对于每个
X_i 计算Hash值y_i = h(X_i) 并且检测y_i 是否等于y_j ( j < i ) - 直至找到碰撞即停止
- 随机产生消息序列
1/2长度:通常根据输出大小的一半来考虑加密散列函数安全,比如256位抗冲突Hash函数的安全是128位
5. 消息认证码
密码学哈希函数
h(K, M) 有两个输入: 密钥K 和消息M
9. 安全模型与实践
1. 策略、模型与信任基本概念
-
安全策略(5部分)
-
主体(Subject):与系统交互的代理,可以根据特定的个人定义,也可以根据个人群体在组织中可能持有的角色或级别来定义。
个人可以通过姓名或职称来识别,可以用术语来定义组。此类别还包括外部人员,如攻击者和来宾。
-
客体(Object):客体是安全策略要保护和管理的信息与计算资源。
信息包括重要文档、文件与数据库,计算资源包括服务器、工作站和软件。
-
行动(Action):主体对客体可能(或不可能)执行的操作。
操作一般包括文档的读取和写入、在web服务器上更新软件以及访问数据库的内容。
-
权限(Permission):主体、操作与客体之间的映射,权限明确规定允许或禁止哪些操作。
- 保护(Protection):策略中包含的特定安全特性或规则,以帮助实现特定的安全目标,如保密性、完整性、可用性或匿名性
-
- 安全模型:是一种抽象的、为管理员指定安全策略提供概念语言。
2. 访问控制模型
-
Bell-La Padula模型:信息只能从低安全级别流向高安全级别
- 军事分级层次结构;
- 系统有四种安全级别:最底层的是不保密(unclassified)、然后安全性呈升序的分别是秘密(confidential)、机密(secret)、绝密(top - secret);
- 每个文件归类于一个安全级别;
- 每个用户都会在一个安全级别得到放行许可(clearance)。
-
Biba模型:信息只能从较高的完整性级别下降到较低的完整性级别
- Biba模型的完整性级别表明对象和用户的可信度或准确度,而不是确定保密级别;
- 不允许从下一级阅读,也不允许写到上层。
- 低水印模型:对Biba模型的扩展,它放宽了“不可向下读”的限制
- 克拉克-威尔逊模型:不处理文档机密性或完整性,而是处理执行事务的系统
- 中国墙模型:每个用户只能从每个利益冲突类访问一个资源
3. 渗透测试
从攻击者(黑客)的角度测试系统和体系结构的安全性,在固定时间内必须获得的具有预定目标的“模拟攻击”
4. 【重点】Kerberos
基于可信第三方(Trusted Third Party,TTP)的认证协议;
MIT的雅典娜项目组(Athena Group)开发的认证服务系统。
- Kerberos使用票据(ticket)的概念作为证明用户身份的令牌。票据是存储会话密钥的数字文件。在登录会话中,通常会发送会话密钥,然后代替在kerberized服务中的密码;
-
在身份验证过程中,客户端会收到两个票据
- 票据授予票据(ticket-granting ticket,TGT):用户和会话密钥的全局标识符;
- 服务票据(service ticket):对用户进行身份验证,确定用户能否使用特殊服务。
-
票据都有时间戳,用于表明票据的有效期限;
-
为了实现安全的身份验证,Kerberos使用可信第三方作为密钥分发中心(key distribution center,KDC),由两个部分组成:
- 身份验证服务器(authentication server,AS):用于执行用户身份验证。
- 票据授予服务器(ticket granting server,TGS):用于向用户授予票据。
-
身份验证服务器维护存储用户和服务密钥的数据库。对用户提供的密码执行单向散列来生成用户的密钥。
-
身份验证大致流程:
- 客户端与身份验证服务器(AS)互相进行身份验证;
- 客户端与票据授予服务(TGS)互相进行身份验证;
- 客户端与服务(S)互相进行身份验证,此要为客户端提供服务。
-
身份验证:
-
1.用户在客户端计算机上输入用户名和密码,执行哈希(hash)函数对输入进行散列操作,形成客户端的密钥。
-
客户端与AS联系,AS作如下反应:
- 使用客户端密钥KC(存储在AS数据库中)加密客户端-TGS的会话密钥KGT。
- 使用TGS密钥KT(存储于AS数据库中)加密票据授予票据(TGT)。TGT包括密钥KCT和有效期。
-
客户端使用KC解密TGS会话密钥KCT。为了请求服务,客户端向TGS发送如下两个消息:
- TGT(仍然使用TGS的密钥KT加密)和所请求服务名称S。
- 验证令牌(authentication token)由客户ID和时间戳组成,使用客户端TGS会话密钥KCT进行加密。
-
TGS使KT解密TGS,从而得到客户端TGS的会话密钥KCT和TGT的有效期。在有效期之内,TGS使用密钥KCT解密身份验证令牌,向客户端发送如下两个消息:
-
使用KCT加密的新的客户端-服务器会话密钥(client-server session key) KCS。
- 使用具体服务的密钥KS加密客户端-服务器票据(client-server ticket),其中TGS已知密钥KS 。票据包含客户端ID、网络地址、有效期、密钥KCS。
-
-
在对客户端-服务器会话密钥KCS解密后,为了使服务对客户端进行身份验证,客户端发送以下两个消息:
- 在上个步骤中,TGS发送的客户端-服务器的票据。
- 使用KCS加密的客户端ID和时间戳。
-
服务使用自己的密钥KS解密客户端-服务器的票据,得到客户端-服务器的会话密钥KCS 。使用KCS解密客户端ID和时间戳。最后,为了向客户端证码自己的身份,它使用时间戳加1,并用KCS重新加密送回客户端。
- 客户端使用KCS解密并验证这个响应,如果验证成功,就可以开始客户端-服务器的会话了。
Remark:在票据授予票据的有效期内,客户端为了访问多个服务,可以一直重复协议中的步骤3~7。
-
5. 安全存储
- 加密文件系统(EFS)
- 磁盘加密
- BitLocker
10. 分布式应用程序的安全
1. 数据库安全
-
为了解决一致性和可靠性问题,大多数数据库在执行更新时使用两阶段提交协议 (two-phase commit)。
- 最小特权原则 (Least-privilege principle):实现适当的访问控制应遵循最小特权原则,使每个用户都拥有完成自己任务所必需的权限,但除此之外,不再拥有其他的权限。
-
特权分离原则 (Separation of privilege principle):实现适当的访问控制还应遵循特权分离原则,以便不同的用户具有不同的权限,这取决于他们需要执行的不同任务。
-
推理攻击
即使删除或屏蔽掉身份信息,攻击者仍能将其他的信息与数据库结合,得到底层的数据。
2. 垃圾邮件
- Spamhaus黑名单(SBL)
后续不重要,知道即可……
Comments | NOTHING