安全基本概念
安全基本概念
复习定位
信息安全的三个核心目标是保护机密性、完整性和可用性——简称CIA。机密性防止未授权的信息泄露——完整性防止未授权的数据修改——可用性保证授权用户需要时能访问到信息。STRIDE威胁分类可以系统地帮助分析一个系统面临的安全威胁的由来。安全不是防火墙的银弹——而是一种需要结合纵深防御的整体思路。
CIA三元组
机密性(Confidentiality)——确保信息不被未授权的主体获得。保护机密性的手段包括——加密(使信息对无密钥者无法理解)、访问控制(只允许经过授权的用户读取)、数据屏蔽(对生产数据脱敏处理以用于测试)。破坏机密性的攻击典型——SQL注入通过拼接危险的SQL语句绕过程序的验证——使攻击者读到数据库中的明文密码。
完整性(Integrity)——确保信息不被未授权修改或确保篡改可被发现。数字签名通过公钥体系确保文件来自声称的发送者且没有被中途篡改。哈希函数(SHA256)对文件内容计算摘要——比较摘要是否变动。银行转账时——修改金额的中间人攻击破坏完整性。
可用性(Availability)——确保合法的用户在需要时能够访问信息和服务。分布式拒绝服务攻击(DDoS)利用大量伪造的请求将服务器资源耗尽——使正常用户无法获取服务。冗余备份、负载均衡和速率限制是保护可用性的通常手段。
安全与便利的权衡
企业VPN——所有流量都通过公司网络转发——保证数据机密性——但VPN下的带宽和延迟使访问变得缓慢——可用性/性能差了一个点。同样——要求每周更换一次密码并且包含数字、标点、大小写的长密码——大大增强了对暴力破解的抵御能力——但用户更可能把密码记在便利贴上——造成了新的信息泄露风险。
真正的信息安全不是将单个安全指标调至最强——而是根据系统的重要性与面对的风险做出动态权衡——在安全、成本、体验三者之间达到平衡。
STRIDE威胁分类
微软的STRIDE模型提供了六类威胁的系统化分析:
| 威胁 | 定义 | 实例 | 破坏的CIA |
|---|---|---|---|
| 欺骗(Spoofing) | 冒充他人身份 | 伪造IP、伪造邮件发件人 | 认证 |
| 篡改(Tampering) | 修改数据 | 篡改网络包、修改文件 | 完整性 |
| 抵赖(Repudiation) | 否认做过某操作 | 缺少操作日志 | 审计 |
| 信息泄露(Information Disclosure) | 敏感信息暴露 | 拖库、目录遍历 | 机密性 |
| 拒绝服务(Denial of Service) | 服务不可用 | SYN洪水、CC攻击 | 可用性 |
| 提权(Elevation of Privilege) | 获取超越授权的权限 | 缓冲区溢出、内核漏洞 | 授权基线破坏 |
纵深防御
纵深防御(Defense in Depth)的安全原则是一个系统不依赖任何单一的防御机制——而是构建多个层层递进的安全层——攻击者必须贯穿所有层才能成功——单层被突破不会导致系统完全失守。示例:Web应用的安全防护——WAF(应用层层层过滤可疑请求)、数据层用参数化查询防御SQL注入、所有密码存储使用bcrypt慢哈希——服务器侧对用户上传文件做MIME类型校验上传路径限制——文件和访问权限校验使权限进一步缩小——如果所有层都被绕过——还有日志审计追踪攻击者的行为。
复习检查
CIA三元组中——破坏可用性的攻击包括那些具体类型?除了DDoS之外——还有什么事件会导致可用性降低(如硬盘故障、软件bug)?
加密保护了机密性但没有保护可用性——为什么服务器数据被加密而密钥没有被攻击者获取时——勒索软件加密后敲诈赎金属于破坏了CIA中的哪个属性?
STRIDE的欺骗(Spoofing)和提权(Elevation of Privilege)有什么区别——攻击者冒充管理员登录和攻击者以普通用户身份利用漏洞变成管理员——两种本质界限在哪?
设计一个安全的Web登录机制——考虑密码存储、传输加密、防暴力破解、防session劫持——画出简单的保护层次图。
纵深防御为什么比单一强防御更好——举防火墙全阻止外网访问但内网一旦被突破后全无防护的案例说明纵深思想。
CIA三元组之间的冲突关系与工程权衡
CIA三元组不是三个独立的目标——它们之间存在天然的冲突关系。加强一个可能会削弱另一个:
机密性 ↔ 可用性:
加密保护了机密性(即使数据被窃取也无法被理解)——但加密过程降低了系统的处理速度、增加了密钥管理的复杂度——如果加密密钥丢失——数据的可用性丧失。
完整性 ↔ 可用性:
严格的访问控制(如"禁止删除任何文件")保护了完整性——但当需要快速清理磁盘空间时——管理员需要额外的审批流程——降低了可用性。
机密性 ↔ 完整性:
对日志文件的只读权限保护了完整性(日志不能被篡改)——但安全团队在进行入侵取证时——可能需要加密获取部分日志文件的写入能力以添加新的监控规则——但给了写权限就有可能被攻击者利用来擦除踪迹。在实际的安全工程中——需要在三者之间根据业务场景做权衡——对于银行核心账务系统——完整性和可用性优先于机密性(交易记录必须准确且有备份——密码泄漏可补救——但交易数据不能丢失或篡改)。对于社交网络——可用性(随时可以访问)优先于机密性(用户信息公开可分享)。
CIA在云环境中的新挑战
在云环境中——CIA三个目标面临新的挑战和威胁:
机密性:
- 数据在云中存储——云服务提供商(Oracle/Amazon/阿里云)的工作人员可能访问到数据
- 租赁的多租户共享基础设施可能通过侧信道攻击(Spectre/Meltdown的思路)导致跨租户的信息泄露
- 云的合规要求数据出境的法律限制——如中国的《网络安全法》对数据跨境转移的条例
完整性:
- 分布式数据在多个副本间的一致性——CAP定理限制了一致性、可用性和分区容忍性之间的兼顾
- 云的更新和补丁管理——确保运行在云上的不要因为依赖的基础镜像或第三方库被篡改而引入后门
可用性:
- 云服务依赖提供商的基础设施——如果支持云运行的数据中心发生火灾或电力中断——自己无法独立控制恢复过程
- 云资源按使用付费——但如果遭遇DDoS攻击——流量费用可能剧增——造成经济上的可用性损失(Billing DDoS)
云环境中的CIA保护需要云服务提供商和用户共同承担(Shared Responsibility Model)——云厂商负责"云的安全"(物理安全、虚拟化安全、网络基础设施)——用户负责"云中的安全"(数据加密、访问控制、安全配置)。
威胁建模的具体方法——以Web应用为例
使用STRIDE模型对一个Web应用进行威胁建模的数据流分析:
系统: 电商Web应用
用户: 消费者(外部实体)
数据流: 浏览器→Web服务器→应用服务器→数据库
STRIDE分析:
1. 欺骗——攻击者伪造身份登录——防御: 多因素认证、密码强度要求
2. 篡改——攻击者修改商品价格或运费——防御: 金额参数由服务端计算而非信任前端输入、关键修改操作需要签名验证
3. 抵赖——用户否认曾下过订单——防御: 记录操作日志(IP、时间、设备指纹、cookie)
4. 信息泄露——通过SQL注入获取用户密码——防御: 参数化查询、WAF、敏感字段加密存储
5. 拒绝服务——大量恶意注册耗尽系统资源——防御: 验证码、速率限制、用户信誉系统
6. 提权——普通用户成为管理员——防御: 服务端权限检查(Cookies中的角色不可信)、RBAC
通过这种逐项分析——团队可以在系统设计阶段系统地识别安全风险、评估风险等级并确定需要实施的防御措施。安全基本概念中的S-SDLC(安全开发生命周期)
S-SDLC将安全活动嵌入到软件开发的每个阶段——在需求阶段明确安全需求——在设计阶段进行威胁建模——在编码阶段使用安全函数和代码审查——在测试阶段进行渗透测试和模糊测试——在发布阶段进行安全配置审查——在运维阶段进行安全监控和事件响应。微软的SDL(安全开发生命周期)是最成熟的S-SDLC模型——已在内部实践二十年——显著降低了Windows等产品的漏洞密度。
复习检查(续)
CIA三元组之间的冲突——增强机密性(加密)可能降低可用性(密钥丢失)——增强完整性(禁止修改)可能降低可用性(无法快速清理)——需要根据业务场景做权衡。
纵深防御的核心思想——多层安全防御叠加——攻击者必须突破所有层才能成功——单层被突破后仍有后续防御——比依赖单一强防御更可靠。
STRIDE中欺骗Spoofing和提权EoP的区别——欺骗是冒充他人身份(伪造别人)——提权是自己不是管理员但获得了管理员权限(提升自己)——两者的攻击入口和防御方法不同。
勒索软件破坏了CIA中的可用性(数据无法访问)和完整性(数据被加密修改)——但如果没有备份——即使支付赎金——也不能保证数据能恢复可用。
加密保护机密性但不保护可用性的具体场景——硬盘加密开启了——但密码忘记——机密性仍在(数据没泄露)——可用性为0(数据无法访问)——所以密钥管理是加密方案的关键组成部分。
信息安全的其他重要原则
除了CIA三元组之外——信息安全还需要遵循一些基本的原则:
最小权限原则(Least Privilege)——每个用户和程序只应拥有完成任务所需的最小权限。如果一个进程只需要读取日志文件——不应赋予它写入权限。数据库应用账户不应使用root——而应使用仅有必要表权限的专有账户。最小权限原则限制了安全被突破后的扩散范围。
默认拒绝(Default Deny)——所有操作默认被拒绝——只有明确允许的操作才能执行。防火墙策略应该默认禁止所有入站连接——只允许明确放行的端口(80/443/22)。数据库默认拒绝所有远程连接——只允许应用服务器的IP连接。
失效安全(Fail Safe)——系统失效时应该进入安全状态而不是不安全状态。防火墙崩溃时应断开所有连接而不是允许所有连接通过——访问控制系统故障时应锁定所有门而不是打开所有门。
职责分离(Separation of Duties)——敏感操作需要两人的协作才能完成——防止单人权力过大。银行中的转账操作需要录入员和复核员两人——上线代码需要开发人员提交和审批人审核。
信息安全的法律合规要求
信息安全的三要素还包括法律合规维度——在特定行业和地区——系统需要遵守特定的安全法规:
PCI-DSS(支付卡行业数据安全标准):
处理信用卡支付的系统必须遵守——要求传输加密、存储加密、访问控制、日志审计、定期渗透测试等
GDPR(通用数据保护条例,欧盟):
要求对用户个人数据的收集/处理/存储进行同意和合规——数据泄露后需通知监管
HIPAA(健康保险流通与责任法案,美国):
医疗健康信息的安全保护要求
网络安全等级保护(中国):
中国境内的信息系统需要按等级进行安全保护——涉及等保定级、安全评估、日志留存等要求这些合规框架实际上将CIA三元组转化为了具体的、可审计的安全控制措施——强制定期进行安全评估和漏洞修复。
安全基线与安全策略的定义
安全策略(高层次的声明)定义组织对信息安全的要求和承诺——如"所有客户数据在传输和存储时必须加密"——安全基线(具体技术配置标准)定义了实现安全策略的具体技术参数——如"TLS版本必须≥1.2——加密套件必须使用AES-GCM——密钥长度≥256位"。
安全基线使安全策略从抽象的口号转化为具体的、可实施的技术配置——在系统部署和安全审计时有据可查。
复习检查(续二)
最小权限原则——每个用户/进程只拥有完成任务所需的最小权限——限制了攻击被突破后的影响范围。
默认拒绝策略——防火墙默认拒绝所有连接——只放行明确允许的端口——数据库默认只监听本地——不对外暴露——减少攻击面。
失效安全原则——系统故障时应进入安全状态——即使系统部分失效——安全边界仍然保持——防火墙崩溃后断开所有连接。
安全策略(做什么)与安全基线(怎么做)的关系——策略是高层声明——基线是具体技术参数——策略不变但基线可随技术进步更新(如加密算法升级)。
法律合规要求对CIA的转化——PCI-DSS对传输/存储加密的机密性要求——GDPR对个人数据的完整性/可用性要求——等保对日志/备份的完整性/可用性要求。
CIA三元组在系统架构中的应用——零信任(Zero Trust)
传统的边界安全模型(内网是安全的、外网是危险的)已经被突破——攻击者进入内网后可以自由横向移动。零信任模型的核心原则——"Never trust, always verify(永不信任,始终验证)"——取消内网和外网的信任差异——每个访问请求都必须经过身份验证和授权检查——即使请求来自内网IP。
零信任架构对CIA的影响:
- 机密性: 所有流量加密——端点持续验证——即使网络被截获通信内容也是密的——即使设备被入侵——访问也需要二次确认
- 完整性: 每次访问请求都验证证书和Token——防止请求被篡改
- 可用性: 零信任通过多路径冗余保证即使单一路径故障——仍可通过其他验证方式提供服务
零信任正在成为企业安全架构的主流——Google的BeyondCorp和各家云厂商的Zero Trust产品就是这一理念的实践。