《生命周期安全管控策略》
第2章 需求阶段安全

2. 需求阶段安全:安全需求分析、威胁建模入门、STRIDE模型应用

在软件开发生命周期的需求阶段,安全不再是事后补救,而是“左移”到最前端。本阶段的核心任务是通过安全需求分析明确系统必须满足的安全属性,利用威胁建模提前识别潜在攻击路径,并借助STRIDE模型对威胁进行系统化分类。这就像在建造大楼前先绘制防震图纸,而不是等楼塌了再加固。

安全需求分析流程 业务需求 功能 + 数据流 安全需求提取 STRIDE分类 威胁建模 数据流图 + 分析 ✓ 输出:安全需求文档、威胁列表、缓解措施

2.1 安全需求分析

安全需求分析是将业务需求转化为可验证的安全约束条件。它回答三个核心问题:

  • 保护什么? — 识别关键资产(用户数据、密钥、业务逻辑)
  • 对抗谁? — 分析攻击者动机与能力(内部/外部、脚本小子/APT)
  • 如何保护? — 定义安全控制措施(加密、认证、审计)
安全需求类别 典型示例 对应STRIDE
认证 用户登录必须使用MFA S(欺骗)
授权 普通用户不能访问/admin T(篡改)
机密性 传输层使用TLS 1.3 I(信息泄露)
完整性 支付数据必须签名校验 T(篡改)
可用性 API限流:1000 req/min D(拒绝服务)

2.2 威胁建模入门

威胁建模是一种结构化的方法,用于识别、评估和缓解系统面临的安全威胁。其核心步骤包括:

  1. 绘制数据流图(DFD) — 展示系统组件、数据存储、外部实体及数据流
  2. 识别威胁 — 使用STRIDE模型对每个数据流和节点进行分析
  3. 评估风险 — 根据可能性与影响确定优先级
  4. 制定缓解措施 — 设计安全控制来消除或降低威胁
威胁建模数据流图(DFD)示例 — 在线支付系统 用户 外部实体 登录请求 认证服务 进程 查询用户 用户DB 数据存储 返回结果 支付请求 支付处理 进程 写入订单 订单DB 数据存储 S I T S=欺骗 I=信息泄露 T=篡改

2.3 STRIDE模型应用

STRIDE 是微软提出的威胁分类模型,每个字母代表一类威胁。它帮助安全团队系统化地思考攻击面,避免遗漏。

字母 威胁类型 定义 典型攻击 缓解措施
S 欺骗 (Spoofing) 冒充他人身份 钓鱼、会话劫持 强认证、MFA、证书
T 篡改 (Tampering) 非法修改数据或代码 SQL注入、参数篡改 输入校验、数字签名
R 抵赖 (Repudiation) 否认做过某操作 日志删除、交易否认 审计日志、数字签名
I 信息泄露 (Info Disclosure) 敏感数据被未授权访问 数据泄露、错误信息 加密、最小权限
D 拒绝服务 (DoS) 系统资源耗尽不可用 DDoS、资源耗尽 限流、负载均衡
E 权限提升 (Elevation) 获得更高权限 越权漏洞、提权攻击 最小权限、RBAC
STRIDE模型应用架构 — 威胁分析与缓解 目标系统 Web应用 / API / 微服务 S 欺骗 身份冒充 T 篡改 数据修改 R 抵赖 否认操作 I 信息泄露 数据暴露 D 拒绝服务 资源耗尽 E 权限提升 越权访问 缓解措施矩阵 认证 | 签名 | 审计 | 加密 | 限流 | RBAC 威胁 → 缓解

2.4 实战:STRIDE在需求阶段的应用

案例:设计一个在线文档协作系统,在需求阶段使用STRIDE进行威胁分析。

# 威胁建模输出示例(需求阶段)
## 数据流:用户上传文档 → 文档存储服务

| 威胁类型 | 威胁描述                     | 风险等级 | 缓解需求                          |
|----------|------------------------------|----------|-----------------------------------|
| S        | 攻击者冒充合法用户上传恶意文档 | 高       | 需求1:实现OAuth 2.0 + MFA认证    |
| T        | 文档在上传过程中被篡改        | 中       | 需求2:客户端与服务端双向TLS      |
| I        | 文档内容被未授权用户读取      | 高       | 需求3:文档存储使用AES-256加密    |
| D        | 大量上传请求导致服务不可用    | 中       | 需求4:API限流 + CDN缓存          |
| E        | 普通用户越权删除他人文档      | 高       | 需求5:RBAC权限模型 + 操作审计    |
    
需求阶段STRIDE检查清单 S 欺骗 认证机制? T 篡改 完整性校验? R 抵赖 审计日志? ← 上一章 📖 返回目录 下一章 →