01 / 導讀
導讀
引用
Anderson, R. (2020). Security Engineering: A Guide to Building Dependable Distributed Systems (3rd ed.). Wiley. Free official edition: https://www.cl.cam.ac.uk/~rja14/book.html
章節概要
第1章:什麼是安全工程?
第一部分講基礎知識。開篇一章把安全工程定義為構建在惡意、差錯或意外面前仍保持可靠的系統,並提出由四個相互作用的要素組成的框架:策略、機制、保障和激勵。它用四種環境(銀行、軍事基地、醫院和家庭)說明保護目標的多樣性,然後仔細定義系統、主體、信任、保密、隱私和完整性等術語,並提醒讀者"安全"對不同各方意味著不同的東西。
第2章:對手是誰?
本章從四個方面考察威脅行為者:間諜(部分依據斯諾登披露的材料,介紹美國、中國和俄羅斯的能力)、罪犯(網路犯罪生態、殭屍網路和惡意軟體)、極客(可能負責任地報告漏洞的研究者和駭客)以及"泥沼"(網路濫用,從欺凌、親密伴侶虐待到政治操縱)。其結論是:設計者既要考慮可用性,也要考慮"可濫用性"。
第3章:心理學與可用性
由於如今大多數真實攻擊都針對使用者,本章回顧關於認知、偏差、風險感知和欺騙的心理學研究,然後考察實踐中的欺騙(網路釣魚和社會工程)。口令作為一個擴充案例,涉及可記憶性、可猜測性、使用者培訓和現實中的失敗;本章最後討論驗證碼(CAPTCHA)。
第4章:協議
安全協議用於在各主體之間建立信任。本章從口令竊聽和簡單的挑戰-應答認證(汽車鑰匙、敵我識別系統)講起,歸納了中間人攻擊、反射攻擊、重放攻擊和選擇協議攻擊等失敗型別,討論金鑰管理(包括 Kerberos 式的方案)以及形式化驗證的侷限。它的建議是:不要自己設計協議。
第5章:密碼學
這一長章面向工程師介紹密碼學:古典密碼、安全模型(隨機預言模型和語義安全)、AES 等對稱演算法、工作模式、雜湊函式,以及基於因數分解和離散對數的非對稱原語,包括數位簽章和橢圓曲線。總結強調,系統失敗通常源於誤用和實現缺陷(例如不安全的預設模式),而不是演算法被攻破。
第6章:存取控制
本章從多個層面考察存取控制:作業系統機制(組、角色、存取控制列表、能力,以及 Unix、Windows、Android 等系統的設計)、硬體保護,以及各種出錯情形——從記憶體安全漏洞和競態條件到沙箱的侷限。
第7章:分散式系統
本章以對抗的眼光重新審視併發、容錯和命名:過時資料和不一致的更新、確定正確時間之難、冗餘與拜占庭故障,以及為什麼安全地管理名稱和身份如此困難。
第8章:經濟學
最後一個基礎章節介紹古典經濟學、資訊經濟學、博弈論和拍賣理論,並把它們應用於安全:為什麼激勵常常能解釋技術失敗,以及網路效應、鎖定、資訊不對稱、漏洞經濟學和隱私經濟學。
第9–11章:多級安全;邊界;推斷控制
第二部分轉向應用。第9章解釋安全策略模型、Bell-LaPadula 多級安全模型及其後繼模型,說明為什麼軍事多級安全難以實現,而強制存取控制如今卻在保護 Android、iOS 和 Windows 等平臺。第10章討論隔離分割槽與格模型、瀕危野生動物資料的保護,並深入討論醫療記錄隱私。第11章追溯從人口普查統計到差分隱私的推斷控制發展史,並論證對內容豐富的個人資料進行匿名化很少奏效。
第12章:銀行與簿記
簿記被描述為一種為真實性和問責而長期演化的系統,由 Clark-Wilson 模型加以形式化。本章隨後介紹銀行間支付、ATM、信用卡、EMV 晶片卡、網路銀行攻擊(網路釣魚、瀏覽器中間人惡意軟體、SIM 卡劫持)以及非銀行支付。
第13–16章:鎖與警報;監測與計量;核指揮與控制;安全印刷與封籤
這幾章討論物理安全和計量安全。第13章討論威懾、屏障、機械鎖和電子鎖以及警報系統。第14章研究預付費電錶、計程車計價器、行車記錄儀(轉速錶)和罪犯宵禁電子腳環。第15章介紹核武器控制如何催生無條件安全的認證碼、共享控制方案、許可行動鏈路和條約核查。第16章討論安全印刷、包裝與封籤、系統性漏洞以及如何評估它們。
第17–19章:生物識別;防篡改;側通道
第17章比較手寫簽名、人臉識別、指紋、虹膜碼和語音,解釋錯誤率統計以及出錯的原因。第18章追溯硬體安全模組、智慧卡和安全晶片中攻防交替的迴圈,並探討什麼值得保護。第19章討論輻射安全、計算機之間和計算機內部的被動與主動側通道攻擊(包括計時攻擊和快取攻擊)、環境感測器以及社會側通道。
第20章:進階密碼工程
在硬體與軟體交匯之處,本章研究全盤加密、Signal 訊息協議、Tor、硬體安全模組、可信執行環境(enclave)和區塊鏈,最後以"破滅的密碼學夢想"作結,指出密碼系統也有漏洞,和其他東西一樣需要打補丁。
第21–22章:網路攻擊與防禦;電話
第21章討論網路協議與拒絕服務、惡意軟體(木馬、蠕蟲、遠端存取工具)、從過濾到入侵檢測的各種防禦、TLS 等密碼協議、證書頒發機構與 PKI,以及網路拓撲。第22章研究電話安全:從固定電話網早期的欺詐,到 GSM、3G、4G 和 5G,再到移動平臺安全、應用商店以及圍繞 5G 的政治博弈。
第23–24章:電子戰與資訊戰;版權與 DRM
第23章解釋電子戰(干擾、欺騙、監視與目標捕獲、敵我識別、針對簡易爆炸裝置的對抗措施、定向能武器)及其向資訊戰和宣傳的延伸。第24章討論版權保護、通用計算機上的數位版權管理、資訊隱藏與水印、相關政策,以及印表機墨盒鎖定之類的配件控制。
第25章:新方向?
最後一個應用章節考察 2020 年前後的四個研究前沿:自動駕駛和遙控車輛、人工智慧與機器學習的安全、隱私增強技術與操作安全,以及選舉。
第26章:監控還是隱私?
第三部分討論政治、管理和保障。本章涉及政府監控與情報、恐怖主義與過度反應、審查、取證與證據規則、隱私與資料保護法(包括大西洋兩岸的分歧)以及資訊自由。
第27–28章:安全系統開發;保障與可持續性
第27章討論風險管理、安全攸關係統的經驗教訓、確定保護目標的優先次序、從瀑布式到敏捷和 DevSecOps 的開發方法,以及如何管理安全團隊。第28章考察評估體系(橘皮書、FIPS 140、通用準則和安全認證)、可靠性的度量,安全(safety)與安保(security)的融合,以及在耐用品中維護軟體數十年的挑戰。
第29章:超越"電腦說不"
簡短的結語提出未來的三個主題:社會複雜性、長壽命產品中軟體的可持續性,以及政治——因為安全是一種關係,而不是一個標量。
核心概念
第1–2章:基礎與威脅
- 策略、機制、保障、激勵:構建可靠系統必須同時具備的四個要素。
- 威脅模型:明確說明對手是誰、想要什麼以及如何行動。
- 可濫用性:系統可能被用來傷害他人的方式,應與可用性一併考慮。
第3–5章:人、協議與密碼學
- 網路釣魚與社會工程:針對使用者的欺騙,是許多真實攻擊的主要途徑。
- 安全協議:各主體建立信任所遵循的步驟序列,容易受到重放、反射和中間人攻擊。
- 工作模式:用分組密碼處理較長訊息的方式,誤用它們是常見的失敗原因。
第6–8章:存取控制、分散式系統與經濟學
- 存取控制矩陣:哪些主體可以對哪些客體執行哪些操作的抽象,以存取控制列表或能力來實現。
- 拜占庭故障:出錯的元件任意行事甚至相互勾結,而不僅僅是停止工作。
- 激勵錯位:守護系統的一方並不承擔系統失敗的代價。
第9–12章:策略模型與應用
- Bell-LaPadula 模型:一種多級策略,禁止在密級之間"向上讀"和"向下寫"。
- 差分隱私:一種形式化保證,限制統計輸出所能透露的任何個人資訊。
- Clark-Wilson 模型:源自簿記的完整性策略,基於規範的事務和職責分離。
第13–20章:硬體與系統工程
- 防篡改:保護裝置內部的秘密不受物理探測和操縱。
- 側通道:通過計時、功耗、輻射或共享狀態而非預期介面洩露資訊。
- 生物識別錯誤率:錯誤接受與錯誤拒絕之間的權衡,決定了識別系統的表現。
第21–25章:網路與新興領域
- 公鑰基礎設施:用證書頒發機構和證書把金鑰與名稱繫結的體系,存在諸多信任問題。
- 流量分析:即使內容被加密,也能從通訊模式中推斷資訊。
- 對抗性機器學習:利用學習系統的泛化或訓練方式進行的攻擊。
第26–29章:政策、管理與保障
- 安全表演:讓人安心卻並不降低風險的表面措施。
- 保障與評估:通用準則等用於確認系統是否符合其宣告的過程,常受利益衝突影響。
- 可持續性:讓耐用品中的軟體在數十年內持續得到修補並保持安全。
評析
優點
- 涵蓋面異常寬廣。 本書不僅涵蓋密碼學、協議和存取控制,還涉及物理鎖、封籤、鈔票印刷、核指揮與控制、電子戰和選舉。第二部分的引言說明這些應用如何在具體情境中引出各種保護概念,讓學生看到同樣的失敗模式在截然不同的領域反覆出現。
- 以真實失敗為基礎的案例研究。 各章圍繞有據可查的事件以及作者的研究和諮詢經驗展開,從針對汽車鑰匙的中繼攻擊(第4章)到網路銀行中的網路釣魚和 SIM 卡劫持欺詐(第12章),把原理與實際出錯的證據聯絡起來。
- 經濟學、心理學和政策被視為核心內容。 第3章和第8章把可用性和激勵列為基礎內容而非選修附加,第三部分則討論監控、法律、管理和保障,體現了作者"許多失敗本質上是激勵失敗"的論點。
- 實用的章節配套內容。 幾乎每章都以總結、研究問題清單和帶註釋的延伸閱讀結束,幫助學生和研究者進入相關文獻。
局限
- 篇幅極長,深淺不一。 免費 PDF 超過 1,200 頁,課程中不可能從頭讀到尾;一些應用章節是綜述性的,而非技術性論述。
- 不是數學化的密碼學教材。 第5章解釋概念和陷阱,但幾乎沒有證明或練習;需要形式化定義和歸約證明的學生必須使用專門的密碼學教材。
- 沒有練習題。 各章末尾是供進一步研究的研究問題,而不是可評分的練習,教師需要自行設計作業。
- 觀點鮮明且有時效性。 作者以強烈的個人風格寫作,對政策有明確立場,許多內容(5G、機器學習、選舉)反映的是 2020 年前後的情況。
書中的應用
應用是第二部分的主體,包括:軍事多級系統與資料二極體、醫療記錄系統以及瀕危野生動物資料的保護、人口普查統計、簿記、銀行間支付、ATM、信用卡與 EMV 卡以及網路銀行、防盜警報與鎖、預付費電錶、計程車計價器、行車記錄儀和宵禁電子腳環、核指揮與控制、鈔票印刷與封籤、生物識別系統、智慧卡與硬體安全模組、全盤加密、Signal、Tor 和區塊鏈、電話與行動網路、電子戰和 DRM,以及第25章中的自動駕駛汽車、機器學習和選舉。
在課程中的定位
在本安全與密碼學書單中,Anderson 的書採用系統視角和案例研究的方法。Paar、Pelzl 和 Güneysu 的 Understanding Cryptography 以及 Easttom 的 Computer Security Fundamentals 通常被認為分別是密碼演算法和一般安全概念的入門讀物;Stallings 和 Brown 的 Computer Security: Principles and Practice 通常被認為是一本帶有習題、覆蓋面廣的教材。學生可以用 Stallings 和 Brown 或 Easttom 進行系統學習,再用 Anderson 理解系統在實踐中為何失敗。
Katz 和 Lindell 的 Introduction to Modern Cryptography 以及 Bishop 的 Computer Security: Art and Science 講授形式化的一面:密碼學中的可證明安全,以及形式化的安全策略和模型。Anderson 的第5章和第9章為這些主題提供直覺;需要嚴格證明的學生應在讀完本書之後或同時閱讀這些形式化教材。
如何使用本書
據作者所言,第一部分除計算機基本素養外不要求任何技術背景,內容大致對應劍橋大學一、二年級的教學;第6、7、21章若具備作業系統和網路方面的知識會更容易理解。第一版前言所說的主要讀者是設計實際系統的在職程式設計師和工程師。
用於課程時,第一部分(第1–8章)是核心,其中第3、4、5、8章最為重要。第二部分可按課程需要選讀:第12章(銀行)和第21章(網路)適合一般安全課程,第18–20章適合硬體與應用密碼學,第22章適合移動安全。第三部分(第26–28章)適合政策或安全開發方面的課程。可以把每章的研究問題用作討論或專案題目,並藉助延伸閱讀深入學習。作者網站還連結了一套基於本書的講座影片和勘誤表。
版本與來源
本導讀依據第三版(Wiley,2020),閱讀的是作者官方頁面 https://www.cl.cam.ac.uk/~rja14/book.html 上釋出的包含全部章節的完整免費 PDF(檔案 SEv3.pdf)。內容取材於三版前言、目錄、第一至第三部分的引言,以及全部 29 章的章節引言、每個小節標題和章末總結,其中第1章的框架一節和第29章為全文閱讀。
