威胁建模在字段级加密中的实操课 - 第1节

1.1 先聊聊:威胁建模到底是个啥?

我们天天说安全,说加密,说防黑客。

但你有没有想过一个问题:你到底在防谁?

是防隔壁老王偷看数据库?还是防云管理员滥用权限?

还是说,防的就是那个“万一”——万一磁盘被人搬走了,数据会不会裸奔?

说白了,威胁建模就是干这件事的。

它不是什么高深的数学公式,也不是一堆吓人的术语堆砌。

它就是一个系统化的思考过程:我的系统里,什么东西最值钱?谁会来偷?他们怎么偷?我该怎么防?

一句话总结:威胁建模 = 先当黑客,再当保安。

我记得我刚做安全那会儿,有个老前辈跟我说过一句话,我一直记着:
“你不先把自己当成坏人,你就永远做不好安全。”
嗯,这话糙理不糙。


1.1.1 为什么做字段级加密之前,必须先做威胁建模?

你想想看,字段级加密听起来很酷。把数据库里的几个敏感字段加密存起来,比如手机号、身份证号、银行卡号。看起来固若金汤,对吧?

但我在实际项目中见过太多“加密了个寂寞”的情况。

举个例子:有人把数据库字段加密了,但应用日志里明文打印了全部加密前的数据。结果日志系统被拖库,加密白做。

还有人把加密密钥硬编码在源代码里,而且代码托管在公开仓库。闹呢?

我踩过最大的一个坑: 曾经有个客户,花了大价钱做了字段级加密,所有敏感字段都换了加密算法。结果他们的备份文件没加密,直接丢在FTP上,权限还是777。攻击者根本不需要破解加密,直接拖备份就行。

所以说,不先做威胁建模,你连自己的敌人在哪都不知道。
加密只是手段,不是目的。目的是把真正的风险降低到可接受的范围。


1.2 常见威胁建模框架:选对工具,事半功倍

框架这东西,说白了就是“套路”。
有套路的好处是:你不用每次都从零开始想问题,照着框架走一遍,基本不会漏掉什么。

现在业界主流的框架,我简单过三个:STRIDE、PASTA、LINDDUN。

我个人习惯在不同的场景里用不同的框架:

  • 做通用软件系统 → 优先用 STRIDE,因为覆盖面全
  • 做金融、支付类高合规项目 → 我喜欢用 PASTA,流程更严格
  • 做数据隐私、PII相关的项目 → 那 LINDDUN 更对口,因为它专门盯着隐私

1.2.1 STRIDE:微软家的万金油

STRIDE 应该是大家最熟悉的。我记得2000年代初,微软为了搞定 Windows 的安全,搞出这套方法论。后来就流传开了。

STRIDE 是个首字母缩略词,代表了六种威胁类型:

字母 威胁类型 一句话解释 违反的安全属性
S Spoofing(假冒) 假装自己是别人 认证
T Tampering(篡改) 偷偷改了数据或代码 完整性
R Repudiation(抵赖) 做了事不认账 不可否认性
I Information Disclosure(信息泄露) 数据被别人看到了不该看到的 机密性
D Denial of Service(拒绝服务) 让系统没法用 可用性
E Elevation of Privilege(权限提升) 普通用户干管理员的事 授权
一个小技巧: 做字段级加密时,STRIDE 里的 I(信息泄露) 和 T(篡改) 是你最需要关注的。 加密防的是泄露,数字签名或 MAC 防的是篡改。这俩经常成对出现。

怎么用?

你就拿着你的系统架构图,对着这六个类型,依次问自己六个问题:

  1. 我的系统里,谁能假冒谁?—— 有没有凭证泄露?
  2. 我存的数据,中途会不会被改?—— 有没有完整性校验?
  3. 操作日志是否完整?用户能不能耍赖?
  4. 加密字段里的明文,有没有可能在别的环节暴露?
  5. 我的解密接口,会不会被打崩?
  6. 普通用户能不能绕过权限,直接调用解密接口?

1.2.2 PASTA:攻击者视角的“剧本杀”

PASTA 全称是 Process for Attack Simulation and Threat Analysis。

它不像 STRIDE 那样按威胁类型分类,而是按攻击流程来推演。

说白了,你把自己当成攻击者,从头到尾走一遍渗透过程,看能走到哪一步。

我挺喜欢 PASTA 的一点是:它很“实”。

它分七个步骤:

  1. 定义业务目标 —— 你的加密到底要保什么?
  2. 定义技术范围 —— 哪些服务、哪些数据库参与?
  3. 分解应用 —— 画数据流图,标出加密/解密边界
  4. 威胁分析 —— 站在攻击者的角度,他能从哪里下手?
  5. 漏洞分析 —— 现有的加密实现里,有没有已知的坑?
  6. 攻击建模 —— 把威胁串成一个完整的攻击链条
  7. 风险分析 + 缓解 —— 决定哪些风险要修,哪些可以接受
使用场景建议: 如果你们的合规审计特别严格(比如 PCI DSS、GDPR),PASTA 的出产物(攻击树、风险决策矩阵)可以直接拿去跟审计师沟通,很省事。

1.2.3 LINDDUN:专门盯着隐私的框架

这个框架的名字也是首字母:Linkability、Identifiability、Non-repudiation、Detectability、Disclosure of information、Unawareness、Non-compliance。

说人话就是:保护用户隐私。

字段级加密很多时候不是为了防外部黑客,而是为了保护数据主体。

  • 你的加密能不能防止关联分析?(比如不能通过一个加密字段反查出用户是谁)
  • 你的加密会不会暴露某些信息?(比如加密后字段长度不变,依然能猜出内容)
  • 你有没有合规方面的隐患?(比如 GDPR 要求“设计隐私”,你的加密是否满足?)

如果你做的是医疗、金融、或者面向 C 端用户的 App,LINDDUN 非常有参考价值。


1.3 三个框架的核心对比

为了方便你快速选型,我列个表:

框架 最佳适用场景 核心特点 缺点(我踩过的坑)
STRIDE 通用软件系统、Web应用 覆盖全面,入门快,检查清单式 容易走流程形式,没深入业务
PASTA 金融、政务、高合规场景 攻击模拟+风险驱动,输出物完整 流程重,小团队容易卡住
LINDDUN 数据隐私、PII、GDPR合规 专注隐私,方法论成熟 对系统整体安全覆盖不够
我的个人习惯: 做字段级加密项目,我通常先用 STRIDE 快速过一遍全局,再用 LINDDUN 专门过一遍隐私合规。PASTA 看情况,如果客户要求拿报告去应付监管,我就上 PASTA。

1.4 知识结构图:威胁建模到底长什么样?

下图是我自己梳理的本章知识脉络。

你可以把它当成这个课程第一节的“地图”。我们会沿着这个结构一点一点推进。

威胁建模基础知识体系图 什么是威胁建模? 为什么要做? 核心实践:先当黑客再当保安 常见框架 避免加密“寂寞” 保护真正的资产 识别攻击路径 选对框架(STRIDE/PASTA/LINDDUN) 先做威胁建模 再做加密设计 保护敏感字段 不保护无用数据 关注数据流 不止关注存储 STRIDE全覆盖 PASTA/LINDDUN专项 落地实践:把这个逻辑用到字段级加密上

核心要点回顾

  • 威胁建模不是纸上谈兵。它是你所有安全决策的基础。
  • STRIDE 适合入门,六个维度让你不落项。
  • PASTA 适合硬仗,攻击者视角会让你发现你平时想不到的路径。
  • LINDDUN 适合隐私敏感场景,做字段级加密时,这个框架能帮你把“保护用户”这件事做得更透。

好了,这一节我们先把“什么是威胁建模”和“主流框架长什么样”摸清楚了。
下一节,我们就要开始动真格的了——把威胁建模的刀,架到字段级加密的脖子上。

你准备好了,咱们就继续往下走。