7.3: 14.12. - Institut für Verteilte Systeme - Universität Ulm

7.3: 14.12. - Institut für Verteilte Systeme - Universität Ulm 7.3: 14.12. - Institut für Verteilte Systeme - Universität Ulm

vs.informatik.uni.ulm.de
von vs.informatik.uni.ulm.de Mehr von diesem Publisher
08.10.2013 Aufrufe

Uebung-BenOr-ABBA.fm: 13.12.05 13:39 Uebung-BenOr-ABBA.fm: 13.12.05 13:39 Vertiefung zu probabilistischen Algorithmen ■ Ben Or 1 ● Crash-stop, siehe Vorlesung ■ Ben Or 2 ● Byzantinische Fehler ■ ABBA (Asynchronous Binary Byzantine Agreement) ● Byzantinische Fehler ● mit Hilfe von Kryptographie Algorithmen für Verteilte Systeme (AVS), WS 2005/06 1 (C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Algorithmus Ben-Or 1 (gutmütige Ausfälle) N Knoten; max. M Ausfälle, N > 2M; Runde r, Wert x p bei P p Schritt 0: r := 1 Schritt 1: Sende (pre-vote, r, x p ) an alle Knoten Schritt 2: Warte auf N - M Nachrichten (pre-vote, r, x); Anzahl Nachrichten mit gleichem Wert x=v: Mehr als N/2: sende (vote, r, v) an alle ansonsten: sende (vote, r, ?) an alle Schritt 3: Warte auf N - M Nachrichten (vote, r, v) (a) Falls eine Nachricht mit v ≠ ?: x p := v (b) Falls mehr als M solche Nachrichten: fertig (c) sonst: x p := zufällig gewählt aus {0, 1} Schritt 4: r := r + 1; weiter mit Schritt 1 Algorithmen für Verteilte Systeme (AVS), WS 2005/06 3 (C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Uebung-BenOr-ABBA.fm: 13.12.05 13:39 Uebung-BenOr-ABBA.fm: 13.12.05 13:39 Ben-Or: Rahmenbedingungen ■ Asynchrones Systemmodell ■ Randomisierte Lösung des Einigungsproblem ● Partielle Korrektheit: Wenn der Algorithmus terminiert, ist das Ergebnis korrekt (alle Knoten einigen sich auf den selben Wert) ● Terminierung: Keine deterministische Aussage möglich! Aber: Die Wahrscheinlichkeit, dass der Algorithmus in endlicher Zeit terminiert, konvergiert gegen 1 ■ BO1: Gutmütige Ausfälle ■ BO2: Byzantinische Fehler Algorithmen für Verteilte Systeme (AVS), WS 2005/06 2 (C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Algorithmus Ben-Or 2 (byzantinische Fehler) N Knoten; max. M fehlerhaft, N>5M; Runden r, P p hat Wert x p Schritt 0: r := 1 Schritt 1: Sende (pre-vote, r, x P ) an alle Knoten Schritt 2: Warte auf N - M Nachrichten (pre-vote, r, x); Anzahl Nachrichten mit gleichem Wert x=v: Mehr als (N+M)/2: sende (vote, r, v) an alle ansonsten: sende (vote, r, ?) an alle Schritt 3: Warte auf N - M Nachrichten (vote, r, v) (a) Falls > M Nachrichten mit v ≠ ?: x P := v (b) Falls > (N+M)/2 solche Nachrichten: fertig (c) sonst: x P := zufällig gewählt aus {0, 1} Schritt 4: r := r + 1; weiter mit Schritt 1 Algorithmen für Verteilte Systeme (AVS), WS 2005/06 4 (C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Vertiefung zu probabilistischen Algorithmen<br />

■ Ben Or 1<br />

● Crash-stop, siehe Vorlesung<br />

■ Ben Or 2<br />

● Byzantinische Fehler<br />

■ ABBA (Asynchronous Binary Byzantine Agreement)<br />

● Byzantinische Fehler<br />

● mit Hilfe von Kryptographie<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 1<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

Algorithmus Ben-Or 1 (gutmütige Ausfälle)<br />

N Knoten; max. M Ausfälle, N > 2M; Runde r, Wert x p bei P p<br />

Schritt 0: r := 1<br />

Schritt 1: Sende (pre-vote, r, x p ) an alle Knoten<br />

Schritt 2: Warte auf N - M Nachrichten (pre-vote, r, x);<br />

Anzahl Nachrichten mit gleichem Wert x=v:<br />

Mehr als N/2: sende (vote, r, v) an alle<br />

ansonsten: sende (vote, r, ?) an alle<br />

Schritt 3: Warte auf N - M Nachrichten (vote, r, v)<br />

(a) Falls eine Nachricht mit v ≠ ?: x p := v<br />

(b) Falls mehr als M solche Nachrichten: fertig<br />

(c) sonst: x p := zufällig gewählt aus {0, 1}<br />

Schritt 4: r := r + 1; weiter mit Schritt 1<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 3<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Ben-Or: Rahmenbedingungen<br />

■ Asynchrones Systemmodell<br />

■ Randomisierte Lösung des Einigungsproblem<br />

● Partielle Korrektheit: Wenn der Algorithmus terminiert, ist das<br />

Ergebnis korrekt<br />

(alle Knoten einigen sich auf den selben Wert)<br />

● Terminierung: Keine deterministische Aussage möglich!<br />

Aber:<br />

Die Wahrscheinlichkeit, dass der Algorithmus in endlicher<br />

Zeit terminiert, konvergiert gegen 1<br />

■ BO1: Gutmütige Ausfälle<br />

■ BO2: Byzantinische Fehler<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 2<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

Algorithmus Ben-Or 2 (byzantinische Fehler)<br />

N Knoten; max. M fehlerhaft, N>5M; Runden r, P p hat Wert x p<br />

Schritt 0: r := 1<br />

Schritt 1: Sende (pre-vote, r, x P ) an alle Knoten<br />

Schritt 2: Warte auf N - M Nachrichten (pre-vote, r, x);<br />

Anzahl Nachrichten mit gleichem Wert x=v:<br />

Mehr als (N+M)/2: sende (vote, r, v) an alle<br />

ansonsten: sende (vote, r, ?) an alle<br />

Schritt 3: Warte auf N - M Nachrichten (vote, r, v)<br />

(a) Falls > M Nachrichten mit v ≠ ?: x P := v<br />

(b) Falls > (N+M)/2 solche Nachrichten: fertig<br />

(c) sonst: x P := zufällig gewählt aus {0, 1}<br />

Schritt 4: r := r + 1; weiter mit Schritt 1<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 4<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong>


Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Überlegungen zur Korrektheit BO-2<br />

Ähnlich zu BO-1, nur<br />

● statt „Mehrheit der Knoten“:<br />

Mehrheit der korrekten Knoten, d.h. mehr als (N+M)/2 Knoten<br />

● statt „mindestens 1 Knoten“:<br />

„mindestens 1 korrekter Knoten“, d.h. mindestens M+1<br />

Knoten<br />

● Schritt 3 b:<br />

(N+M)/2 vote-Nachrichten <strong>für</strong> v ⇒<br />

mindestens (N+M)/2 - M korrekte Knoten dabei ⇒<br />

jeder Knoten erhält mindestens ((N+M)/2 - M) - M solche<br />

vote-Nachrichten<br />

((N+t)/2 - M) - M > M ⇔ N > 5 M<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 5<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

Kryptographische Grundlagen<br />

■ Klassische kryptographische Verfahren<br />

● Kryptographische Hash-Funktionen<br />

● Public-Key-Signaturen<br />

■ <strong>Verteilte</strong> Mechanismen<br />

● Schwellwert-Signaturen<br />

● Verteilt generierte Zufallszahlen<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 7<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Überlegungen zur Korrektheit BO-2 (2)<br />

■ D.h. falls N > 5 M gilt, folgt folgendes:<br />

Ein Knoten entscheided sich endgültig in Schritt 3a<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 6<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

⇓<br />

Alle anderen (noch nicht entschiedenen) Knoten verwenden in<br />

Schritt 3a den gleichen Wert<br />

⇓<br />

Alle anderen (noch nicht entschiedenen) entscheiden sich<br />

endgültig in der nächsten Runde<br />

Klassische Hash-Funktionen<br />

■ Reproduzierbare Abbildung von Nachrichten beliebiger<br />

Länge auf ein Wort fester Länge<br />

● Nachricht m beliebig<br />

● Hash-Wert h = H(m) daraus berechenbar, z.B. 128 bit<br />

■ Kryptographisch „sichere“ Hashfunktionen<br />

■ Beispiele<br />

● Es ist mit vertretbaren Aufwand nicht möglich, zwei<br />

Nachrichten m 1 , m 2 zu finden mit H(m 1 )=H(m 2 )<br />

● MD5<br />

● SHA-1<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 8<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong>


Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Klassische Hash-Funktionen<br />

■ Anwendung: Digitale Signaturen<br />

● Anstelle eine digitale Signatur über eine komplette Nachricht:<br />

Signatur nur über den Hash-Wert<br />

● Sicheren Hash-Funktionen:<br />

Angreifer kann mit vertretbaren Aufwand keine zweite<br />

Nachricht konstruieren, die den selben Hashwert hat<br />

(und damit die gleiche gültige Signatur besitzen würde)<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 9<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

Klassische Public-Key-Verfahren<br />

■ Beispiel RSA: Schlüsselerzeugung<br />

● Wähle zwei geeignete Primzahlen p, q<br />

● n = p * q; φ(n) = (p-1)(q-1)<br />

● Wähle e mit 1 < e < φ(n) und ggT(e, φ(n)) = 1<br />

● Berechne d = e -1 mod φ(n) ( => e d = 1 mod φ(n) )<br />

● Öffentlicher Schlüssel: (e, n); Privater Schlüssel (d, n)<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 11<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Klassische Public-Key-Verfahren<br />

s<br />

Begriffe<br />

PK: öffentlicher Schlüssel (Public Key), zur Verifikation<br />

SK: geheimer Schlüssel (Private Key/Secret Key), zur Signierung<br />

σ: Signatur<br />

Operationen<br />

Schlüsselerzeugung:<br />

Signierung:<br />

Verifikation:<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 10<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

Parameter -> (PK, SK)<br />

Nachricht, SK -> σ<br />

Nachricht, σ, PK -> {true, false}<br />

Klassische Public-Key-Verfahren<br />

■ RSA: Signatur-Erzeugung (<strong>für</strong> Nachricht m)<br />

● H(m) ist kryptographische Hash-Funktion über Nachricht m<br />

● s = H(m) e mod n<br />

■ Signatur-Überprüfung<br />

● h = s d mod n<br />

● Teste ob h == H(m) ist<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 12<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong>


Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Klassische Public-Key-Verfahren<br />

■ RSA: Begründung der Korrektheit<br />

● Zu zeigen ist, dass (x e ) d = x (mod n)<br />

Voraussetzung: n=pq; ggT(e,φ(n))=1; ed = 1 mod φ(n)<br />

● ggT(e,φ(n))=1 => es gibt ein u mit e d - u φ(n) = 1<br />

(Erweiterter Euklidischer Algorithmus)<br />

● (x e ) d = x u φ(n) + 1 = x u φ(n) x = x (mod n)<br />

- Für ggT(x,n)=1: Folge aus Satz von Euler (1760)<br />

- Ansonsten: p | x oder q | x;<br />

Betrachtung der Kongruenz mod p und mod q, dann CRT<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 13<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

<strong>Verteilte</strong> Schwellwert-Signaturen<br />

Kombinationsalgorithmus<br />

gültige Signatur s<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 15<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

K Teilsignaturen<br />

N Knoten<br />

(max. M fehlerhaft)<br />

Randbedingung<br />

N-M ≥ K > M<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

<strong>Verteilte</strong> Kryptographie<br />

■ Klassische kryptographische Verfahren<br />

● Kryptographische Hash-Funktionen<br />

● Public-Key-Signaturen<br />

■ <strong>Verteilte</strong> Mechanismen<br />

● Schwellwert-Signaturen<br />

● Verteilt generierte Zufallszahlen<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 14<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

<strong>Verteilte</strong> Schwellwert-Signaturen<br />

■ Sicherheitsanforderungen<br />

● Ein Angreifer kann nicht erreichen, dass K gültige<br />

Teilsignaturen erzeugt werden, aus denen durch den<br />

Kombinationsalgorithmus keine gültige Signatur entsteht<br />

● Ein Angreifer kann keine gültige Signatur erzeugen, falls<br />

weniger als K-M ehrliche Knoten eine Teilsignatur erzeugt<br />

haben<br />

■ Anforderung an den Kombinationsalgorithmus<br />

● Ergebnis ist eine einfach zu überprüfende Gesamtsignatur<br />

● Hier betrachtetes Verfahren: gewöhnliche RSA-Signatur<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 16<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong>


Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

<strong>Verteilte</strong> Schwellwert-Signaturen<br />

■ Grundlage: Polynom-Interpolation<br />

● Ein Polynom f von Grad K- 1 ist durch K Stützstellen eindeutig<br />

definiert<br />

● Interpolationsformel (Lagrange)<br />

fx ( ) = fs ( ) ⋅ λ<br />

s<br />

( x)<br />

s∈S Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 17<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

<strong>Verteilte</strong> Schwellwert-Signaturen<br />

■ Polynom-Interpolation: Anwendung auf RSA (2)<br />

∑<br />

● Gesamtsignatur ist aus den Signatur-Shares berechenbar,<br />

die Schlüssel-Shares können geheim bleiben<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 19<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

∑<br />

m d<br />

m f0 ( )<br />

fs ( ) ⋅<br />

s ∈ S<br />

m<br />

λ<br />

s<br />

( 0)<br />

m fs<br />

= = =<br />

λ<br />

( ) s<br />

( 0)<br />

λ<br />

s<br />

( 0)<br />

∏ ( ) = ∏m<br />

i<br />

s∈S i<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

<strong>Verteilte</strong> Schwellwert-Signaturen<br />

■ Polynom-Interpolation: Anwendung auf RSA<br />

● Verteilung des Sekret Key auf die N Teilnehmer in Form von<br />

Stützstellen eines Polynoms von Grad K<br />

– d = f(0) RSA-Secret-Key<br />

– si := f(i) Schlüssel-Share <strong>für</strong> Teilnehmer i<br />

– m i := m si Signatur-Share des Teilnehmers i<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 18<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

<strong>Verteilte</strong> Schwellwert-Signaturen<br />

■ Zusätzliche Randbedingungen<br />

● Signatur-Shares müssen sich auf Gültigkeit überprüfen<br />

lassen<br />

– Angreifer darf nicht in der Lage sein, durch Erzeugung eines<br />

ungültigen Shares die Erzeugung einer gültigen digitalen<br />

Signatur zu behindern<br />

● Verteilung des Schlüssels muss gelöst werden<br />

– Initiale Erzeugung des geheimen Schlüssel und der Key-Shares<br />

erfordert im beschriebenen Verfahren einen Knoten, der in<br />

jedem Fall vertrauenswürdig sein muss<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 20<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong>


Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

<strong>Verteilte</strong> Erzeugung von Zufallszahlen<br />

■ Basierend auf (N,K,M)-Schwellwert-Signatur<br />

K „Shares“<br />

Kombinationsalgorithmus<br />

Wert F(x) aus {0, 1}<br />

● F(x) sei eine nicht vorhersehbare Funktion, die einen<br />

beliebigen Eingabewert auf {0, 1} abbildet:<br />

– Jeder Knoten kann einen „Share“ von F(x) erzeugen<br />

– K Shares sind notwendig und hinreichend, um den Wert von F(x)<br />

zu ermitteln<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 21<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

ABBA: Systemmodell<br />

N Knoten<br />

(max. M fehlerhaft)<br />

Randbedingung<br />

N-M ≥ K > M<br />

■ N Knoten (max. M fehlerhaft) mit berechenbarem Verhalten<br />

durch probabilistisch polynomiale Berechnungen beschreibbar<br />

■ Verwendung von:<br />

● (N, M+1, M) bzw (N, N-M, M) Schwellwert-Signatur S 0 / S<br />

● (N, N-M, M) Schema <strong>für</strong> verteilte Zufallszahlen<br />

● Initialisierung erfordert „Trusted Dealer“<br />

■ Jede Entscheidung hat eindeutige Folgenummer (TID)<br />

Jeder Knoten P i hat <strong>für</strong> eine TID einen Initialwert V i aus {0,1}<br />

■ Alle Nachrichten sind signiert und „begründet“<br />

Einschränkung der Möglichkeiten eines Angreifers<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 23<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

ABBA<br />

■ Forschungsarbeit bei IBM Research in Zürich<br />

– ABBA: Asynchronous Binary Byzantine Agreement<br />

– Sintra: Secure INtrusion Tolerant Replication Architecture<br />

■ Literatur<br />

– C. Cachin, K. Kursawe, V. Shoup: Random Oracles in<br />

Constantinople: Practical Asynchronous Byzantine Agreement<br />

using Cryptography. ACM Symposium on Principles of Distributed<br />

Computing, July 2000<br />

– C. Cachin, K. Kursawe, F. Petzold, V. Shoup: Secure and Efficient<br />

Asynchronous Broadcast Protocols. Proc. Crypto 2001<br />

– C. Cachin, J. Poritz: Secure Intrusion-tolerant Replication on the<br />

Internet. Proc. Intl. Conference on Dependable Systems and<br />

Networks, 2002<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 22<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

ABBA: Begriffsdefinitionen<br />

■ (N, K, M)-Schwellwert-Signatur:<br />

● Verfahren <strong>für</strong> N Teilnehmer<br />

● Jeweils K Teilnehmer können gemeinsam Signatur erzeugen<br />

● Bis zu M Teilnehmer dürfen sich dabei fehlerhaft verhalten<br />

Randbedingungen:<br />

– K > M (fehlerfreie Knoten müssen beteiligt sein)<br />

– K


Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

ABBA: Begriffsdefinitionen<br />

■ (N, K, M)-Schema <strong>für</strong> verteilte Zufallszahlen<br />

● Verfahren <strong>für</strong> N Teilnehmer<br />

● Je K Teilnehmer können gemeinsam Zufallszahl erzeugen<br />

● Bis zu M Teilnehmer dürfen sich dabei fehlerhaft verhalten<br />

Anwendung bei ABBA:<br />

(N, N-M, M)-Schema (Zufallszahl kann nur dann ermittelt<br />

werden, wenn die Mehrheit der korrekten Knoten „mithilft“)<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 25<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

ABBA: Überblick über den Algorithmus<br />

Schritt 0: r := 1; Jeder sendet PreProcess an alle und<br />

aus Antworten einen signierten Anfangswert<br />

Schritt 1: Sende (PreVote, r, xP , just) an alle Knoten<br />

Schritt 2: Warte auf N-M PreVote-Nachrichten <strong>für</strong> Runde r<br />

Anzahl Nachrichten mit gleichem Wert x=v:<br />

alle gleich: sende (Vote, r, v, just.) an alle<br />

ansonsten: sende (Vote, r, ?, just.) an alle<br />

Schritt 3: Warte auf N - M Nachrichten (Vote, r, v, just.)<br />

(a) Falls >=eine Nachricht mit v ≠ ?: x P = v<br />

(b) Falls alle <strong>für</strong> v: solche Nachrichten: fertig<br />

(c) sonst: x P über CoinShare gewählt aus {0, 1}<br />

Schritt 4: r := r + 1; weiter mit Schritt 1<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 27<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

ABBA: Garantierte Eigenschaften<br />

■ Übereinstimmung und Gültigkeit<br />

■ Deadlock-Freiheit: Es wird kein Zustand erreicht, bei dem<br />

– der Algorithmus in allen korrekten Knoten aktiviert wurde<br />

– der Algorithmus noch nicht terminiert ist<br />

– alle Nachrichten, die von aktivierten korrekten Knoten ausgesendet<br />

wurden, zugestellt und verarbeitet worden sind<br />

(Sonst würde das System auf den Empfang von Nachrichten warten,<br />

aber kein korrekten Knoten würde Nachrichten aussenden)<br />

■ Schnelle Konvergenz:<br />

– Die Anzahl x der Nachrichten bis zur Einigung ist beschränkt durch<br />

die Wahrscheinlichkeitsaussage P( x > 2 r + 1 ) < 2 -r + ε mit ε<br />

vernachlässigbar klein und r=Anzahl der asynchronen „Runden“<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 26<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

ABBA: Der Algorithmus im Detail (1)<br />

■ Nur vor erster Runde: Vorverarbeitungs-Schritt:<br />

– Jeder sendet Initialwert als (PreProcess, b) mit S0 teilsigniert an alle<br />

– Sobald 2 M + 1 Nachrichten eingetroffen sind, wird S0-Signatur <strong>für</strong><br />

Mehrheitswert (M +1 gleiche Nachrichten) erzeugt und als<br />

Initialwert b <strong>für</strong> die folgenden Schritte verwendet<br />

(alle korrekten Knoten mit gleichem Initialwert: Nur dieser Wert S0-signiert!) ■ Alle Runden r<br />

– Jeder sendet (PreVote, r, b, justification) an alle mit gültiger<br />

S-Teilsignatur;<br />

justification: Begründung <strong>für</strong> die Gültigkeit des Werts b:<br />

Runde r=1: (PreProcess, b) mit S0-Signatur Runde r>1: (PreVote, r-1, b) mit S-Signatur<br />

oder (Vote, r-1, abstain) mit S-Signatur, und<br />

Wert b ermittelt durch b := coin(TID, r-1)<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 28<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong>


Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

ABBA: Der Algorithmus im Detail (2)<br />

■ Nach Empfang von N-M gültigen PreVote-Nachrichten:<br />

– jeder Knoten erzeugt (Vote, r, b, justification) mit b<br />

aus {0, 1, abstain} und justification als Begründung da<strong>für</strong><br />

– PreVote sowohl <strong>für</strong> b=0 als auch b=1: b := abstain;<br />

justification: je ein PreVote mit b=0,1<br />

– Ansonsten: N-M PreVote <strong>für</strong> einen Wert b;<br />

justification: daraus gewonnene gültige S-Signatur<br />

■ Nach Empfang von N-M gültigen Vote-Nachrichten:<br />

– Falls alle Werte gleich: Entscheidung <strong>für</strong> diesen Wert<br />

– Ansonsten: weiter mit nächster Runde;<br />

– Aufdeckung von Coin(TID,r) (coin-share an alle senden)<br />

– Falls alle N-M „abstain“-Werte: gültige S-Signatur <strong>für</strong> abstain<br />

– Ansonsten: mind. ein Wert, als justification: PreVote mit S-Sig.<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 29<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

ABBA: Korrektheitsüberlegungen<br />

■ Deadlock-Freiheit und schnelle Konvergenz<br />

● Deadlock-Freiheit:<br />

– Es wird vorausgesetzt, dass maximal M Knoten sich fehlerhaft<br />

verhalten dürfen, und die Kommunikation zwischen fehlerfreien<br />

Knoten zuverlässig ist<br />

– Bei jeder Warteoperation wird auf N-M Nachrichten gewartet.<br />

Diese kommen sicher immer an, weil es in jeden Fall so viele<br />

korrekte Knoten gibt, und jeder korrekte Knoten die erwartete<br />

Nachricht aussendet<br />

● Schnelle Konvergenz:<br />

– Es lässt sich zeigen, dass die Wahrscheinlichkeit, dass sich ein<br />

korrekter Knoten nicht innerhalb 2 r + 1 Runden entscheidet,<br />

nach oben durch 2 -r + ε beschränkt ist, mit ε vernachlässigbar<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 31<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

ABBA: Korrektheitsüberlegungen<br />

■ Möglichkeiten des Angreifers<br />

– Nachweis der Korrektheit aller Schritte durch Signaturen<br />

– Dadurch Möglichkeiten eines Angreifers stark eingeschränkt<br />

■ Entscheidungsfindung<br />

– Nur <strong>für</strong> einen Wert b aus {0,1} kann es eine erfolgreich S-signierte<br />

pre-vote-Nachricht geben<br />

– Wenn sich der erste ehrliche Knoten in Runde r entscheidet, dann<br />

entscheiden sich alle ehrlichen Knoten in Runde r oder r+1<br />

N-M main-vote <strong>für</strong> einen Wert b in Runde r<br />

⇒ mindestens N-2M main-vote <strong>für</strong> b von ehrlichen Knoten in<br />

Runde r<br />

⇒ maximal N - (N-2M) = 2M main-vote <strong>für</strong> abstain, 2M < N-M<br />

⇒ kein soft pre-vote in nächster Runde möglich<br />

⇒ alle pre-vote in Runde r <strong>für</strong> den selben Wert b<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 30<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

ABBA: Einbettung in Gesamtarchitektur<br />

■ SINTRA: Secure Intrusion Tolerant Replication Architecture<br />

Sicherer kausaler atomarer Broadcast<br />

Broadcast-Primitive<br />

Atomarer Broadcast<br />

Mehrwertige Einigung<br />

Threshold-Kryptographie<br />

Zuverlässige Punkt-zu-Punkt-Verbindungen<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 32<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

ABBA


Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

SINTRA: Broadcast-Primitive<br />

■ Zuverlässiger Broadcast: Alle ehrliche Knoten erhalten die<br />

selbe Nachricht, oder gar nichts<br />

● Der Sender sendet die Nachricht an alle<br />

● Jeder Knoten sendet ein „Echo“ der Nachricht an alle<br />

● Sobald N + M + 1<br />

------------------------ „Echo“-Nachrichten oder M + 1 „Fertig“-<br />

2<br />

Nachrichten empfangen wurden, sendet ein Knoten „Fertig“-<br />

Nachrichten an alle<br />

● Sobald 2 M + 1 „Fertig“-Nachrichten empfangen wurden,<br />

akzeptiert ein Knoten die Nachricht und liefert diese an die<br />

nächste Schicht aus<br />

Falls der Sender nicht ehrlich ist, terminiert dieser Algorithmus u.U.<br />

nicht!<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 33<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

ABBA<br />

■ Atomarer Broadcast<br />

● Garantie einer totalen Ordnung auf einer Folge von<br />

Nachrichten<br />

● Umsetzung mit Hilfe der mehrwertigen Einigung<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 35<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

ABBA<br />

■ Mehrwertige Einigung: Einigung soll nur auf Werte erfolgen,<br />

die tatsächlich von mindestens einem Knoten vorgeschlagen<br />

wurden<br />

● Jeder Knoten sendet seinen Initialwert als Vorschlag an alle<br />

über den beschriebenen zuverlässigen Broadcast<br />

● Sobald ein Knoten von N - M Knoten Initialwerte empfangen<br />

hat, führt er folgende Schritte wiederholt aus:<br />

– In jeder Wiederholung wird nach einem festgelegten Verfahren<br />

ein Kandidat Pa aus der Menge aller Knoten ausgewählt<br />

– Der Knoten startet ABBA schlägt den Wert 1 genau dann vor,<br />

wenn von Pa ein gültiger Vorschlagswert empfangen wurde<br />

– Falls die Einigungs auf 0 lautet, erfolgt der nächste<br />

Schleifendurchlauf, ansonsten ist Pa der Einigungswert<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 34<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong><br />

ABBA<br />

■ Sicherer kausaler atomarer Broadcast<br />

● Kausalität erfordert, dass ein Knoten den Inhalt einer<br />

Nachricht erst dann erfährt, wenn feststeht, wann diese<br />

Nachricht an die Empfänger ausgeliefert wird<br />

– Ein bösartiger Knoten soll also nicht in der Lage sein, abhängig<br />

von einer noch nicht ausgelieferten Nachricht eine andere<br />

Nachricht zu erzeugen, die vorher ausgeliefert wird<br />

● Umsetzung mit Hilfe von Schwellwert-Kryptographie<br />

– Sender verschlüsselt die Nachricht mit Hilfe eines globalen<br />

öffentlichen Schlüssels<br />

– Sobald die Nachricht ausgeliefert werden soll, kann sie von N-M<br />

Knoten gemeinsam entschlüsselt werden<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 36<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong>


Uebung-BenOr-ABBA.fm: 13.12.05 13:39<br />

ABBA<br />

■ Zusammenfassung<br />

● Praktikable Lösung des Einigungsproblem in einem<br />

asynchronen, probabilistischen Modell<br />

● Tolerierung von bis zu M Fehlern bei insgesamt N > 3 M<br />

Knoten<br />

● Schnelle Konvergenz auf den Einigungswert<br />

● Hierarchische Struktur aus einzelnen modularen Blöcken<br />

– von einfacher, binärer Einigung<br />

– über atomaren Broadcast<br />

– bis hin zu sicheren kausalen atomaren Broadcast<br />

Algorithmen <strong>für</strong> <strong>Verteilte</strong> <strong>Systeme</strong> (AVS), WS 2005/06 37<br />

(C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung <strong>Verteilte</strong> <strong>Systeme</strong>, <strong>Universität</strong> <strong>Ulm</strong>

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!