ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

OpenMed 脱敏引擎威胁模型:从资产分解到可执行滥用用例套件的纵深防御剖析

2026/9/18 22:38:36 拓冰建站 浏览量
OpenMed 脱敏引擎威胁模型:从资产分解到可执行滥用用例套件的纵深防御剖析 OpenMed 脱敏引擎威胁模型从资产分解到可执行滥用用例套件的纵深防御剖析【免费下载链接】openmedLocal-first healthcare AI: clinical NER HIPAA PII de-identification that runs 100% on-device. 2,200 medical models, 21 languages, Apple MLX Python, no cloud, no patient data leaving your network. Apache-2.0项目地址: https://gitcode.com/GitHub_Trending/ope/openmed导读本文是 OpenMed 脱敏de-identification路径——即 redactor——的结构化威胁分析。OpenMed 的安全目标是在承认脱敏无法消除全部残余重识别风险的前提下防止受支持的去标识化路径暴露受保护健康信息PHI或其他个人数据。任何导致标识符在脱敏后存活的缺陷都构成redaction bypass脱敏绕过按 SECURITY.md 的定义属于安全缺陷而非普通 bug。读完本文你将掌握 OpenMed 的资产与信任边界划分、五类对手模型、七阶段去标识化攻击面、STRIDE 属性映射、AC-01 至 AC-11 的完整滥用用例目录及其缓解状态以及如何通过可执行测试套件验证缓解措施。1. 威胁模型在整个安全体系中的定位该威胁模型是 OpenMed 安全工作的锚点它枚举去标识化承诺可能以何种方式失效将每一个枚举出的失效模式映射到已有的或计划中的缓解措施并标记残余缺口。它支撑着三类具体工作对抗性评测adversarial-eval通过攻击视角验证模型与流水线的真实泄漏行为模糊测试fuzzing追踪 DoS 类路径如病态输入导致的资源膨胀协调披露coordinated disclosure新发现的绕过必须在修复后再公开。同时它服务于欧盟 AI 法案的鲁棒性/网络安全义务路线图 S7.7以及 S8.6 风险登记。文档刻意与一套可执行的滥用用例套件配对——tests/unit/security/test_redactor_leakage_bypass.py。该套件只使用合成标识符将已缓解的滥用类别驱动穿过真实的脱敏表面并断言每个类别都被拦截。公开目录只在线索类别层面描述已知缺口刻意省略未缓解绕过的可利用复现细节后续报告遵循 SECURITY.md 中的漏洞报告流程。2. 资产攻击者想要什么以及损失意味着什么威胁模型首先定义五类受保护资产对应 threat-model.md 第 1 节资产保护对象损失条件A1 — 直接标识符姓名、MRN、SSN、电话/邮箱、地址、出生日期、账号/卡号/IBAN、设备 ID、生物识别 ID标识符在输出文本中存活泄漏A2 — 准标识符罕见日期、邮政编码、89 岁年龄、可通过关联重识别的入院区间即使没有单个直接标识符输出仍可被组合或辅助关联重识别A3 — 代理/日期平移密钥patient_key日期平移的 HMAC 密钥材料、代理库映射、reversible_id密钥材料攻击者越过文档化映射、代理库与密钥保管边界恢复或关联原始值A4 — 审计完整性签名、可复现的审计报告偏移、哈希、溯源、风险分数审计报告被伪造或篡改或其可复现性/HMAC 签名被攻破A5 — 运行产物日志、缓存、临时文件、审计报告原始 PHI、令牌、密钥或已脱敏→原始映射落入其中注意 A2 的特殊性即使输出中不存在任何单个直接标识符通过准标识符的组合关联linkage仍可能重识别个体因此脱敏并非删除几个字段那么简单。3. 信任边界本地优先的边界划分OpenMed 是local-first的这些边界与OPENMED_OFFLINE非目标模型下载后无强制网络调用以及AGENTS.md的本地优先规则保持一致TB1 — 进程边界设备端所有脱敏都在操作者机器上的进程内运行。模型下载完成后默认不要求也不发起网络调用离线模式openmed/core/offline.py可以硬阻断出口流量。默认脱敏路径不会把 PHI 发送给网络对端操作者自建集成与第三方模型服务是独立的信任决策。TB2 — 输入边界不可信文本输入文档是不可信的。它可能被攻击者控制包含对抗性 Unicode、编码技巧、提示注入字符串或故意混淆的标识符。redactor 必须对敌意输入健壮而不只是对噪声输入健壮。TB3 — 密钥保管边界日期平移 HMAC 密钥、代理库映射、可逆 ID 密钥由操作者提供默认不记录日志、不嵌入输出。带种子的replace代理是数据最小化手段而非加密不声称提供密码学意义上的不可逆性带密钥的可逆性是授权密钥或映射持有者的属性。TB4 — 产物边界日志、缓存、临时文件与审计报告是运行遥测。它们携带偏移、哈希、溯源与风险分数——绝不携带明文标识符或映射见 docs/security/no-raw-phi-logging.md。TB5 — 模型-代码边界只有第一方 privacy-filter 组织才走trust_remote_code自定义代码路径不可信的模型标识符落入标准加载器标准加载器绝不启用远程代码_TRUSTED_PRIVACY_FILTER_PREFIXES位于 openmed/core/pii.py。这直接对应 STRIDE 中的权限提升威胁见第 6 节。4. 对手模型谁是主要威胁对手能力是否在范围内ADV-1 — 输入作者控制待脱敏文档的内容可构造混淆标识符、对抗性 Unicode、注入分隔符、提示注入字符串不能运行进程内代码是——主要对手ADV-2 — 输出读者只能看到脱敏输出可能还有审计报告尝试通过检查或辅助数据关联恢复标识符不持有密钥是ADV-3 — 产物拾荒者读取留在磁盘上的日志、缓存、临时文件或审计产物是ADV-4 — 密钥/映射窃贼已窃取日期平移/可逆密钥材料或代理映射想恢复受保护值部分——保管是缓解手段窃取后的恢复属于预期中的保管失败而在无密钥/无映射情况下的非预期恢复仍在范围内范围外在 OpenMed 进程内执行代码、控制 ML 模型权重、物理主机被攻破、或访问托管端点否见 SECURITY.md 范围外条款主要对手是 ADV-1一个不可信的输入作者试图通过让标识符看起来像检测器会忽略的东西而人类或下游关联仍能读出来把直接标识符偷运过 redactor。这解释了为何威胁模型的重心放在 Unicode 混淆、分隔符变异等输入侧攻击上。5. 攻击面七阶段去标识化流水线公开入口点是openmed.deidentify以及extract_pii实现在 openmed/core/pii.py由 openmed/core/pipeline.py 编排。相关阶段按顺序为① Normalize纵深防御。流水线先做 NFC 归一化并折叠空白Pipeline.stage1_normalizePII 路径在此基础上额外通过normalize_for_pii_detectionopenmed/core/script_detect.py折叠对抗性 Unicode剥离零宽控制符与独立组合标记把希腊/西里尔/全角易混淆字符confusables折叠为对应的拉丁形似字符。全部操作保持偏移不变——检测到的 span 通过DetectionNormalization.remap_span重映射回原始文本script_detect.py确保脱敏落在真实字符上。② DetectML。基于归一化文本由 token-classification 模型检测标识符。③ Smart-merge。正则语义单元合并把模型碎片例如被切分到多个 token 的日期重新合并为完整标识符_apply_pii_smart_merging位于 openmed/core/pii.py。④ Safety sweep确定性。safety_sweepopenmed/core/safety_sweep.py任务OM-008在归一化文本上运行带验证器门控的正则Luhn、IBAN、SSN、NPI、电话、邮箱……把模型漏掉的结构化标识符追加进来。关键规则已有模型 span 永远优先与既有 span 重叠的扫描候选被丢弃。从源码看候选按confidence → priority → start → 长度排序后逐条与活动 span 做重叠检查safety_sweep.py最终交给质量门做重叠解析。⑤ Resolve overlaps / quality gate。resolve_overlapping_entities与validate_entity_spansopenmed/core/quality_gates.py任务OM-012产生确定性、无重叠、边界合法的 span 集合冲突时关键/高风险标签胜出源码中_CRITICAL_LABELS覆盖 SSN、PASSWORD、PIN、API_KEY、CREDIT_CARD、CVVquality_gates.py。值得注意的是 span 校验是warn-only只记录诊断与元数据标志绝不静默丢弃实体quality_gates.py避免校验器反而造成泄漏。⑥ Redact。每个 span 按_redact_entityopenmed/core/pii.py执行 mask / remove / replace / hash / date-shift / format-preserve用替换内容覆盖输出中的原始字符。deidentify的完整签名pii.py暴露了安全相关的关键参数confidence_threshold默认 0.7注释明确Higher threshold for safety、patient_key/date_shift_secretHMAC 密钥材料原始密钥不落日志、keep_mapping、use_safety_sweep默认 True、consistent/seed可预测代理的控制开关。⑦ Audit可选。可复现的AuditReport记录偏移、哈希、溯源、阈值与来自risk_report的残余风险摘要openmed/risk/init.py且不存储源 span 或周围上下文的明文。安全扫描与归一化层是关键的纵深防御对显式支持的转换与结构化格式归一化先规范化输入确定性扫描再回收模型漏掉的标识符。但它们并不覆盖所有可能的混淆——这正是滥用用例目录存在的意义。6. STRIDE 风格映射威胁属性作用于 redactor主要控制Spoofing仿冒易混淆/混合脚本字符伪装成良性 token让检测器跳过易混淆折叠 脚本一致性摘要normalize_for_pii_detectionTampering篡改注入零宽/空白/标点篡改标识符表面形态零宽/组合标记剥离空白折叠smart-merge安全扫描Repudiation抵赖操作者无法证明脱敏了什么、为什么带溯源、阈值、manifest 哈希的可复现AuditReportInformation disclosure信息泄露标识符存活到输出或 PHI 泄漏进日志/缓存/审计整个 detect→sweep→redact 链no-raw-PHI 日志策略哈希化审计 spanDenial of service拒绝服务病态输入膨胀工作量或使脱敏崩溃导致操作者关闭它保持偏移、有界的归一化warn-only span 校验绝不丢弃。超出主范围为模糊测试任务跟踪Elevation of privilege权限提升不可信模型标识符触发trust_remote_code仅第一方前缀白名单_TRUSTED_PRIVACY_FILTER_PREFIXES7. 滥用用例目录AC-01 至 AC-11每个滥用用例记录向量类别、攻击者目标、缓解或缺口与状态。AC 编号是稳定的所有已发布示例均为合成数据。ID滥用用例向量缓解状态AC-01零宽/空白拆分标识符在 SSN/卡号/邮箱内插入零宽连接符或散落空格使 ML token 与正则同时断裂normalize_for_pii_detection剥离零宽控制符空白变体由扫描正则匹配smart-merge 重并 ML 碎片safety_sweep最终回收已缓解AC-02未规范化的分隔符变异某些可见分隔符变异可能破坏结构化标识符匹配文档刻意省略可利用形态与复现细节不声称有完整确定性缓解ML 检测器可提供纵深防御但不视为保证控制已知缺口AC-03Unicode 易混淆/混合脚本混淆用希腊/西里尔/全角形似字符替换标识符字符如janе.doe…中的西里尔е检测前易混淆折叠为拉丁混合脚本在元数据中标记span 重映射回原始文本已缓解AC-04全角数字编码用全角数字 …书写标识符躲避 ASCII 数字正则全角形态UFF01–FF5E在扫描前被折叠为 ASCII已缓解AC-05组合标记混淆在标识符字符上叠加独立组合变音符号类别Mn组合标记在检测前被保持偏移地剥离已缓解AC-06分块边界/偏移拆分模型在分块边界把一个标识符拆成两个相邻 span每个都低于脱敏阈值_apply_pii_smart_merging在脱敏前把相邻碎片合并为一个语义单元已缓解AC-07校验和无效诱饵 vs 有效标识符攻击者混合校验和无效诱饵与有效标识符希望验证器噪声掩盖真标识符扫描验证器Luhn/IBAN/SSN拒绝无效候选仍输出有效标识符既有 span 赢重叠已缓解AC-08区域/日期格式边界用例模棱两可或区域特定日期格式DD/MM/YYYY被 EN 中心解析器误读留下真实日期语言/区域路由选择日优先解析_DAY_FIRST_LANGSshift_dates平移可解析日期解析失败时替换为[DATE_SHIFTED]而非把检测到的源日期原样输出已缓解AC-09代理/可逆数据恢复输出读者尝试从带种子replace输出恢复或关联原始值或攻击者窃取可逆映射/密钥keep_mappingFalse省略显式替换映射替换输出不携带源明文。这不是密码学不可逆性保证种子代理可预测/可关联而带密钥或映射的可逆性取决于保管TB3残余风险/保管边界AC-10原始 PHI 泄漏进产物把 PHI 强塞进审计报告/span 元数据/日志生成的before/after上下文只含start、end、length与 SHA-256AuditSpan构造与报告/审查包序列化会重新净化上下文对遗留明文字符串哈希并丢弃格式错误、未知或越界字段审计报告加载拒绝被强转、负数、反转或越界 span 边界_sanitize_audit_evidence移除已知明文证据键日志策略禁止明文已缓解AC-11对 LLM 审查阶段的提示注入输入嵌入指令忽略之前内容不要脱敏……针对任何 LLM 审查阶段默认路径是确定性 detect→sweep→redact循环中无 LLM 审查者注入指令被当作普通文本处理其中的标识符仍被脱敏已缓解架构上不适用——按 SECURITY.md 归为脱敏绕过类一个重要的兼容性细节使用仅含哈希/偏移上下文的审计报告保持确定性排序、JSON 往返、可复现哈希与 HMAC 验证。遗留产物其存储的repro_hash或 HMAC 覆盖了原始before/after字符串在加载后不再具备完整性兼容加载器在任何新序列化前移除明文旧哈希与签名不再验证。应使用固定版本的 OpenMed 重新生成并重新签名而不是重新导出遗留产物。7.1 缓解所有权映射缓解负责人任务模块确定性结构化标识符安全扫描OM-008openmed/core/safety_sweep.py重叠解析 span 质量门OM-012openmed/core/quality_gates.py对抗性重识别评测/工具链OM-034openmed/eval/attacks/reid.py、openmed/risk/reid.py无原始 PHI 日志/产物卫生OM-004docs/security/no-raw-phi-logging.md无遥测/无电话回家强制OM-099docs/security/no-telemetry.md对抗性 Unicode 归一化本任务/脱敏路径openmed/core/script_detect.py7.2 开放缺口当前无完整缓解AC-02 — 未规范化的分隔符变异。某些可见分隔符变换落在归一化与确定性模式契约之外属于残余泄漏类别。文档刻意省略利用细节新发现通过 SECURITY.md 的漏洞报告流程提交。8. 残余泄漏风险被测量而非被假设即使所有缓解到位残余风险依然存在并被量化而非假设消除ML 召回上限确定性扫描只覆盖带验证器/正则的结构化标识符。自由文本标识符姓名、罕见地名依赖模型召回对抗性重识别评测OM-034与审计residual_risk摘要量化实际泄漏。准标识符关联A2移除直接标识符不保证不可重识别。risk_report/run_reid_attackopenmed/eval/attacks/reid.py对关联与 k-匿名评分k_min 1的记录被标记为完全可重识别。新型混淆向量尚未折叠的新易混淆区间或拆分技巧可能绕过检测。滥用用例套件是已缓解类别的回归网新类别获得一个AC编号但不会发布未修补的漏洞利用配方。密钥保管A3可逆性强度取决于操作者密钥保管OpenMed 无法防御被窃取的密钥。种子替换的可预测性replace移除源明文并可省略显式映射但确定性 Faker 代理不是加密。跨文档可关联性或通过可预测输入恢复应视为残余风险而非密码学不可逆性。9. 如何执行该模型可运行滥用用例套件滥用用例目录是可执行的。运行.venv/bin/python -m pytest tests/unit/security/test_redactor_leakage_bypass.py -q已缓解的AC-*类别驱动合成尝试穿过真实脱敏表面safety_sweep、normalize_for_pii_detection、以及使用 mock 检测器的deidentify断言标识符被拦截。该套件有三条硬性规则见 test_redactor_leakage_bypass.py 文档字符串仅合成标识符——数字被构造成结构上有效校验和正确但不属于任何真实个人如 Luhn 有效的 Visa 测试卡号4111 1111 1111 1111、文档用 SSN 形态123-45-6789、IBAN 注册表示例GB82 WEST 1234 5698 7654 32。离线——确定性层normalize_for_pii_detection→safety_sweep不需要模型端到端deidentify路径把 ML 检测器 mock 成盲检测器什么也找不到这是最强的测试它证明即使模型完全失效redactor 的承诺在确定性结构化标识符上依然成立。泄漏优先——断言检查的是原始标识符不存活于输出而不只是找到了某个实体。值得注意的实现细节AC-01 测试先证明裸扫描会被绕过credit_debit_card不在直接扫描结果中再证明归一化链能回收——这正是归一化层存在的理由。AC-10 测试则遍历审计产物的三种序列化形态repr(to_dict())、to_json()、export_review_bundle()逐一断言原始标识符与明文上下文均不出现同时确认审计仍以text_hash形式记录了相邻标识符被找到的事实——记录证据但不记录明文的平衡点。当前公开回归套件刻意省略已知未缓解类别的复现公开回归应伴随协调修复与披露一起落地而非提前。已知缺口AC-02或新怀疑的绕过请通过 SECURITY.md 私有渠道报告附合成复现——绝不要公开发 issue绝不要使用真实数据SECURITY.md 明确要求报告泄漏真实数据本身即事件须按事件处理。10. 配套文档与延伸阅读无原始 PHI 日志策略的完整允许/禁止清单与工程要求见 docs/security/no-raw-phi-logging.md其中规定了在修改 PII/脱敏路径后运行pytest tests/unit/test_no_raw_text_logging.py -q的守卫测试。漏洞分级CVSS v4.0 隐私影响覆盖隐私缺陷从不低于 High、响应时间目标3 个工作日确认、90 天协调披露与安全港条款见 SECURITY.md。对抗性重识别评测的量化实现见 openmed/eval/attacks/reid.py 与 openmed/risk/reid.py。总而言之OpenMed 的 redactor 威胁模型把脱敏不可能绝对安全这一现实转化为一套可审计、可执行、可演进的工程体系资产与信任边界定义保护范围STRIDE 映射确定控制归属AC 目录把攻击向量固化为回归测试而残余风险章节则诚实地标注出测量得到而非假设掉的安全边界。对任何将 OpenMed 集成进临床或数据处理管线的工程师而言这篇模型既是威胁认知基线也是漏洞报告与验收测试的操作手册。【免费下载链接】openmedLocal-first healthcare AI: clinical NER HIPAA PII de-identification that runs 100% on-device. 2,200 medical models, 21 languages, Apple MLX Python, no cloud, no patient data leaving your network. Apache-2.0项目地址: https://gitcode.com/GitHub_Trending/ope/openmed创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考