笔记「计算机安全导论」

第一章

  • 安全需求
  • 安全目标
  • 安全威胁
  • 安全原则
  • 机密性Confidentiality: 确保 非授权 用户无法获取信息
    • 加密
    • 访问控制
    • 认证
    • 授权
    • 物理安全
  • 完整性Integrity: 确保信息不被 非授权 修改
    • 备份
    • 校验和
    • 纠错码
    • 元数据
  • 可用性Availability: 确保 授权 用户能够获取和修改
    • 物理保护
    • 冗余
  • 保证Assurance: 信任系统的管理 (东西是真的, 不是伪造的)
    • 策略: 指定如何使用信息的规则行为
    • 权限: 指定所允许的行为
    • 保护: 确保策略和权限正常, 保护整个信任系统
  • 真实性Authenticity: 不可抵赖
    • 数字签名
  • 匿名性Anonymity: 记录不与个体属性有关
    • 数据聚集
    • 数据混淆
    • 代理
    • 化名

CIA 相互联系, 缺一不可, AAA 是独立的

  • 机密性: 窃听

  • 完整性: 篡改 (非授权修改)

  • 可用性: DoS

  • 保证: 伪装 (e.g. 中间人攻击)

  • 真实性: 抵赖 (否认数据来源自己或否认接收数据)

  • 匿名性: 相关性和追溯 (取证)

  • 被动攻击: 非授权收集信息, 如窃听

  • 主动攻击: 非授权修改信息, 如删除, 伪造等

预防针对 机密性, 完整性, 匿名性 的攻击

为什么有匿名性? 直接防止读取所有数据?

行主体, 列客体, 中间权限

优点: 控制粒度细, 直观

缺点: 矩阵大

  • 访问控制列表: 矩阵的列
  • 能力列表: 矩阵的行

缺点: 需要遍历

定义角色和其权限, 主体作为某种角色具有权限. 主体可以有多种角色

优点: 降低了需要记录的规则总数

缺点: 目前的操作系统中尚未实现

  • 公开算法, 保密密钥

    1. 更加健壮
    2. 漏洞被白帽子发现
    3. 算法很容易被逆向, 密钥不是代码的一部分
    4. 标准更容易建立
  • 对称加密: 加解密用同一个密钥

    • 一个通信过程使用一个密钥, 所需管理密钥多
  • 非对称加密 (公钥加密): 加解密使用不同密钥

    • 公钥公开, 加密消息发送给对方
    • 私钥自己保管, 接受到消息后解密
    • 公私钥不能互推
    • 公钥私钥可以对调
    • 接收方只需要保管一个密钥 (私钥), 公钥公开, 发送者随时获取, 不需要管理
    • 算法复杂度高, 密钥较长
  • 密码学哈希函数

    • 单向性
    • 抗碰撞
  • 数字签名: 使用私钥加密消息或摘要 (哈希值)

  • 消息认证码: 同一个密钥, 加密消息并计算其哈希, 发送消息和哈希值, 接收方解密计算哈希并比较

  • 数字证书: 可信第三方确认公钥来源于某个个体

  • 对密码体制的攻击

    • 中间人攻击
      • 对加密机制
      • 对数字签名
    • 暴力
  • 效率和可用性
    • 高效
    • 对用户来说不应该复杂
  • 密码
    • 口令
      • 字典攻击
  • 社工
    • 假托: 编造故事让管理员相信
    • 诱饵: 提供一个好处, 让管理员进行不安全操作
    • 相等补偿: 提供一个操作或服务, 并期望有所回报 (什么东西)
    • 绕过计算安全解决方案的一种非常有效的方法
  • 程序代码的脆弱性 ?

第二章 物理安全

  • 物理入侵
  • 硬件攻击
  • 窃听
  • 物理接口攻击

电子密码锁

  • 电子密码
  • 磁卡
  • 智能卡 SIM
  • RFID
  • 生物特征识别
  • 条形码, 二维码
    • 容易被复制
    • 信息容易泄漏
  • 磁条卡
    • 容易读取和赋值
  • SIM: 有一个微处理器, 可以通过接口读写卡上的数据
    • 一张卡对应网络提供商数据库中的一条记录
    • ICCID: 集成电路 ID
    • IMSI: 国际移动用户标识, 卡的 ID
    • 128bit 的密钥
    • 访问还可能需要 PIN
  • RDFI: 射频识别
    • 发送和接收无线电波, 无源
    • 需要专用的读写器
    • 广泛用于产品跟踪如护照上

要求:

  • 普遍性: 每个人都有这个特征
  • 独特性: 每个人的特征差异明显
  • 持久性: 特征不随时间变化
  • 可收集性: 能够量化, 进行比对确认

优点:

  • 安全性高
  • 方便快捷
  • 难以篡改

缺点:

  • 精度问题
  • 隐私问题

隐私问题:

  • 数据库受到攻击, 可能规避生物特征识别系统, 或者获得个人隐私信息. 而生物特征数据不会随时间改变, 一旦被泄漏, 危害性是永久的
  • 生物特征识别并不能完全匹配, 因此比较不能用哈希, 即存储和传输的信息不能用哈希, 难以做到机密性存储和传输
  • 环境攻击
    • 电力: 断电
    • 温度: 加温 / 降温使芯片不工作
    • 电导: 短路设备
  • 窃听
    • 搭线窃听: 窃听同轴电缆 (信道) 的信号
      • 防御: 双绞线, 光纤, 信息加密
    • 射频辐射: 屏幕射频信号, 可见光反射等
    • 声音辐射: 监听声音, 侧信道, 如键盘声音重建输入内容
      • TEMPEST, 限制计算机的电磁辐射, 防御侧信道攻击
    • 键盘记录器
  • Live CD: 外部引导 OS, 启动计算机读取内部信息
  • 取证

保安, 摄像头

物理安全

  • 与地面固定
  • 有锁定机制和传感器, 防止物理入侵
  • 受到破坏, 现金将不可用 (损坏等)

加密

SIM 有 ID 和密钥, 基站存储了 ID 和其对应的密钥

  1. SIM 向基站发送 IMSI
  2. 基站发送 128bit 随机数
  3. SIM 用密钥加密, 发回给基站
  4. 基站用对应的密钥解密, 如果匹配, 则允许 SIM 接入网络

伪基站: 由于只有基站认证用户, 所以可能导致伪基站

解决: 增加用户对基站的认证机制

第三章 操作系统安全

只记没见过的东西

  1. 加载 BIOS
  2. BIOS 决定从哪个设备加载引导程序

攻击:

  1. hack BIOS!
  2. 让 BIOS 加载外部介质的引导程序, 启动计算机, 访问内部信息 (Live CD)

防御:

只允许授权用户从外部介质引导启动计算机, BIOS 设置密码

休眠会将内存存储在硬盘上, 然后恢复

攻击:

  1. 从休眠文件中获取敏感信息
  2. 修改休眠文件, 恢复后即可控制计算机

防御:

硬盘加密

OS 监控操作, 管理进程, 记录日志, 用以检查攻击和溯源

  • 虚拟内存安全
    • 虚拟内存页面会存储在硬盘上 (换页需要)
    • 针对硬盘数据的攻击防御, 与休眠的类似
  • 基于口令的身份认证
    • 存储口令的哈希值, 对比哈希值
    • 口令盐: 用一个随机数对口令加密, 存储其哈希值, 存储随机数 (增加攻击难度)

第四章 恶意软件

内部人员利用漏洞进行攻击

  • 后门
  • 逻辑炸弹: 一定的逻辑进入后门?

nmd 能讲人话吗

防御:

  • 避免单点故障
  • 代码审查
  • 使用归档和报告工具
  • 限制授权和权限
  • 物理安全
  • 监控员工行为
  • 控制软件安装

能够 自我复制 的一段代码, 通过 修改其他文件 (感染) 来插入代码, 进行进一步自我复制

(和生物病毒很像, 需要宿主复制自己)

复制需要用户的某些操作

特征:

  • 传播性: 通过网络等方式进行传播
  • 隐蔽性: 难以找到病毒
  • 感染性: 感染其他可执行程序, 被执行时便可自我复制
  • 潜伏性: 满足条件后才会执行恶意操作
  • 可激发性: 有一定的逻辑才被触发

阶段:

  • 潜伏阶段: 存在但是什么也不做
  • 繁殖阶段: 自我复制, 感染新文件
  • 触发阶段: 满足一定条件后, 开始执行一些操作
  • 行动阶段: 执行恶意操作

隐藏:

  • 加密病毒: 包含加密模块和解密模块, 每次感染使用随机密钥加密自身, 解密模块相同
    • 由于解密模块相同, 对比解密模块便可知是否是病毒
  • 多态病毒: 包含加密模块和解密模块, 加密模块还有个多态引擎, 每次感染, 多态引擎修改加解密模块, 使得每份病毒的代码都不相同
    • 在模拟器上解密病毒后, 才可以对比 (解密后的病毒是一样的)
  • 变形病毒: 包含变形引擎, 每次感染, 病毒自身完全更改
    • 难以检测

防御:

  • 特征码: 唯一标识一个病毒的序列
  • 检测与隔离: 定期扫描或检测新文件, 是否包含特征码, 包含则将文件隔离存放

隐藏在系统中用以完成未授权功能的非法程序, 伪装成合法程序

不感染其他程序, 不进行复制传播

基于客户端服务器结构

过程:

  1. 服务端植入受控机器
  2. 通过安装或启动服务端

接着就可以链接服务端, 控制计算机

防御:

  • 防火墙, 受控计算机启动服务端需要开端口, 容易被检测

不需要注入其他程序能够传播, 不需要与人交互

防御:

  • 扫描文件特征码
  • 在网络层扫描数据包, 检测蠕虫, 防止传播

隐藏进程的恶意程序, 加载在内核中, 有最高权限

防御:

  • 扫描文件, 更新软件, 安装防火墙

有工具可以找出 Rootkit, 删除 Rootkit 必须重装系统

防御:

控制多个主机, CC 服务器发送命令给僵尸网络, 让他们对某一个目标进行攻击, 如 DDoS.

不破坏系统, 而是获取用户的敏感信息

  • 广告软件
  • 间谍软件
  • 流氓软件

假设有一检测软件为 SuperKiller 可以检测所有恶意软件并阻止其行为, 那么设计恶意软件 UltraWorm 如下:

1
2
3
4
if (SuperKiller(UltraWorm) == true)
  exit();
else
  hack();

如果 SuperKiller 认为 UltraWorm 是恶意软件, 那么 UltraWorm 将什么也不做, 与他是恶意软件矛盾

如果 SuperKiller 认为 UltraWorm 不是恶意软件, 那么 UltraWorm 将进行恶意行为, 与 SuperKiller 可以检测所有恶意软件矛盾

第五章 网络安全

CIA:

  • 机密性: 网络协议的任何分层都没有要求数据机密性, 需要修订协议. 如在应用层 (TLS) 或者网络层 (IPSec)
  • 完整性: 数据包只有简单的校验和, 但不在密码学意义下安全, 不能够提供安全层面的完整性
  • 可用性: 仅考虑了节点故障时的可用性, 没有考虑攻击者存在的问题, 如 DoS 可以轻松影响可用性

AAA:

  • 保证: 数据包能在任意两个节点之间传输, 没有控制策略, 权限, 保护
  • 真实: 协议没有用户身份的概念, 数据包没有签名之类的东西, 不可溯源. 如需引入, 必须在应用层
  • 匿名: 协议没有用户身份的概念, 具有内在的匿名性

ARP 地址解析协议: 将网络层地址解析为硬件地址

  1. 主机广播 ARP
  2. 目标机器对比 ARP 中的 IP, 如果是自己的, 则回复 ARP 报文, 包含自己的 MAC
  3. 主机接收到消息后将 IP 与 MAC 缓存, 共之后查询

ARP 欺骗, 中间人攻击:

  1. Alice 广播 ARP 请求 Bob 的 MAC
  2. Bob 给 Alice 发送响应报文, Alice 建立 Bob IP - Bob MAC 的缓存
  3. Eve 给 Alice, 发送伪造的 ARP 响应报文, Alice 覆盖之前的缓存, 建立 Bob IP - Eve MAC
  4. Eve 给 Bob 发送伪造的 ARP 回复报文, Bob 覆盖之前的缓存, 建立 Alice IP - Eve MAC

任何接收 ARP 响应报文的计算机, 即使没有发送过请求报文, 都会更新 ARP 表

防御:

  • 检测相同的 MAC 地址在网络中出现多次 (ARP 回复报文, 多个 IP 对应同一个 MAC), 将其作为是否存在 ARP 欺骗的标志
  • 静态 ARP 表: 手动添加 ARP 缓存
  • 使用软件检查 ARP 包, 检测并防止 ARP 欺骗

IDA*, 不断加 TTL, 知道到目标之间的所有节点以及路程信息(延迟等)

将发送的 IP 包中的源 IP 地址修改成另一个 (非自己的)

接收不到回复

如 DoS, 受害者可能有策略, 拒绝同一个 IP 的连续请求. 这样使用 IP 地址欺骗可以绕过

用于规避防火墙策略, 进行 TCP 会话劫持

防御:

  • 配置边缘路由器 (链接多个子网的路由器). 由于他知道哪些 IP 是在子网内的, 假如有一个源 IP 不在子网内的包从子网发送, 则一定是子网内有 IP 欺骗; 同理一个源 IP 在子网内的数据向子网发送, 那么一定是错误的.
  • IP 追踪, 查询到数据包的实际地址

抓包

防御:

  • 防御抓网络上的流量: 降低能够被抓的流量, 使用交换机而不是集线器 (什么东西), 对无线网无效
  • 防御计算机上存在恶意抓包行为: 检测网卡是否被设为混杂模式? 处理数据包较慢, 有对无效的数据包的响应
  • 防御隐私泄漏等: 加密流量
  1. DoS Client, 使其不能与 Server 通信
  2. 向 Server 发送 SYN, 并将 IP 伪造成受害者 Client, 试图与 Server 建立会话
  3. 等待 Server 响应 (即使攻击者接收不到), 发送预测的序列号 ACK, 也要改 IP 为受害者的

只有单向的向服务器发送请求, 接收不到响应

使用受害者 IP 向 Server 发送某种带命令的数据包 (取决于服务器功能, 执行一些命令), 控制 Server

攻击者伪造 Clinet IP 向 Server 发送数据时, Server 向 Client 发送回复, 而此时的 Client 没有发送数据包, 自己的序列号和收到的 ACK 不一致, 于是向 Server 发送 ACK 用以同步. 而 Server 发出了一个数据包, 同样导致序列号不同步, 又发出 ACK 请求同步. 这就导致一直存在 ACK 循环.

攻击者 与 Clinet 或 Server 在同一网段时, 攻击者可以在网络上抓包, 得到建立会话时所用的序列号. 配合 ARP 欺骗, 便能够收到 Server 给 Client 的响应, 达到传输层的中间人攻击

  • ping 泛洪
  • Smurf 攻击: 广播 ICMP ping, 将回复地址设为受害者, 让网络中的其他主机去给受害者发消息
    • 防御: 路由器忽略广播请求; 避免向广播地址转发数据包 (?); 主机忽略 ping 请求
  • 泪滴攻击: 伪造分割数据包的位移信息
  • UDP DoS
  • HTTP DoS
  • 僵尸网络 DDoS
  • SYN 泛洪
    • 防御: SYN Cookie 机制, 带时间戳并加密序列号等
  • TCP ACK 攻击: ACK 泛洪?
    • 防御: 限制客户端的最大流量

防御:

  • 对占用带宽太多的源地址的所有数据进行丢弃
  • 随机丢弃一部分请求

迭代域名解析 example.com

  • 询问 . (root name server), 返回 com.
  • 询问 com. (com name server) 返回 example.com
  • 询问 example.com (example.com name server) 返回 IP

权威域名服务器 (ANS): 负责某些特定的域名?

攻击:

  • 网络嫁接: 将域名解析成假的 IP, 进行网络钓鱼等
  • DNS 缓存中毒: 攻击 DNS 服务器, 使得服务器上的某条 DNS 缓存指向恶意 IP 地址
    • Eve 向 DNS 服务器发送 DNS 查询一个 ANS 管理的域名, 这样 DNS 服务器会发送请求
    • Eve 向 DNS 服务器发送伪造的 DNS 响应, 其源 IP 伪造成 ANS 服务器的 IP, 查询结果设置为恶意 IP
    • DNS 服务器更新缓存, 任何向该 DNS 服务器请求该域名时, 均会返回恶意 IP
    • (DNS 请求时还有一个事务 ID (标识符), 响应也有一个 ID, 两个 ID 一致, 才会接受响应的结果, 所以必须要知道 DNS 服务器的下一个查询 ID, 并且在真正的 ANS 响应之前, 将伪造的响应发送给 DNS 服务器)

防御 DNS 缓存中毒:

  • 随机事务 ID
  • 随机端口
  • DNSSEC: 数据签名, AAA 中的保证

规则:

  • 允许
  • 丢弃
  • 拒绝: 不允许通过, 并通知源端数据包被拒绝

分类:

  • 无状态防火墙: 过滤数据包
  • 状态防火墙: 记录信息如 IP 地址, 端口, 数据包类型等, 还可以确定会话链接, 比如可以只允许内网的 TCP
  • 应用层防火墙: 还会分析 payload 的内容, 恶意 payload 阻止数据包

加密通信过程, 隧道可以加在任意一层

  • ssh: 传输层 TCP 加隧道
  • IPSec: 网络层加隧道
  • VPN:
    • 远程访问 VPN: 通过一个公网服务器接入内网 (隧道在网络层? 应用层的协议都可以通过 VPN?)
    • 站点到站点 VPN: 物理隧道, 链接公网服务器与内网
  1. Client 通过一个 TCP 会话链接服务器
  2. Client 与 Server 交换管理细节, 如支持的加密方法, 协议版本. 每一方选择另一方支持的一组协议
  3. Client 与 Server 进行密钥交换, 用会话密钥加密通信
  4. Server 发送可以接收的身份验证列表 (验证方法?), 客户端按顺序尝试, 使用公钥或者密码
  5. 公钥:
  6. Client 发送公钥
  7. Server 验证公钥是否存在已授权列表中, 存在则用其加密发送挑战
  8. Client 用私钥解密发回 Server
  9. 认证完成, 客户端可以访问服务端相应资源, 如 shell

入侵, 威胁机密性, 完整性, 可用性

  • NIDS: 基于网络入侵检测, 位于网络边界, 基于流量模式和内容
  • PIDS: 基于协议入侵检测, 专门检测某种特殊协议, 通常部署在特定网络主机中
  • HIDS: 基于主机入侵检测, 部署在主机中, 监控主机的网络

IDS 使用的字段:

  • 主体: 入侵的发起者
  • 对象: 目标资源, 如文件, 命令, 设备或网络协议
  • 操作: 主体对对象正在执行的操作
  • 异常条件: 操作所产生的任何错误消息或异常条件 (操作的返回值或报错)
  • 占用的资源: 系统执行或响应该操作所需的定量项
  • 时间戳

IDS 还可能利用其他字段, 取决于实现

类型:

  • 基于规则: 匹配特定操作
  • 基于统计信息

谬误:

假阳性, 假阴性, 真阳性, 真阴性

准确率, 样本不平均时, 准确率高不代表模型好, 要考虑 recall 什么的

比如 99% 准确率, 但是 1,000,000 个良性中检测出了 10,000 个假阳性, 100 个恶性中检测出了 1 个假阴性, 那么有 10,000 + 99 个警报, 其中很大部分都是误报

引诱入侵, 收集入侵的信息和证据

主动防御

略, 不是会了, 是看不下去了

第七章 Web

URL 混淆: 域名使用用相似的字母, 但是 Unicode 不同

移除 / 伪造地址栏: 在顶部伪造假的地址栏 (全屏时才可能达到效果, 好没用啊)

IE 的 bug? HTML 里写非常大的图片, 会造成浏览器崩溃

什么东西?

ActiveX 控件: IE 浏览器的插件, 可以代表浏览器执行二进制代码, 没沙箱, 非常不安全. 任何站点都可以允许控件

Java 程序: 站点自行嵌入, 运行在沙箱, 用户允许可以不在沙箱中运行

在会话中保存状态信息, 下次访问时发送给服务器, 无需再次填写

cookie 可以在 本地 保存任何信息, 容易被非法利用

cookie 攻击:

  • 直接访问文件
  • 传递时截取
  • 修改 cookie

防御:

  • 不保存敏感信息
  • 加密
  • 校验

跨站脚本

防御:

  • 基于代理:
    • 分析浏览器和服务器之间的 HTTP 通信量
    • 寻找特殊字符
    • 执行 Web 页面前进行编码
  • 应用层防火墙:
    • 分析可能泄漏信息的超链接
    • 停止不良请求链接
  • 审计:
    • 监视代码的执行, 检测恶意行为

防御:

  • 预编译语句, 绑定变量
  • 过滤用户输入
  • 使用安全函数
  • 不使用动态 SQL, 使用存储过程等
  • 最小权限, 避免 Web 应用直接使用 root 等

第八章 密码

  • 唯密文攻击: 只知道 c
  • 已知明文攻击: 知道一组 m 和 c
  • 选择明文攻击: 知道任意 m 对应的 c
  • 选择密文攻击: 知道任意的 c 对应的 m

加密算法应该满足:

  • 混淆性: 明文, 密文, 密钥之间的关系要相当复杂, 使得无法分析
  • 扩散性: 明文或密文的一个比特的变动, 能够使密文发送极大的变动
  • 非线性: 线性的话明文, 密文, 密钥关系就不复杂了, 不行. 这里的线性不止一次方程, 任意次多项式方程也算 (除非够多?)
  • 差分均匀性: ?
  • 密钥量大, 不可枚举

key 为随机生成的比特流, 对明文的每个对应的比特进行加密 (如对应位异或)

一次一密

不过由于完全随机做不到, 所以不是真正意义上的一次一密

明文流分成等长的串, 每串用相同的算法和密钥加密

弱明文, 弱密钥: 一组 (m, c), 能够轻易解出 k, 则 m 是弱明文, z 是弱密钥

分组密码要求不存在弱明文和弱密钥

设计准则:

  • 安全性: 抗已知明文/密文攻击
  • 简洁性
  • 有效性
  • 透明性
  • 灵活性: 明文分组长度可变, 算法可变形
  • 加解密相似性: 加解密算法相同, 仅密钥不同, 密钥可互推

一些分组密码:

  • DES
  • IDEA
  • AES

128 位分为一组

明文写成 $4 \times 4$ 的状态矩阵, 共 16 个字节, 128 bit

先对 128 位的密钥进行变换, 得到 11 个 128 bit 的 轮密钥round key

先用第一个轮密钥异或上明文 (状态矩阵)

接下来进行 10 轮操作, 每轮如下:

  1. S 盒替换: 一张表, 以字节为单位, 把状态矩阵的每个字节都替换掉
  2. 行移位: 移动行的位置
  3. 列混合: 与一个固定的矩阵相乘
  4. 轮密钥加: 异或上轮密钥 (每次的轮密钥都不一样)

电子密码本EBC: 每个一样的明文都会加密成一样的密文, 在图像中可能会出现加密后可识别的模式

密码分组链接CBC: 这一块加密(明文异或上一次的密文), 即 $C_i = E_K(C_{i-1} \oplus P_i)$, $C_{-1} = V$, 初始化向量, 多传输一个这个

CBC 优点:

  • 没有在密文中泄漏明文的模式
  • 最常用的模式之一
  • 快速且相对简单

CBC 缺点:

  • 数据块需要有序可靠传输
  • 不使用于允许丢失的传输, 如视频流

单向函数: 已知 x 求 f(x) 简单, 已知 f(x) 求 x 非常困难

陷门单向函数: 知道陷门后, 求逆简单

取一个 $n = pq$, $p, q$ 是质数, $\Phi(n) = (p-1)(q-1)$

取一个 $e$ 满足 $(\Phi(n), e) = 1, 1 < e < \Phi(n)$, (即 $e$ 在 $\Phi(n)$ 下有逆元)

  • 公钥: $n, e$, 加密 $E_{(n, e)}(M) = M^e \mod n$
  • 私钥: $d = e^{-1} \mod \Phi(n)$, 解密 $D_d(M) = M^d \mod n$
  • 抗原像攻击: 已知 $x = H(P)$, 难以求出 $P$
  • 抗第二原像攻击 (抗弱碰撞): 已知 $x = H(P)$, 难以找出 $Q \ne P$, 使 $H(Q) = H(P)$
  • 抗碰撞攻击 (抗强碰撞): 找出不同 $P, Q$, 使 $P \ne Q$

生日攻击:

20 多个人一定有两个人生日相同

看不懂 qaq

生成 n 个不同的哈希值 (hash(人) = 生日, 哈希空间 365), 找到碰撞 (生日相同) 的机率较大?

结论: 哈希函数的安全长度是原长的一半

第九章 安全模型

策略:

  • 主体
  • 客体
  • 动作 (操作)
  • 权限
  • 保护

模型:

  • DAC: 访问控制矩阵等
  • MAC: 主体和客体被赋予安全等级, 等级之间有一些安全约定

信任管理:

  • 主体: 可以在系统上执行操作的用户, 进程或其他实体
  • 策略: 就是制定的规则, 制定赋予主体哪些权限, 能执行那些操作
  • 凭证: 数字签名的文件, 将主体身份与允许的行为绑定, 包括允许主体将权限委托给其他主体的权限
  • 操作: 与系统安全相关的结果

基于可信第三方

  • 身份验证服务器authentication server (AS)
  • 票据授予服务器ticket granting server (TGS)
  • 目标服务器

AS + TGS = KDC

  • 票据授予票据ticket-granting ticket (TGT): 向 TGS 要服务票据
  • 服务票据: 向 Server 要服务

过程:

KeyA: Client, KDC KeyB: KDC 生成的, 给 Client 和 Server 用 KeyC: KDC, Server

  1. Client 向 AS 发送自己的信息
  2. AS 产生 TGT 并用 KeyA 加密, 发回给 Client
  3. Client 有了 TGT
  4. Client 将 TGT 和所要请求的服务发给 TGS
  5. TGS 产生 KeyB, 并用 KeyA 加密
  6. TGS 产生 Service Ticket (包含 KeyB), 并用 KeyC 加密
  7. TGS 向 Client 发送 $K_{KC}(Service_Ticket + KeyB)$, $E_{KA}(KeyB)$
  8. Client 有了 KeyB, $K_{KC}(Service_Ticket + KeyB)$
  9. Client 向 Server 发送 $K_{KC}(Service_Ticket)$, $KeyB(\text{身份信息})$
  10. Server 解密得到 Service Ticket, KeyB
  11. Server 用 KeyB 解密得到 Client 的身份信息

优点:

  • 分布式, 可在不安全的网络中安全通信
  • 每次传输都加密, 无法伪造票据
  • 防止重发攻击?
  • 对称加密, 快速高效

缺点:

  • 单点故障整个 KDC 不可用
  • KDC 保存大量信息, 如果被攻击则会泄漏
  • 使用时间戳, 要求同步