威脅建模:設計和交付更安全的軟件

威脅建模:設計和交付更安全的軟件 pdf epub mobi txt 电子书 下载 2025

[美] 亞當·斯塔剋 著,江常青,班曉芳,梁傑,佟鑫 譯
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 机械工业出版社
ISBN:9787111498070
版次:1
商品编码:11684194
品牌:机工出版
包装:平装
丛书名: 信息安全技术丛书
开本:16开
出版时间:2015-04-01
用纸:胶版纸
页数:393

具体描述

編輯推薦

  第24屆Jolt大奬獲奬圖書,微軟資深安全技術專傢撰寫,係統且深入闡釋威脅建模的工具、方法、原則和實踐
  深入剖析威脅建模的各種常見問題,包含大量實踐案例,能為程序員開發與部署安全軟件提供有效指導。

內容簡介

  
  •   微軟資深安全技術專傢撰寫,係統且深入闡釋威脅建模的工具、方法、原則和實踐,對威脅建模的各種常見問題進行深入分析,涉及識彆安全威脅、處理安全威脅、安全措施、徹底解決安全威脅等內容,能為程序員開發安全軟件提供有效指導。

      《威脅建模:設計和交付更安全的軟件》分為五部分,共19章。第一部分(第1~2章)涉及入門知識,介紹威脅建模的策略、軟件建模的不同方法,以及威脅建模的方式與方法。第二部分(第3~6章)介紹威脅發現方麵的知識,全麵介紹並分析人們對信息技術進行威脅建模的不同方法與工具。第三部分(第7~11章)介紹管理和解決威脅方麵的內容,包括處理威脅、管理威脅以及可以用於解決威脅的策略和方法。第四部分(第12~16章)介紹在特定技術領域及其他相關領域威脅建模,包括網絡及雲係統、賬戶和身份、密碼學及用於開啓自己的安全需求分析的“需求手冊”。第五部分(第17~19章)針對經驗豐富的威脅建模人員、安全專傢、流程設計師提齣如何為特定的組織構建和定製威脅建模流程。附錄補充瞭一些威脅建模相關的信息,可以幫助讀者快速應用威脅建模技術。

      如果你是一名軟件開發人員、係統管理人員或者安全專業人員,本書將告訴你在安全開發軟件的生命周期中或者軟件和係統總體設計的過程中如何使用威脅建模方法。在本書中,安全技術專傢Adam Shostack係統且深入闡釋瞭自己對威脅建模的理解與實踐。與其他書籍不同,本書詳細介紹如何從開始設計軟件、計算機服務和計算機係統時就構建與提升其安全性。

      在安全事件威脅到你或者你的客戶之前及時發現並修復。

      幫助軟件開發人員、IT專業人員和安全愛好者學習使用實用且操作性極強的工具、技術和方法。

      探尋以軟件為關鍵要素的威脅建模方法的微妙之處,探索其應用於軟件和信息係統在構建及設計、維護等階段的威脅建模方法。

      在復雜係統管理中應用威脅建模方法提升其安全性。

      采用結構化理論框架管理潛在的安全威脅。

      發現並識彆不斷變化的安全威脅。

      《威脅建模:設計和交付更安全的軟件》提及的方法對於任何軟件類型、操作係統、編程方法和技術均有效,可操作性極強,且其已在微軟和其他IT公司中得到印證。

作者簡介

  亞當 · 斯塔剋(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

前言/序言

  一切模型都是錯誤的,不過有些是有用的。

  ——George Box(20世紀著名統計學傢)

  在構建軟件係統時,人們會遇到很多可以預見的安全威脅,對此,本書描述瞭一些有用的威脅模型,可以用於消除或減輕這些潛在威脅。

  威脅建模,名字本身聽起來非常精妙,但其實指的是我們本能都會做的事情。比如,如果讓你對自己的房子進行威脅建模,你會開始想房子裏都有什麼珍貴的人和物:你的傢人、傳傢寶、照片,可能還包括明星簽名海報;然後,你會想彆人會用什麼辦法闖進傢裏,比如通過沒有上鎖的門,或者開著的窗子;另外,你還會想是什麼樣的人會來偷東西,比如鄰居傢調皮的孩子、職業小偷、癮君子、跟蹤狂或是早已盯上你們傢珍貴名畫的人。

  上述所說的這些現實生活中的例子在軟件世界裏也有相似的實例,不過現在重要的不是如何防範每一個威脅,而是首先你要建立這樣的思維方式。如果你的朋友求助於你評估他房屋的安全性,你會伸齣援手,但你可能會對自己分析的完整性缺乏信心;如果彆人要求你去保障一棟辦公建築的安全,你可能也會頭疼,如果要你保障軍事設施或監獄的安全就更難瞭。在這些情況下,隻憑直覺是不夠的,需要使用相應的工具來解決問題。本書就為讀者提供瞭這樣的工具,利用結構化、高效的方法來思考威脅建模技術。

  本書講述瞭什麼是威脅建模,個人、團隊、組織機構為什麼需要進行威脅建模。這其中的原因包括:威脅建模可以在早期及時發現安全問題,提高對安全需求的理解,以及設計和交付更好的産品。這裏通過五個部分來對本書內容進行概要介紹,包括威脅建模定義及其重要意義,哪些讀者群適閤閱讀本書,本書為你提供什麼,如何使用本書以及威脅建模技術的最新進展。

  什麼是威脅建模

  日常生活中,大傢對威脅建模並不陌生。比如,齣於無奈在機場排隊時、偷偷溜齣傢門或去酒吧時都會對威脅進行建模:在機場,即使你沒有打算真那麼做,但你可能會偷閑思考如何偷偷摸摸帶一些東西混過安檢;偷偷溜齣去的時候,你會擔心有人注視著你的行動;當你在高速路上超速時,你可能在建立隱式的威脅模型,其中主要威脅就是警察,你會想他們就潛伏在廣告牌後麵或天橋下麵。另外,公路上的妨礙物(比如穿過馬路的鹿或者雨水)都可能齣現在你的威脅模型中。

  在威脅建模時,通常你會用到兩類模型。一類是你所構建的軟件或係統模型,一種是威脅模型(可能齣錯的地方)。你所構建的軟件可能是網站、可下載的程序或應用,或者是可以在硬件中傳遞和交付的軟件包,也可能是分布式計算機係統或可能成為“物聯網”一部分的“物”。威脅建模是為瞭看到整片森林,而不是簡單的幾棵樹木。好的模型可以幫助人解決幾類或幾組攻擊,從而構建更安全的産品。

  英語中,“threat”一詞有很多意思。可以用來形容一個人,比如“奧薩馬·本·拉登(Osama bin Laden)對美國來說是個威脅”,也可以形容多個人,如“內部威脅”;另外,還可用來形容一個事件,比如“本周末將麵臨暴風襲擊的威脅”,也可以用來形容缺陷或者受攻擊的可能性,比如“你如何應對針對信息保密的威脅?”此外,“威脅”還可以形容病毒和惡意軟件,如“這一威脅有三種傳播方式”,也可用來形容行為,如“存在操作錯誤的威脅”。

  同樣,“威脅建模”也有很多含義。“威脅模型”這個詞可用於很多不盡相同有時甚至互不兼容的方麵。其中包括:

  作為動詞,例如,“你對威脅建模瞭嗎?”這句話的意思是說,對於你所構建的軟件或係統,你是否仔細檢查分析處理過,以查看軟件係統哪裏會齣現問題?

  作為名詞,可錶達使用的是什麼威脅模型。比如,“我們的威脅模型是擁有機器的人”或說“我們的威脅模型是個專業而堅定的遠程攻擊者”。

  可以錶達如何構建一組理想化的攻擊者。

  可以錶達威脅分類,比如篡改威脅。

  毫無疑問,威脅建模本身有很多含義。所有這些含義在不同語境下都是有用的,而且都是正確的,所以最好不要浪費時間爭論它的含義。爭論其具體的定義是毫無意義的,唯一的方法就是拋開其定義。本書涵蓋威脅建模各方麵的技術,涉及大量可操作的具體技術,以幫助設計或者構建更安全的軟件。本書還將探討如何解決以下現實問題:一些技術要比其他的技術更有效,並且一些技術對有特定技術或經驗的人使用更有效。

  威脅建模是防禦的關鍵。沒有威脅建模,就會跟打鼴鼠遊戲一樣,永無完結。

  總而言之,威脅建模就是利用抽象的概念來思考風險。

  威脅建模的原因

  在當今快速發展的世界裏,趨勢是精簡開發活動,而威脅建模有著重要的存在價值,包括早期發現安全缺陷,理解安全需求,設計和交付更安全的産品等。

  早期發現安全缺陷

  想象你在建造一座房子,對安全結果的影響你越早決定越重要。由木製牆及大量落地窗構建的房子會比磚石及少量窗戶的房子的潛在危險更大,因此要根據房子建在哪裏等因素選擇一個閤理的方案。如果在決定之後再更改,成本通常會很高。當然,作為補救,你可以在窗子上加防盜護欄,但是,若能最初就有一個更閤理的設計不是更好嗎?這種權衡也可以用於技術當中。威脅建模可以幫你發現設計上的問題,甚至在你一行代碼都沒寫的時候即可發現問題,而此時也是發現這類問題的最佳時機。

  理解安全需求

  好的威脅模型能幫助你迴答“那的確是實際的安全需求嗎?”舉例來說,係統是否需要保護設備免受他人非法擁有?蘋果公司在iPhone手機産品中給齣瞭肯定迴答,這顯然不同於傳統的個人電腦領域。當你發現威脅以及如何處理威脅時,你要明確需求。有瞭更清晰的需求,你就可以專注於處理相應的安全特性和性能。

  需求、威脅與防禦之間是相互作用的。在威脅建模時,會發現一些威脅不會影響你的業務,這樣的威脅可能不值得處理。或者需求可能不完整,威脅處理過程復雜或者處理代價高,這時你就需要做齣權衡,是在目前僅解決部分威脅,或者接受(溝通)你無法解決所有威脅的現實。

  設計和交付更安全的産品

  在構建産品時盡早考慮安全需求和安全設計,能大幅減少重新設計、重構係統,以及經常齣現安全漏洞的可能性,這樣你就可以從容地交付更安全的産品,最終構建更完善、更快速、更經濟、更安全的産品,把更多的精力投入到用戶需求的特色功能開發中。

  解決其他技術無法解決的問題

  威脅建模會發現其他工具無法發現的一係列問題,可能是遺漏錯誤問題,如遠程連接驗證錯誤,而代碼分析工具無法發現該類問題。其他問題可能是你在係統設計中所獨有的。一般地,開發者在構建新軟件時,相應地會引入新的安全威脅。通過抽象的概念模型描述可能齣現的錯誤,可以幫助你發現在其他係統裏會齣現的相同和相似的問題。

  由此可得齣結論:威脅建模不應該聚焦於其他人身安全工程和網絡安全工程中可發現的問題(除非是在早期,為瞭避免以後的重復勞動)。舉例來說,假如你正在開發一個調用數據庫的産品,威脅建模會快速定位SQL注入攻擊以及可能會被攻擊的注入點。然而如果沒有威脅建模,可能在未來遭受攻擊時纔發現該類威脅。因此,威脅建模應該聚焦其他技術無法發現的問題。

  本書目標讀者群

  本書目標讀者是專業技術人員,如軟件工程師和係統管理員,以及係統分析師、架構師等,本書也有很多可供信息安全專傢閱讀的內容。本書不同章節針對的讀者有所不同,總體來說,前麵一些章節適閤大多數讀者閱讀(或者說除瞭信息安全領域之外的其他專業領域人員),本書後麵章節內容則更多的是麵嚮安全專傢。

  並非隻有信息安全專傢、專業人士或愛好者纔能閱讀此書。本書希望你能通過閱讀瞭解到現實中很多人的興趣和欲望是跟你不同的。比如,他們可能想要從你那裏得到錢財,或者他們有彆的目標,比如他們拿你做犧牲品誇大自己或是用你的電腦攻擊彆人。

  本書語言通俗易懂,適閤任何會編程或設計程序的人,隻是有些時候為瞭錶達更加準確或更加清晰而使用一些術語,本書後麵還附有術語錶。

  本書為你提供什麼

  通過閱讀本書,你能獲得豐富的威脅建模技術領域相關知識。你可以將其應用在你的項目中,開發與部署更安全的軟件。此外,你將學到如何明確、可度量、閤理地權衡安全措施,學到一整套工具以及如何應用。同時,你可能會發現發布的軟件中一些看起來很棒、有很好的創意,但實際上卻暗藏危機。另外,你將學到阻止你有效威脅建模的原因,以及如何避免這些問題。

  通過閱讀本書,你將學習威脅建模的輸齣結果——通常叫做“漏洞”(bug)。業界存有異議:普遍將代碼中的問題歸為漏洞(bug),將設計中的問題歸為缺陷(flaw)。本書並不對其進行詳細討論,因為本書的主要目的是應用威脅建模解決問題,上述爭議對本書討論的內容無益。

  不同讀者獲益不同

  本書旨在為不同的技術人員提供有益的幫助,包括從事軟件開發人員,以及為滿足業務運營或商業目標要求而從事軟件安全的技術人員。

  為方便起見,本書假設開發人員和運維人員之間有明確的區分。這種區分可以更好理解各自的能力、選擇和責任。舉例來說,對開發人員來說,改變審計記錄(log)或實施一個不同的身份驗證係統是“容易”的,而這對運維人員來說就不是一件容易的事情。同樣,對運維人員來說,維護日誌記錄完整、保護電腦安全是“容易”的。如本書中所寫,業界流行一種“敏捷運維”(devops)模型。因此,針對開發人員和運維人員的課程會有些調整。同樣為瞭方便起見,本書還假定安全專傢與開發人員、運維人員的角色互不交叉。

  顯然,這就意味著,本書中同樣的內容可能給不同人群帶來不同的課程。以下具體介紹本書可為每一類讀者提供的價值。

  軟件開發及軟件測試人員

  軟件開發人員(日常工作主要是軟件開發)包括軟件工程師、質量保障及項目管理人員。如果你是這類人員,那麼本書將幫助你在構建軟件過程的設計初期發現並解決問題,幫助你交付滿足客戶需求的更加安全的軟件。你將學到簡單、有效且有趣的威脅建模方法,以及應用該方法從另一個角度構建軟件模型和發現威脅。你將學到如何根據軟件開發過程中存在的漏洞發現威脅,如何利用威脅使你的業務需求變得更加清晰。你將學到認證技術、密碼學及可用性知識,在這個過程中你將發現攻擊和防禦之間的對抗有著悠久的曆史,你能瞭解到本書推薦的威脅建模方法是如何發展的。你還將學到如何將威脅建模方法應用到軟件開發過程中。

  係統架構、運維和管理人員

  此類人員的日常工作是集成各個軟件組件,搭建有效的業務係統並維持其正常運行,通過這本書將學到在係統設計、軟件組件選擇、準備部署的過程中如何發現和解決威脅。本書可幫助交付滿足商業和客戶需求的更加安全的係統。你將學到簡單、有效而有趣的威脅建模方法,以及應用該方法從另一個角度描述正在構建或者已經構建的係統。通過本書將學到如何發現係統中存在的安全和隱私威脅,如何應用該方法在操作流程中處理此類威脅,如何對你所麵臨的威脅權衡選擇最優的安全措施,以及如何確保徹底解決這些威脅。通過本書將學到針對不同技術領域,如網絡和雲係統的威脅,以及針對賬戶的威脅,瞭解這些威脅對係統運維是十分重要的。書中還將涉及可用性問題,該內容或許可以讓你改變你所在組織機構或者客戶對安全的態度。你將學到加密的相關知識,並可以用其來保護係統。這些在書中都會詳細介紹。

  安全專業人員

  如果你從事安全工作,本書主要為你提供兩方麵內容:首先,威脅建模的結構化方法可大大提高你的工作效率,你將學到為何很多威脅建模過程中最顯而易見的部分,其實並沒有你想象的那麼明顯和正確;其次,你會學到如何將安全引入軟件開發、操作和發布流程中。

  從我個人的經驗來說,即使你是安全專業人員,這本書也會給你帶來幫助,讓你更好地威脅建模。當我在撰寫案例研究的附錄時,我發現我要查閱附錄B及本書有關安全需求的章節,發現並不是隻要考慮軟件模型就能發現威脅。

  寫給信息安全領域的同僚

  坦誠地說,這本書不是關於如何設計抽象意義上完美的軟件。由於大多數商業或者組織機構使用的軟件存在威脅,這是一本實用的書。目前,統治著世界的軟件均存在著威脅,我希望通過做齣更好的權衡使得這些軟件更加安全。這涉及很多方麵,其中兩個重要方麵是:讓各位同仁在其專長的技術領域內保持一緻安全策略,以及易於使用威脅建模方法。

  本書的觀點源於我作為係統管理員部署安全技術以及匯總人們遇到的問題時的工作經曆,我作為創業企業運營人員如何使安全産品更好滿足市場需求的經曆,以及我在微軟公司威脅建模的工作責任。威脅建模是微軟公司軟件開發生命周期的一部分工作。在第三個經曆中,我和微軟公司及其閤夥人、客戶等幾韆人討論我們提齣的方法,這些人中包括新入職的開發人員、在安全領域有著幾十年工作經驗的人、首席安全官、微軟公司可信計算團隊谘詢委員會成員等。我瞭解到,關於行得通有太多的觀點,而對於行不通的觀點則寥寥無幾。本書旨在讓安全領域的同仁相信,開發和運維的過程改進可以幫助我們交付更加安全的軟件。一些安全專傢可能對此觀點持懷疑態度,那麼他們應該著重看第二部分、第四部分和第五部分。

  如何使用本書

  讀者應該從書的開頭開始閱讀。即便你已經知道如何威脅建模,從頭開始閱讀也是最佳方式,因為書的開頭為本書勾勒齣瞭一個整體框架,可幫助你更好地理解後麵的內容。

  四步框架

  本書提齣這樣一個觀點:威脅建模並不能一步完成,而分幾步完成,其中每一步完成一個子目標,為瞭實現這些子目標你需要迴答以下問題。

  1.你在構建什麼?

  2.一旦開始構建,哪些可能齣錯?

  3.對於齣錯的部分該如何處理?

  4.你做的分析工作完整嗎?

  框架的每一步所用的方法都可視為樂高(Lego)積木。在搭積木時,你可以將一塊積木與另外一塊安裝組閤起來。在第1章中,你將看到利用數據流圖模擬你正在構建的軟件,利用STRIDE幫助你思考哪裏齣錯以及如何處理,以及利用核查錶幫助你檢查是否已經做瞭完整的分析工作。第2章中,你將看到數據流圖是最適當的思考方式。不同的數據流圖就像不同的構建模塊,可幫助你對構建的軟件或係統進行建模。第3章將深入瞭解STRIDE(一種威脅模型)。在第4章中,你將學習如何使用攻擊樹替代STRIDE,拋除相似因素之外的所有因素。STRIDE和攻擊樹是兩種不同的構建模塊,可以幫助你在構建新的技術時發現齣錯的地方。

  並不是每種方法都能和其他方法結閤使用,比如,要讓金屬積木Erector和木製的Lincoln積木粘閤需要強力膠水。將不同威脅建模方法結閤使用就會齣現一些令人睏惑的建議。例如,思考恐怖分子會如何襲擊你的資産,不一定會産生很多可操作的問題。而且,即便是連接那些容易契閤的模塊,做齣來的效果可能非常好,也可能非常差。

  因此,假設將其當成一個完整的框架,那麼構建模塊是什麼呢?圖I-1形象地展示瞭四步框架。這些步驟是:

  1.?對你正在構建、部署或修改的軟件係統進行建模。

  2.?利用本書第二部分的模型和方法發現威脅。

  3.?利用本書第三部分的方法解決威脅。

  4.?驗證上述工作的完備性和有效性(同樣在第三部分中)。

  這個框架是與軟件開發、操作部署相匹配的。實驗證明這是一種結構化的威脅建模方法。不用替換整個框架即可更容易地實踐。本書幾乎所有內容都是經過精挑細選的,因為它們都是基於四步框架的。

  本書大緻按照這個框架組織章節:

  第一部分“入門指南”介紹入門知識。書的開篇(尤其是第1章)是專門為沒有什麼安全專業知識的人設計的。之後的內容基於在這部分的知識(或者結閤自己的經驗)設計。在這部分中你將瞭解威脅建模,以及為新手推薦的方法。你也可以學到軟件建模的不同方法,以及為何從這裏開始好於其他選擇,比如從“攻擊者”和“資産”開始。

  第二部分“發現威脅”介紹發現威脅方麵的知識。這部分內容描述瞭許多用於發現威脅的技術和工具。這部分內容綜述和分析瞭人們對信息技術進行威脅建模的不同方法,可以讓你發現不同技術的利弊。本書已經將這些技術分組,讓你既可以從頭開始讀到尾,也可以挑選特定內容進行閱讀。

  第三部分“管理和解決威脅”介紹管理和解決威脅方麵的內容。這部分內容包括如何處理威脅、管理威脅和用於定位威脅的策略和方法,以及如何做齣必要的風險權衡。另外還涉及驗證你的威脅確實已經得到解決以及幫助你進行威脅建模的工具。

  第四部分“科技和棘手領域的威脅建模”涉及在特定技術領域及其他相關領域威脅建模,在這些領域已經有很多威脅建模及分析實踐。這一部分包括網絡及雲、賬戶和身份、密碼學及嘗試自己開展安全需求分析的“需求手冊”。

  第五部分“再上一層樓”介紹瞭提升威脅建模能力。這部分內容針對經驗豐富的威脅建模人員、安全專傢、流程設計師——他們需要考慮如何為特定的組織機構定製威脅建模流程。

  附錄包括可幫助你快速應用所學的相關信息。其中包括“威脅建模是什麼”、“我們的資産是什麼”等常見問題解答,以及能幫助你發現威脅的威脅樹、攻擊者及攻擊者角色列錶,還有第1章中提到的權限提升遊戲的細節,最後是一組威脅建模的詳細案例。附錄後麵附有術語錶、參考文獻等。

  網站上包含書中提到的一些圖錶的PDF格式版本,以及勘誤錶。

  本書不包括什麼

  如今,很多信息安全書籍希望教你如何入侵。他們的目的是告訴你該防範哪些攻擊,假設如果你瞭解瞭這些攻擊,你便可以開始構建你的防禦係統瞭。不過,本書和市麵上的大部分書籍不同,因為即便市麵上有幾百萬這樣的書,仍舊有很多脆弱的係統被構建和部署。另外,針對各類攻擊有各種各樣經過斟酌的防禦方法。瞭解如何執行攻擊或許是有用的,但更重要的是知道什麼時候在哪裏會有攻擊,以及如何有效地防範攻擊。這就是本書編寫目的所在。

  本書不針對某一特定技術、平颱或應用程序編程接口(API)。平颱及API影響可能會提供你能使用的安全特徵或可以消除一些威脅,但與平颱相關聯的威脅和消除威脅措施會隨著版本不同而改變。本書旨在成為你書架上有用的參考書,比任何技術發布周期都要長久。

  當然,本書並不是造就威脅建模大師的靈丹妙藥,而是幫助理解你需要知道的信息。所謂熟能生巧,在問題處理過程中不斷實踐和反饋,你終將成為大師。

  威脅建模新課程

  經驗豐富的安全專傢在工作過程中都已經開發瞭適閤自己的威脅建模方法。如果在威脅建模方麵你已經有多年的經驗,本書將為你提供其他可用的方法。本書還可讓你全麵地瞭解一係列結構化的威脅建模方法,以及它們是如何相互關聯的。最後,還有一些較深的課程內容值得你們關注。

  不止一種威脅建模方法

  如果你問一名程序員“哪種編程語言最閤適一個新的項目?”你可能會得到很多需要澄清的問題,因為沒有哪一種是理想的編程語言。當然,編程語言在處理特定類型任務時都有其優點和缺點。例如,用Perl語言編寫文本處理代碼比匯編語言(assembler)要容易。Python語言比匯編語言更容易閱讀和維護。同樣,也有或好或壞的方法來進行威脅建模,這很大程度上取決於當時的實際情況,比如參與人員和人員技能等。

  所以,你可以把威脅建模看作編程。編程有很多語言、編程範式(比如敏捷模式或瀑布模式)、編程實踐(結對編程或頻繁部署),威脅建模也是如此。以前威脅建模的書主要涉及威脅建模方法。本書幫助你瞭解“不止一種實現方式”,不僅僅是Perl語言適用於威脅建模。

  找到威脅的方法就是正確的方法

  威脅建模正確的方法就是能夠讓項目組找到比其他技術更多“好的威脅”(“好的威脅”是可以激發必須去做的工作的威脅)。一個項目組如此,幾韆個項目組亦如此。而且適用於所有層麵的資源,比如時間、專業知識、工具。正確的技術能讓一個項目組發現和解決威脅(並且增強信心,正如他們已經在做的)。

  很多人會告訴你他們知道“一種最正確的方法”(但這是在威脅建模以外的領域)。應避免這場爭論,找到適閤自己的方法纔是最有效的。

  威脅建模猶如版本控製

  威脅建模有時被認為是一種專業技能,隻有一些人纔能做好,這一想法通常阻礙我們。因為,比起專業技能,威脅建模更像是版本控製。這當然不是在詆毀或者輕視威脅建模,而是所有專業的開發者在構建任何復雜度的軟件時都需要某種形式的版本控製係統。希望威脅建模能成為如版本控製係統一樣的基礎組件。

  你希望所有專業軟件開發者都知道一兩種版本控製係統的基本知識,同樣,很多係統管理員會用版本控製係統來管理配置文件。很多組織機構隻靠一個簡單的版本控製方法來應付,從來沒聘請專傢。如果你在一傢大型公司工作,就會知道有全職人員管理構造樹(build tree),威脅建模和這個情況類似。通過學習本書,可以假設負責軟件和運維的專業人員已經有一些基本的威脅建模經驗。

  威脅建模也像拉小提琴

  當你剛開始學習拉小提琴時,你不會一開始就練習拉那些最美的小提琴麯,首先你需要練習音階、一些簡單的麯子,然後循序漸進到更復雜的音樂。

  同樣道理,當你開始學習威脅建模時,你得通過練習學習技巧,學習過程中你會遇到很多挑戰或挫敗感。你要知道,威脅建模是一種技能,你可以在很多方麵應用,當然也就需要時間來培養能力瞭。熟能生巧,如果你想一夜之間就變成專傢,那麼你肯定會失望的。同樣,若是你幾年纔進行一次威脅建模,那麼你就會生疏,這時就需要時間來重新鍛煉自己所需的能力。

  技巧與技能

  繼續使用拉小提琴這個例子,大多數有纔華的小提琴傢不會隻練習一首麯子,而是有一整套技能,是與自己領域相關的一係列知識。

  當你開始威脅建模時,你需要鍛煉技巧和技能——你可以著手一係列威脅範例,想象新的係統可能受到怎樣的攻擊。攻擊列錶或者攻擊庫可以部分代替專傢所知的威脅的心理技能,瞭解相似産品的安全問題也可以幫助你培養威脅技能。長此以往,這些都能幫助你思考新的、不同的威脅。

  “像攻擊者那樣思考”是有害的

  很多威脅建模書籍勸誡人們“像攻擊者那樣思考”。對大多數人來說,這就像把自己想象成專業廚師一樣難。即使你在傢裏是做飯好手,但是要當餐廳的主廚會遇到更復雜問題,比如,一傢有78個座位的餐廳,每個座位接待兩輪客人的話,每天要買多少隻雞?因此,像攻擊者那樣思考無法幫助大部分人進行威脅建模。

  更糟糕的是,結果可能是盲目想象攻擊者會怎麼想、怎麼做,以緻你得到瞭錯誤的威脅。而要發現威脅,你無須著重攻擊者,不過,擬人化或許可以幫你找到解決它們的方法。

  攻擊、防禦與需求之間的相互關係

  威脅建模就是為瞭建立更加安全的軟件。當你在使用軟件模型及威脅模型來尋找潛在問題時,你會發現一些威脅很難或不可能解決,這時你需要調整需求。這種相互關係很少有人討論,而這對有效的威脅建模很重要。

  有時要防範管理員的問題,有時要考慮你的客戶願意承受什麼。“9·11”事件發生後,美國政府多次嚴肅考慮在民航飛機上禁止帶電腦(據報道,電池和大規模炸藥在X光機上顯示是一樣的)。於是,購買昂貴機票的商務艙乘客開始反抗,他們可是讓航空公司運轉的“金主”。於是政府隻好采取其他措施,本書將就這些措施的效力進行評判。

  這種相互作用的結果導緻一些威脅不能有效緩解。這對很多安全專傢來說是痛苦的。(不過,如《黑衣人》中的颱詞:“生活本來就充滿痛苦,殿下。不這麼對您說的人一定是在推銷什麼。”)當你發現違背你的需求的威脅又不能緩解時,基本上可以調整你的需求瞭。有時,要麼操作上緩解威脅,要麼順從使用該係統的人。

  基於此,是時候開始潛心威脅建模瞭!





用户评价

评分

威胁建模:设计和交付更安全的软件

评分

安全从业人员买来看看吧!!增加下知识面

评分

6730可以用

评分

闻名已久了 蛮喜欢的 看了没白买

评分

书还行,但是中文版缺少参考文献章节。我查了英文版的信息是有的,该不是出版编辑给漏了吧??!

评分

还恍恍惚惚恍恍惚惚恍恍惚惚恍恍惚惚恍恍惚惚哈哈

评分

评分

正版,第二天到货,正好赶上

评分

在安全开发软件的生命周期中或者软件和系统总体设计的过程中如何使用威胁建模方法

相关图书

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有