• Keine Ergebnisse gefunden

Architektur der Teilchecker

Im Dokument Zertifizierende verteilte Algorithmen (Seite 150-154)

Theorem 8.3.1. Ein zertifizierender verteilter Algorithmus ist ein Spezialfall eines zertifizierenden sequentiellen Algorithmus

10.1.2 Architektur der Teilchecker

Die Abbildung10.1illustriert die gewählte verteilte Architektur für Checker; sie zeigt die Integration eines Teilcheckers am Beispiel einer Komponente. Wir sehen im oberen Teil der Abbildung ein Netzwerk Nmit der Komponentevund ihren Nachbarnu1,u2 undu3.

10.1 v e rt e i lt e a rc h i t e k t u r 137

zertifizierender Teilalgorithmus von v

Teileingabe iv Teilausgabe ov ...

Zertifizierender verteilter Algorithmus aus Sicht der Komponente v:

u1

Abbildung 10.1:NetzwerkN mit der Komponentevund ihren Nachbarn u1, u2 und u3. Integration des Teilcheckers am Beispiel der Komponentenvmit Teileingabeiv, Teilausgabeov, Teil-zeugewvund lokalen Prädikatenγ1,γ2, ...,γk. Die oberen ein- und ausgehenden Pfeile des zertifizierenden Teilalgo-rithmus und des Teilcheckers vonv stellen eine beliebige Kommunikation mit Nachbarn dar.

10.1.2.1 Teilchecker als logische Einheit

Ein Teilchecker ist eine eigenelogische Einheit, die einer Komponente des Netzwerks zugeordnet ist. Ein Teilchecker kann dabei auf der ent-sprechenden Netzwerkkomponente ausgeführt werden oder aber auch auf einer Komponente, die eigens dafür ins Netzwerk integriert wird.

Auch für die Komponenten des Netzwerks haben wir nicht festgelegt, ob es sich bei einer Komponente um logische Einheit oder eine physi-kalische Einheit handelt. Diese abstrakte Betrachtung von Netzwerken ist üblich [AW04;Tel94;Ray13;Pel00;Lyn96;Erc13;Gho14].

10.1.2.2 Entscheidung der lokalen Prädikate

Die Kommunikation zwischen einem zertifizierenden Teilalgorithmus und dem zugehörigen Teilchecker verläuft analog zur Kommunikation eines zertifizierenden sequentiellen Algorithmus mit dessen Checker.

138 v e rt e i lt e p rü f u n g v e rt e i l b a r e r z e u g e n p r ä d i k at e

Der zertifizierende Teilalgorithmus einer Komponente kommuniziert Teilausgabe, sowie Teilzeugen an ihren Teilchecker. Der Teilchecker erhält außerdem auch die Teileingabe.

Hierbei stoßen wir auf ein Problem, das für zertifizierende sequentielle Algorithmen bereits bekannt ist [McC+11]. Die Teileingabe, die der Teilchecker erhält muss eine vertrauenswürdige Kopie sein. Um dies sicherzustellen werden mitunter kryptographische Methoden einge-setzt. In [ZPK14] wird dies in Kombination mit einem zertifizierenden sequentiellen Algorithmus genutzt.

Mit der Teileingabe, der Teilausgabe und dem Teilzeugen entschei-det der Teilchecker einer Komponente dann alle lokalen Prädikate (γ12, ...,γk) des verteilbaren Zeugenprädikats. Die lokalen Prädikate und ihre Entscheidungsprozedur sind abhängig vom Problem. Wir haben sie deswegen auch in den Fallstudien aus Kapitel 9 einzeln betrachtet.

10.1.2.3 Kommunikation der Teilchecker

Eine Komponente kann ihren Nachbarn in einem Netzwerk direkt Nachrichten schicken. Wir integrieren Teilchecker so, dass auch ein Teilchecker einer Komponente mit den Teilchecker der benachbarten Komponenten direkt kommunizieren kann. Ein Austausch zwischen benachbarten Teilcheckern ist zum Beispiel für die Prüfung der Kon-sistenz eines Zeugen nötig (siehe Abschnitt10.4).

Wir wählen eine direkte Kommunikation zwischen benachbarten Teil-checkern. Der Grund dafür ist, dass eine indirekte Kommunikation nicht vertrauenswürdig wäre, da die Komponenten selbst nicht ver-trauenswürdig sind. Der Beweis dieser Aussage ergibt sich aus dem Beweis des Theorems6.4.1(siehe Abschnitt6.4), indem wir uns mit der nötigen Zentralität sequentieller Checker befasst haben.

Der entscheidende Unterschied für die Vertrauenswürdigkeit einer direkten Kommunikation der Teilchecker ist die Vertrauenswürdig-keit der Teilchecker; für diese muss eine Entwicklerin entsprechend Sorge tragen. Wie das gelingt erläutern wir in Teil v zur formalen Instanzverifikation.

Eine alternative Integration ist den Teilchecker einer Komponente als ein Interface zu wählen, sodass er alle Nachrichten mitliest. Ein Nachteil dieser Alternative ist, dass durch das Mitlesen während der Konstruktion, die Konstruktion weniger stark von der Prüfung getrennt ist.

Wir halten die hier vorgeschlagene verteilte Architektur für praxistaug-lich. Da ein Teilchecker eine logische Einheit ist und einer Komponente des Netzwerks zugeordnet ist, sollte die Kommunikation benachbarter Teilchecker in der Praxis gut umsetzbar sein. Wir stellen in Kapitel16

10.2 e va l u at i o n v e rt e i l b a r e r z e u g e n p r ä d i k at e 139

eine Simulationsumgebung für zertifizierende verteilte Algorithmen vor, die diese Kommunikation mithilfe üblicher Simulationswerkzeuge auch implementiert [Aki15].

10.1.3 Initialisierung

Für die Integration der Teilchecker ist es nötig, diese wie die Kompo-nenten eines Netzwerks zu initialisieren.

10.1.3.1 Wissen zur Topologie

Die Eingabe eines verteilten Algorithmus ist unter anderem auch das Netzwerk selbst (siehe Kapitel 5). Das heißt jede Komponente erhält als Teileingabe ihre eigene ID, sowie die IDs der Nachbarn. Bei einem ID-basierten Netzwerk wird davon ausgegangen, dass dieses Wissen zur Topologie des Netzwerks durch eine Initialisierung allen Komponenten bekannt ist. Wir gehen deswegen davon aus, dass auch die Teilchecker der Komponenten initialisiert werden.

10.1.3.2 Rolle der Vorbedingung

Akzeptiert ein Checker ein Tripel bestehend aus Eingabe, Ausgabe und Zeuge, so kann das auch bedeuten, dass die Vorbedingung für die Eingabe verletzt ist. Bei einem „normal“ zertifizierenden Algorithmus gelten alle Korrektheitsaussagen unter der Annahme, dass die Eingabe die Vorbedingung erfüllt. Bei zertifizierenden sequentiellen Algorith-men existiert das Konzept eines stark zertifizierenden AlgorithAlgorith-men, der zusätzlich bezeugt, dass die Eingabe die Vorbedingung erfüllt.

Überträgt man das Konzept der starken Zertifizierung auf verteilte Al-gorithmen, so müsste ein stark zertifizierender verteilter Algorithmus unter anderem für die Eingabe bezeugen, dass es sich bei der Eingabe tatsächlich um das zugrunde liegende Netzwerk handelt.

In [Ray13] finden wir verteilte Algorithmen, mit denen die Kompo-nenten eines Netzwerks die Topologie des Netzwerks lernen. Für eine Zertifizierung der Topologie müssen sich die benachbarten Teilchecker der Komponenten einig sein.

10.2 e va l u at i o n v e rt e i l b a r e r z e u g e n -p r ä d i k at e

Die Entscheidung eines verteilbaren Zeugenprädikats findet durch die Summe der Entscheidungen der lokalen Prädikate statt. Wir sprechen

140 v e rt e i lt e p rü f u n g v e rt e i l b a r e r z e u g e n p r ä d i k at e

von der Evaluation eines verteilbaren Zeugenprädikats, da nur noch Wahrheitswerte logisch kombiniert werden.

Wir spezifizieren das Problem der Evaluation in Abschnitt10.2.1und geben einen verteilten Algorithmus zur Evaluation in Abschnitt10.2.2 an.

Im Dokument Zertifizierende verteilte Algorithmen (Seite 150-154)