日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

拜占庭问题论文翻译

發布時間:2023/12/18 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 拜占庭问题论文翻译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

The Byzantine Generals Problem

? 可靠的計算機系統必須處理會向系統的不同部分提供沖突信息的故障組件。這種情況可以用拜占庭軍隊的將軍和他們的部隊圍困在敵方城市附近來概括地表達。 將軍們只能通過使者交流,他們必須商定共同的戰斗計劃。 但是,其中一個或多個可能是叛徒,他們會試圖混淆其他人。 問題是找到一種算法來確保忠實的將軍們達成共識。 結果表明,僅在口頭表達的情況下,只有并且只有三分之二以上的將軍忠誠時,這個問題才能解決。 所以一個叛徒可以混淆兩個忠實的將軍。 有了不可偽造的書面信息,這個問題對于任何數量的將軍和可能的叛徒來說都是可以解決的。 然后討論該解決方案在可靠的計算機系統中的應用。

1.引言

? 可靠的計算機系統必須能夠應對一個或多個組件的故障。 發生故障的組件可能表現出一種通常被忽略的行為,即,將沖突的信息發送到系統的不同部分。 應對此類故障的問題抽象表示為拜占庭將軍問題。 我們將本文的主要部分專門討論了這個抽象問題,并通過指出如何將我們的解決方案用于實現可靠的計算機系統來進行總結。 我們假設拜占庭軍隊的幾個師駐扎在一個敵方城市之外,每個師由其自己的將軍指揮。將軍只能通過使者相互溝通。 觀察敵人之后,他們必須決定共同的行動計劃.但是,有些將軍可能是叛徒,試圖阻止忠實的將軍達成協議。
將軍們必須有一種算法來保證:

A.所有忠實的將軍都決定相同的行動計劃。

? 忠實的將軍都會按照算法說的去做,但是叛徒可以做他們想做的任何事情。無論叛徒做什么,該算法都必須保證條件A。忠實的將軍們不僅應該達成協議,而且應該就合理的計劃達成協議。因此,我們還想確保

B.少數叛徒不會使忠誠的將軍們采取錯誤的計劃。
? 條件B很難形式化,因為它需要準確說出一個不好的計劃,我們不會嘗試這樣做。相反,我們考慮將軍們如何做出決定。每個將軍觀察敵人并將他的觀察力傳達給其他人。令v(i)為第i個將軍傳達的信息。每個將軍使用某種方法將值v(1)… v(n)組合到一個單獨的行動計劃中,其中n是將軍的數量。條件A通過讓所有將軍使用相同的方法來組合信息來實現,條件B通過使用魯棒的方法來實現。例如,如果要做出的唯一決定是進攻還是撤退,則v(i)將是通過將軍 i認為哪種選擇最好的決定,而最終決定可以基于其中的多數票。只有忠實的將軍在兩種可能性之間幾乎均等地劃分時,少數叛徒才會影響決策。

? 雖然這種方法可能不是滿足條件 A 和 B 的唯一方法,但它是我們所知道的唯一方法。它假定將軍們用一種方法彼此交流他們的信息V(i)。顯而易見的方法是通過信使相互發送 v(i)。然而,這不起作用,因為滿足條件 A要求每個忠誠的將軍獲得相同的值 v(1)…V(n)。一個叛國的將軍可以給不同的將軍發出不同的價值觀。要滿足條件 B,下列條件必須滿足:

**1.每個忠誠的將軍都必須獲得相同的信息。**一致性

? 條件 1 意味著一個將軍不一定能直接使用從第一個將軍那里得到的 v(i)值,因為一個叛國的將軍可以給不同的將軍發送不同的值。這意味著,如果我們不小心,在滿足條件 1 的情況下,我們可能會引入一種可能性,即將軍們使用的 v(i)值不同于第一個將軍發出的 v(i)值——即使第一個將軍是忠誠的。如果要滿足條件 b,我們就不能允許這種情況發生。例如,如果每一個忠誠的將軍都發出“進攻”的信號,我們就不能允許少數叛徒使忠誠將軍以“撤退”、“…”、“撤退”的信號為基礎作出決定。因此,我們對每個 i 都有以下要求:

**2.如果第i個將軍是忠誠的,那么他發送的值必須被每個忠誠的將軍用作 v(i)的值。**正確性

我們可以重寫條件 i 作為條件,即對于每一個 i(不管第一個將軍是否忠誠),1’。任何兩個忠誠的將軍使用相同的價值 v(i)。條件 1’和 2 都是由第 i 個將軍發送的單個值的條件。因此,我們可以考慮限制在一個將軍如何把他的信息傳遞給其他將軍的問題上。我們用一個指揮官向他的副官們發出命令的方式來表達這個意思,得到以下的問題。

拜占庭將軍問題指揮官必須向他的n-1中將下達命令

IC1. 所有忠誠的副官都遵守同樣的命令。

IC2.如果指揮官是忠誠的,那么每個忠誠的中尉都會服從他發出的命令。

? 條件 IC1 和 IC2 稱為交互式一致性條件。請注意,如果指揮官是忠誠的,那么 IC1就跟隨 IC2。然而,指揮官并不需要忠誠。
? 為了解決我們最初的問題,第一位將軍用一個解決方案向拜占庭將軍問題發出命令,“使用 v(i)作為我的信息”,其他將軍充當中尉,從而發出 v(i)的價值。

2.不可能的結果

? 拜占庭將軍問題看起來簡單得讓人難以置信。如果將軍們只能發送口頭信息,那么除非三分之二以上的將軍們忠誠,否則任何解決方案都不會奏效。特別是,只有三個將軍,沒有任何解決辦法可以在一個單一的叛徒存在??陬^信息的內容完全在發送者的控制之下,因此叛國的發送者可以傳遞任何可能的信息。這種信息對應于計算機通?;ハ喟l送的信息類型。在第四部分,我們考慮簽名的,書面的協議,因此這不是真的。

? 我們現在表明,口頭信息沒有解決三個將軍可以處理一個叛徒。為簡單起見,我們考慮這樣一種情況,即唯一可能的決定是“進攻”或“撤退”。讓我們首先看看圖

  • 司令是忠誠的

? 圖1 中的場景,在這個場景中,指揮官是忠誠的,并且發出了一個“攻擊”命令,但是中尉2 是一個叛徒,并且向中尉 1 報告他收到了一個“撤退”命令。為了滿足IC2 (所有忠誠的副官都遵守同樣的命令)的要求,中尉 1 必須服從進攻命令。

  • 司令是叛徒

? 現在考慮另一個場景,如圖 2 所示,其中指揮官是一個叛徒,向中尉 1 發出一個“攻 擊”命令,向中尉 2 發出一個“撤退”命令。中尉 1 不知道誰是叛徒,他不能告訴什么信息的指揮官實際上發送給中尉 2。因此,這兩張圖片中的場景在中尉 1 看來完全相同。如果叛徒一貫說謊,那么中尉 1 就沒有辦法區分這兩種情況,所以他必須服從“攻擊”命令在他們兩個。因此,每當中尉一號接到指揮官的“攻擊”命令時,他必須服從。
? 然而,一個類似的論點表明,如果中尉 2 接到指揮官的“撤退”命令,那么他必須服從命令,即使中尉 1 告訴他指揮官說“進攻”。因此,在圖 2 的場景中,中尉 2 必須服從“撤退”命令,而中尉 1 服從“攻擊”命令,因此違反了條件 IC1。因此,三個將軍在一個叛徒面前工作是沒有解決辦法的。
? 這個論點可能看起來令人信服,但是我們強烈建議讀者對這種非嚴格的推理非常懷疑。雖然這個結果確實是正確的,但我們已經看到了同樣似是而非的無效結果的“證明”.我們知道在計算機科學或數學中,沒有一個領域的非正式推理比這類算法的研究更容易導致錯誤。為了嚴格證明可以處理單個叛逆者的三通解是不可能的,我們請讀者參考[3]。
? 利用這個結果,我們可以證明少于 3m+1 個將軍的解決方案不能應付 m個 叛徒。更確切地說,三個或更多的將軍不存在這樣的解決方案,因為這個問題對兩個將軍來說是微不足道的。
? 解一組 3m 或更少的問題,然后用它構造一個拜占庭將軍問題的三通解,這是我們知道不可能的。為了避免兩種算法之間的混淆,我們稱
假設
解的將軍為阿爾巴尼亞將軍,構造解的將軍為拜占庭將軍。因此,從允許 300 萬或更少的阿爾巴尼亞將軍對付 300 萬叛徒的算法出發,我們構造了一個允許三個拜占庭將軍對付一個叛徒的解決方案。

? 通過讓拜占庭的每一位將軍模擬大約三分之一的阿爾巴尼亞將軍,得到三個一般解,這樣每一位拜占庭將軍模擬的阿爾巴尼亞將軍最多不超過萬人。拜占庭指揮官模擬阿爾巴尼亞指揮官和最多 m-1 阿爾巴尼亞中尉,兩個拜占庭中尉模擬最多m 阿爾巴尼亞中尉。因為只有一個拜占庭將軍可以成為叛徒,而且他假裝最多億阿爾巴尼亞人,最多億阿爾巴尼亞將軍是叛徒。因此,假定的解決辦法保證了 IC1 和IC2 對阿爾巴尼亞將軍們適用。通過 IC1,所有的阿爾巴尼亞中尉被忠誠的拜贊廷中尉模仿,服從同樣的命令,這是他必須服從的命令。阿爾巴尼亞將軍解的 IC1 和IC2 條件是否暗示了拜占庭將軍解的相應條件是很容易驗證的,因此我們構造了所需的不可能解。

? 有人可能會認為,解決拜占庭將軍問題貿易協定的困難源于達成確切協議的要求。我們現在通過表明達成近似協議與達成確切協議同樣困難來證明情況并非如此。讓我們假設,將軍們不是試圖商定一個精確的作戰計劃,而是必須商定一個大約的進攻時間。更確切地說,我們假設指揮官命令進攻的時間,我們要求保持以下兩個條件:

? IC1’. 所有忠誠的副官在 10 分鐘內互相攻擊。

? IC2’.如果指揮官是忠誠的,那么每個忠誠的中尉都會在指揮官命令的 10 分鐘內發動攻擊。

(我們假設命令是在攻擊前一天發出和處理的,接收命令的時間與此無關——只是命令中給出的攻擊時間有關。)

? 像拜占庭將軍問題一樣,這個問題是無法解決的,除非超過三分之二的將軍是忠誠的。我們首先證明了這一點,如果對付一個叛徒的三個將軍有一個解決方案,那么我們就可以構造一個對付一個叛徒的拜占庭將軍問題的三個通用解決方案。假設指揮官希望發出“進攻”或“撤退”的命令。他通過發送 1:00 的攻擊時間命令攻擊,并使用假定的算法發送 2:00 的攻擊時間命令撤退。每個中尉使用以下程序獲得他的命令。

? (1) 在收到指揮官的攻擊時間后,一名中尉做了以下事情之一:

? (a) 如果時間是 1:10 或更早,然后攻擊。

? (b) 如果時間是 1:50 或更晚,那么就撤退。

? ?否則,繼續步驟(2)。IC2`

? (2) 問問另一個中尉,他在第(1)步做了什么決定。

? (a)如果另一個中尉做出了決定,那么就做出和他一樣的決定。

? (b) 否則,就撤退。

? 根據 IC2’,如果指揮官是忠誠的,那么忠誠的中尉將在步驟(1)中獲得正確的順序,因此 IC2 是滿意的。如果指揮官是忠誠的,那么 IC1 就跟隨 IC2,所以我們只需要在指揮官是叛徒的假設下證明 IC1。因為最多只有一個叛徒,這意味著兩個副手都是忠誠的。因此,如果一個中尉決定第(1)步進攻,那么另一個中尉不能決定第(1)步撤退。因此,要么他們都會在步驟(1)中做出相同的決定,要么他們中至少有一個會推遲到步驟(2)再做決定。在這種情況下,很容易看到它們都得到了相同的決定,因此 IC1 是滿意的。因此,我們構建了一個拜占庭將軍問題的三通解決方案來處理一個叛徒,這是不可能的。因此,我們不能有一個三通用的算法來維護 ICI’和 IC2’的存在一個叛徒。

現在可以用一般模擬法證明少于 3m+1 的解決方案不能對付 m 個叛徒。這個證明與原始拜占庭將軍問題的證明相似,由讀者自己去證明。

3.口頭信息的解決方案

? 我們在上面展示了一個用口頭信息來對付拜占庭將軍問題叛徒的解決方案,必須至少有 3 百萬+1 個將軍。我們現在給出了一個對 3 百萬+1 或更多的將軍有效的解決方案。然而,我們首先確切地說明“口頭信息”是什么意思。每個將軍都應該執行一些算法,包括向其他將軍發送消息,我們假設一個忠誠的將軍正確地執行他的算法。定義口頭信息體現在我們對將軍信息系統的下列假設中:

A1. 每條發送的信息都被正確傳遞。 A2. 信息的接收者知道是誰發送的。 A3. 可以檢測到消息的缺失。

假設 A1 和 A2 防止叛徒干擾其他兩位將軍之間的通訊,因為通過 A1 他不能干擾他們發送的信息,通過 A2 他不能通過引入虛假信息來混淆他們之間的交流。假設 A3 將挫敗一個試圖僅僅通過不發送信息來阻止一個決定的叛徒。這些假設的實際應用將在第 6 節中討論。

? 本節和下面的算法要求每個通用程序都能夠直接向其他通用程序發送消息。在第 5節中,我們描述了不具備這一要求的算法。叛國指揮官可以決定不下達任何命令。由于中尉們必須服從一些命令,在這種情況下,他們需要一些默認命令來服從。我們讓 retreat 是這個默認順序。

? 我們歸納性地定義了所有非負整數的口頭協議算法 OM(m),通過這些算法,指揮官可以向 n-1 中尉發送命令。我們證明 OM(m)在最多 m 叛徒面前解決 3m+1 或更多的將軍的拜占庭將軍問題。我們發現用“獲得一個值”而不是“服從一個值”來描述這個算法更方便排序".

該算法假設函數 majority 具有如下性質:如果大多數值 vi = v,則 majority(V1,…,Vn)=v .(實際上,它假定了一系列這樣的函數——每個 n )對于函數majority(V1,…Vn)的值有兩個自然的選擇:

1. 如果大多數值中存在vi,否則為 retreat;2. 假設它們來自一個有序集合,選擇中位數 vi 。

下面的算法只需要上述的majority()性質。

Algorithm OM(0).

(1) 指揮官把他的價值傳遞給每個中尉。 (2) 每個中尉使用他從指揮官那里得到的價值,或者如果他沒有得到價值就使用 RETREAT。

Algorithm OM(m), m > O

(1) 指揮官把他的價值傳遞給每個中尉。 (2)對每一個中尉i,令vi為中尉i收到的命令,如果沒有收到則使用撤退。中尉i作為算法OM(m-1) 的指揮官,發送vi給余下的n-2個將領。 (3)對每一個 i和j(i!=j),令vj為第二步(2)將領i從將領j獲得的信息,如果沒有收到則使用撤退。將領i使用majority(v1 ,…,vn-1)的值作為最終命令值。

? 為了理解這個算法是如何工作的,我們考慮 m=1,n=4 的情況。圖 3 展示了當指揮官發送值v 而中尉 3 是叛徒時,中尉 2 接收到的消息。在 OM(1)的第一步中,指揮官向所有三名中尉發送 v。在第二步中,Lieutenant1 使用平凡算法 OM(0)將值 v 發送給 Lieutenant2。同樣在第二個步驟中,叛變的中尉 3 給中尉 2 一些其他的值 x。在步驟 3 中,中尉 2 然后有 v1=v2 和v3=x,所以他得到正確的value v = majority ( v , v, x) .值 v=majorty(v,v,x)。證明過程https://www.jianshu.com/p/538e6c9fac81

? 接下來,我們看看如果指揮官是叛徒會發生什么。圖 4 顯示了如果一個叛變的指揮官將三個任意值 x、y 和 z 發送給三個中尉,中尉們所接收到的值。每個中尉得到v1 = x, v2 = y, and v3 = z, 因此在步驟(3)中它們都得到相同的值majority(x,y,z),不管這三個值 x,y 和 z 是否相等。

圖3:副官是叛徒

第一步:司令向每個副官發送他的值vvv給每個副官;
第二步:副官1執行OM(0),作為司令向副官2發送v;由于副官3是叛徒,其執行OM(0)向副官2發送了不同的值,假設為x;
第三步:副官2擁有的行動值集為{v1,v2,v3}={v,v,x},采用majority函數,副官2采取的行動v=majority{v1,v2,v3}

同理,副官1采取的行動指令也是v,即滿足拜占庭將軍問題一致性條件IC1和IC2。

圖4:將軍是叛徒

第一步:司令為了阻止忠誠副官達成一致,分別向三位副官發送值{x,y,z}{x, y, z}{x,y,z};
第二步:每個副官從司令收到的值作為自己的值,并執行OM(0)向其他副官發送;
第三步:在第三步中,每個副官擁有的值集均為{x,y,z}{x, y, z}{x,y,z},因此,副官執行行動函數majority得到的結果是一樣的。

由于三位忠誠的將軍采取同樣的行動,滿足拜占庭將軍一致性條件IC1。

**從m=1, n=4的例子可以看出,OM(m)算法能夠處理拜占庭將軍問題。遞歸算法 OM(m)調用算法 OM(m-1)的 n-1 個獨立執行,每個執行都調用 OM(m-2)等的 n- 2 個執行。**這意味著,對于 m>1,一個中尉會給彼此發送許多不同的信息。必須有某種方法來區分這些不同的信息。讀者可以驗證,如果每個中尉 i 在步驟(2)中將數字 i 前綴為他發送的值 vi,那么所有的模糊性都消除了。隨著遞歸的“展開”,算法 OM(m-k)將被調用(n-1)…(n-k)次,以發送一個以 k 中尉的數字序列為前綴的值。

**為了證明算法OM(m),**對任意的m,的正確性。首先證明以下引理。
Lemma1. 對任意的m和k,如果將軍個數大于2k+m,有最多k個叛徒,算法 OM(m)滿足IC2 。
證明:針對m的取值情況進行分析。
1.m= 0,忠誠的將軍只要服從將軍的命令就可以了,引理成立。
2.假設m-1,m>0,時算法滿足IC2,證明對m 成立。(歸納法)
算法第一步(1),忠誠的司令發送值v給n-1個將領。第二步(2),每一個忠誠的將領調用算法OM(m-1)。
n>2k+m => n-1>2k+(m -1)>2k,多數的將領是忠誠的,每一個忠誠的將領得到一個vi=v 從n-1個值i中,在第三步majority(v1,…,vn-1)=v,滿足IC2.

證明算法成立的定理1:
Theorem1.對任意的m,在人數大于3m,有m個叛徒的情況下,算法OM(m)滿足條件IC1和條件IC2。
證明:針對m的取值情況進行分析。
1.m= 0,定理成立。
2.假設m-1,m>0,時成立,證明對m 成立。(歸納法)
在司令忠誠的情況下,令m=k,根據引理1可知,IC2成立從而IC1成立。
所以只需要證明司令是叛徒的情況。有最多m個叛徒,司令為其中一個,所以還有m-1個將領是叛徒。人數大于3m,所以將領人數大于3m-1。
3m-1>3(m-1)
使用歸納假設法證明OM(m-1)滿足條件CI1和CI2。因此,在第三步,對每一個j,任意兩個忠誠的將軍獲得相同的值vj。從而任意兩個忠誠的將軍獲得相同的值 在函數majority(v1,…,v**n-1)在第三步,IC1的證。

4.帶簽名信息的解決方案

正如我們在圖 1 和圖 2 中看到的場景,正是叛徒撒謊的能力使得拜占庭將軍問題變得如此困難。如果我們能夠限制這種能力,問題就會變得更容易解決。一種方法是允許將軍們發送不可偽造的簽名信息。更確切地說,我們在 A1-A3以下假設:

A4 (a) 忠誠的將軍的簽名是不能偽造的,并且可以檢測到他簽名信息內容的任何變更。(b) 任何人都可以核實將軍簽字的真實性。請注意,我們對叛國將軍的簽名不做任何假設。特別是,我們允許另一個叛徒偽造他的簽名,從而允許叛徒之間相互勾結。

現在,我們已經介紹了簽名信息,我們以前的論點,即四個將軍必須處理一個叛徒不再成立。事實上,確實存在三個通用解決方案。我們現在給出了一個算法,可以處理任意數量的將軍的萬叛徒。(如果少于 m+2 個將軍,問題就是空洞的。)
在我們的算法中,指揮官向每個副官發送一個簽名命令。然后每個中尉在命令上簽名,并將其發送給其他中尉,中尉再加上他們的簽名,然后再發送給其他人,如此類推。這意味著中尉必須有效地接收一條簽名信息,復制幾份,并簽名和發送這些副本。如何獲得這些副本并不重要;一條消息可能是復印的,或者每條消息可能由一堆相同的消息組成,這些消息根據需要進行了簽名和分發。

算法定義一個選擇函數choice,其在一個集合命令信息中選出一個,如下:

1.如果集合V只有一個值v,Choice(V) = v。2.choice(?) = RETREAT(撤退)??占闆r下。

? 可以注意到,可選擇中值為函數的值。

定義

x:i 表示被將軍i簽名的值x ,則v:j:i 表示值v被將軍j簽名以后,然后又被將軍i簽名。令將軍0號為命令的發送者。在算法里每一個將領i都有一個集合Vi ,集合里面包括他收到的被其他將軍簽名的信息。
算法SM(m).
初始化 Vi =?.
(1)司令發送其簽名信息v:0給每一個將領。
(2)對每一個將領i :
(A)如果將領 i 收到從司令v:0,且其Vi =?。 其操作如下:

? (i)他令其Vi ={v};
? (ii)他發送v:0:i給每一個其他的將領.
? (B)如果將領 i 收到信息v:0:j1:…:jk ,且v?Vi,則:
? (i)他將v加入自己的集合Vi;
? (ii)如果k<m,則其發送v:0:j1:…:jk:i 給其他的將領?j1,…,jk。

(3)對每一個將領i :當將領i 不再收到信息后,其遵守choice(Vi)

注意,在第二步中,副官i將忽略任意值已經在Vi出現的消息。通過對k的歸納,對于每個副官序列j1,…,jk , 且k<m,每個副官至多收到一條v:0:j1:…:jk 消息。在第(3)步中可以使用超時來判斷沒有消息再回到來。

舉例: m=1, n=3

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-AXBM88Aw-1587040554637)(https://hongery.github.io/images/bft/bft4.png)]

在第(1)步,司令發送發送“attack”給副官1并發送“retreat”給副官2;
在第(2)步,每個副官將收到兩個命令值,即V1=V2={"attack","retreat"}
在第(3)步,兩個忠誠的副官執行choice(Vi得到的結果也是一樣的。

因此,當司令叛徒時,算法滿足條件IC1。

當司令是忠誠的時,叛徒副官無法篡改司令的命令,因此忠誠的副官的行動值集Vi只有一個元素,即司令發送的命令。因此,SM(m)算法滿足條件IC1和IC2。

定理2.對任意的m,在至多m個叛徒的情況下,算法SM(m)解決拜占庭問題。
證明,在司令是忠誠的情況下,沒有信息可被篡改。顯然成立。
在司令是叛徒的情況下,需要證明IC1成立,則任意兩個忠誠的將領i和j將遵循第三步獲得的一致的命令。所以必須證明 將領i和j在第二步將相同的命令信息放進自己的集合。情況分析,可得有以下兩種情況,如果將軍i獲得信息v,他把信息發送給將軍j。如果將軍i獲得信息v:0:j1:…:jk ,且j在簽名當中,則j已經把值v放進自己的集合。如果j不在簽名當中,分析兩種情況:

1.k<m.將軍i將會發送信息v:0:j1:…:jk :i給將軍j ,所以j獲得信息v. 2.k=m.因為司令是叛徒,且有m-1個將領也是叛徒。所以在j1,…,jm 至少有一個將領是忠誠的。這個忠誠的將領必定有將獲得的v值發送給將領 j,當他第一次收到這個信息的時候,將領j,必定收到信息。

證明結束。

5.通訊路徑缺失

? 到目前為止,我們假設一個將軍可以直接向其他所有將軍發送消息。我們現在移除這個假設。相反,我們認為物理障礙對誰可以向誰發送信息設置了一些限制。我們認為將軍構成一個簡單的 2 個有限無向圖 g 的節點,其中兩個節點之間的弧表示這兩個將軍可以發送消息

2 一個簡單圖是這樣一個圖,其中最多有一條弧連接任意兩個節點,每條弧連接兩個不同的節點。

接下來 對算法OM(m)和SM(m)進行拓展,G 為全聯通圖。
首先對算法OM(m)進行拓展,給出以下定義:

定義1.

(a)節點集合{i1 ,…,ip}為節點i的正則鄰接集,滿足:
(i)每一個i j都鄰接點 i
(ii)對任意的將軍 k (k 和 i 不相等),則有路徑 γj,k ,從 ij 到 k 無需通過 i,且任意兩條路徑 γj,k 除了節點 k 沒 有共同節點。
(b)圖 G 是 p正則的 ,如果每個節點的正則集都有 p 個不同的節點。
如圖所示,圖六是 3-正則圖,每個節點有三個度(三條邊)。
圖七 不是 3-正則圖 ,中間節點有四條邊。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fRvdNybD-1587040554654)(https://hongery.github.io/images/bft/bft5.png)]

拓展的OM(m,p)算法

m個叛徒 ,G 為 3-正則圖。(注意到, 3m-正則圖 必至少含有 3m +1 個節點 )。對任意的正整數 m , p 。且將軍通信情況構成 p-正則圖。通過分析 m 如下:
算法 OM(m,p).
(0)選擇司令(commander)的正則鄰接集 N (含有 p 個 將領)。p為3
(1) 司令將信息發送給集合 N 里的每一個將領。
(2)對每一個 i ∈ N ,令 vi 為 將領 i 收到的從司令發過來的命令,或者沒有收到信息則默認為 撤退 (RETREAT)。將領 i 按照以下規則將 vi 發送給其他將領 k:
(A) 如果 m = 1 通過路徑 γj,k 發送信息,路徑存在定義1由(a)(ii)保證.
(B)如果 m > 1 ,則 將領 i扮演司令的角色在OM(m-1,p-1),圖由去掉原先的司令構成。
(3)對 每一個 k ,和 i ∈ N , k ≠ i 。令 vi 為將領 k 從 i (i 在第二步(2))) 收到的信息,或者 RETREAT 如 果沒有收到信息。將領 k 使用 函數值 majority(vi,… ,v ~i p~), N = {i1 ,… , ip }.

接下來證明 在至多 m 個叛徒的情況下 ,OM(m,3m) 解決拜占庭將軍問題 。首先對引理1 進行拓展(見 一)。
定理2:
Lemma 2 .對任意的 m >0 和任意的 p ≥ 2k + m ,如果至多有 k 個叛徒 ,算法 OM(m,p)滿足條件IC2(見一)。

證明

? 當 m = 1, 注意到 一個將領獲得的值 majority(v1,… ,v p) 中,每一個 vi 的命令發送者是通過不相交的路徑發送的信息。且至多有 k 個叛徒. 在 p ≥ 2k + m 的情況下知道 忠誠將軍的人數超過半數。當將軍是忠誠的情況下,算法保證IC2 從而的證。運用歸納法可得對 m -1, m >1 .引理成立。
繼續證明…
定理 3:
Theorem 3. 對任意的 m >0 和對任意的 p ≥ 3m ,在至多 m 叛徒的情況下 ,算法OM(m,p) 解決拜占庭問題。
證明。根據引理2,令 k = m ,可知算法滿足IC2,在司令是忠誠的情況下?,F在只需要證明司令為叛徒的情況。假設所有忠誠的將領再第三步(3)要獲得一致的值 v i 集合.
? 如果 m = 1,則所有將領都是忠誠的,成立。
? 如果 m >1 ,簡單的歸納 p ≥ 3m 可得 p -1 ≥ 3 (m -1) ,算法成立。
? 證畢。

算法假設圖G 為3-正則 ,是一個條件很強的連通假設。事實上當總共有3m +1人時,3 m-正則意味著全連通,算法OM(m,3m) 可推出 OM(m)??梢钥闯?#xff0c;拓展算法 SM(m) 只需要更弱的連通條件。

? 分析多少連通條件能解決拜占庭問題。IC2 要求 忠誠的將領服從忠誠的司令,這要求他們之間要能夠通信。特別地,當每一條信息都會通過一個叛徒中轉的時候,不能保證將領能獲得司令的信息。類似的,如果兩個將領只能通過有叛徒的路徑通信則IC1無法保證。
拜占庭將軍的弱連通假設為,忠誠將軍構成的G 的子圖要互相連接。在這個條件下,總人數為 n ,不管叛徒的個數,算法 SM(n-2)成立。

接下來證明更加普遍的結果。定義一個圖的半徑為最小的數 d ,任意兩個節點相連至多需要 d 條邊。

定理4.
Theorem4. 對任意的 m 和 d ,如果有 m 個叛徒且 忠誠將軍構成的子圖有直徑 d, 則 SM(m + d - 1) 解決拜占庭問題。

證明和定理2的證明類似(略)。

推論.如果忠誠將軍構成的子圖是連接的,則 SM(n - 2)可解決拜占庭問題。
證明,令 d 為忠誠將軍構成的圖的直徑。且已知 d 小于 節點數,所以忠誠將軍的人數大于d ,叛徒人數少于 n - d 。令 m = n - d -1 可的證。

可靠的系統大多使用多數票方法保證可靠性,其使用多個處理器得出一致的結果,然后使用多數票表決的方法得到單個值。
使用多數票方法是基于假設不出錯的處理器將得到一致的結果。這在它們獲得一致的輸入時成立。其基于假設出錯的處理器不會得到一致的錯誤結果。但是也有很多其他的情況,無法獲得一致的輸入,比如出錯的程序發送不同的值給其他處理器。比如獲取時鐘值的時候,很難保證兩個處理器獲取相同的值等等。所以給出以下前提條件:
1.所有無故障的處理器使用相同的輸入。(可以獲得相同的輸出)
2.如果只輸入單元無故障,那么所有無故障的處理器要使用其提供的值作為輸入。

這里,司令是作為 輸入值的提供者,將領是處理器,忠誠為無故障。

6.可靠的系統

? 除了使用本質上可靠的電路元件,我們知道實現一個可靠的計算機系統的唯一方法是使用幾個不同的“處理器”來計算相同的結果,然后對它們的輸出進行多數表決,以獲得一個單一的值。(投票可以在系統內進行,也可以由輸出的用戶在外部進行。)無論是使用冗余電路來防止單個芯片故障的可靠計算機,還是使用冗余計算站點來防止單個站點被核攻擊破壞的彈道導彈防御系統,都是如此。唯一的區別在于復制的“處理器”的大小。

使用多數表決來實現可靠性是基于所有非故障處理器將產生相同的輸出的假設。只要它們都使用相同的輸入,這就是正確的。然而,任何單個輸入數據都來自單個物理元件——例如,來自可靠計算機中的其他電路,或者來自導彈防御系統中的某個雷達站點——和一個故障定位元件,可以為不同的處理器提供不同的值。此外,不同的處理器可以獲得不同的值,甚至從一個非故障的輸入單元,如果他們讀取的值,而它正在變化。例如,如果兩個處理器在時鐘前進時讀取時鐘,那么一個處理器可能獲得舊時間,另一個處理器獲得新時間。這只能通過與時鐘推進同步讀操作來防止??煽康闹贫?#xff0c;必須滿足以下兩個條件:

  • 所有非故障處理器必須使用相同的輸入值(因此它們產生相同的輸出)。

  • 如果輸入單元是非故障的,那么所有非故障進程都使用它提供的值作為輸入(因此它們產生正確的輸出)。

  • 這些只是我們的交互式一致性條件 IC1 和 IC2,其中“指揮官”是產生輸入的單位,“中尉”是程序,“忠誠”意味著沒有錯誤。

    ? 嘗試用“硬件”解決方案來規避這個問題是很誘人的。例如,可以嘗試通過讓所有處理器都從相同的線路讀取輸入值來確保所有處理器獲得相同的輸入值。然而,一個錯誤的輸入單元可以沿著線路發送一個邊際信號----這個信號可以被某些處理器解釋為 0,而其他處理器可以解釋為 1。沒有辦法保證不同的處理器將從一個可能出錯的輸入設備獲得相同的值,除非讓處理器相互通信來解決拜占庭將軍問題。

    ? 當然,有故障的輸入設備可能提供無意義的輸入值。一個拜占庭將軍解決方案所能做的就是保證所有處理器使用相同的輸入值。如果輸入是重要的,那么應該有幾個獨立的輸入設備提供冗余值。例如,在導彈防御系統中應該有冗余雷達和冗余處理站點。然而,冗余輸入不能實現可靠性,仍然需要確保非故障處理器使用冗余數據產生相同的輸出。

    ? 如果輸入設備是非故障的,但是由于它在值變化時被讀取而給出不同的值,我們仍然希望非故障處理器獲得一個合理的輸入值。可以證明,如果多數函數和選擇函數都是中值函數,那么我們的算法具有這樣的性質,即非故障處理器獲得的值在輸入單元提供的值范圍之內。因此,只要輸入單元產生合理的值范圍,非故障處理器將獲得合理的值。

    ? 我們已經給出了幾種解決方案,但是它們都是用拜占庭式的將軍而不是用計算系統來表述的。我們現在研究如何將這些解決方案應用于可靠的計算系統。當然,用處理器實現“通用”算法是沒有問題的。問題在于實現滿足 A1-A3(算法 SM(m)的 A1-A4 假設)假設的消息傳遞系統。我們現在按順序考慮這些假設。

    A 1。假設 A1 指出,沒有錯誤的處理器發送的每條消息都是正確的。

    在實際系統中,通信線路可能會失靈。對于口信算法 OM(m)和 OM(m,p),連接兩個處理器的通信線路的故障與其中一個處理器的故障是無法區分的。因此,我們只能保證這些算法將工作在存在多達億故障,無論是處理器或通信線路故障。(當然,連接到同一個處理器的多條通信線路的故障相當于單個處理器的故障。)如果我們假設失敗的通信線路不會導致偽造有符號消息——我們將在下面看到這個假設是相當合理的,那么我們的有符號消息算法 SM(m)對通信線路失敗不敏感。更準確地說,定理 4 即使在通信線路故障的情況下仍然有效。失敗的通信線路與簡單地刪除通信線路具有同樣的效果——它降低了處理器圖形的連接性。

    A 2。假設 A2 指出,處理器可以確定它所接收的任何消息的發出者。

    實際上需要的是有故障的處理器不能模擬一個沒有故障的處理器。在實踐中,這意味著進程間通信是通過固定的線路而不是通過某些報文交換網絡進行的。(如果使用交換網絡,那么必須考慮有故障的網絡節點,然后拜占庭將軍問題節點再次出現。)請注意,如果假設A4 并且所有消息都有簽名,則不需要假設 A2,因為模擬另一個處理器將意味著偽造其消息。

    A 3。假設 A3 要求可以檢測到消息的缺失。

    消息的缺失只能通過其未能在某個固定時間內到達來檢測——換句話說,通過使用某種超時限制。使用超時來滿足 A3 需要兩個假設:

  • 生成和傳輸消息所需的最長時間是固定的。

  • 發送方和接收方都有時鐘,這些時鐘在某個固定的最大誤差范圍內同步。

  • 第一個假設的必要性是相當明顯的,因為接受者必須知道他需要等多久才能收到消息。(生成時間是處理器在接收到生成消息所需的所有輸入之后發送消息所需的時間。)第二個假設的必要性就不那么明顯了。然而,可以證明這個假設或者一個等價的假設對于解決拜占庭將軍問題問題是必要的。更確切地說,假設我們允許算法,將軍們只在下列情況下采取行動:

  • 在某個固定的初始時間(所有的將軍都一樣)。

  • 在收到信息后。

  • 當一段隨機選擇的時間過去時。(也就是說,一個普通人可以將計時器設置為一個隨機值,并在計時器結束時行動。)

  • {這產生了我們可以想象到的最一般的算法類別,它們不允許構造同步的時鐘。)可以證明,如果消息可以任意快速地傳遞,即使存在消息傳遞延遲的上界,這種算法也不能解決拜占庭將軍問題問題。而且,即使我們限制叛徒,只允許他們不正確的行為是不發送信息,也不可能有解決辦法。這個結果的證明超出了本文的范圍。請注意,在傳輸延遲上設置一個下限和一個上限,將使處理器通過來回發送消息來實現時鐘。

    ? 以上兩個假設使得檢測未發送的消息變得容易。假設/z 是最大的消息生成和傳輸延遲,并且假設沒有故障的處理器的時鐘在任何時候最多相差 t。然后,任何非故障進程應該開始在其時鐘上按時間 t 生成的消息將在接收方時鐘上的時間 t+#+t 到達其目的地。因此,如果接收者到那時還沒有接收到消息,那么它可能假設消息沒有被發送。(如果它晚一點到達,那么發送者一定是錯誤的,因此我們的算法的正確性并不取決于發送的消息。)通過對輸入處理器發送其值的時間進行 fLxing,可以計算出處理器在自己的時鐘上必須等待每條消息的時間。例如,在算法 SM(m)中,處理器必須等到對于任何有+ k(# +~) 簽名的消息,其中 To 是指揮官開始執行算法的時間(在他的時鐘上)。沒有兩個時鐘以完全相同的速率運行,所以無論最初處理器的時鐘同步得多么精確,它們最終會偏離得任意遠,除非它們周期性地重新同步。因此,我們面臨的問題是,即使有些處理器出現故障,也要保持處理器的時鐘同步到某個固定的數量。這是一個和拜占庭將軍問題本身一樣困難的問題。時鐘同步問題的解決方案與我國拜占庭式的解決方案密切相關。它們將在未來的論文中加以描述。

    A 4。假設 A4 要求處理器能夠以這樣一種方式對其消息進行簽名,即不能偽造沒有錯誤的處理器簽名。

    簽名是由進程 i 從數據項 m 生成的一段冗余信息 Si(m)。由 i 簽名的消息由一對(m,Si(m))組成。滿足部分(a)和(b)對于 A4,Si 函數必須具有以下兩個性質:

    ? (a)如果處理器 i 是非故障的,那么沒有故障的處理器可以生成 Si(m)。

    ? (b)給定 M 和 X,任何過程都可以確定 ifX 等于 Si(m)。

    屬性(a)永遠不能得到保證,因為 Si(m)只是一個數據項,故障處理器可能生成任何數據項。然而,我們可以使違反它的概率小到我們所希望的程度,從而使系統如我們所希望的那樣可靠。如何做到這一點取決于我們預期會遇到的故障類型。有兩個令人感興趣的案例:

    1.隨機故障。通過使Si 成為一個適當的“隨機化”函數,我們可以使處理器中的一個隨機故障產生正確簽名的概率本質上等于它通過一個隨機選擇過程產生正確簽名的概率**——即可能簽名數目的倒數。下面是一個實現這一點的方法。假設消息被編碼為小于 p 的正整數,其中 p 是 2 的冪。設 Si(m)等于 m Ki mod p,其中 Ki 是小于 p 的一個隨機選擇的奇數。如果另一個處理器的內存中沒有 Ki,那么它為單個(非零)消息 m 生成正確簽名 m*Ki 的概率應該是 l/p:它通過隨機選擇生成正確簽名 mKi *的概率。(**注意,如果處理器可以通過一些簡單的程序獲得 Ki,那么在計算時用Ki 代替 k,可能會有更大的可能性出現處理器錯誤地偽造 i 的簽名 Sj(M).)律政司(m))

    2.惡意情報。如果錯誤的處理器被惡意的智能引導*----例如,如果一個完美的處理器被一個試圖破壞系統的人操作**----那么信號函數* Si 的構造就成了一個密碼學問題。我們建議讀者參閱[1][4]來討論如何解決這個問題。

    請注意,如果進程已經看到簽名,則很容易生成簽名 Si(m)。因此,重要的是,相同的消息永遠不必被簽名兩次。這意味著,當重復使用 SM(m)分發一個值序列時,序列號應該附加到值上以保證唯一性。

    7.結論

    ? 在各種假設下,我們已經向拜占庭將軍問題提出了幾種解決方案,并展示了如何使用它們來實現可靠的計算機系統。這些解決方案在時間量和所需的消息數量上都很昂貴。算法 OM(m)和 SM(m)都要求消息路徑的長度達到 m+1。換句話說,每個中尉可能不得不等待來自指揮官的信息,然后通過其他名中尉轉發。費舍爾和林奇已經證明,這對任何可以對付萬叛徒的解決方案都是正確的,所以我們的解決方案在這方面是最佳的。對于不完全連通的圖,我們的算法需要長度為 m+d 的消息路徑,其中 d 是忠誠將軍子圖的直徑。我們認為這也是最佳選擇。

    ? 算法 OM(m)和 SM(m)包括發送到(n-1)(n-2)…。(n-m-1)信息。通過組合消息,必然可以減少所需的單獨消息的數量。也許還可以減少傳輸的信息量,但這一點尚未得到詳細研究。但是,我們預計仍然需要大量的消息。

    ? 在任意故障的情況下實現可靠性是一個困難的問題,其解決方案似乎本身就代價高昂。降低成本的唯一方法是對可能發生的故障類型進行假設。例如,通常假設計算機可能無法響應,但是絕不會錯誤響應。然而,當需要極高的可靠性時,這樣的假設是不可能做出的,并且需要一個拜占庭將軍解決方案的全部費用。

    總結

    以上是生活随笔為你收集整理的拜占庭问题论文翻译的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。