本文章是由機器翻譯。
安全性簡報
關於 follow-on 交談威脅分析模型
Michael Howard
MSDN Magazine 的月 2009年問題包括標題為 「 A 對話關於威脅模型 > 文件discloses Paige,年輕的安全性 neophyte 中,之間 Michael,有點 jaded 的安全性份子交談。 這個月我會佔用對話它離開的地方。
場景我
coffeepot 旁邊一個小型辦公室廚房。
Paige:最後一次我們符合,您所花費的時候我的威脅分析模型,但是您說您可以在稍後涵蓋一些密碼編譯且安全的設計問題。 也,歡迎使用該更新的日期。
Michael:我可以在請取得一杯咖啡第一次吗?
不等待回應,Michael 以及他龐大的咖啡。
Paige:呃,確定。
Michael:提醒我一次您的應用程式是什麼。
Paige:它是一項產品,讓使用者在我們的伺服器上儲存資料。 還有一小段程式推入至伺服器,藉由為該使用者的位元的用戶端程式碼。 這段程式碼可以上載檔案從使用者透過的 Web 伺服器我們後端,並且檔案儲存在檔案系統一起為快速查閱儲存在 SQL Server 中的檔案中繼資料中。 我們可能會最後儲存數十億的檔案。 兩種主要的環境是加入網域的電腦和加入網際網路的電腦。
Michael:喔,沒錯,我還記得現在時。 這麼多的程式碼,因此少的時間。 [確定],讓我們回到潛在威脅模型讓我們關心的部分。 您有 DFD--資料流程圖嗎吗?
在兩個帶領透過 Paige 的桌面時。 她與她的智慧卡登入,並載入 SDL 威脅分析模型工具。
Paige:以下是。
在圖表上,看起來 Michael。
Michael:這是權限層級 1 圖表,嗎? 是一個層級詳細內容圖表比吗?
Paige:yup。 我們也有一個層級-2,圖表,但是我不認為我們需要深還到的。
Michael:您答對了,這是完美。 如果需要更精確地為我們透過此,我們可以查看層級 2 圖表。
Paige:順帶我們沒有呼叫它們 DFDs 不再。
Michael:Er 為 [確定]! 這些所謂,然後?
Paige:應用程式圖表。
Michael:任何浮動您的船我想。 我們將使用蠟筆下一步。 確定,回到圖表。 因此使用者提出要求用戶端應用程式上傳或下載檔案,或從伺服器,伺服器仍然存在在後面檔案系統中的資料結尾,以及有關檔案會保留在 SQL Server 中的一些中繼資料?
Paige:這是一個使用 ;在就其實很可能主要案例。 系統管理員的就說需要設定、 設定和監視應用程式 ;這是系統管理工具的功用。
Michael:讓我們再著重於該的核心案例。
場景 II
在應用程式圖表,Michael 整個 intently。
Michael:讓我們來啟動藉由查看每個項目在核心的案例,然後我們會拼出每個 STRIDE 潛在威脅的等級。
Paige:分散嗎? 再提醒我。
Michael:欺騙竄改否認、 資訊洩漏、 拒絕服務的權限提高。
Michael 啟動書寫快速地在紙張上。
Michael:請看一下這份清單:
Paige:不所有這些在威脅模型工具中嗎?
Michael:是,但我要告訴您如何工具到達清單。 順帶您不需要是 SDL 相容,使用威脅分析模型工具,只要威脅模型是完整而精確。 基本上,每個項目會受限於一組特定的威脅。 我認為您可以出中使用它,從清單中。
Paige:還要,我取得,但不您遺失的項目呢? 所有這些間的資料流程各種應用程式項目嗎?
Michael:yup,但我嗎上就故意因為我真的不想要專注於那些還--我們這些中詳細討論最後一次。
Paige:我們嗎吗?
Michael:可以, 查看 [威脅模型。
Paige 看起來對 SDL 威脅分析模型工具
Paige:喔,看的我們討論使用 SSL/TLS,若要修正此竄改,用戶端和伺服器處理,右之間流動的資料資訊洩漏威脅?
Michael:很好! 因此,這裡的問題。 移至使用者,到伺服器,然後到伺服器的檔案系統--資料是機密資料吗?
Paige:您要求的最後一次。 可能會是。
Michael:糟糕...
Paige:什麼? 資料被加密使用 SSL/TLS,所以我們正常,權限吗?
Michael:沒那麼嚴重啦。 SSL/TLS 降低資料資訊洩漏威脅,如它在兩個處理程序--2.0 用戶端處理程序及 3.0 伺服器處理程序之間流動。 但資料離開安全通道之後,資料位於清除,您正在將資料的寫入至檔案系統。
Paige:還要,但有什麼風險吗?
Michael:告訴我!
Paige:我不了解。
Michael sighs。
Michael:讓我們假設您的應用程式的用戶端是公開 traded 公司的員工。 讓我們是更特定的:員工是 [CFO 公開 traded 公司的而且他使用應用程式將顯示目前的季度資料不是公用的且不會公開到結束時公司會宣告其所得的該季的會計資料的試算表。 假設駭客分成您的系統,取得該的資料,並使用它來銷售或購買在公司的股票。 交易的內部人士可能會。
Paige:糟糕...
Michael:喔-喔,確實。 這是嚴重。 CFO 沒有適當的控制項可能會違反 SOX 法規的這個機密資料。
Paige:您說 「 可能 」很多。
Michael:您當然我。 我看起來是 lawyer 給您吗? 所以回到我原始的問題。 您關心的項目是這種情況嗎?
Paige:當然,不完全正確。 我認為我們的條件狀態您不應該使用我們的服務 ultra-sensitive 的資料。 但我會一起播放。 假設我說),"是,我們在意這種情況。"接下來該怎麼辦?
Michael:建議我第一位元,就是您的律師,以確定您不再放入公司使用這種情況下的風險,請參閱。 但假設他們說即可為其,但您必須確定您保護後端資料。
Paige:您想要說是 5.0,伺服器,檔案系統受限於資訊洩漏,我們需要減輕的威脅資料保留在資料存放區中。 我正確吗?
Michael:您已在上特別色。 您如何修正它?
Paige:ACL。
Michael:為什麼存取控制清單?
Paige:我們可以限制只有有效的使用者資料的存取。
Michael:如何執行伺服器應用程式讀取和寫入資料?
Paige:喔,假設以唯一的識別來執行處理程序。 我們會稱它為 FooID。 我們可以套用至檔案,可讓 FooID 也為有效的使用者的 ACL存取檔案。
Michael:它不會運作 ;很不安全。
Paige:為什麼呢?
Michael:如果我攻擊,我可以入侵伺服器處理序的 FooID 以執行,然後執行該伺服器上的 [我的惡意程式碼。 voila,我的程式碼正在執行為 FooID,而且我擁有資料!
Paige 看起來 dejected。
Paige:humph。
Michael:您必須使用加密。
Paige:當然! 伺服器會只讀取和寫入加密的 Blob,並如果攻擊者危及伺服器,他仍然無法取得資料除非他可以中斷加密。
Paige perks 上。
Michael:現在有趣真正開始。 我們初步上的一些密碼編譯問題上次的時間特別為它們關聯到機碼。
Paige:您代表什麼?
Michael:確定您要如何將資料加密嗎?
Paige:使用者輸入密碼,在的用戶端應用程式和用戶端應用程式中資料以密碼加密,並將加密的項目跨網路連線上傳送伺服器。 伺服器會將中繼資料寫入至 SQL Server,然後將加密的項目寫入伺服器檔案系統。
Michael:在中繼資料中有什麼?
Paige:擁有者的識別]、 [檔案大小]、 [檔案名稱]、 [時間它被寫入檔案系統和最後一次讀取的時間。 這類的內容。 我知道這項資訊會太,保存在檔案系統,但方式來執行一些設計用來將這類資料儲存在一個查詢更快:SQL Server 資料庫。
Michael:很好,我很高興它不會儲存保存檔案中的資料!
Paige:為什麼呢?
Michael:幾個原因。 第一次,它表示您的伺服器應用程式中清除,有資料的存取權,而且以取得該資料需要您伺服器的程序來解密資料。
Paige:因此嗎?
在一個大聲但不-非常 shouting 的語音 Michael 的回應。
Michael:因為這表示您的伺服器應用程式必須知道表示進入各種真正可怕的金鑰管理遊戲的解密金鑰。 如果可能的話,您想要保持該公司用完! 有您可以這樣可以清楚地藉由多個的金鑰的方法,但是我不想現在的說明。 如果曾經! 如果您真的想要瞭解這,讀取向上上 Microsoft 會使用加密檔案系統或 EFS 檔案的加密。
Paige:我們可以使用 EFS 吗?
Michael:可能的。 您的用戶端而定。 您是否在用戶端支援何種平台?
Paige:我們會在 Windows 上年度結尾,然後幾個月稍後 Linux 發行。
Michael:沒有 Solaris 嗎?
Paige:Solaris 的是什麼?
Michael sniggers,並忽略 Paige 的回覆。
Michael:您不能使用 EFS,因為它要求 Windows 帳戶。 因此,您必須使用不同的技術將資料加密。 可以是很好如果您可以使用 EFS,或甚至資料保護 API,稱為 DPAPI,因為同時使用相同的基本密碼編譯技術和可以順利地加密和解密資料使用衍生自使用者的密碼金鑰。 喔吧。 看看我們可以做什麼其他。
Paige:我們可以使用的加密程式庫嗎?
Michael:我們當然可以。 在就其實,是一個多更好辦法比項目我聽過其他日期。
Paige:什麼?
Michael:有人問我是否它會是 [確定] 以建立自己的密碼編譯演算法。
Paige:您不該、 權限?
Michael:當然我說過不正確。 將您所預期我說? 我也會做,這麼做完整的 SDL 原則,違規情形,並他不應該甚至 contemplate 使用任何 homegrown 密碼編譯的可能性很清楚。
Paige:因此我們該怎麼做?
Michael:因為您的用戶端程式碼是 C#,您可以使用.NET System.Security.Cryptography 命名空間。 這是用於單聲道這表示您可以從 Linux 呼叫它。 我還沒試過它,但是您可以做的實驗。 您也需要先確定沒有授權的問題法學家與交談。
Paige:哪些授權問題?
Michael:它是第三方廠商的程式碼。 誰知道授權 says.Paige:好,我們將以使用者的密碼資料加密傳送 Blob...
Michael:[否]。 非。 Nyet。 Nada。 不對。 您不使用的加密索引鍵中,使用者的密碼您可以從密碼衍生加密金鑰。 密碼是太容易猜測。
Paige:如何不會一 「 衍生 」索引鍵嗎?
Michael smiles。
Michael:使用金鑰衍生函式。
Paige:先生。 smarty。 您可能會更精確嗎?
Michael:確定。 您傳入的函式在.NET 中,Rfc2898DeriveBytes 例如以及 Salt 的索引鍵。 Salt 是只是唯一的數字很難執行特定的攻擊。 它是一個反覆項目] 計數的通常是在數萬如果不是數百個千分位。 函數需要密碼及 munges 它數千個 salt 時間。 這通常稱為延伸密碼。此項作業通常會少於一秒中,結尾部分的位元組而且這些位元組可作為索引鍵。 金鑰衍生不僅很難猜出機碼,它也很難裝載高速密碼猜測攻擊,因為攻擊者有太經過反覆計數。 因此如果攻擊者通常可以測試每 100,000,反覆計數與第二個 1,000,000 密碼他的減少 10 秒! 很酷吧?
Paige:太好了。 那麼我們可以使用該索引鍵加密在的資料使用,說,進階加密標準呢?
Michael:可以, 就當然是這個並加密資料。 它並不提供任何形式的完整性檢查,但這很簡單。 您可以衍生另一個索引鍵,並使用,以建立訊息驗證程式碼及儲存,以及與中繼資料。 不能用相同的金鑰加密及完整性檢查。 衍生的第二個鍵,並使用該。
Adam,其他的安全性份子,會藉由 muttering。
Adam:安全性精靈永遠要移到密碼編譯的深度優先等。 但攻擊者執行弱式的連結。
Michael:Adam 權限,安全性人員傾向於挖掘深快速。 和我 guilty 如費用,但希望得到的方式。
Paige:Er 為 [確定]。 其他項目嗎?
Michael:也,還有自黏使用者忘記其密碼的問題。 我會讓的使用者從死者的多個密碼備份到 USB 搖桿或項目,並讓它們注意我們不需要密碼,而且如果他們忘了它,還有沒有我們可以將資料的方式備份!
Paige:我們是否完成吗?
Michael:為目前,是。 威脅分析模型,大且重要區段,我希望這可讓您了解一些取捨您必須先建置安全的應用程式時。
Paige:我現在執行它。 謝謝大家。
Michael Howard 一個高階的安全性程式管理員在 Microsoft 的重點在於安全的流程改進,以及最佳作法。 他是 coauthor 的五個的安全性書籍包括 「 撰寫安全程式碼的 Windows Vista,"「 安全性開發生命週期"「 撰寫安全程式碼 」和 「 19 Deadly 贖罪的軟體安全性"。