




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件安全設計本講要點1.軟件設計階段的主要工作2.軟件安全設計階段的主要工作3.軟件安全設計原則4.軟件安全功能設計5.威脅建模6.應用案例1.軟件設計階段的主要工作軟件設計可以看作是從軟件需求規格說明書出發,根據需求分析階段確定的功能,設計軟件系統的整體結構、劃分功能模塊、確定每個模塊的實現算法等內容,形成軟件的具體設計方案,即從整體到局部,從總體設計(也有稱為概要設計)到詳細設計的過程。從工程管理的角度,軟件設計可以分為總體設計和詳細設計兩個子階段。1.軟件設計階段的主要工作目前采用的很多軟件開發方法,例如面向對象方法,其設計過程從概念模型逐步精化到實現模型,并且不斷進行迭代,設計過程很難用總體設計和詳細設計進行明確的區分。所以,再從技術的角度看軟件設計階段的主要工作,包括:軟件架構設計、界面接口設計、模塊/子系統等構件設計、數據模型設計、過程/算法設計以及部署設計等。1.軟件設計階段的主要工作目前采用的很多軟件開發方法,例如面向對象方法,其設計過程從概念模型逐步精化到實現模型,并且不斷進行迭代,設計過程很難用總體設計和詳細設計進行明確的區分。所以,再從技術的角度看軟件設計階段的主要工作,包括:軟件架構設計、界面接口設計、模塊/子系統等構件設計、數據模型設計、過程/算法設計以及部署設計等。2.軟件安全設計階段的主要工作目的和作用:軟件安全設計的目的是將安全屬性設計到軟件架構中,以實現軟件產品本質的安全性。軟件安全設計對于軟件安全有著舉足輕重的作用,大多數軟件安全問題都是由于軟件設計上安全性考慮不足或不完整所導致的。2.軟件安全設計階段的主要工作軟件安全設計與軟件設計的聯系:簡單地說,軟件安全設計就是將軟件的安全需求轉化為軟件的功能結構的過程。軟件設計過程通常包括架構設計、接口設計、構件設計、數據模型設計等工作安全設計也要不僅考慮系統架構及相關的安全問題,同時還要考慮如何將安全需求嵌入到軟件的功能結構中,與功能結構相融合并且成為一個有機的整體,為高質量地實現軟件的業務目標提供安全保障。軟件安全設計的主要工作包括軟件架構安全性設計,軟件架構安全性分析以及軟件安全功能設計。2.軟件安全設計階段的主要工作軟件架構安全性設計首先需要進行系統描述,包括系統功能、安全要求、系統部署和技術需求,確定軟件系統的安全級別。接著,設計軟件網絡、數據庫等應具備的安全功能,根據軟件具體安全需求的不同,設計的安全功能包括加密、完整性驗證、數字簽名、訪問控制以及安全管理等等。在架構安全設計過程中,還需要解決軟件安全功能的易用性、可維護性和獨立性問題。2.軟件安全設計階段的主要工作軟件架構安全性分析分析過程:首先進行架構建模,然后根據軟件的安全需求描述或相關標準,對架構模型是否滿足進行檢查,如果不滿足,需要修改設計架構,如此反復,直至滿足所有安全需求和相關標準。2.軟件安全設計階段的主要工作軟件架構安全性分析分析方法:1)形式化分析技術。使用形式化方法描述軟件架構和安全需求,最終的分析結果精確、可量化,且自動化程度高,但實用性較差。形式化分析主要包括UMLSec建模描述分析法等。2)工程化分析技術。從攻擊者的角度考慮軟件面臨的安全問題,實用性強,但自動化程度較低。軟件架構的工程化分析主要包括場景分析法、錯誤用例分析法和威脅建模。相對而言,威脅建模方法實用程度較高。2.軟件安全設計階段的主要工作接下來將介紹軟件安全設計中涉及的3個主要內容:1)軟件安全設計原則:這是一套在軟件生產過程中關注軟件安全性的卓有成效的開發經驗總結。2)軟件安全功能設計:考慮如何將安全需求融入軟件架構和設計方案中,將它們轉化為可實現的功能組件。3)威脅建模:通過抽象的概念模型對影響軟件系統的威脅進行系統地識別和評價。3.軟件安全設計原則這些基本原則是針對一些普遍存在的不安全的軟件設計問題,總結提煉而成的安全實踐經驗。(1)Saltzer和Schroeder提出的安全設計8條原則3.軟件安全設計原則(2)JohnViega和GaryMcGraw總結的10條軟件安全設計原則3.軟件安全設計原則(3)MichaelHoward總結的13條安全設計原則1)從錯誤中吸取教訓(Learnfrommistakes)。2)盡可能減少軟件受攻擊面(Minimizeyourattacksurface)。3)縱深防御(Usedefenseindepth)。4)使用最小特權(Useleastprivilege)。5)采用安全的默認設置(Employsecuredefaults)。6)向下兼容總是不安全的(backwardcompatibilitywillalwaysgiveyougrief)。7)假設外部系統是不安全的(Assumeexternalsystemsareinsecure)。3.軟件安全設計原則(3)MichaelHoward總結的13條安全設計原則8)要有應對失敗的計劃(Planonfailure)。9)系統失效時進入安全模式(Failtoasecuremode)。10)安全特性不等于安全的特性(Securityfeatures!=Securefeatures)。11)絕不要將安全僅維系于隱匿(Neverdependonsecuritythroughobscurityalone)。12)不要將代碼與數據混在一起(Don'tmixcodeanddata)。13)正確地解決安全問題(Fixsecurityissuescorrectly)。3.軟件安全設計原則(3)MichaelHoward總結的13條安全設計原則8)要有應對失敗的計劃(Planonfailure)。9)系統失效時進入安全模式(Failtoasecuremode)。10)安全特性不等于安全的特性(Securityfeatures!=Securefeatures)。11)絕不要將安全僅維系于隱匿(Neverdependonsecuritythroughobscurityalone)。12)不要將代碼與數據混在一起(Don'tmixcodeanddata)。13)正確地解決安全問題(Fixsecurityissuescorrectly)。3.軟件安全設計原則1)減少軟件受攻擊面原則軟件受攻擊面是指,用戶或其他程序以及潛在的攻擊者都能夠訪問到的所有功能和代碼的總和,它是一個混合體,不僅包括代碼、接口、服務,也包括對所有用戶提供服務的協議,尤其是那些未被驗證的或遠程用戶都可以訪問到的協議。一個軟件的攻擊面越大,安全風險就越大。減少軟件受攻擊面就是去除、禁止一切不需要使用的模塊、協議和服務,其目的是減少攻擊可以利用的漏洞。3.軟件安全設計原則1)減少軟件受攻擊面原則舉例:重要性低的功能可取消;重要等級為中的功能可設置為非默認開啟,需要用戶配置后才予以開啟;重要性高的功能則關閉或增加一些安全措施進行限制。重用那些經過測試、已證明安全的現有庫和通用組件,而不是用戶自己開發的共享庫。蘋果公司的iOS不支持Java和Flash,一個重要原因就是相對于MacOSX(或其他智能手機)減小了iOS的受攻擊面。3.軟件安全設計原則2)最小授權原則最小授權原則是指,系統僅授予實體(用戶、管理員、進程、應用和系統等)完成規定任務所必需的最小權限,并且該權限的持續時間也盡可能短。3.軟件安全設計原則2)最小授權原則舉例:將超級用戶的權限劃分為一組細粒度的權限,分別授予不同的系統操作員/管理員。對管理員賬戶分配安全資源的訪問權限也要設置為受限訪問,而不是超級用戶權限。采用高內聚、低耦合的模塊化編程方法,也就是模塊之間的依賴關系是弱鏈接(低耦合),每一個模塊只負責執行一個獨立的功能(高內聚)。Windows系統用戶賬戶控制(UserAccountControl,UAC),實際上就是最小授權原則的運用。3.軟件安全設計原則3)權限分離原則權限分離原則在軟件設計中是指,將軟件功能設計為需要在兩個或更多條件下才能實現,以防止一旦出現問題,整個軟件都可能面臨風險。實際上這一原則也是最小權限原則的一種體現。舉例:清晰的模塊劃分,將風險分散到各個模塊中。不允許程序員檢查自己編寫的代碼。Linux將敏感操作(如超級用戶的權利)分成26個特權,由一些特權用戶分別掌握這些特權,每個特權用戶都無法獨立完成所有的敏感操作。3.軟件安全設計原則4)縱深防御原則縱深防御又稱為分層防御是指,在軟件設計中加入層次化安全控制和風險緩解/防御方法。縱深防御原則有助于減少系統的單一失效點。舉例:在使用預處理語句和存儲過程的同時應用輸入驗證功能,不允許使用用戶輸入的動態查詢結構,以防止注入攻擊。不允許活動腳本與輸出編碼、輸入或請求驗證相結合,以防止跨站腳本攻擊XSS。使用安全域,根據被授權訪問的軟件或者人員級別來劃分不同的訪問域。3.軟件安全設計原則5)完全控制原則完全控制原則是指,要求每一次訪問受保護對象的行為都應當進行盡可能細粒度地檢查。舉例:應該避免僅僅依賴于客戶端或者基于Cookie緩存的認證憑證進行身份驗證。不允許沒有經過訪問權限驗證的瀏覽器進行數據回傳。3.軟件安全設計原則6)默認安全配置原則默認安全配置原則是指,為系統提供默認的安全措施,包括默認權限、默認策略等,盡可能讓用戶不需要額外配置就可以安全地應用。默認安全原則也是保持系統簡單化的重要方式。舉例:對任何請求默認加以拒絕。不經常使用的功能在默認情況下關閉。默認檢查口令的復雜性。當達到最大登錄嘗試次數后,默認狀態下拒絕用戶訪問,鎖定賬戶。3.軟件安全設計原則7)開放設計原則軟件的開放設計原則是指,軟件設計本身應該是開放的,安全防御機制的實現應該不依賴于設計本身。舉例:軟件的安全性不應該依賴于設計的保密。保護機制的設計應該對團隊成員的審查工作開放,讓一個團隊成員發現系統漏洞總比讓攻擊者發現要好。應用于加密設計的柯克霍夫(Kerckhoff)原則,即密碼的安全性不依賴于對加密系統或算法的保密,而依賴于密鑰。利用經過公開審查的、已經證明的、經過測試的行業標準,而不是僅采用用戶自己開發的保護機制是值得推薦的做法。3.軟件安全設計原則8)保護最弱一環原則是指保護軟件系統中的最弱組件。該原則類似于“木桶原理”,描述了軟件抵御攻擊時的彈性主要依賴于最弱組件的安全性,它們可能是代碼、服務或者接口。與最弱鏈接相關的一個概念是“單點失效”,在軟件安全問題中,最弱鏈接常常是多個單點故障的超集。軟件必須被設計為不存在單點的完全失效。當軟件被設計為縱深防御時,可以降低最弱鏈接和單點失效帶來的風險。3.軟件安全設計原則8)保護最弱一環原則舉例:進行風險分析,標識出系統最薄弱的組件。對開發人員或者用戶進行充分的安全告知、培訓和教育。3.軟件安全設計原則9)最少共用機制原則最少共用機制原則是指,盡量減少依賴于一個以上用戶甚至于所有用戶的通用機制。設計應該根據用戶角色來劃分功能或隔離代碼,因為這可以限制軟件的暴露概率,提高安全性。舉例:不使用成員與管理員和非管理員之間共享的函數或庫,而推薦使用兩個互相區分的功能,每一個功能為每一個具體的角色服務。使諸如文件以及變量等共享資源盡可能的少。3.軟件安全設計原則10)安全機制的經濟性原則安全機制的經濟性原則是指,以較低的開發成本和資源消耗獲得具有較高安全質量的軟件產品和系統保障。保證代碼與設計盡可能簡單、緊湊是經濟性原則的體現。安全機制的經濟性原則并不是要求壓縮安全上的投入。3.軟件安全設計原則10)安全機制的經濟性原則舉例:避免設計不必要的功能和不需要的安全機制,然后再將它們置于禁用狀態。保持安全機制簡單,確保安全機制被全部而不是部分實現,因為后者會導致兼容性問題。同樣重要的是要保持數據模型簡單,使數據驗證代碼和例程不過分復雜或不完整。正則表達式能夠支持復雜的數據驗證,簡化數據驗證的復雜度。力求操作方便。單點登錄是一個使用戶認證簡單化并易于操作的好方法。3.軟件安全設計原則11)安全機制心理可接受原則安全機制心理可接受原則是指,安全保護機制設計得要簡單,要讓用戶易用,要確保用戶對資源的可訪問,以及安全機制對用戶透明,用戶才會使用這些保護機制。舉例:配置和執行一個程序應該盡可能的簡單和直觀,輸出應該直接而且有用。通過明確的錯誤信息和標注通知用戶,例如消息框提示、幫助對話框以及直觀的用戶界面。3.軟件安全設計原則12)平衡安全設計原則以上介紹的這些安全設計原則每一項都有自己的側重點,將所有這些安全原則都設計到軟件中是不可能的,因此有必要在這些安全原則間進行決策折中,即平衡安全設計原則。4.軟件安全功能設計考慮如何將這些安全需求納入到軟件架構和設計方案中,將它們轉化為可實現的功能組件,具體包括保密性、完整性、可用性、認證性、授權和可記賬性等核心安全需求的設計,以及其他相關安全需求設計。(1)一個基本Web應用系統的安全功能設計P170~1754.軟件安全功能設計(2)基于安全模式的軟件安全設計設計模式:是對軟件設計中普遍存在、反復出現的各種問題,根據多次處理的經驗,提出的一套能夠快速、準確響應此類問題的解決方案。設計模式描述在各種不同情況下,應如何解決共性問題。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性、程序的重用性。4.軟件安全功能設計(2)基于安全模式的軟件安全設計安全模式:是在給定的場景中,為控制、阻止或消減一組特定的威脅而采取的通用解決方案。該解決方案需要應對一系列的問題,并且可以使用UML類圖、時序圖、狀態圖和活動圖等進行表述。安全模式封裝了反復出現的系統問題的解決方案,同時精確地表述了系統要求和解決方案。采用模式的系統架構描述比較容易讓人看懂,也為設計和分析提供了指南,還定義了使架構更安全的方法。安全模式使得不具備專業安全知識的應用開發人員也可以使用安全措施。5.威脅建模(1)什么是威脅建模(ThreatModeling)在實際生活中,人們常常進行著威脅建模。比如,在離家外出時會提醒自己,家中的門窗有沒有關好,以免小偷光顧;家中的水電氣有沒有關好,以免發生意外。在軟件系統中也需要做這樣的思考,也就是即將開發完成的軟件系統會面臨哪些安全威脅,由此可在接下來的軟件設計和軟件實現等環節中來防范每一個安全威脅。本書試圖給出這樣的一個解釋,軟件威脅建模是指,通過抽象的概念模型對影響軟件系統的威脅進行系統地識別和評價。5.威脅建模(2)為什么要威脅建模威脅建模是一項在軟件設計階段不應忽視的系統的、可迭代的和結構化的安全技術。對軟件系統來說,資產包括軟件流程、軟件本身,以及它們處理的數據。在當前超過70%的漏洞來自于應用軟件的情況下,解決軟件安全問題應該首先明確應用軟件面臨的威脅,建立威脅模型,然后才能考慮軟件的安全設計和編碼實現。5.威脅建模(2)為什么要威脅建模滲透測試和攻擊防范方法難以系統解決軟件產品自身實質性的安全問題。而采用威脅建模方法,可以系統性地分析其架構、軟件體系和程序部署,分析網絡和信息系統可能面臨的潛在威脅,確認有哪些攻擊面,之后提出有針對性的安全防范措施,這才是有效解決網絡安全對抗的良策。5.威脅建模(2)為什么要威脅建模威脅建模有著重要的存在價值,包括早期發現安全缺陷,理解安全需求,設計和交付更安全的產品,解決其他技術無法解決的問題等作用。5.威脅建模(2)為什么要威脅建模盡管威脅模型在系統設計甚至于需求分析階段就應該完成,但它的作用可以跨越整個軟件生命周期。在設計階段,應該由軟件架構團隊來識別威脅進而建立威脅模型;開發團隊可以使用威脅模型來實現安全控制和編寫安全的代碼;測試人員不僅可以使用威脅模型生成安全測試用例,還需要驗證威脅模型中已識別威脅的控制措施的有效性;最后,操作人員可以使用威脅模型配置軟件安全設置,保證所有入口點和出口點都有必要的保護控制措施。5.威脅建模(3)如何進行威脅建模威脅建模通常分為:軟件為中心的威脅建模(SoftwareCentricThreatModeling)安全為中心的威脅建模(SecurityCentricThreatModeling)資產和風險為中心的威脅建模(AssetorRiskCentricThreatModeling)本書給出威脅建模的一般過程,包括8個步驟1.確定安全目標2.創建應用程序概況圖3.分解應用程序4.確定威脅5.威脅評估6.確定威脅緩解計劃或策略7.驗證威脅8.威脅建檔5.威脅建模(3)如何進行威脅建模1)確定安全目標包括確定軟件系統涉及的資產,以及圍繞這些資產的業務目標和安全目標。資產:硬件設備、軟件組件、存儲和處理的數據、聲譽或品牌等無形資產。業務目標:信譽、經濟、隱私、國家的法律法規或標準、公司的規章制度、信息安全策略。安全目標:機密性、完整性、可用性5.威脅建模(3)如何進行威脅建模2)創建應用程序概況圖實際上是應用程序的圖形化表示過程,這一過程包括以下任務:識別物理拓撲結構識別網絡拓撲結構識別應用程序使用者中人類和非人類角色確定應用程序處理的數據元素,如產品信息、客戶信息等。確定應用程序的安全機制確定軟件采用的技術及其主要功能5.威脅建模(3)如何進行威脅建模3)分解應用程序通過分解應用程序的結構來確定信任邊界、數據流、數據入口點和數據出口點。包括任務:確定信任邊界確定數據流確定入口點確定出口點5.威脅建模(3)如何進行威脅建模4)確定威脅確定可能影響應用程序和危及安全目標的威脅的最大難題是系統性和全面性確定常見威脅深入分析其他可能威脅5.威脅建模確定常見威脅微軟的STRID
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CMES 15001-2023自行式自上料攪拌機通用技術要求
- T/CHES 96-2023河口監測浮標技術條件
- T/CHES 91-2023連續磁性陰離子交換水處理技術規范
- T/CEMIA 005-2018光伏單晶硅生長用石英坩堝生產規范
- T/CECS 10336-2023地面防滑性能分級及試驗方法
- T/CECS 10173-2022皮芯結構熱壓交聯高分子胎基濕鋪防水卷材
- T/CECS 10065-2019綠色建材評價采光系統
- T/CECA-G 0282-2024鋼結構工業建筑碳排放計算標準
- T/CCSAS 036-2023非均相分離單元操作機械化、自動化設計方案指南
- T/CCOA 48-2023高直鏈淀粉玉米
- 國家開放大學《Web開發基礎》形考任務實驗1-5參考答案
- 第6章職業腫瘤和職業性傳染病課件
- 國家開放大學《數學思想與方法》形考任務(1-10)案例設計與分析等試題答案解析
- 水生生物學課件 第1章 原生動物
- 陜西省漢中市各縣區鄉鎮行政村村莊村名居民村民委員會明細
- FIDIC銀皮書(中英文對照)
- 癲癇護理查房.ppt課件
- 軍事地形學地形圖基本知識
- 固體火箭發動機制造工藝
- 試卷密封線模板
- 廣告牌鋼結構設計計算書(共39頁).doc
評論
0/150
提交評論