保護與安全

保護與安全(protection vs security)

想像一棟大型辦公大樓。在裡面,每位員工都帶著一張門禁卡,只能打開工作所需的那幾道門——倉庫工人沒辦法晃進財務金庫。這套內部的鎖與鑰匙系統,是一種安全。另外完全分開的,是大樓門口的警衛、攝影機,以及偵測外人闖入的警報。第一套系統管的是「老實人各司其職」;第二套則防範攻擊者。作業系統劃的正是這條界線,並把這兩個概念稱為保護(protection)與安全(security)。

保護講的是決定「一個執行中的程式可以碰什麼」的內部機制。它回答一個精確、機械式的問題:既然這個行程正在跑,它被允許存取哪些記憶體、檔案與裝置,硬體與核心又如何強制執行?保護並不假設參與者一定懷有惡意——它的存在甚至是為了擋住一個出了錯的老實程式去亂塗別的程式的記憶體。安全則是更廣的關懷:防範對手蓄意濫用系統,它包含各種威脅(病毒、竊取密碼的攻擊者)、各種政策(誰應該被允許做什麼),以及那些保護機制是否真的強到足以抵擋精明的對手。一句粗略的口號:保護是機制,安全是目標與政策。

這個區分之所以重要,是因為你可能擁有完美的保護機制卻仍不安全,反之亦然。如果你的鎖運作得無懈可擊,卻把萬能鑰匙發給每個人(一個糟糕的政策),那麼就機制而言你受到了保護,但就安全而言你門戶大開。反過來,一套很棒的安全政策若底層保護有個漏洞、讓行程能整個繞過那些鎖,那這政策也一文不值。好的系統兩者都需要:正確的機制(保護)去服務一個對抗真實威脅、深思熟慮且合理的政策(安全)。

像 rwxr-xr-x 這樣的檔案權限是一種保護機制:核心會機械式地拒絕擁有者以外任何人的寫入。而決定使用者檔案應預設為 rwxr-xr-x 而非 rwxrwxrwx,以及推敲懷有惡意的室友能否讀到它們,則是安全政策的問題。

同一套鎖(保護)既可服務謹慎的政策,也可服務粗心的政策(安全)。

別把這兩個詞當成可以互換。常見的混淆是以為「強的保護機制就保證安全」——並非如此,因為安全還取決於你選的政策,以及你面對的威脅是否超出了那些機制當初被設計來阻擋的範圍。

又称
protection and security保護機制與安全防禦