跳到主要內容

Polyinstantiation 多實例化機制:多級安全資料庫防止隱密通道洩漏的核心技術解析

什麼是 Polyinstantiation?

在多級安全(MLS)資料庫中,Polyinstantiation(多實例化)允許同一主鍵對應多筆不同安全等級的記錄。低權限用戶查詢時只看到屬於自身等級的版本,對高機密記錄的存在毫無感知,從而封堵隱密通道(Covert Channel)。

傳統資料庫的主鍵唯一性假設在 MLS 環境下會製造漏洞:若低權限用戶插入一筆記錄而系統回傳「主鍵重複」,便暗示高機密記錄的存在。Polyinstantiation 透過將安全等級納入複合主鍵,使每個等級的資料彼此獨立,根除此類推斷攻擊。

兩種多實例化策略

元素級多實例化(Element-level):同一列中的個別欄位可依安全等級存放不同值,粒度最細,適合欄位間機密性差異顯著的場景。元組級多實例化(Tuple-level):整筆記錄以不同安全等級各自存在,實作較簡單,是主流 MLS 資料庫(如 SeaView、Trusted Oracle)的預設做法。

兩種策略各有取捨:元素級提供更細緻的存取控制,但查詢重建(Query Reconstruction)複雜度高;元組級維護成本低,但儲存空間需求較大。實務設計通常以元組級為基礎,對敏感欄位疊加元素級保護

💡 重點整理

  • 複合主鍵:將安全等級欄位納入主鍵,使相同邏輯主鍵可對應多筆合法記錄。
  • 視圖隔離:每位用戶的查詢結果自動過濾為其許可等級以下的版本,高等級記錄不可見。
  • 插入透明:低權限用戶插入記錄永遠成功,避免「主鍵衝突」洩漏機密存在性。
  • Bell-LaPadula 相容:多實例化設計需符合 No Read Up / No Write Down 規則,防止資訊向下流動。

Polyinstantiation 是 MLS 資料庫消除存在性隱密通道的關鍵設計,而非僅做存取控制過濾。正確實作需同時處理插入、更新、刪除三種操作,確保每個路徑均不洩漏高機密記錄的存在訊號。

📚 參考文獻

  1. Jajodia, S. & Sandhu, R. (1990). Polyinstantiation Integrity in Multilevel Relations. IEEE Symposium on Security and Privacy — 奠定多實例化理論基礎的原始論文。
  2. Denning, D. et al. (1987). The SeaView Security Model. IEEE Transactions on Software Engineering — 最早實作 Polyinstantiation 的 MLS 資料庫模型。
  3. Trusted Oracle DBMS Administrator's Guide, Oracle Corporation — 商業 MLS 資料庫中 Polyinstantiation 的實務實作參考。

⚠️ 本文內容基於撰寫時的最新資訊,實際應用時請參考官方文件的最新版本。

留言