返璞歸真,揭秘安全的本質 |
發布時間: 2012/7/11 10:45:22 |
講了很多題外話,最終回到正題上。這是一本講Web安全的書,在本書中除了講解必要的攻擊技術原理之外,最終重心還是要放在防御的思路和實現的技術上。
在進行具體技術的講解之前,我們需要先清楚地認識到"安全的本質",或者說,"安全問題的本質"。 安全是什么?什么樣的情況下會產生安全問題?我們要如何看待安全問題?只有搞明白了這些最基本的問題,才能明白一切防御技術的出發點,才能明白為什么我們要這樣做,要那樣做。 在武俠小說中,一個真正的高手,對武功有著最透徹、最本質的理解,達到了返璞歸真的境界。在安全領域,筆者認為搞明白了安全的本質,就好比學會了"獨孤九劍",天下武功萬變不離其宗,遇到任何復雜的情況都可以輕松應對,設計任何的安全方案也都可以信手拈來了。 那么,一個安全問題是如何產生的呢?我們不妨先從現實世界入手。火車站、機場里,在乘客們開始正式旅程之前,都有一個必要的程序:安全檢查。機場的安全檢查,會掃描乘客的行李箱,檢查乘客身上是否攜帶了打火機、可燃液體等危險物品。抽象地說,這種安全檢查,就是過濾掉有害的、危險的東西。因為在飛行的過程中,飛機遠離地面,如果發生危險,將會直接危害到乘客們的生命安全。因此,飛機是一個高度敏感和重要的區域,任何有危害的物品都不應該進入這一區域。為達到這一目標,登機前的安全檢查就是一個非常有必要的步驟。 從安全的角度來看,我們將不同重要程度的區域劃分出來: 安全檢查的過程按照需要進行過濾 通過一個安全檢查(過濾、凈化)的過程,可以梳理未知的人或物,使其變得可信任。被劃分出來的具有不同信任級別的區域,我們稱為信任域,劃分兩個不同信任域之間的邊界,我們稱為信任邊界。 數據從高等級的信任域流向低等級的信任域,是不需要經過安全檢查的;數據從低等級的信任域流向高等級的信任域,則需要經過信任邊界的安全檢查。 我們在機場通過安檢后,想要從候機廳出來,是不需要做檢查的;但是想要再回到候機廳,則需要再做一次安全檢查,就是這個道理。 筆者認為,安全問題的本質是信任的問題。 一切的安全方案設計的基礎,都是建立在信任關系上的。我們必須相信一些東西,必須有一些最基本的假設,安全方案才能得以建立;如果我們否定一切,安全方案就會如無源之水,無根之木,無法設計,也無法完成。 舉例來說,假設我們有份很重要的文件要好好保管起來,能想到的一個方案是把文件"鎖"到抽屜里。這里就包含了幾個基本的假設,首先,制作這把鎖的工匠是可以信任的,他沒有私自藏一把鑰匙;其次,制作抽屜的工匠沒有私自給抽屜裝一個后門;最后,鑰匙還必須要保管在一個不會出問題的地方,或者交給值得信任的人保管。反之,如果我們一切都不信任,那么也就不可能認為文件放在抽屜里是安全的。 當制鎖的工匠無法打開鎖時,文件才是安全的,這是我們的假設前提之一。但是如果那個工匠私自藏有一把鑰匙,那么這份文件也就不再安全了。這個威脅存在的可能性,依賴于對工匠的信任程度。如果我們信任工匠,那么在這個假設前提下,我們就能確定文件的安全性。這種對條件的信任程度,是確定對象是否安全的基礎。 在現實生活中,我們很少設想最極端的前提條件,因為極端的條件往往意味者小概率以及高成本,因此在成本有限的情況下,我們往往會根據成本來設計安全方案,并將一些可能性較大的條件作為決策的主要依據。 比如在設計物理安全時,根據不同的地理位置、不同的政治環境等,需要考慮臺風、地震、戰爭等因素。但在考慮、設計這些安全方案時,根據其發生的可能性,需要有不同的側重點。比如在大陸深處,考慮臺風的因素則顯得不太實際;同樣的道理,在大陸板塊穩定的地區,考慮地震的因素也會帶來較高的成本。而極端的情況比如"彗星撞擊地球后如何保證機房不受影響"的問題,一般都不在考慮之中,因為發生的可能性太小。 從另一個角度來說,一旦我們作為決策依據的條件被打破、被繞過,那么就會導致安全假設的前提條件不再可靠,變成一個偽命題。因此,把握住信任條件的度,使其恰到好處,正是設計安全方案的難點所在,也是安全這門學問的藝術魅力所在。 本文出自:億恩科技【www.laynepeng.cn】 |