機密性、完整性、可用性三要素(CIA triad)
當你寄出一封封口的信,你通常同時想要三個不同的保證。第一,只有對的人能讀它(它是封住的)。第二,沒有人竄改裡面的字(封口完好)。第三,這封信真的會送到,不會遺失或被扣住。這三個願望正好對應到 CIA 三要素——機密性(Confidentiality)、完整性(Integrity)、可用性(Availability)——也就是我們說一則訊息或一個系統「安全」時的標準檢查清單。
每一條腿都是獨立的目標,由不同的工具達成。機密性指只有授權者能讀到資料——用加密達成,竊聽者只看到打亂的位元組。完整性指資料未被竄改,而且若被竄改你能偵測到——用密碼雜湊與訊息鑑別碼達成,它們的作用像一張「動過就看得出來」的封條。可用性指服務在需要時真的可達且有回應——靠容量、冗餘,以及對阻斷服務攻擊的防護來捍衛。通常還會再加上兩個目標:鑑別(證明某人是誰)與不可否認性(送出者事後無法否認曾送過某訊息),這通常由數位簽章提供。
為什麼重要:這組三要素之所以好用,正是因為這三項性質彼此獨立——你可能擁有其中一項卻沒有其他兩項,而這是常見的錯誤。加密給你機密性,但它本身不給完整性(攻擊者仍可在密文裡翻轉位元);備份給你可用性卻不給機密性;數位簽章給你完整性與鑑別,卻完全不藏內容。把三個目標分開命名,會逼你針對任何系統去問:我實際需要哪幾項?哪個工具負責哪一項?——而不是以為一個措施就涵蓋了一切。
一個訊息 App 把你的聊天加密(機密性)、附上一個 MAC 讓被竄改的訊息會被拒收(完整性)、並跑在冗餘的伺服器上以便在高負載下仍能運作(可用性)。少了任何一條腿,就會冒出一種不同的失敗。
三個獨立的目標——每一個都需要自己的工具。
一個常見的錯誤:以為單靠加密就讓訊息安全了。加密保護的是機密性,但除非你還加上完整性保護(一個 MAC),否則攻擊者仍能在不被察覺的情況下破壞密文。