iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
Security

AI都上線了,你的資安跟上了嗎?系列 第 18

📍 Day 15:資料最小化 × 差分隱私(DP)的實務可行性

  • 分享至 

  • xImage
  •  

—— 多知道不是能力,是風險;知道剛好才是設計。

對象:資料平台 / 資安 / 法遵 / LLMOps / 產品負責人
關鍵字:最小揭露(Least Revelation)|目的限制(Purpose Limitation)|差分隱私(DP)|隱私預算(ε, δ)


💬 開場:模型很會記,但我們不該讓它記

從蒐集 → 索引 → 檢索 → 生成 → 記錄 → 學習,任何一段都可能過量暴露
今天聚焦兩件事:資料最小化(少蒐集、少保留、少精度)與 差分隱私(對群體統計加噪),把「知道多少」變成工程化參數,而不是憑感覺。


🧠 風險地圖(Data → LLM 全鏈路)

階段 常見風險 最小化策略
蒐集 表單/Log 欄位過量 刪欄位、改「是否/區間」、Default Off
儲存 長期留存原始 PII TTL、分層保留(Raw 最短、特徵次之、統計可長留)
索引(向量化) PII 進向量庫 向量化前去敏、泛化(分桶/格式化)
檢索 Top‑K 過大、舊文誤取 Top‑K 上限、Recency、ACL/ABAC
生成 回答含明細可反推個資 Answer‑DLP、摘要替代、最小揭露模板
記錄/觀測 Raw Prompt/Answer 進 Log 遮罩、白名單欄位記錄、抽樣
學習/評測 用真實明細訓練/評估 匿名統計、DP‑Telemetry、合成資料

工程師幽默:不是所有資料都值得留,尤其是會讓法遵找上你的那種。


🧭 資料最小化四準則(P‑S‑R‑T)

  • P(Purpose) 明確目的外不蒐集。
  • S(Scope) 欄位 × 精度 × 時間都要縮到剛好(例:年齡 → 5 歲區間)。
  • R(Retention) 原始最短、特徵次之、統計長留;到期即刪。
  • T(Transit) 流動期間去敏、分段、tokenization。

小抄:能不知道就不要知道;必須知道就知道最粗的版本。


🧪 差分隱私(DP)速寫

  • 定義:在結果加入噪音,使移除/加入單一個體後的輸出幾乎看不出差異。
  • 參數ε 越小越保守;δ 為失敗機率上界(很小)。
  • 組合:多次查詢會累積隱私損失(privacy accounting)。
  • 類型:中央式 DP(伺服端加噪,品質較佳) vs. 在地 DP(客戶端加噪,信任要求更低)。

什麼時候該用 DP?

  • 使用行為遙測(功能使用率、錯誤率、RAG Top‑K 分布)
  • 模型運行統計(延遲、拒答率、輸出長度)
  • A/B 實驗的群體指標(不是個別名單)

不適合:需要回傳個別明細名單的查詢。DP 保護的是統計


🧰 DP 加噪(Laplace)最小可用範例

import math, secrets

def laplace_noise(scale):
    # Laplace(0, scale)
    u = secrets.randbits(64) / 2**64 - 0.5
    return -scale * math.copysign(1, u) * math.log(1 - 2*abs(u))

class DPCounter:
    def __init__(self, epsilon: float, sensitivity: float = 1.0):
        self.epsilon = epsilon
        self.scale = sensitivity / epsilon  # b 參數
        self.n = 0
    def inc(self, k=1):
        self.n += k
    def release(self):
        return int(round(self.n + laplace_noise(self.scale)))

# 用法:ε 越小噪音越大
ctr = DPCounter(epsilon=0.5)
for _ in range(123):
    ctr.inc()
print("DP 公開值:", ctr.release())

DP Telemetry 稽核欄位(YAML)

dp-telemetry:
  metrics:
    - name: "rag.topk.histogram"
      epsilon: 1.0
      min_cohort: 200
      sensitivity: 1
    - name: "answer.refusal.rate"
      epsilon: 0.8
      min_cohort: 300
  accounting:
    budget_per_tenant_day: 4.0   # 每租戶每天 ε 上限
    block_on_exceed: true

🏗️ 平台落地:DP‑Gateway × 最小化管線

[Client]
  ▼
[API/Gateway] ──► [Query Rewriter(去敏/泛化)] ──► [Retriever(Top‑K/Recency/ACL)]
  ▼                                        ▼
[LLM] ──► [Answer Guard(DLP/匿名化/最小揭露)] ──► [Telemetry Aggregator(DP)]
  ▼
[Audit / SIEM / Dashboard]
  • Query Rewriter:1992/08/05 → 1990–1995;中正區 → 台北市。
  • Answer Guard:能用統計就不要回明細;能回比例就不要回清單。
  • Telemetry:所有統計走 DP 聚合;設 ε 預算 + cohort 門檻

🧲 與資料最小化的工程手法

  • Tokenization/HMAC:事件中以不可逆碼取代帳號/裝置 ID;必要時由 Key Server 反解。
  • 泛化/分桶:連續值 → 區間;類別 → 上層類目(zip3、城市層級)。
  • 抑制/合併:樣本數過小(k‑匿名未達)就不報或併群。
  • 合成資料:非敏場景採用,以降風險加速開發。

🧪 紅隊測試(隱私視角)

  • 嘗試以多報表 JOIN 反識別個體 → 期望:被抑制/合併。
  • 以極端查詢榨出 Top‑K 明細 → 期望:被最小揭露模板改寫為統計摘要。
  • 連續查詢消耗 ε → 期望:達上限自動封頂並告警。

📊 指標(SLO/KPI)

  • ε 使用率(>80% 告警)
  • Cohort Suppression Rate(未達 k‑匿名被抑制比例)
  • Joinability Risk(跨報表再識別風險評分)
  • DLP FN Rate(去敏漏檢率)
  • Data Retention Compliance(超期資料量趨勢)

✅ 落地檢核清單

  • [ ] 表單/事件 Schema 已欄位精簡精度分級
  • [ ] 原始資料 TTL + 分層保留策略 上線
  • [ ] 向量化前 PII 去敏/泛化;索引帶分類/租戶/清查欄位
  • [ ] 生成階段有 最小揭露模板 與 Answer‑DLP
  • [ ] 遙測統計導入 DP Aggregator(含 ε 預算與 cohort 門檻)
  • [ ] 指標與告警進 SIEM;每季做 re‑identification test

🎭 工程師小劇場

PM:可以給我 VIP 客戶本月投訴明細列表嗎?
你:目的是改善體驗吧?給你前五大主因 + 比例趨勢。要聯絡資料請走核可流程。
PM:……好,我需要決策,不是個資。


🎯 小結

資料最小化 = 過濾器,DP = 抗噪盾牌。
把 ε 當預算、把欄位當成本,AI 平台就能在守規前提下依然可觀測、可優化。


🔮 明日預告:Day 16|微調資料治理(SFT/RLHF)與風險

談資料採樣/標註品質、毒化/偏見控管、取樣可追溯與紅隊測試集。


上一篇
📍 Day 14:System Prompt 盾化與洩漏獵殺手冊
下一篇
📍 Day 15-2:VaultGemma 與差分隱私 LLM 的工程突破
系列文
AI都上線了,你的資安跟上了嗎?24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言