系统安全概述
- 计算机系统组成:硬件,软件(内核,系统软件,应用)
- 系统安全:在系统生命周期内应用系统安全工程和系统安全管理方法,辨识系统中的隐患,并采取有效的控制措施使其危险性最小,从而使系统在规定的性能、时间和成本范围内达到最佳的安全程度
- 操作系统的安全是整个计算机系统安全的基础
- 系统的重要性
- 系统无处不在,系统日益广泛
- 2018 年 11 月 30 日,万豪国际集团数据库被黑客入侵
- 2024 年 12 月 17 日,Facebook 涉嫌泄露 2900 万用户个人数据,被爱尔兰数据保护委员会罚款
- 2021 年 Apache Log4j 中发现了一个被称为“Log4Shell”的零日漏洞(CVE-2021-44228)
- 系统安全是数字时代企业生存与发展的根基,是保障核心业务数据与连续性的生命线;一次系统漏洞可能导致毁灭性损失,安全防护是唯一的底线
- 系统安全问题存在的原因
- 技术层面:软件漏洞与缺陷 (0day),系统复杂性,防御机制滞后
- 管理层面:安全策略缺失或执行不力,安全意识不足,第三方与供应链风险
- 人为层面:内部人员威胁,外部攻击者
- 外部环境:法律法规与合规挑战,网络攻击产业化
- 系统安全的错误认识
- 应对安全威胁的主要手段是密码技术,是添置边界防护等安全设备 —— 黑客成功实施攻击的途径是发现、挖掘和利用信息系统的漏洞
- 不值得在关注系统安全,降低糟糕的系统开发、集成和部署带来的风险上花费成本
- 概念
- 系统安全核心定义:系统安全是为保护系统(如信息系统、操作系统、网络系统)免受未经授权的访问、使用、披露、破坏、修改而采取的措施和流程的集合
- 基本属性:CIA
- 机密性(Confidentiality)
- 对谁保:仅被合法的实体(如用户、进程等)访问,而不被泄漏给未授权实体的特性
- 保什么:不但包括国家秘密,而且包括各种社会团体、企业组织的工作秘密及商业秘密,个人的秘密和个人隐私(如浏览习惯、购物习惯等)
- 机密性还包括保护数据的存在性,有时候存在性比数据本身更能暴露信息
- 对计算机的进程、中央处理器、存储、打印设备的使用也必须实施严格的保密措施,以避免产生电磁泄露等安全问题
- GB/T 16260.1:软件产品保护信息和数据的能力,以使未授权人员或系统不能阅读或修改这些信息和数据,而不拒绝授权人员或系统对它们的访问。
- GB/T 18492:对系统各项的保护,使其免于受到偶然的或恶意的访问、使用、更改、破坏及泄露。
- 实现机密性的方法一般是通过物理隔离,信息加密,或是访问控制(对信息划分密级并为用户分配访问权限,系统根据用户的身份权限控制对不同密级信息的访问)等
- 完整性(Integrity)
- 信息在存储、传输或处理等过程中不被未授权、未预期或无意地篡改、销毁等破坏的特性
- 系统完整性:系统能够按照预期的功能运行,不受任何有意的或者无意的非法错误所破坏的系统安全属性
- 实现完整性的方法一般分为预防和检测两种机制。预防机制通过阻止任何未经授权的方法来改写数据的企图,如加密、访问控制,以确保数据的完整性;检测机制并不试图阻止完整性的破坏,而是通过分析数据本身或是用户、系统的行为来发现数据的完整性是否遭受破坏,如**数字签名、哈希(Hash)**值计算等
- 可用性(Availability)
- 信息、信息系统资源和系统服务可被合法实体访问并按要求使用的特性
- ISO13335-1:可用性被定义为保证授权实体在需要时可以正常地访问和使用系统信息的属性
- 为了实现可用性可以采取备份与灾难恢复、应急响应、系统容侵等许多安全措施
- 其他属性:可认证性,授权,可审计性,抗抵赖性,可控性,可存活性
- 网络空间安全:还关注构成网络空间的基础设施的安全和可信,以及网络对现实社会安全的影响
-
维度 系统安全 网络空间安全 核心焦点 单个计算系统的保密性、完整性、可用性 整个互联数字领域的保密性、完整性、可用性 保护对象 独立的操作系统、应用程序、硬件、数据文件 网络、网络中的系统、传输和存储中的数据、云环境、物联网生态 范围 微观、内向(聚焦于系统自身) 宏观、外向(聚焦于互联互通的整体环境) 核心威胁 本地权限提升、软件漏洞、系统配置错误、恶意软件在本地的执行 网络攻击、网络钓鱼、DDoS 攻击、跨站脚本(XSS)、APT 攻击、通过网络入侵 主要手段 安装防病毒软件、系统加固、打补丁、访问控制、加密本地文件 部署防火墙、入侵检测/防御系统(IDS/IPS)、VPN、安全网关、网络监控、态势感知 专业角色 系统管理员、系统安全工程师 网络安全工程师、渗透测试员 类比 汽车安全:确保一辆车的刹车、引擎、车身结构可靠 道路交通安全:确保所有车辆、行人、道路标志、交通规则的整体安全 依赖关系 是网络空间安全的基础 是涵盖系统安全的宏观框架 目标 保证单个系统的可靠运行和数据安全 保障整个数字生态系统的稳定和安全 - 系统安全是基础,网络安全是屏障
-
- 系统面临的安全威胁
- 恶意软件攻击、网络攻击与入侵、人为因素与社会工程学、数据安全与内部威胁、系统与软件漏洞、物理安全与供应链威胁
- 恶意软件攻击:勒索软件 (Ransomware),木马病毒 (Trojan),蠕虫病毒 (Worm),间谍软件 (Spyware)
- 网络攻击与入侵:分布式拒绝服务攻击 (DDoS),中间人攻击 (MitM),SQL 注入 (SQL Injection),跨站脚本攻击 (XSS)
- 人为因素:网络钓鱼 (Phishing),钓鱼 (Pretexting),内部人员疏忽,权限滥用
- 数据安全与内部威胁:数据泄露,内部恶意人员,云数据配置错误
- 系统与软件漏洞:零日漏洞 (Zero-Day),未及时打补丁 (Patching),默认配置与弱口令;信息源:CNVD,Microsoft,暗网(嘉豪兄拜托了)
- 物理安全与供应链威胁:物理安全威胁,供应链攻击,物联网设备威胁
- 系统安全之路
- 系统安全开发的最佳实践是采用从系统开发之初就不允许漏洞发生的方式,在系统开发的各个环节尽可能消除漏洞,这不仅使得系统及其用户更安全,关键基础设施更具弹性,还将节省软件企业的开发成本。
- 100%安全的系统和软件是不存在的,系统和软件产品存在漏洞是当前信息安全领域而临的最大困境。
- 由于漏洞的产生、利用以及相互作用的机理复杂,因此,如何有效减少系统漏洞数量,提高信息系统整体安全性成为当前亟待解决的挑战性问题。
- 系统安全防护
- 将机密性、完整性、可用性、认证性、授权、可审计性作为系统安全的核心属性
- 系统自身的实现质量,即系统和软件产品包含的漏洞情况也应该是系统安全性的主要内容,因为这些漏洞会直接导致安全性问题,这也是传统的系统安全关注的问题
- 站在不同的管理者视角,抗抵赖性、可信性、可控性、可靠性、软件弹性等也成为系统被关注的其他安全属性
- 系统安全开发方法
- 抛弃了传统的先构建系统,然后再将安全手段应用于系统的构建模式
- 留了采用风险管理、身份认证、访问控制、数据加密保护、入侵检测等传统安全方法,将安全作为功能需求的必要组成部分,在系统开发的需求阶段就引入安全要素,同时对系统开发全过程的每一个阶段实施风险管理,以期减少每一个开发步骤中可能出现的安全问题,最终提高系统的本质安全性。
- 系统安全错误原因分析:
- 分析系统安全错误发生的原因,将安全错误的修正嵌入到系统开发生命周期的整个阶段。通过对需求分析、设计、实现、测试、发布,以及运维等各阶段相关的系统安全错误的分析与控制,以期大大减少系统的漏洞数量,使系统的安全性得到有效提高。
- 该方法是将安全保障的实施开始于系统发布之前,尤其强调从系统生命周期的早期阶段开始安全考虑,从而减少系统生命周期的后期系统运行过程中安全运维的工作量,提高安全保障效果。
- 系统安全工程
- 运用系统工程的思想和方法,系统地分析信息系统存在的安全漏洞、风险、事件、损失、控制方法以及效果之间复杂的对应关系,对信息系统的安全性进行分析与评价,以期建立一个有效的安全防御体系,而不是简单的安全产品堆砌。
- 系统安全工程可以在系统生命周期的不同阶段对安全问题提供指导
- 信息保障
- 系统安全的核心目标就是保障信息安全,包括对信息的保护、检测、反应和恢复能力。
- 信息保障与之前的信息保密、网络信息安全等阶段的概念相比,它的层次更高、涉及面更广、解决问题更多、提供的安全保障更全面,它通常是一个战略级的信息防护概念。
- 核心思想是纵深防护战略(Defense-in-Depth),它采用层次化的、多样性的安全措施来保障用户信息及信息系统的安全
- 人、技术和操作是 3 个核心因素,包括了主机、网络、系统边界和支撑性基础设施等多个网络环节之中,如何实现保护(Protection)、检测(Detection)、响应(Reaction)和恢复(Restore)有机结合的动态技术体系,这就是所谓的PDRR(或称 PDR2)模型。
- 信息安全保障围绕漏洞消除展开;要将安全保障措施置于系统发布运行之时
- 降低系统脆弱性的最有效方法就是漏洞分析,因此,漏洞分析是信息安全保障的基础,在信息安全保障中占据核心地位。
操作系统安全机制
- 安全威胁的种类
- 形成途径:不合理的授权机制,不恰当的代码执行,不恰当的主体控制,不安全的进程间通信,网络协议的安全漏洞,服务的不当配置
- 行为方式:切断,截取,篡改,伪造
- 漏洞分类:获取系统控制权,获取隐私信息,受到拒绝服务攻击
- 表现形式:
- 逻辑炸弹:在被感染应用程序的起始处,不能复制自身
- 计算机病毒:能自我复制的一组计算机指令或程序代码
- 蠕虫:无须计算机使用者干预即可运行的独立程序
- 特洛伊木马:表面上执行合法功能,实际上却完成用户不曾料到的非法功能,不具备自我复制能力
- 后门:嵌在操作系统里的一段非法代码
- 隐蔽信道:为系统中不受安全策略控制的、违反安全策略的信息泄露路径
- 存储隐蔽信道:利用不受安全策略控制的存储单元
- 时间隐蔽信道:利用不受安全策略控制的系统在当前时间段内某方面的状态
- 操作系统的安全需求:CIA+可靠性
- 操作系统的安全机制:访问控制,认证机制,加密机制,最小特权管理,安全审计机制,存储保护、运行保护和 I/O 保护
- 访问控制
- 系统对用户身份及其所属的预先定义的策略组限制其使用数据资源能力的手段
- 三要素:主体 S(发起者/进程),客体 O(资源),控制策略 A
- 对文件/目录的访问控制
- 自主访问控制 (DAC)
- 每个客体有一个所有者,可按照各自意愿将客体访问控制权限授予其他主体
- 强制访问控制 (MAC):
- 将系统中的信息分密级和范畴进行管理,保证每个用户只能访问那些被标明能够由他访问的信息;
- 每个主客体都自动被赋予相应的安全属性;
- 访问时比较进程的安全属性和客体的安全属性
- 基于角色的访问控制 (RBAC):
- 用户-角色-权限 多对多
- 安全原则:最小权限原则,责任分离原则,数据抽象原则
-
访问控制机制 优点 缺点 自主访问控制(DAC) • 控制是自主的,为用户提供了很大的灵活性 • 权限管理比较分散
• 安全性差,不能抵御特洛伊木马的攻击
• 缺乏高安全等级所需的高安全性强制访问控制(MAC) • 保障了信息的机密性 • 忽视了信息的完整性
• 对授权管理比较僵硬,缺乏灵活性
• 应用领域狭窄,通常只应用于对安全性需求非常高的领域,如军方信息系统基于角色的访问控制(RBAC) • 便于授权管理
• 便于角色的划分
• 便于赋予最小权限的原则
• 便于职责的分离
• 便于客体分类• 需要了解组织结构知识
• 导致角色爆炸
• 没有提供操作顺序的控制机制,这一缺陷使 RBAC 模型很难适应那些对操作顺序有严格要求的系统
- 认证机制
- 标识:操作系统能够通过内部识别码或标识符正确识别用户的身份,即用户向系统表明的身份
- 鉴别:对用户所宣称的身份标识的有效性进行校验和测试的过程,用户声明自己身份的几种方法包括
- 证实自己所知道的:证实自己所知道的:密码、身份证号、最喜欢的人名字等
- 出示自己所拥有的:智能卡、USBkey 等
- 证明自己是谁:指纹、掌纹、声纹、视网膜、面部特征扫描等
- 表现自己的动作:签名、按键的速度与力量、语速等
- 授权:确定给予哪些主体存取哪些客体的权限,并实施这些存取权限
- 加密机制
- 数据传输加密技术:链加密,端加密
- 数据存储加密技术:文件级,驱动器级
- 最小特权管理原则
- 为使系统能够正常运行,系统中的某些进程需要具有一些可违反系统安全策略的操作能力
- 最小特权原则:必不可少的特权(充分必要性)
- 在系统中定义:系统安全管理员、审计员、操作员、安全操作员、网络管理员
- 任何一个用户都不能获取足够的权利破坏系统的安全策略;不应赋予某人一个以上的职责
- 例:惠普 Presidum/Virtual Vault,红旗安全操作系统 RFSOS,SElinux
- 安全审计机制:对系统中有关安全的活动进行记录、检查及审核
- 作用:能详细记录与系统安全有关的行为;能够对违反安全规则的行为或企图提供证据;可以提供信息帮助进行损失评估和系统恢复
- 审计事件:是系统审计用户动作的基本单位,如注册事件、使用系统的事件、利用隐蔽通道的事件
- 实现:日志记录器,分析器,通告器
- 日志:系统日志,应用程序日志,安全日志
- 存储保护、运行保护和 I/O 保护
- 存储器管理和存储保护之间的关系:存储保护与存储器管理是紧密相关的,存储保护负责保证系统各个任务之间互不干扰;存储器管理则是为了更有效地利用存储空间
- 基于内存管理的访问控制:由系统软件精确地说明对该进程而言: 系统空间的哪一页是可读的,哪一页是可写的
- 安全操作系统很重要的一点是进行分层设计,而运行域正是这样一种基于保护环的等级式结构
- I/O 操作一般是仅由操作系统完成的一个特权操作;操作系统对 I/O 操作进行封装,提供对应的系统调用
- 访问控制
Microsoft Windows 安全
- Windows NT
- 第一个真正意义上的网络操作系统
- 特点:支持多种网络协议,内置 Internet 功能,支持 NTFS 文件系统
- 架构:Windows 系统由内核、系统服务、用户界面等组件构成,提供多任务、多线程处理能力。
- 用户模式:用户进程,服务进程,系统支持进程,环境子系统服务进程
- 内核模式:执行体(包含操作系统的基础服务),Windows 内核,设备驱动程序;硬件抽象层,窗口和图形系统
- 虚拟机监控程序层
- Windows 系统安全组件 (Also see Access Control Model | Microsoft Learn)
- Windows 系统内置支持用户认证、访问控制、管理、审计、管理等安全功能
- 标识 (SAM)
- 安全账户管理器 SAM:负责管理本机定义的用户名和组等信息
- SAM 数据库:
HKEY_LOCAL_MACHINE\SAM/%systemroot%\system32\config\sam - 在系统启动后就处于锁定状态,用户无法擅自更改其内容;只由 LSASS 控制
- 鉴别授权/审计 (LSA)
- 交互式登录管理器 Winlogon / 登录用户界面 LogonUI
- 凭据提供程序 CP:在 LogonUI 进程中运行的进程内 COM(Component Object Model)对象,用于获取用户的用户名、密码、智能卡 PIN 码、生物验证数据(如指纹、面部识别数据)等
- 身份验证包 AP:检查特定用户名与密码是否匹配,进而对用户进行身份验证
- 本地安全机构子系统服务 LSASS:负责本地系统安全策略,负责用户身份验证。负责将安全审核信息发送给事件日志
- LSASS 数据库
HKLM\SECURITY - 内核安全设备驱动程序 KSecDD;实现了高级本地过程调用接口,其它内核模式安全组件,包括加密文件系统,可以用来在用户模式下与 LSASS 通信
- 访问控制 (SRM)
- 安全引用监视器 SRM:定义代表安全上下文的访问令牌数据结构
- APPLocker:该机制供管理员决定用户和组允许使用哪些可执行文件、DLL 和脚本
- APPContainer:提供一个限制性的进程执行环境
- Windows 系统安全模型
- 访问令牌 Access Token:包含有关已登录用户的信息
- 代表此用户执行的每一个进程都将具有此访问令牌的副本
- 包含安全标识符,用于标识用户的帐户以及该用户所属的任何组帐户;包含用户或用户组拥有的权限列表
- 产生过程:凭据认证,创建当前登录会话,LSA 创建 token;依据 token 创建进程、线程
- 安全描述符 Security Descriptor
- 与被访问对象相关联,包含与安全对象关联的安全信息
- 安全对象:是可以具有安全描述符的对象,如文件、管道、进程、注册表等
- 组成:
- 对象所有者的 SID,属组 SID
- DACL (Discretionary Access Control List):描述允许或拒绝特定用户或组的某些访问权限,它包含零个或多个ACE
- 访问控制项 ACE:SID,访问掩码 (rwx…),allow/deny,继承
- SACL(System Access Control List):主要是用于系统审计,指定了当特定账户对这个对象执行特定操作时,将其记录到系统日志中
- 访问令牌 Access Token:包含有关已登录用户的信息
- Windows 系统安全管理
- 加强 Windows 用户账户认证:密码策略,账户锁定策略
- 进行 Windows 系统备份
- 使用 Windows BitLocker 进行驱动器加密
- 开启 Windows Defender 防火墙
Linux 操作系统安全
- Linux 系统概述
- 类 Unix 操作系统,GPL 许可证
- 特点:免费,兼容 POSIX 1.0,多用户多任务,良好的界面,丰富的网络功能,可靠的安全,稳定性能,支持多种平台
- Unix 操作系统:由美国 Bell 实验室开发的一种多任务通用操作系统
- Linux 用户管理
- 相关文件:
/etc/{passwd,group,shadow} - 用户类型:超级用户 (uid0) 和普通用户
- 特权:进程控制,设备控制,网络控制,文件系统控制,用户控制
/etc/passwd:共 7 个字段- 帐号名称,密码(
x占位) - UID: 0 root, 1-499 sys, 500+ user
- GID, description, home, shell
- 帐号名称,密码(
/etc/shadow: 8+ 字段- name, passwd, last update, min pwd age, max pwd age, pwd warn period, pwd inactivity period, expire, reserved (ref)
- password:
$id$salt$hashed
- 设置密码复杂度:edit
/etc/security/pwquality.conforauthconfig --passminlen=12 --passminclass=4 --passmaxrepeat=2 --update - 特权管理:
/etc/pam.d/su,/etc/sudoers
- 相关文件:
- Linux 系统访问控制
- 文件系统挂载:
mount [选项] 设备名 挂载点,umount 设备路径|挂载点 - procfs 虚拟文件系统 (
/proc/{cpuinfo,stat}) lsflags:- 类型:d,-,l,b,c,…
- 3x(rwx)
ls,chown,chgrp,chmodopen: DAC 检查 (rwx, cap) - MAC 检查 (selinux, AppArmor)
- 文件系统挂载:
移动操作系统安全
本章三个操作系统:鸿蒙,安卓,Darwin
鸿蒙
- 微内核:内核空间只保留最核心、最基本的功能(如进程间通信(IPC)、基本的进程调度和内存管理)。其他功能(如文件系统、设备驱动、网络协议栈等)都作为独立的“服务”程序运行在用户空间。
- 物联网领域第一款操作系统
- 提供强大的分布式体系
- 具备安全的架构设计和内置的安全功能,包括受保护的内核、安全存储和用户身份验证等
- 全方位安全防护架构:芯片安全,系统安全,安全体验,安全生态
- 安全设计理念:原生安全,隐私至上
- 内核层安全:极简内核,权限分离,形式化验证
- 框架层安全:分布式安全框架,可信执行环境,设备身份认证
- 应用生态安全:上架严格审核,安装透明可控,运行实时防护
- 隐私保护:数据最小化,透明与可控,端侧处理
Android
- 概述:基于 Linux 内核,以 Java 作为主要的编程语言
- 安全特性包括应用权限管理、应用隔离和硬件级别的安全保护等
- 结构:
- Linux 内核层
- 系统运行库:Android 运行库,libc
- 应用程序框架层 (XXXManager)
- 应用程序层
- 核心安全机制
- 访问控制:
- 权限模型:应用程序都以唯一的系统识别身份,使用 API 时需要进行权限声明
- 权限管理:通过给不同的应用程序分配不同的权限,保证不同的应用程序可以访问不同的数据
- 敏感权限管理:对一些敏感操作进行审核和监管
- 沙箱模拟:
- 进程保护
- 沙箱:控制应用程序对资源的访问,如访问文件,目录,网络,传感器等
- 签名与证书:Android 系统上的应用软件都需要进行签名
- 访问控制:
- 威胁:
- 开源模式带来的风险:可以安装官方应用商店中没有的应用程序
- 权限的许可方法问题:滥要求权限
- 操作系统漏洞/应用软件漏洞
Apple Darwin
- Darwin 体系结构:
- Core OS Layer
- Mach: 微内核 (task, vm, ipc, schedule, interrupt)
- BSD: POSIX Compatibility (vfs, proc, net, user, syscall)
- I/O Kit: drivers (OOP)
- Core Services Layer (libSystem, Security、Core Location、SQLite, Address Book…)
- Media Layer
- Cocoa Touch Layer (UI)
- Core OS Layer
- iOS 操作系统安全
- 更小的受攻击面:no java, flash, psd;部分文件受限支持
- 精简的操作系统:no shell
- 权限分离:mobile, root, _wireless, _mdnsresponder…
- 代码签名机制:执行之前都必须经过受信任机构(比如苹果公司)的签名
- 数据执行保护 DEP:不允许数据的执行,只允许代码执行
- 地址空间布局随机化 ASLR
- 沙盒机制
- iOS 威胁
- 固件快速更新
- 设备固件升级模式和恢复模式:攻击 BootROM 越狱
- App Store 程序可能恶意
网络安全
- 应用层作为安全边界的一部分,或许有巨大的漏洞;仅仅使用网络层的防护手段无法阻止或检测到应用层攻击
- 成因:
- 攻击网络系统的动机和目的:纯粹炫耀黑客技术,增加自己网站点击率,加入木马和病毒程序,发布虚假信息获利,窃取用户资料及应用数据,政治性的宣传,破坏性攻击
- 客观原因:网络系统的复杂性,难修补漏洞
- 主观原因:密码管理,不安全的配置,漏洞修补,上网控制
- 网络安全视图:
- 防火墙:DoS, Port Scanning
- IPS/IDS: 已知漏洞,网络层模式攻击
- Web:信息泄露,网页篡改,非法入侵,拒绝服务,恶意代码注入,钓鱼网站,劫持挂马
- 访问控制和防火墙
- 访问控制的三要素:主体、客体、权限
- 访问控制矩阵的实际存储
- 每个客体有一个访问控制表
- 每个主体有一个访问能力表
- 授权关系表:访问控制矩阵中的非空元素
- 防火墙:
- 部署需要保护的内部网络出口处
- 网络级防火墙/应用级防火墙
- 技术:包过滤,应用代理,状态检测,UTM,NGFW
- Linux: netfilter + iptables
- 四表 (raw, mangle, nat, filter) 五链 (prerouting, input, forward, output, postrouting)
- raw: notrack (PREROUTING, OUTPUT)
- mangle: 专门用于修改数据包的标记或属性 (ttl, tos, mark) (ALL)
- nat (PREROUTING, OUTPUT, POSTROUTING)
- filter: (INPUT, FORWARD, OUTPUT)
- 入侵检测系统
- 常见攻击类型:漏洞扫描,端口扫描,网络嗅探,拒绝服务攻击,欺骗攻击
- 入侵检测:
- 指通过行为、安全日志、审计数据或其它网络上可获得的信息进行操作,检测到对系统的攻击或攻击企图
- 数据来源:主机入侵检测,网络入侵检测,混合分布式入侵检测系统
- 数据分析方法:基于异常(机器学习)的入侵检测系统,基于误用(规则)的入侵检测系统
- 规则:误报率低、漏报率高,准确率高、算法简单
- 机器学习:漏报率低,误报率高,可检测未知攻击
- 架构:事件产生器,事件分析器,响应单元,事件数据库
- 入侵检测技术
- IDS 入侵检测技术:与流量并行
- IPS 入侵防御技术:与网络流量串联
- FW 防火墙:在网络的前端
- WAF Web 应用程序防火墙:放置在网站 / Web 应用程序的前面
- 跨平台、轻量级、基于规则的网络入侵检测工具 snort
- 常见漏洞:
- 注入 Injection (严重,常见)
- SQL - Prepared Statement;特殊字符,最小化权限,转义,参数化的查询
- 安全编码
- 跨站脚本 XSS (普通,极为广泛)
- 反射型 XSS,存储型 XSS,DOM 型 XSS (#后的反射)
- 危害:盗取用户身份,拒绝服务攻击,篡改网页,模拟用户身份发起请求或执行命令,蠕虫
- 防范:插入内容可信/转义,Cookie 设置为 HttpOnly,检查用户输入
- 防范措施:过滤,输入编码,输出编码,用户安全加固
- 坏掉的验证和会话管理 BASM (严重,常见)
- 用户凭证泄露
- 防范:用户密码强度,加密敏感路径,短时凭证
- 不安全的直接对象访问 IDOR (References)
- 敏感信息泄露到 uri(具体文件名、路径、数据库关键字),鉴权不完整,导致可以猜测攻击
- 防范:避免使用敏感信息,使用自定义的映射名称,验证 uri
- 跨站请求伪造 CSRF (Forgery) (普通,广泛)
- 攻击者构造恶意 URL 请求,然后诱骗合法用户访问此 URL 链接;纯 http,不同于 XSS 依赖脚本
- 防范:检查请求的来源,使用 script based 同步令牌
- 不正确的安全设置 SM (普通,常见)
- 防范:最新补丁,最小化安装,文件系统隔离/系统隔离,严格检查所有与验证和权限有关的设定,权限最小化,不使用默认路径和预设帐号
- 不安全的加密存储 ICS (严重,不常见)
- 对重要信息不进行加密处理或加密强度不够
- 防范:加密,强算法,访问控制
- URL 访问限制缺失 FRUA (普通,不常见)
- “隐藏”的、未鉴权的 URL
- 防范:访问控制检查,渗透测试
- 没有足够的传输层防护 ITLP (普通,常见)
- 防范:加密,强算法,TLS 证书,客户端证书,Secure Cookie
- 未验证的重定向和跳转 URF (普通,不常见)
- 网站应用程序在将用户跳转到一个新页面时,跳转的目标地址(URL)可以由用户控制,但程序没有对该地址进行有效的验证和限制。
- 防范:不用重定向和跳转,对重定向或跳转的参数内容进行检查,以映射的代码表示目标地址
- 注入 Injection (严重,常见)
数据流分析
- 背景
- 测试(常见于动态分析)往往占开发成本的 50%
- 并发/分布式系统中的错误难以通过测试(复)现(“海森堡缺陷”)
- 程序分析器
- 分析程序是否满足特定属性
- 完美:可靠性/无差错,完备性/无漏报(漏报通常是不可接受的)
- 工程挑战:有意义,合理的时间和空间
- 数据流分析 (@hyk)
- 数据流:变量在其定义点 (first write) 和使用点之间所有可能的传递路径与值的变化状态
- 数据流图:变量/读写
- 控制流:程序中语句执行的部分顺序关系
- 基本块:程序中只有一个入口和一个出口的连续指令序列;包括首指令,跳转目标,跳转后继
- 数据流分析:一种用于收集程序各点可能计算的值的集合信息的技术
- 可能性分析/必然性分析
- 活跃变量分析 LVA:变量 v 可能被从 p 出发的某条路径使用
- 活跃性转移:变量 r 活跃,w 失效;先删再加
- Meet 操作:从后向前并
- Algo: I(n), O(n) 为 block n 前、后的可能活跃变量;初始 I=空集,loop { 遍历 block b 计算 O(b)=Meet(I, b),I=Transfer(O(b)) } until I 不变
- 可用表达式分析 AEA:一个表达式 e 在程序点 p 处可用,需满足以下条件:从程序入口到 p 的所有路径都必须经过对 e 的求值;在 e 的最后一次求值后,不存在使 e 失效的操作
- 通过值重用机制,避免对先前计算结果的冗余重复运算
- Meet 操作:从前向后交
- 可用性转移:w 前失效,后可用;先加后删
- 通过值重用机制,避免对先前计算结果的冗余重复运算
- 说明:这两个算法需要在 SSA 上工作才 sound,否则没有意义,会产生众多 war, raw 冲突;不过应试只能硬着头皮算了
人工智能系统安全
- 概论
- 定义
- Wikipedia: 人工智能就是机器展现出现的智能
- Turing: 人工智能是制造智能机器,尤其是智能计算机程序的科学技术
- 人工智能标准化白皮书(2018 版):人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术和应用系统。
- 发展:(1956) 推理,(1979) 知识,(2006) 学习
- 重大突破:深蓝击败国际象棋冠军,深度学习模型在图像识别任务上超越人类,AlphaGo 战胜世界围棋冠军李世石,AlphaFold 解决了困扰科学家 50 年之久的蛋白质折叠问题
- 人工智能安全:
- 人工智能内生安全:技术本身的脆弱性,作用对象是系统本身;数据安全和模型安全(后有)
- 人工智能衍生安全:智能模型的不安全性,其作用对象是智能系统以外的其他领域
- 人工智能助力安全
- 数据安全:
- 训练数据对最终模型的决定性作用,数据中所包含的隐私和敏感信息也是攻击者的攻击目标
- 攻击:数据投毒,数据窃取,隐私攻击,数据篡改
- 模型安全:对抗攻击,后门攻击,模型窃取
- 案例
- 微软机器人 Tay 遭投毒攻击导致其发表歧视性言论
- 针对自动驾驶的对抗攻击案例
- 数据篡改与生成技术伪造虚假视频内容
- 定义
- 基础
- 机器学习:
- 通常指模型从有限的训练样本中利用学习算法自动寻找规律和知识,进而在未知数据上进行决策的过程
- 主体是人工设计的数学模型
- 是模型参数优化的过程:两个核心要素 损失函数和优化策略
- 目标是训练具有泛化能力的模型
- 范式:
- 有监督学习:分类问题和回归问题
- 无监督学习:聚类分析、相关性分析、特征降维、异常检测、对比学习、数据重建
- 强化学习:通过奖励信号来获取环境对智能体动作的反馈,可能具有一定的延时性;智能体 (agent) 和环境
- 安全模型:
- 攻击者,攻击方法,受害者,防御者,防御方法
- 威胁模型(黑灰白盒),目标数据,目标模型,替代模型,替代数据
- 攻击目的:
- 破坏型攻击:破坏竞争对手的人工智能系统(数据投毒,修改模型的参数、生成对抗样本)
- 操纵型攻击:控制数据或模型以完成攻击者特定的目的(让模型做出特定的预测)
- 窃取型攻击:通过窥探数据、模型或者模型的训练过程,以完成对训练数据、训练得到的模型、训练算法等关键信息的窃取(训练数据集,模型逆向)
- 攻击对象:数据/模型
- 防御类型:检测 增强 法律
- 机器学习:
- 数据安全
- 数据投毒
- 标签投毒攻击:混淆样本与标签之间的对应
- 在线投毒攻击:一定概率 p 进行投毒以此削弱模型推理能力
- 特征空间投毒:通过修改毒化样本的深度特征来完成攻击
- 生成式攻击:生成模型的训练(生成对抗网络和自动编码器)
- 隐私攻击
- 成员推理攻击:利用目标模型在训练数据和测试数据上的不一致性来推理是否在目标模型的训练数据中
- 影子模型攻击:
- 将成员推理看做一个二分类(‘成员’或‘非成员’)问题。假设攻击者对训练数据的来源分布是有一些先验知识的,即可以从同一个数据分布总池中采样(但与原训练数据不相交)并构建仿数据集的能力
- 攻击者采样多个影子训练集,并在影子训练集上训练多个可以模仿目标模型表现的影子模型
- 根据影子训练集、影子测试集以及影子模型,构建以模型的预测向量输出为样本,以 0 或 1 为标签的攻击训练数据集
- 在攻击训练数据集上训练得到一个二分类器(称为攻击模型)来进行成员推理攻击
- 属性推理攻击:基于已发布的目标模型,从给定样本的非敏感属性中推断其敏感属性,推断训练数据的统计属性或特征分布
- 数据窃取
- 最大程度的还原整个训练数据集
- 黑盒数据窃取:已知部分数据、成员推理
- 白盒窃取:迭代/梯度逆向
- 迭代逆向:通过迭代来步步缩小生成梯度与真实梯度(各方共享梯度)之间的差异
- 递归逆向:对神经网络从后往前逐层递归优化,得到每层的最优输入
- 篡改和伪造
- 普通篡改一般涉及移动图像中物体的空间位置、抹掉原有内容并修复出新伪造内容
- 深度人脸伪造特指基于深度学习技术生成的人脸伪造数据 (GAN, Diffusion)
- 步骤:数据收集、模型训练和伪造内容生成
- 数据投毒
- 数据安全防护
- 鲁棒训练
- 训练过程中检测并抛弃毒化样本
- 基于修剪损失的鲁棒训练方法
- 差分隐私
- 应用位置:输入空间,模型空间,输出空间
- 输入:利用原始数据训练一个生成模型,在生成模型中添加噪声
- 隐藏空间:差分隐私随机梯度下降,GD 里加噪声
- 输出:扰动模型的目标函数而非输出结果,在多项式上添加噪声以实现差分隐私保护
- 应用位置:输入空间,模型空间,输出空间
- 联邦学习
- 将数据留在本地,各参与方可与其他参与方进行联合建模,各参与方无需共享数据资源,即在数据不出本地的情况下,进行数据的联合训练,建立共享的机器学习模型
- 过程包括参与方数据安全求交(纵向)、全局模型初始化、本地模型训练,参数密态传输、模型参数聚合、多伦迭代训练等过程
- 横向联邦学习/基于样本的联邦学习:多个参与方各自持有具有相同特征的不同样本集,各参与方通过在本地数据上训练本地模型,并定期上传模型参数进行聚合;适用于不同机构或组织间具有相同的数据特征空间,但样本空间不相同的场景
- 纵向联邦学习/基于特征的联邦学习:参与方通常持有来自同一集合的样本,但每一方的数据特征不同;纵向联邦学习主要应用于跨行业的的数据合作场景
- 联邦迁移学习:用于数据样本和特征空间重叠较少的场景
- 篡改与深伪检测
- 通用篡改检测:关注拼接、复制-移动和消除;利用像素间的相关性,频域特征或统计特征,基于深度学习模型的检测精度和鲁棒性
- 深度伪造检测:基于统计特征,基于 GAN 指纹,基于局部一致性
- 鲁棒训练
- 模型安全
- 对抗攻击:
- 向干净测试样本中添加细微的、人眼无法察觉(对图像数据来说)的噪声来构造对抗样本
- 白盒/黑盒/物理攻击
- 对抗样本检测:二分类问题;对抗训练
- 后门攻击
- 攻击者在训练开始前或者训练过程中通过某种方式往目标模型中安插后门触发器,从而可以在测试阶段精准的控制模型的预测结果
- 后门植入和后门激活
- 输入空间攻击:训练数据投毒
- 模型空间攻击:从预训练模型中生成后门触发器
- 后门模型检测:后门模型中其他类到后门类的距离更近;神经净化方法
- 后门样本检测:识别训练数据集或者测试数据集中的后门样本;基于激活值聚类(最后一层输出 降维 聚类)
- 后门移除:
- 训练中移除:局部梯度上升,后门样本检测(loss 低),全局梯度上升
- 训练后移除:精细剪枝方法(在干净数据上休眠的神经元)
- 模型窃取
- 基于方程式求解的窃取攻击;针对传统机器学习模型,可精确求解,可能泄露训练数据
- 基于替代模型的窃取攻击:根据输入和输出的特定关系构建替代训练数据集
- 防御:
- 信息模糊:截断混淆,差分隐私
- 查询控制:根据用户查询行为进行判别
- 模型溯源:模型水印(黑白盒)和模型指纹
- 对抗攻击:
数据库安全
- 基础:
- 数据 → 数据库 → 数据库管理系统 → 数据库应用系统 → 数据库系统
- ANSI/SPARC 体系结构:三模式二映射,n:1:1
- DBMS 功能:数据存储检索更新,用户可访问的目录,事务管理,并发控制,恢复服务,授权与安全性管理,数据完整性管理,数据通信接口,数据独立性服务,完整性约束与业务规则执行
- 核心组件:查询处理器(DDL 解释器,DML 编译器,查询优化器,目录管理器),存储管理器(缓冲区管理器,文件管理器,权限与完整性管理器),事务管理与恢复管理器(并发控制管理器,恢复管理器),元数据字典,磁盘存储器
- 安全问题:
- 硬件故障与灾害破坏
- 数据库系统/应用软件的漏洞被利用
- 人为错误,管理漏洞
- 不掌握数据库核心技术
- 隐私数据的泄漏
- 安全需求
- 保证数据库信息的保密性、完整性、可用性、可控性(监控)和隐私性
- 访问控制
- 用户认证
- MAC 机制
- 和操作系统相比,数据库的访问控制难度要大得多(关联复杂,项目多,存在推理泄露问题)
- 加密存储
- 库内加密:内核层实现加密
- 库外加密:客户端实现
- 完整性控制
- 物理完整性、逻辑完整性、数据元素取值的准确性和正确性
- 逻辑完整性:保持数据库逻辑结构的完整性,数据库结构和库表结构设计的合理性
- 元素完整性控制:提供定义完整性约束条件的机制,提供完整性检查的方法,违约处理
- 备份与恢复:数据转储,登记日志文件,数据库镜像
- 入侵容忍
- 即使系统的某些组件遭受攻击者的破坏,但是整个系统仍能提供全部或者降级的服务,同时保持系统数据的机密性与完整性等安全属性。
- 方案:冗余组件,多样性,复制技术,门限密码,代理
- 数据库审计
- 可信记录保持:在记录的生命周期内保证记录无法被删除、隐藏或篡改,并且无法恢复或推测已被删除的记录
- 隐私性保护
- 原则:用途定义,提供者同意,收集限制,使用限制,泄露限制,保留限制,准确,安全,开放,执行
- 技术:数据失真技术,数据加密技术,限制发布技术
密码学
- 发展:从传统的基于手写文字通信的密码学,到基于电报通信的密码学,发展到基于数字化信息和网络通信的密码学
- 传统的密码学主要用于保密通信,现代密码技术及应用已经涵盖数据处理过程的各个环节,如数据加密、密码分析、数字签名、身份认证、秘密分享等
- 密码体制
- 组成:(M,C,E,D,K)
- 分类:对称/非对称
- 对称:分组密码 (AES 128b/DES 64b)、序列密码(RC)、消息认证码、哈希函数和认证加密算法
- AES: 状态矩阵 State,加密轮数 Nr
- 公钥密码:DH,RSA
- 秘钥管理
- 目标:在不安全的环境中,为用户分发密钥信息,使得密钥能够安全、正确并有效地使用
- 公钥密码技术:有分发、真实性、争议仲裁等问题
- 攻击:重放攻击,中间人攻击
- 公钥基础设施 PKI:在不安全的网络中保证通信信息的安全
- 最新进展
- 量子密钥分发 QKD:实现绝对安全的密钥分发
- 量子传输,基矢比对,窃听检测,隐私增强与认证
- 信息理论安全,可探测窃听;已商业化,距离限制,只解决密钥分发
- 同态加密:对加密数据进行处理
- 区块链:按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构
- 狭义:数据结构/技术组成部分
- 广义:利用块链式共享账本来验证与存储数据、利用 P2P 分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动执行的脚本代码组成的智能合约来编程和操作数据的一种全新的分布式计算可信网络或计算公证网络
- 区块链技术通过构建分布式数据库系统和参与者共识协议,能够保护数据的完整性
- 在区块链时间戳功能中,所有进入过其中的信息都会留下痕迹,这也为后期查询相关信息提供了便捷
- 量子密钥分发 QKD:实现绝对安全的密钥分发
硬件安全
- 物理安全问题
- 环境:地震等自然灾害,温度,湿度,灰尘,供电,电磁干扰,意外损坏
- 硬件级安全防护:硬件设备被盗被毁,开机密码保护被绕过,磁盘,内存
- 硬件中的恶意代码:CPU,存储设备,MCU,都可能存在漏洞、后门,甚至恶意代码
- 旁路攻击:键盘(视频,手势,声音,振动,温度),显示器(窥屏,反光),打印机(声音,电磁波),电磁泄漏
- 信息物理系统(物联网?)
- 物理安全防护
- 数据中心物理安全防护
- 数据中心物理安全防护国家标准:《数据中心设计规范》;规划设计、施工及验收、运行与维护等各个阶段
- 数据中心分级安全保护:A、B 和 C 3 个级别;《规范》对数据中心的分级与性能、选址及设备布置、环境、建筑与结构、空气调节、电气、电磁屏蔽、网络与布线系统、智能化系统、给水排水以及消防等做出了分级要求
- 《等保》将等级保护对象的安全保护等级分为 5 级;对物理访问控制、防盗窃和防破坏、防雷击、防火、防水和防潮、温湿度控制以及电力供应做出了具体要求
- 电磁安全:设备隔离和合理布局,使用低辐射设备,电磁屏蔽,电磁屏蔽,滤波技术,光纤传输
- PC 物理安全防护
- 环境安全/防盗:机箱锁扣,防盗线缆,机箱电磁锁,智能网络传感设备,覆盖主机后端接口的机箱防护罩,防盗软件
- 设备安全/访问控制:保护这些文件不被非法访问;软件狗,安全芯片
- 可信平台模块 TPM
- TCG 定义,是一种 SOC,有嵌入式操作系统,是一个拥有丰富计算资源和密码资源
- 具有密钥管理、加密和解密、数字签名、数据安全存储等功能
- 对 CPU 处理的数据流进行加密,同时监测系统底层的状态
- 能生成加密的密钥,唯一身份识别,密钥的存储,构建跨平台与软硬件系统的可信计算体系结构
- 中国的可信计算机必须采用中国的信任根芯片,中国的信任根芯片必须采用中国的密码。 (TCM 芯片)
- 移动存储介质安全防护
- 设备质量低劣:进行设备的检测
- 感染和传播恶意代码:安装病毒防护软件
- 信息泄露和痕迹泄露:进行认证与加密、访问控制、强力擦除与文件粉粹等防护
- 接入认证,健康检测,权限分配,访问控制,日志持续记录
- 数据中心物理安全防护