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
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
- Seite 2 und 3: Uebung-BenOr-ABBA.fm: 13.12.05 13:3
- Seite 4 und 5: Uebung-BenOr-ABBA.fm: 13.12.05 13:3
- Seite 6 und 7: Uebung-BenOr-ABBA.fm: 13.12.05 13:3
- Seite 8 und 9: Uebung-BenOr-ABBA.fm: 13.12.05 13:3
- Seite 10: Uebung-BenOr-ABBA.fm: 13.12.05 13:3
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>