一個隱私保護推論系統,是三件穿在同一件大衣裡的東西。客戶端持有敏感資料。伺服器持有訓練好的模型。兩者必須合作,但任一方都不能學到對方視為私密的東西。第一件是混淆層,它轉換輸入,讓伺服器無法還原。第二件是密碼學協定,讓伺服器能在轉換後的資料上進行計算。第三件是治理框架,用來檢查協定是否真的如宣稱般運作。每一件都有自己的故障模式。糟糕的混淆會透過嵌入空間洩漏資訊;繁重的密碼學讓推論慢到無法使用;沒人審計的治理框架,不過是寫在水上的承諾。
混淆層
混淆是最便宜也最實際的一件,這也正是它最容易出錯的原因。客戶端取得輸入——一段句子、一張醫療影像、一筆金融記錄——並施加一個伺服器無法逆轉的轉換。一種方法,在關於 LLM 推論的協作混淆研究中有所描述,是客戶端在將資料送往伺服器之前,先打亂 token 的映射。伺服器看到的 token 對應不到任何已知詞彙;它無法僅從那些 token 的統計分佈還原原始文字。客戶端保留這個排列的祕密,並在輸出端將其還原。
這裡的故障模式很微妙。如果模型在足夠多的資料上訓練過,伺服器仍可能從嵌入層的激活模式推斷出原始的 token 分佈。混淆的強度,取決於伺服器看到的東西與它能推斷出的東西之間的差距。隨著模型越來越大、訓練資料越來越廣,這個差距只會縮小。
密碼學協定
同態加密或安全多方計算這類密碼學方法,消除了猜測的成分。伺服器在任何時候都不會看到明文資料。同態加密,如同在 CipherGPT 這類系統中所使用的,允許伺服器在加密值上進行計算,並回傳加密的結果。客戶端解密後得到推論輸出。
代價是執行時間。一個隱私保護的 CNN 推論協定,可以達到每個樣本分鐘級的執行時間,並伴隨 GB 級的通訊成本,正如近期一篇架構論文所報告的。對於即使是中等規模的 transformer 模型,這個成本會隨著層數和序列長度而擴張。這個協定誠實地面對它的取捨:你得到強大的隱私保證,並為此付出時間和頻寬。這對於一份敏感度可能持續多年的醫療診斷來說是可以接受的。但對於一個需要在不到一秒內回應的聊天機器人來說,則完全不行。
治理框架
治理是多數人會跳過的那一件,因為它聽起來像文書作業。但它不是文書作業。一個沒有可驗證合規性的隱私保護系統,其隱私保證只存在於行銷素材中。近期一篇論文描述的雲端原生架構,將零知識合規證明與由強化學習驅動的自適應治理整合在一起。這個系統能產生一個密碼學證明,證明推論是在加密資料上進行的,且從未揭露資料本身。
這裡的故障模式是證明與實務之間的落差。零知識證明可以證明某個計算是對某個輸入正確進行的。但它無法證明該輸入在混淆步驟之前沒有被複製或記錄。它無法證明模型在兩次執行之間沒有被修改。治理只有在整個管線——從資料攝取到輸出交付——都為可稽核性而配備儀器時才有效。而這種儀器化成本高昂,且很少被建置在現有基礎設施中。
考驗堆疊的邊界案例
批次推論引入了一類單一樣本推論所沒有的邊界案例。當伺服器同時處理多個輸入時,密碼學協定必須確保沒有任何樣本洩漏關於另一個樣本的資訊。差分隱私可以在這裡派上用場,但它會加入雜訊,降低準確度。一篇論文提出的宣告式系統,使用污點分析自動識別哪些子查詢是敏感的,並僅對那些子查詢應用差分隱私,從而降低準確度成本。
黑箱 API 則呈現了另一種邊界案例。當模型擁有者——例如 OpenAI——不揭露模型權重或架構時,客戶端無法驗證伺服器施加了哪些轉換。像 TextObfuscator 和 DP-Forward 這類基於混淆的方法,是為分類任務設計的,在生成模型上會失效,因為輸出長度本身就會洩漏資訊。伺服器可以從生成的段落產生了多少個 token,推斷出它的主題。
哪裡會壞,以及為什麼知道這個有用
每個隱私保護推論系統都會在某處壞掉。問題在於,這個故障模式對你的使用案例來說是否可以接受。混淆會洩漏資訊,但跑得快。密碼學保護資料,但跑得慢。治理證明合規性,但需要基礎設施投資。在這三者之間做選擇,意味著要理解你實際上需要保護什麼、以及要防範誰。
感應器——持有資料的客戶端裝置——是誠實的。模型伺服器不一定有惡意,但它有收集資料的誘因。協定坐在兩者之間,試圖讓雙方都保持誠實。那就是那件大衣。它在大多數日子裡都夠用。當風暴來襲時,你會想知道哪條縫線會先裂開。
常見問題
對於我自己的系統,我應該優先專注在這三件中的哪一件?
從治理開始。如果你無法稽核伺服器實際做了什麼,你就是在信任一個黑箱。如果你無法驗證混淆和密碼學是否被正確應用,它們就毫無用處。在選擇數學之前,先建立稽核軌跡。
我可以結合混淆和密碼學,以取得兩者的優點嗎?
可以,但你會付出代價。混淆減少了輸入大小,從而加速了密碼學協定。但密碼學協定仍然以它自己的緩慢步調執行。組合起來比純密碼學快,比純混淆慢,而且更難稽核,因為你現在有兩個故障模式要追蹤。
我怎麼知道我的混淆是否在洩漏資訊?
用一個在相同分佈上訓練過的模型來測試它。如果伺服器能從激活模式預測出原始的 token 分佈,那你就在洩漏。唯一能確定知道的方法,就是自己執行這個攻擊。不要相信數學;相信實驗。




