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