最後一部涵蓋三大主題:政治、管理、保證。既然我們已經大致知道如何提供保護,剩下三個大哉問是:
- 你該做什麼?
- 你怎麼組織這件事?
- 你怎麼知道做完了?
政治:安全-工業複合體#
二十一世紀的頭二十年,出現了一個消耗數十億美元、侵蝕我們的自由與隱私,卻往往只換來微不足道實際保護的安全-工業複合體。
新冠疫情強力地提醒了我們:我們把大量的社會韌性預算花在監控系統上,而本該花在公共衛生上。大流行性流感多年來高居多數國家風險登記表的前列,但坐在國安機構、決定錢怎麼花的,卻是安全與情報首長。
現在可持續性大概該接手了——但在那裡,我們同樣只看到口惠。
風險被錯誤認知、資源被錯誤配置的機制,其實相當清楚:政客靠製造恐懼拉抬選票,而被視為涉及人身或文化的威脅會讓人更焦慮。我們這個產業還幫著推波助瀾,提供的系統經常最適合被稱為「安全劇場(security theater)」。
這給安全工程師帶來一系列倫理與政治問題:
- 我們的社會之所以易受恐怖主義傷害,是不是因為我們反應過度?若是,如何避免自己成為問題的一部分而非解方的一部分?
- 能否找到更理性配置防護資源的方式,或至少阻止「安全」的說詞被用來支撐壞政策?
- 如何處理 1990 年代以來就在煩惱的傳統議題:線上濫用、審查、隱私、數位證據?
- 以及一個日益嚴重的問題:社會該如何面對我們這個產業如此擅長創造的壟斷?
管理:從瀑布式到 DevSecOps#
領導一支開發團隊,去創造、維護或增強一個具有關鍵安全性質的複雜系統,是人類謀生活動中最具挑戰性的事情之一。
從由上而下的瀑布式或 V 模型轉向敏捷開發,讓我們能建造更大的系統、在失敗時更快修補;但也讓資安與安全性(safety)這類湧現性質更難管理。
修補這件事在不同公司有不同名字,從 DevSecOps 到可靠度工程(reliability engineering);它仍是進行式,還會忙上好一陣子。我們可以貢獻的有用工作包括:研究組織與經濟誘因、失敗的統計,以及領先廠商的最佳實務。
保證與可持續性#
表面上這是個工程議題:如何找到有說服力的答案,回答「你在建對的系統嗎」與「你把系統建對了嗎」。這些問題在軟體工程裡很熟悉(而軟體工程能教我們很多),但當系統暴露在敵意攻擊之下,它們就有了新的意義。
更麻煩的是:幾乎所有能提出或認證保證主張的組織結構,都在某個方向上有利益衝突。
關於系統安全性質的主張,往往是權力與控制的薄紗掩飾;廠商投入大量心力去操弄與俘獲針對自家產品的認證流程。所以,廠商、保險公司實驗室、政府機構與學術攻擊者評估出來的結果天差地遠,一點也不奇怪。
二十年的修補承諾#
隨著各種商品取得軟體與通訊能力,它們都必須被修補。
- 至今為止,廠商把修補週期當成計畫性汰舊策略的一部分:手機大概三年、筆電大概五年,然後你就得買新的。
- 但這套用在汽車上行不通。車廠很想讓所有車六年後報廢,但環境成本會極其可怕。
- 因此歐洲現在有法律,要求汽車、冰箱這類耐久消費財在最後一台出廠後仍須維護十年。
這意味著工程師必須規劃如何維持軟體的資安與安全性 二十年以上。這是未來十年擺在我們面前的重大挑戰之一。