高翔 郭新東 逢曉燕 張鳳蘭
摘 要: 分布式系統(tǒng)發(fā)展至今,規(guī)模越來越大,網絡中故障節(jié)點的查找更加困難。在此針對這種問題提出了一種新的基于安全日志的問責方法。通過維護一個系統(tǒng)安全日志以記錄節(jié)點過去的行為,節(jié)點間依賴此安全日志中的記錄來確定其他節(jié)點行為的正確性。通過在NS?3環(huán)境下對問責機制的模擬,得出結論:使用問責機制可以確保分布式環(huán)境下任意發(fā)生故障的節(jié)點最終能被至少一個正確的節(jié)點檢測出來,并且存在至少一個正確的節(jié)點持有該節(jié)點發(fā)生故障的確鑿證據(jù)。
關鍵字: 分布式系統(tǒng); 故障節(jié)點; 安全日志; 問責機制
中圖分類號: TN964?34 文獻標識碼: A 文章編號: 1004?373X(2014)10?0092?04
Abstract: With the development of distributed systems, their scale is becoming larger and larger, but it is more difficult to find the fault nodes in network. A new accountability method based on the security log is proposed in this paper. The previous behaviors of nodes are recorded by maintaining a security log in the system, and the nodes rely on the record in this security log to determine the correctness of other nodes' behaviors. Through simulating the accountability mechanism in NS?3 environment, a conclusion is obtained in this paper. That is, the application of the accountability mechanism is able to ensure any fault node can be detected by at least one correct node in the distributed environment, and at least one correct node holds the conclusive evidence of the fault that has occurred in the node.
Keywords: distributed system; fault node; security log; accountability mechanism
0 引 言
分布式系統(tǒng)發(fā)展至今,規(guī)模越來越大,組件越來越多,只有每一個組件協(xié)調合作,才能保證整個系統(tǒng)的正常運行。如果其中的一個組件出現(xiàn)故障,則有可能威脅到整個系統(tǒng)的安全。由于系統(tǒng)規(guī)模的不斷擴大,復雜度和風險性也日益變大,系統(tǒng)安全面臨前所未有的挑戰(zhàn)。系統(tǒng)管理者迫切需要通過可靠的網絡舉證技術來幫助解決故障發(fā)現(xiàn),系統(tǒng)調試,問責和損害評估等問題。
在分布式系統(tǒng)中查找故障通常是極其困難的,這往往也是由分布式系統(tǒng)的復雜程度決定的。假如懷疑其中的一些節(jié)點出現(xiàn)故障,可能是由于設備硬件損壞、或是管理員的配置失誤、再或是節(jié)點被黑客攻擊或更改了其中運行的軟件,但是由于地域分布問題,并不知道具體哪些是故障節(jié)點,也不知道故障的具體表現(xiàn)癥狀。而且,當規(guī)模較大時,節(jié)點因誤配或安全性較低而使這些問題更加明顯。尤其在跨多個管理域的系統(tǒng)中,由于缺乏總的管理域,上述問題會更加嚴重。這類多管理域的系統(tǒng)如提供網絡服務的DNS,NTP和SMTP等,再如信息系統(tǒng),網格計算系統(tǒng),Web Service和P2P系統(tǒng)等。
1 問責機制的基礎
針對上述問題,提出一種新的基于安全日志的“問責”方法加以解決。在一個具備問責機制的系統(tǒng)中,所有的節(jié)點行為都經過加密后被鏈接到相關的實施節(jié)點上。系統(tǒng)中維持一個安全記錄以記錄過去的行為,系統(tǒng)中的節(jié)點可以使用此記錄相互檢查以確定其正確性。
假定節(jié)點的行為正常稱之為正確節(jié)點,否則稱之為錯誤節(jié)點。
首先引出系統(tǒng)的模型如圖1所示。
如圖1所示,每個節(jié)點可以被建模為一個狀態(tài)機S、一個檢測機D、和一個應用A的模型。狀態(tài)機代表所有需要被問責機制檢測的服務或應用,而應用服務則代表其他的不需要被檢測的功能,如圖形用戶界面GUI[1]。檢測機是對問責機制的具體實現(xiàn),它可以觀測到狀態(tài)機S的所有輸入和輸出,并且還可以與其他節(jié)點的檢測機通信。我們假設正確節(jié)點的狀態(tài)機S和檢測機D依照指定的規(guī)范實現(xiàn),而錯誤的節(jié)點則可能表現(xiàn)出任意行為。
檢測機向其本地應用層報告其他節(jié)點的錯誤標示。通常,當節(jié)點i發(fā)現(xiàn)節(jié)點j具有異常行為時,就會發(fā)出exposed(j)信號。當節(jié)點i懷疑節(jié)點j未發(fā)送其本應該發(fā)送的消息時,就會發(fā)出suspected(j)對節(jié)點j表示置疑,其他情況則以trusted(j)來表示[2]。
2 問責機制的實現(xiàn)技術
問責機制的實現(xiàn)主要包含了安全日志、提交協(xié)議、一致性協(xié)議、審計協(xié)議、挑戰(zhàn)\回復協(xié)議、證據(jù)傳輸協(xié)議。
2.1 安全日志
為了強制實現(xiàn)“問責性”,系統(tǒng)必須為每個節(jié)點的輸入和輸出維持一條記錄,并且在記錄被篡改的情況下有能力檢測出來。使用一種只增型安全日志作為記錄工具[4]。
只增型安全日志是一個只允許增加的鏈表,該日志按時間先后順序記錄一個特定節(jié)點的狀態(tài)機的輸入和輸出。安全日志還包含狀態(tài)機的周期性快照和檢測機的部分注釋。每條日志記錄包括一個序列號[si]、一個類型[ti]、和特定類型的內容[ci],把它表示為[ei=(si,ti,ci)]。該序列號可以是非連續(xù)的,但必須是嚴格遞增的。我們可以使用時間戳來作為序列號。另外,每條記錄還包括一個遞歸定義的哈希值[hi],該哈希值可以表示為[hi=hash(hi-1sitihash(ci))],[其中]表示連接,哈?;礹ash(i-1)已知。
日志的安全性由合成的哈希鏈(如圖2)和一個認證者集來確保。認證者是經節(jié)點的私鑰簽名后的聲明,它的日志條目具有相應的哈希值。以a來表示認證者,以[signj(arg)]表示用節(jié)點j的私鑰對參數(shù)arg進行簽名,則一個認證者[aji=signj(si,hi)]表示節(jié)點j簽名的聲明,且該認證者的記錄條目[ei]包含哈希值[hi]。
2.2 提交協(xié)議
必須確保一個節(jié)點的日志不能被加入一個未發(fā)生的日志條目,如一條它從未發(fā)送或接收的消息。同樣,也必須確保節(jié)點日志具有完整性,即日志應其包含節(jié)點發(fā)送或接收的所有消息,或者是來自其他正確節(jié)點的消息。
當節(jié)點i發(fā)送消息m到節(jié)點j時,節(jié)點i必須提交它發(fā)送過消息m,而節(jié)點j必須提交它接收到m。它們擁有一個認證者,該認證者由其他節(jié)點充當,并在消息中說明,認證者檢查相關的日志條目。記錄接收消息的日志條目里必須包含相應的認證者,因此,節(jié)點無法偽造它并未發(fā)送過的消息條目[5]。
仍以節(jié)點i向節(jié)點j發(fā)送一條消息m舉例,節(jié)點i首先創(chuàng)建一個日志條目([sk], SEND, {j,m}),然后將[hk-1],[sk]和[signk(skhk)]附到m上,再將結果發(fā)送至節(jié)點j。因此,節(jié)點j有足夠的信息計算出[hk],并提取出[aik],如果[aik]中的簽名無效,j將丟棄m。否則,j創(chuàng)建自己的日志條目([sl],RECV,{i,[sk],m}),并返回一個附有[hl-1],[sl]和[signl(slhl)]的應答。這使得節(jié)點i可以提取并驗證[ajl],如果i收到的應答無效,就會向j的證人節(jié)點發(fā)出挑戰(zhàn)請求。
2.3 一致性協(xié)議
如果節(jié)點i收到來自節(jié)點j的認證者,它必須再將認證者轉發(fā)至j的證人集[w(k)],因此,證人節(jié)點擁有所有節(jié)點j發(fā)送或接收的消息的可驗證證據(jù)[6]。每個證人節(jié)點[w∈w(j)]周期性的選取認證者及最小序列號和最大序列號并對節(jié)點j進行挑戰(zhàn),以獲取節(jié)點j的所有處于該序列號范圍內的日志條目。如果節(jié)點j是正確的,這些日志條目將會構成一條線性的哈希鏈,該鏈包含所有其他認證者所持的哈希值。如果上述不滿足,證人w將持有j發(fā)生錯誤的確鑿證據(jù)。
最后,證人可以使用日志條目來提取所有的認證者,這些認證者來自其他節(jié)點且被節(jié)點j轉發(fā)至相關證人。這點是必要的,因為節(jié)點j可以與其他節(jié)點k共同發(fā)生錯誤,這樣,它可以轉發(fā)k的消息到證人集[w(k)]而不轉發(fā)k的驗證者[7]。
2.4 審計協(xié)議
可以利用節(jié)點的日志來檢查該節(jié)點的行為是否符合其參考實現(xiàn)。節(jié)點i的證人w周期性的檢查i的最近的認證者,然后對i發(fā)出挑戰(zhàn)以獲取自上次審計后的所有日志條目。然后證人w將新的日志條目添加到它對i的本地拷貝日志中[8]。
隨后,證人w在本地建立i的參考實現(xiàn)的實例,并用來自i的最近一次快照對實例進行初始化。然后,從這個快照處開始重播所有的輸入,并比較[Si]的輸出和該日志中記錄的輸出。
因為要求[Si]是確定的,所以任何不符都表示節(jié)點i是錯誤的[8]。這種情況下,證人w可以用[aik]和本地拷貝的下標作為針對節(jié)點i的可驗證證據(jù),這樣,任意正確節(jié)點都可以檢查此證據(jù)。
2.5 挑戰(zhàn)/回復協(xié)議
如果節(jié)點對挑戰(zhàn)進行了回復,則該協(xié)議可以暴露錯誤節(jié)點。但是,如果節(jié)點并未回復挑戰(zhàn)或并未回復一個發(fā)送給它的消息,除非對同步性做一個強假設,否則我們無法區(qū)分一個節(jié)點是惡意的錯誤還是因為網絡的問題[9]。
當節(jié)點j發(fā)現(xiàn)節(jié)點i拒絕其合作時,將節(jié)點i的狀態(tài)標記為可疑并對節(jié)點i發(fā)起挑戰(zhàn)。挑戰(zhàn)必須包含有足夠的證據(jù)使其他節(jié)點相信,如果節(jié)點i是正確的那么它會回復挑戰(zhàn)。然后節(jié)點j將挑戰(zhàn)發(fā)送至i的證人集,證人再將挑戰(zhàn)發(fā)送至節(jié)點i。如果節(jié)點i對此不予回復,則證人指出節(jié)點i是可疑節(jié)點。
挑戰(zhàn)的方式有兩種:
(1) 審計挑戰(zhàn):審計挑戰(zhàn)有2個認證者組成,[aik]和[ail](k (2) 發(fā)送挑戰(zhàn):發(fā)送挑戰(zhàn)由一條簡單的消息m和由一致性協(xié)議附加的額外信息組成。通過提取和檢查消息m中的認證者,任意正確的節(jié)點都確信節(jié)點i必須對m進行應答。如果節(jié)點i是正確的且從未收到過m,則i可以接受m并返回一個應答。如果i已經收到過m,則它可以簡單的重發(fā)一下之前的應答即可。 2.6 證據(jù)傳輸協(xié)議 為了確保所有正確的節(jié)點最終都能對錯誤節(jié)點做出一致的指證,即持有相同的證據(jù),其中包括相同的審計集和相同的挑戰(zhàn)信息,允許每個節(jié)點i周期性的獲取由其他節(jié)點j的證人收集到的挑戰(zhàn)。在大多數(shù)實際的情況中,節(jié)點i可能只關心對與它進行直接或間接通信的節(jié)點的控告[10]。 如果一個正確的節(jié)點i擁有對另一個節(jié)點j的挑戰(zhàn),則它的檢測機指示suspected(j)。在此狀態(tài)下,如果i收到一條來自j的消息,則i對j進行挑戰(zhàn)[11]。一旦i收到對未判定信息的挑戰(zhàn)的有效回復,則i的檢測機重新指示為trusted(j)。如果節(jié)點i擁有關于節(jié)點j行為異常的證據(jù),則節(jié)點i的檢測機發(fā)出exposed(j)。 3 結 果 在NS?3模擬環(huán)境下將問責機制在一個覆蓋多播環(huán)境下進行了仿真實驗,實驗模擬了單一源點向多個節(jié)點發(fā)送數(shù)據(jù)流的情形,因為源節(jié)點可能沒有足夠的帶寬或資源為所有的節(jié)點發(fā)送流,所以需要所有的節(jié)點參與其中,將自己收到的數(shù)據(jù)進行轉發(fā),以達到對源節(jié)點負載均衡的目的。這樣,中間節(jié)點就有機會對轉發(fā)數(shù)據(jù)進行篡改或不進行轉發(fā)。 仿真環(huán)境的規(guī)模為100個節(jié)點,并手動的注入了一定數(shù)目的錯誤節(jié)點,設置了2條多播,每條只有一個源節(jié)點,50個客戶節(jié)點,每個節(jié)點設計2個證人節(jié)點。在沒有使用問責機制的情況下,錯誤節(jié)點不轉發(fā)或對數(shù)據(jù)進行隨機篡改,數(shù)據(jù)完整性無法保證,鏈路利用率低。使用問責機制后,數(shù)據(jù)完整性和鏈路利用率都有明顯提高。
4 結 語
本文討論分布式系統(tǒng)下錯誤檢測的難點所在和需要解決的問題,并提出一種新的解決方法,即問責機制,通過問責可以確保表現(xiàn)錯誤的節(jié)點最終能被至少一個正確的節(jié)點指證出來,同時保證正確的節(jié)點不被誣告。問責機制需要的一系列條件限制了它只能在規(guī)模適度的環(huán)境下使用,除非犧牲部分完整性,一旦滿足了這些條件,問責機制就可以在較大規(guī)模的網絡環(huán)境下使用了。
參考文獻
[1] 潘愛民.計算機網絡[M].4版.北京:清華大學出版社,2004.
[2] 張千里.網絡安全新技術[M].北京:人民郵電出版社,2003.
[3] 高永強.網絡安全技術與應用[M].北京:人民郵電出版社,2003.
[4] 陳魯生.現(xiàn)代密碼學[M].北京:科學出版社,2002.
[5] 韓海東.入侵檢測系統(tǒng)實例剖析[M].北京:清華大學出版社,2002.
[6] 劉洪斐,王灝,王換招.一個分布式入侵檢測系統(tǒng)模型的設計[J].微機發(fā)展,2003(1):92?95.
[7] ARGYRAKI K, MANIATIS P, IRZAK O, et al. An accountability interface for the Internet [R/OL]. [2007?08?10].http://www.infoscience.epfl.ch/record/109957.
[8] BARKER E, BARKER W, BURR W, et al. Recommendation for key management [R/OL]. [2005?08?12].http://csrc.nist.gov/publications/nistpubs/800?57/SP800?57?Part1.
[9] BARRINGER H, GOLDBERG A, HAVELUND K, et al. Rule?based runtime verification [J]. Lecture Notes in Computer Science, 2004, 2937: 44?57.
[10] BAZZI R A, NEIGER G. Simplifying fault?tolerance: providing the abstraction of crash failures [J]. Journal of ACM, 2001, 48(3): 499?554.
[11] BRACHA G. Asynchronous Byzantine agreement protocols [J]. Information and Computation, 1987, 75(2): 130?143.
[12] 陽萬安,李振,李彥,等.無線分布式系統(tǒng)中基于移動Agent的日志分析[J].現(xiàn)代電子技術,2007,32(10):91?93.
4 結 語
本文討論分布式系統(tǒng)下錯誤檢測的難點所在和需要解決的問題,并提出一種新的解決方法,即問責機制,通過問責可以確保表現(xiàn)錯誤的節(jié)點最終能被至少一個正確的節(jié)點指證出來,同時保證正確的節(jié)點不被誣告。問責機制需要的一系列條件限制了它只能在規(guī)模適度的環(huán)境下使用,除非犧牲部分完整性,一旦滿足了這些條件,問責機制就可以在較大規(guī)模的網絡環(huán)境下使用了。
參考文獻
[1] 潘愛民.計算機網絡[M].4版.北京:清華大學出版社,2004.
[2] 張千里.網絡安全新技術[M].北京:人民郵電出版社,2003.
[3] 高永強.網絡安全技術與應用[M].北京:人民郵電出版社,2003.
[4] 陳魯生.現(xiàn)代密碼學[M].北京:科學出版社,2002.
[5] 韓海東.入侵檢測系統(tǒng)實例剖析[M].北京:清華大學出版社,2002.
[6] 劉洪斐,王灝,王換招.一個分布式入侵檢測系統(tǒng)模型的設計[J].微機發(fā)展,2003(1):92?95.
[7] ARGYRAKI K, MANIATIS P, IRZAK O, et al. An accountability interface for the Internet [R/OL]. [2007?08?10].http://www.infoscience.epfl.ch/record/109957.
[8] BARKER E, BARKER W, BURR W, et al. Recommendation for key management [R/OL]. [2005?08?12].http://csrc.nist.gov/publications/nistpubs/800?57/SP800?57?Part1.
[9] BARRINGER H, GOLDBERG A, HAVELUND K, et al. Rule?based runtime verification [J]. Lecture Notes in Computer Science, 2004, 2937: 44?57.
[10] BAZZI R A, NEIGER G. Simplifying fault?tolerance: providing the abstraction of crash failures [J]. Journal of ACM, 2001, 48(3): 499?554.
[11] BRACHA G. Asynchronous Byzantine agreement protocols [J]. Information and Computation, 1987, 75(2): 130?143.
[12] 陽萬安,李振,李彥,等.無線分布式系統(tǒng)中基于移動Agent的日志分析[J].現(xiàn)代電子技術,2007,32(10):91?93.
4 結 語
本文討論分布式系統(tǒng)下錯誤檢測的難點所在和需要解決的問題,并提出一種新的解決方法,即問責機制,通過問責可以確保表現(xiàn)錯誤的節(jié)點最終能被至少一個正確的節(jié)點指證出來,同時保證正確的節(jié)點不被誣告。問責機制需要的一系列條件限制了它只能在規(guī)模適度的環(huán)境下使用,除非犧牲部分完整性,一旦滿足了這些條件,問責機制就可以在較大規(guī)模的網絡環(huán)境下使用了。
參考文獻
[1] 潘愛民.計算機網絡[M].4版.北京:清華大學出版社,2004.
[2] 張千里.網絡安全新技術[M].北京:人民郵電出版社,2003.
[3] 高永強.網絡安全技術與應用[M].北京:人民郵電出版社,2003.
[4] 陳魯生.現(xiàn)代密碼學[M].北京:科學出版社,2002.
[5] 韓海東.入侵檢測系統(tǒng)實例剖析[M].北京:清華大學出版社,2002.
[6] 劉洪斐,王灝,王換招.一個分布式入侵檢測系統(tǒng)模型的設計[J].微機發(fā)展,2003(1):92?95.
[7] ARGYRAKI K, MANIATIS P, IRZAK O, et al. An accountability interface for the Internet [R/OL]. [2007?08?10].http://www.infoscience.epfl.ch/record/109957.
[8] BARKER E, BARKER W, BURR W, et al. Recommendation for key management [R/OL]. [2005?08?12].http://csrc.nist.gov/publications/nistpubs/800?57/SP800?57?Part1.
[9] BARRINGER H, GOLDBERG A, HAVELUND K, et al. Rule?based runtime verification [J]. Lecture Notes in Computer Science, 2004, 2937: 44?57.
[10] BAZZI R A, NEIGER G. Simplifying fault?tolerance: providing the abstraction of crash failures [J]. Journal of ACM, 2001, 48(3): 499?554.
[11] BRACHA G. Asynchronous Byzantine agreement protocols [J]. Information and Computation, 1987, 75(2): 130?143.
[12] 陽萬安,李振,李彥,等.無線分布式系統(tǒng)中基于移動Agent的日志分析[J].現(xiàn)代電子技術,2007,32(10):91?93.