本書分為五部分,共19章。第一部分(第1~2章)涉及入門知識,介紹威脅建模的策略、軟件建模的不同方法,以及威脅建模的方式與方法。第二部分(第3~6章)介紹威脅發現方面的知識,綜述和分析人們對信息技術進行威脅建模的不同方法與工具。第三部分(第7~11章)介紹管理和解決威脅方面的內容,包括處理威脅、管理威脅以及可以用于解決威脅的策略和方法。第四部分(第12~16章)介紹在特定技術領域及其他相關領域威脅建模,包括網絡及云系統、賬戶和身份、密碼學及用于開啟自己的安全需求分析的“需求手冊”。第五部分(第17~19章)針對經驗豐富的威脅建模人員、安全專家、流程設計師提出如何為特定的組織構建和定制威脅建模流程。附錄包括可幫助你快速應用威脅建模的相關信息。
第24屆Jolt大獎獲獎圖書,微軟資深安全技術專家撰寫,系統且深入闡釋威脅建模的工具、方法、原則和最佳實踐
深入剖析威脅建模的各種常見問題,包含大量實踐案例,能為程序員開發與部署安全軟件提供有效指導
一切模型都是錯誤的,不過有些是有用的。
——George Box(20世紀著名統計學家)
在構建軟件系統時,人們會遇到很多可以預見的安全威脅,對此,本書描述了一些有用的威脅模型,可以用于消除或減輕這些潛在威脅。
威脅建模,名字本身聽起來非常精妙,但其實指的是我們本能都會做的事情。比如,如果讓你對自己的房子進行威脅建模,你會開始想房子里都有什么珍貴的人和物:你的家人、傳家寶、照片,可能還包括明星簽名海報;然后,你會想別人會用什么辦法闖進家里,比如通過沒有上鎖的門,或者開著的窗子;另外,你還會想是什么樣的人會來偷東西,比如鄰居家調皮的孩子、職業小偷、癮君子、跟蹤狂或是早已盯上你們家珍貴名畫的人。
上述所說的這些現實生活中的例子在軟件世界里也有相似的實例,不過現在重要的不是如何防范每一個威脅,而是首先你要建立這樣的思維方式。如果你的朋友求助于你評估他房屋的安全性,你會伸出援手,但你可能會對自己分析的完整性缺乏信心;如果別人要求你去保障一棟辦公建筑的安全,你可能也會頭疼,如果要你保障軍事設施或監獄的安全就更難了。在這些情況下,只憑直覺是不夠的,需要使用相應的工具來解決問題。本書就為讀者提供了這樣的工具,利用結構化、高效的方法來思考威脅建模技術。
本書講述了什么是威脅建模,個人、團隊、組織機構為什么需要進行威脅建模。這其中的原因包括:威脅建模可以在早期及時發現安全問題,提高對安全需求的理解,以及設計和交付更好的產品。這里通過五個部分來對本書內容進行概要介紹,包括威脅建模定義及其重要意義,哪些讀者群適合閱讀本書,本書為你提供什么,如何使用本書以及威脅建模技術的最新進展。
什么是威脅建模
日常生活中,大家對威脅建模并不陌生。比如,出于無奈在機場排隊時、偷偷溜出家門或去酒吧時都會對威脅進行建模:在機場,即使你沒有打算真那么做,但你可能會偷閑思考如何偷偷摸摸帶一些東西混過安檢;偷偷溜出去的時候,你會擔心有人注視著你的行動;當你在高速路上超速時,你可能在建立隱式的威脅模型,其中主要威脅就是警察,你會想他們就潛伏在廣告牌后面或天橋下面。另外,公路上的妨礙物(比如穿過馬路的鹿或者雨水)都可能出現在你的威脅模型中。
在威脅建模時,通常你會用到兩類模型。一類是你所構建的軟件或系統模型,一種是威脅模型(可能出錯的地方)。你所構建的軟件可能是網站、可下載的程序或應用,或者是可以在硬件中傳遞和交付的軟件包,也可能是分布式計算機系統或可能成為“物聯網”一部分的“物”。威脅建模是為了看到整片森林,而不是簡單的幾棵樹木。好的模型可以幫助人解決幾類或幾組攻擊,從而構建更安全的產品。
英語中,“threat”一詞有很多意思?梢杂脕硇稳菀粋人,比如“奧薩馬·本·拉登(Osama bin Laden)對美國來說是個威脅”,也可以形容多個人,如“內部威脅”;另外,還可用來形容一個事件,比如“本周末將面臨暴風襲擊的威脅”,也可以用來形容缺陷或者受攻擊的可能性,比如“你如何應對針對信息保密的威脅?”此外,“威脅”還可以形容病毒和惡意軟件,如“這一威脅有三種傳播方式”,也可用來形容行為,如“存在操作錯誤的威脅”。
同樣,“威脅建!币灿泻芏嗪x!巴{模型”這個詞可用于很多不盡相同有時甚至互不兼容的方面。其中包括:
作為動詞,例如,“你對威脅建模了嗎?”這句話的意思是說,對于你所構建的軟件或系統,你是否仔細檢查分析處理過,以查看軟件系統哪里會出現問題?
作為名詞,可表達使用的是什么威脅模型。比如,“我們的威脅模型是擁有機器的人”或說“我們的威脅模型是個專業而堅定的遠程攻擊者”。
可以表達如何構建一組理想化的攻擊者。
可以表達威脅分類,比如篡改威脅。
毫無疑問,威脅建模本身有很多含義。所有這些含義在不同語境下都是有用的,而且都是正確的,所以最好不要浪費時間爭論它的含義。爭論其具體的定義是毫無意義的,唯一的方法就是拋開其定義。本書涵蓋威脅建模各方面的技術,涉及大量可操作的具體技術,以幫助設計或者構建更安全的軟件。本書還將探討如何解決以下現實問題:一些技術要比其他的技術更有效,并且一些技術對有特定技術或經驗的人使用更有效。
威脅建模是防御的關鍵。沒有威脅建模,就會跟打鼴鼠游戲一樣,永無完結。
總而言之,威脅建模就是利用抽象的概念來思考風險。
威脅建模的原因
在當今快速發展的世界里,趨勢是精簡開發活動,而威脅建模有著重要的存在價值,包括早期發現安全缺陷,理解安全需求,設計和交付更安全的產品等。
早期發現安全缺陷
想象你在建造一座房子,對安全結果的影響你越早決定越重要。由木制墻及大量落地窗構建的房子會比磚石及少量窗戶的房子的潛在危險更大,因此要根據房子建在哪里等因素選擇一個合理的方案。如果在決定之后再更改,成本通常會很高。當然,作為補救,你可以在窗子上加防盜護欄,但是,若能最初就有一個更合理的設計不是更好嗎?這種權衡也可以用于技術當中。威脅建模可以幫你發現設計上的問題,甚至在你一行代碼都沒寫的時候即可發現問題,而此時也是發現這類問題的最佳時機。
理解安全需求
好的威脅模型能幫助你回答“那的確是實際的安全需求嗎?”舉例來說,系統是否需要保護設備免受他人非法擁有?蘋果公司在iPhone手機產品中給出了肯定回答,這顯然不同于傳統的個人電腦領域。當你發現威脅以及如何處理威脅時,你要明確需求。有了更清晰的需求,你就可以專注于處理相應的安全特性和性能。
需求、威脅與防御之間是相互作用的。在威脅建模時,會發現一些威脅不會影響你的業務,這樣的威脅可能不值得處理;蛘咝枨罂赡懿煌暾{處理過程復雜或者處理代價高,這時你就需要做出權衡,是在目前僅解決部分威脅,或者接受(溝通)你無法解決所有威脅的現實。
設計和交付更安全的產品
在構建產品時盡早考慮安全需求和安全設計,能大幅減少重新設計、重構系統,以及經常出現安全漏洞的可能性,這樣你就可以從容地交付更安全的產品,最終構建更完善、更快速、更經濟、更安全的產品,把更多的精力投入到用戶需求的特色功能開發中。
解決其他技術無法解決的問題
威脅建模會發現其他工具無法發現的一系列問題,可能是遺漏錯誤問題,如遠程連接驗證錯誤,而代碼分析工具無法發現該類問題。其他問題可能是你在系統設計中所獨有的。一般地,開發者在構建新軟件時,相應地會引入新的安全威脅。通過抽象的概念模型描述可能出現的錯誤,可以幫助你發現在其他系統里會出現的相同和相似的問題。
由此可得出結論:威脅建模不應該聚焦于其他人身安全工程和網絡安全工程中可發現的問題(除非是在早期,為了避免以后的重復勞動)。舉例來說,假如你正在開發一個調用數據庫的產品,威脅建模會快速定位SQL注入攻擊以及可能會被攻擊的注入點。然而如果沒有威脅建模,可能在未來遭受攻擊時才發現該類威脅。因此,威脅建模應該聚焦其他技術無法發現的問題。
本書目標讀者群
本書目標讀者是專業技術人員,如軟件工程師和系統管理員,以及系統分析師、架構師等,本書也有很多可供信息安全專家閱讀的內容。本書不同章節針對的讀者有所不同,總體來說,前面一些章節適合大多數讀者閱讀(或者說除了信息安全領域之外的其他專業領域人員),本書后面章節內容則更多的是面向安全專家。
并非只有信息安全專家、專業人士或愛好者才能閱讀此書。本書希望你能通過閱讀了解到現實中很多人的興趣和欲望是跟你不同的。比如,他們可能想要從你那里得到錢財,或者他們有別的目標,比如他們拿你做犧牲品夸大自己或是用你的電腦攻擊別人。
本書語言通俗易懂,適合任何會編程或設計程序的人,只是有些時候為了表達更加準確或更加清晰而使用一些術語,本書后面還附有術語表。
本書為你提供什么
通過閱讀本書,你能獲得豐富的威脅建模技術領域相關知識。你可以將其應用在你的項目中,開發與部署更安全的軟件。此外,你將學到如何明確、可度量、合理地權衡安全措施,學到一整套工具以及如何應用。同時,你可能會發現發布的軟件中一些看起來很棒、有很好的創意,但實際上卻暗藏危機。另外,你將學到阻止你有效威脅建模的原因,以及如何避免這些問題。
通過閱讀本書,你將學習威脅建模的輸出結果——通常叫做“漏洞”(bug)。業界存有異議:普遍將代碼中的問題歸為漏洞(bug),將設計中的問題歸為缺陷(flaw)。本書并不對其進行詳細討論,因為本書的主要目的是應用威脅建模解決問題,上述爭議對本書討論的內容無益。
不同讀者獲益不同
本書旨在為不同的技術人員提供有益的幫助,包括從事軟件開發人員,以及為滿足業務運營或商業目標要求而從事軟件安全的技術人員。
為方便起見,本書假設開發人員和運維人員之間有明確的區分。這種區分可以更好理解各自的能力、選擇和責任。舉例來說,對開發人員來說,改變審計記錄(log)或實施一個不同的身份驗證系統是“容易”的,而這對運維人員來說就不是一件容易的事情。同樣,對運維人員來說,維護日志記錄完整、保護電腦安全是“容易”的。如本書中所寫,業界流行一種“敏捷運維”(devops)模型。因此,針對開發人員和運維人員的課程會有些調整。同樣為了方便起見,本書還假定安全專家與開發人員、運維人員的角色互不交叉。
顯然,這就意味著,本書中同樣的內容可能給不同人群帶來不同的課程。以下具體介紹本書可為每一類讀者提供的價值。
軟件開發及軟件測試人員
軟件開發人員(日常工作主要是軟件開發)包括軟件工程師、質量保障及項目管理人員。如果你是這類人員,那么本書將幫助你在構建軟件過程的設計初期發現并解決問題,幫助你交付滿足客戶需求的更加安全的軟件。你將學到簡單、有效且有趣的威脅建模方法,以及應用該方法從另一個角度構建軟件模型和發現威脅。你將學到如何根據軟件開發過程中存在的漏洞發現威脅,如何利用威脅使你的業務需求變得更加清晰。你將學到認證技術、密碼學及可用性知識,在這個過程中你將發現攻擊和防御之間的對抗有著悠久的歷史,你能了解到本書推薦的威脅建模方法是如何發展的。你還將學到如何將威脅建模方法應用到軟件開發過程中。
亞當 · 斯塔克(Adam Shostack),微軟資深安全技術專家,微軟可信計算項目團隊核心管理人員,擁有數十年操作系統管理和產品開發從業經驗,工作范圍涉及安全開發過程、應用安全、攻擊建模等安全領域。除了從事安全開發工作,他還從事針對微軟公司員工、合作伙伴及客戶的威脅建模培訓工作。在加入微軟之前,他曾在多家創業企業擔任信息安全與隱私執行官,曾協助建立通用漏洞與披露信息庫(CVE)、隱私增強技術研討論壇以及國際金融加密技術協會。此外,他著有多部書籍,也是位高產的博客主和公共演講者,曾與Andrew Stewart合作出版《The New School of Information Security》。
譯者序:威脅建模——網絡安全的“銀彈”
前言
鳴謝
第一部分 入門指南
第1章 潛心開始威脅建模 3
1.1 學習威脅建模 4
1.1.1 你正在構建什么 4
1.1.2 哪些地方可能會出錯 6
1.1.3 解決每個威脅 9
1.1.4 檢查你的工作 17
1.2 獨立威脅建模 19
1.3 潛心開始威脅建模的檢查列表 19
1.4 小結 20
第2章 威脅建模策略 21
2.1 “你的威脅模型是什么樣?” 21
2.2 集體研討 22
2.2.1 集體研討的變種方法 23
2.2.2 文獻檢索 24
2.2.3 集體研討方法的觀點 25
2.3 系統的威脅建模方法 25
2.3.1 關注資產 27
2.3.2 關注攻擊者 29
2.3.3 關注軟件 30
2.4 軟件模型 31
2.4.1 圖表類型 32
2.4.2 數據流圖 32
2.4.3 信任邊界 36
2.4.4 圖表中包含的內容 37
2.4.5 復雜圖 38
2.4.6 圖的標簽 38
2.4.7 圖中的顏色 39
2.4.8 入口點 39
2.4.9 表驗證 39
2.5 小結 41
第二部分 發現威脅
第3章 STRIDE方法 45
3.1 理解STRIDE方法及其為何有用 45
3.2 假冒威脅 47
3.2.1 在同一臺機器上假冒一個進程或文件 48
3.2.2 假冒一臺機器 48
3.2.3 人員假冒 48
3.3 篡改威脅 49
3.3.1 篡改文件 49
3.3.2 篡改內存 49
3.3.3 篡改網絡 50
3.4 否認威脅 50
3.4.1 攻擊日志 50
3.4.2 否認一種行為 51
3.5 信息泄露威脅 51
3.5.1 進程信息泄露 52
3.5.2 數據存儲信息泄露 52
3.5.3 數據流中的信息泄露 52
3.6 拒絕服務威脅 53
3.7 權限提升威脅 53
3.7.1 通過崩潰進程提升權限 53
3.7.2 通過授權失效提升權限 54
3.8 擴展示例:針對Acme-DB的STRIDE威脅 54
3.9 STRIDE變種 56
3.9.1 STRIDE-per-Element 56
3.9.2 STRIDE-per-Interaction 58
3.9.3 DESIST方法 61
3.10 準出條件 61
3.11 小結 62
第4章 攻擊樹 63
4.1 使用攻擊樹 63
4.1.1 利用攻擊樹尋找威脅 64
4.1.2 創建新的攻擊樹 64
4.2 展現一個攻擊樹 66
4.2.1 人類可識別的表現形式 66
4.2.2 結構化的表示法 70
4.3 攻擊樹示例 70
4.4 真實的攻擊樹 71
4.4.1 詐騙攻擊樹 71
4.4.2 選舉操作評估威脅樹 73
4.4.3 思維導圖 73
4.5 有關攻擊樹的觀點 75
4.6 小結 75
第5章 攻擊庫 76
5.1 攻擊庫屬性 76
5.1.1 攻擊庫及檢查列表 77
5.1.2 攻擊庫與文檔檢查 78
5.2 CAPEC 78
5.2.1 準出條件 80
5.2.2 有關CAPEC的觀點 81
5.3 OWASP前十名 81
5.4 小結 82
第6章 隱私工具 83
6.1 Solove的隱私分類 84
6.2 互聯網協議的隱私考慮 85
6.3 隱私影響評估 86
6.4 Nymity Slider和隱私棘輪 86
6.5 語境完整性 88
6.5.1 語境完整性啟發式決策 88
6.5.2 擴大的語境完整性啟發法 89
6.5.3 有關語境完整性的觀點 89
6.6 LINDDUN助記符 90
6.7 小結 91
第三部分 管理和解決威脅
第7章 處理和管理威脅 95
7.1 開始威脅建模項目 95
7.1.1 何時開始威脅建模 95
7.1.2 從哪里開始和(計劃)在哪結束 97
7.1.3 從哪里入手 97
7.2 深入分析減緩方法 99
7.2.1 減緩順序 99
7.2.2 下棋 100
7.2.3 目標優選 100
7.2.4 逃避熊的襲擊 100
7.3 利用表格和列表跟蹤 101
7.3.1 追蹤威脅 101
7.3.2 建立假設 103
7.3.3 外部安全注解 103
7.4 威脅建模的特定場景元素 105
7.4.1 客戶/供應商信任邊界 105
7.4.2 新技術 105
7.4.3 對API威脅建模 107
7.5 小結 108
第8章 防御策略及技術 109
8.1 減緩威脅的策略及技術 109
8.1.1 認證:減緩欺騙威脅 110
8.1.2 完整性:減緩篡改威脅 111
8.1.3 不可否認性:減緩否認威脅 113
8.1.4 機密性:減緩信息暴露威脅 115
8.1.5 可用性:減緩拒絕服務威脅 117
8.1.6 授權:減緩權限提升威脅 118
8.1.7 策略和技術陷阱 119
8.2 利用模式解決威脅 120
8.2.1 標準部署 120
8.2.2 解決CAPEC威脅 120
8.3 減緩隱私威脅 120
8.3.1 最小化 120
8.3.2 加密 121
8.3.3 遵從性和政策 123
8.4 小結 123
第9章 解決威脅時的權衡 125
9.1 風險管理的經典策略 125
9.1.1 回避風險 126
9.1.2 解決風險 126
9.1.3 接受風險 126
9.1.4 轉移風險 126
9.1.5 忽略風險 127
9.2 為風險管理選擇減緩措施 127
9.2.1 改變設計 127
9.2.2 應用標準減緩技術 130
9.2.3 設計定制的減緩措施 132
9.2.4 模糊編碼不是減緩威脅措施 132
9.3 針對特定威脅的優先級方法 133
9.3.1 簡單方法 133
9.3.2 利用錯誤欄威脅排序 134
9.3.3 成本估算方法 135
9.4 通過接受風險來減緩威脅 138
9.5 減緩策略中的軍備競賽 139
9.6 小結 139
第10章 驗證威脅是否已解決 141
10.1 測試威脅減緩 142
10.1.1 測試過程完整性 142
10.1.2 如何測試減緩 142
10.1.3 滲透測試 143
10.2 檢查你獲取的代碼 143
10.2.1 構建軟件模型 144
10.2.2 利用軟件模型 145
10.3 問答式威脅建模 145
10.3.1 模型/現實一致性 146
10.3.2 任務和過程的完成 146
10.3.3 漏洞檢查 146
10.4 解決威脅的過程各方面 147
10.4.1 威脅建模授權測試;測試授權威脅建模 147
10.4.2 驗證/轉換 147
10.4.3 操作過程中記錄假設 148
10.5 表格與列表 148
10.6 小結 150
第11章 威脅建模工具 151
11.1 通用工具 151
11.1.1 白板 151
11.1.2 辦公套件 152
11.1.3 漏洞跟蹤系統 152
11.2 開放源代碼工具 153
11.2.1 TRIKE 153
11.2.2 SeaMonster 153
11.2.3 權限提升紙牌游戲 153
11.3 商業工具 154
11.3.1 Threat Modeler 155
11.3.2 Corporate Threat Modeller 155
11.3.3 SecurITree 155
11.3.4 Little-JIL 155
11.3.5 微軟的SDL威脅建模工具 155
11.4 尚不存在的工具 158
11.5 小結 159
第四部分 科技和棘手
領域的威脅建模
第12章 需求手冊 163
12.1 為何需要“手冊” 163
12.2 需求、威脅、減緩威脅之間相互作用 164
12.3 商業需求 165
12.3.1 優于競爭 165
12.3.2 產業需求 165
12.3.3 場景驅動的需求 166
12.4 防御/檢測/響應需求框架 166
12.4.1 防御 166
12.4.2 檢測 168
12.4.3 響應 169
12.5 人員/過程/技術作為需求的框架 170
12.5.1 人員 170
12.5.2 過程 170
12.5.3 技術 170
12.6 開發需求與采購需求 171
12.7 合規性驅動的需求 171
12.7.1 云服務安全聯盟 171
12.7.2 NISTPublication200 172
12.7.3 支付卡行業數據安全標準 173
12.8 隱私需求 173
12.8.1 公平信息處理條例 173
12.8.2 從設計著手保護隱私 174
12.8.3 身份識別七法則 174
12.8.4 微軟開發隱私標準 175
12.9 STRIDE需求 175
12.9.1 認證 176
12.9.2 完整性 177
12.9.3 不可否認性 178
12.9.4 機密性 178
12.9.5 可用性 178
12.9.6 授權 178
12.10 非需求 179
12.10.1 操作非需求 180
12.10.2 警告和提示 180
12.10.3 微軟的“十個不變法則” 180
12.11 小結 181
第13章 網絡與云威脅 182
13.1 網絡威脅 182
13.1.1 網站威脅 182
13.1.2 網絡瀏覽器和插件威脅 183
13.2 云租戶威脅 184
13.2.1 內部威脅 184
13.2.2 合租威脅 185
13.2.3 合規性威脅 185
13.2.4 法律威脅 185
13.2.5 電子取證響應威脅 186
13.2.6 各種各樣的威脅 186
13.3 云供應者威脅 186
13.3.1 直接來自租戶的威脅 186
13.3.2 租戶行為導致的威脅 187
13.4 移動威脅 187
13.5 小結 188
第14章 賬戶與身份識別 189
14.1 賬戶生命周期 190
14.1.1 創建賬戶 190
14.1.2 賬戶維護 192
14.1.3 賬戶終止 192
14.1.4 賬戶生命周期檢查列表 193
14.2 認證 193
14.2.1 登錄 194
14.2.2 登錄失敗 195
14.2.3 對于“你所擁有的”威脅 197
14.2.4 對“你是誰”的威脅 197
14.2.5 對“你所知道的”威脅 199
14.2.6 認證檢查列表 202
14.3 賬戶恢復 202
14.3.1 時間和賬戶恢復 203
14.3.2 賬戶恢復郵件 204
14.3.3 基于知識的認證 204
14.3.4 社會認證 207
14.3.5 賬戶恢復的攻擊者驅動分析 208
14.3.6 多渠道認證 209
14.3.7 賬戶恢復檢查列表 209
14.4 姓名、ID和SSN 210
14.4.1 姓名 210
14.4.2 身份證明文件 212
14.4.3 社保號及其他國家身份識別號 213
14.4.4 身份盜用 215
14.4.5 姓名、ID及SSN檢查列表 215
14.5 小結 216
第15章 人類因素與可用性 217
15.1 人的模型 218
15.1.1 應用人的行為模型 218
15.1.2 人的模型認知科學 220
15.1.3 人的啟發式模型 223
15.2 軟件情景模型 225
15.2.1 對軟件進行建模 225
15.2.2 軟件模型的圖表 227
15.2.3 對電子社會工程攻擊的建模 229
15.3 威脅引出技術 229
15.3.1 集體研討 230
15.3.2 威脅建模的儀式方法 230
15.3.3 儀式分析啟發式 230
15.3.4 將可用性融于四步框架 233
15.4 解決人類因素的工具和技術 233
15.4.1 抑制人類因素作用的謬見 233
15.4.2 良好的設計決策模型 234
15.4.3 良好學習環境的設計模型 236
15.5 用戶界面工具和技術 237
15.5.1 配置 237
15.5.2 顯式警示 238
15.5.3 吸引注意力的模型 239
15.6 測試人類因素 240
15.6.1 良好和惡劣的情景 240
15.6.2 生態有效性 241
15.7 有關可用性與儀式的觀點 242
15.8 小結 243
第16章 密碼系統威脅 244
16.1 密碼原語 245
16.1.1 基本原語 245
16.1.2 隱私原語 248
16.1.3 現代加密原語 248
16.2 典型威脅角色 250
16.3 針對密碼系統的攻擊 251
16.4 用密碼創建 253
16.4.1 做決定 253
16.4.2 準備升級 254
16.4.3 密鑰管理 254
16.4.4 解密之前驗證 255
16.5 關于密碼需要記住的事情 255
16.5.1 使用專業人士設計的密碼系統 255
16.5.2 用專業人士創建或測試的密碼代碼 255
16.5.3 密碼不是安全魔塵 256
16.5.4 假設都會公開 256
16.5.5 你仍需要管理密鑰 256
16.6 加密系統:Kerckhoffs及其原則 256
16.7 小結 257
第五部分 更上一層樓
第17章 將威脅建模帶到你的組織機構中 261
17.1 如何引入威脅建模 262
17.2 誰做什么 264
17.3 在開發生命周期中的威脅建模 270
17.4 克服對威脅建模的反對聲音 279
17.5 小結 281
第18章 試驗方法 283
18.1 查看縫隙 283
18.2 操作威脅模型 285
18.3 “寬街”分類法 288
18.4 博弈機器學習 293
18.5 對一家企業進行威脅建模 293
18.6 針對威脅建模方法的威脅 294
18.7 如何實驗 297
18.8 小結 298
第19章 成功的設計 299
19.1 理解流程 299
19.2 了解參與者 303
19.3 邊界對象 304
19.4 “最好”是“好”的敵人 305
19.5 展望未來 306
19.6 小結 308
附錄A 有用的工具 309
附錄B 威脅樹 315
附錄C 攻擊者列表 349
附錄D 權限提升紙牌游戲 365
附錄E 案例研究 372
術語表 388