M vorlesung-0-einfuehrung/architecture-event-based.png +0 -0
M vorlesung-0-einfuehrung/architecture-layered.png +0 -0
M vorlesung-0-einfuehrung/architecture-object-based.png +0 -0
M vorlesung-0-einfuehrung/chord-network-schema.png +0 -0
M vorlesung-0-einfuehrung/cloud-orga.png +0 -0
M vorlesung-0-einfuehrung/cluster.png +0 -0
M vorlesung-0-einfuehrung/communication-types.png +0 -0
M vorlesung-0-einfuehrung/configuration-two-layers.png +0 -0
M vorlesung-0-einfuehrung/dispatcher-worker-model.png +0 -0
M vorlesung-0-einfuehrung/distributed-transactions.png +0 -0
M vorlesung-0-einfuehrung/ex-2-layer.png +0 -0
M vorlesung-0-einfuehrung/message-broker.png +0 -0
M vorlesung-0-einfuehrung/message-oriented-middleware.png +0 -0
M vorlesung-0-einfuehrung/middelware-model.png +0 -0
M vorlesung-0-einfuehrung/middleware.png +0 -0
M vorlesung-0-einfuehrung/osi-model.png +0 -0
M vorlesung-0-einfuehrung/overlay-network-metrics.pdf +0 -0
M vorlesung-0-einfuehrung/pipeline-zmq.png +0 -0
M vorlesung-0-einfuehrung/publish-subscribe-zmq.png +0 -0
M vorlesung-0-einfuehrung/rpc-detail.png +0 -0
M vorlesung-0-einfuehrung/rpc-schema.png +0 -0
M vorlesung-0-einfuehrung/vorlesung-0-einfuehrung.org +14 -24
@@ 89,8 89,8 @@ Seite für schnelle Notizen./
- Physik (Dipl., Dr., \(CO_{2}\)
- Seit 2004 p2p Netze
- Seit 2017 Softwareentwickler als Beruf
- - Python, Scheme, Java, Fortran, Bash, Emacs, ...
- - arne.babenhauserheide@disy.net
+ - Python, Scheme, Java, JS/TS, Fortran, Bash, Emacs, ...
+ - arne_bab@web.de
/Vorlesung bis 2020 gemeinsam mit Carlo Götz./
@@ 178,7 178,7 @@ Entscheiden Sie selbst, wie sie lernen. Sagen Sie Bescheid, wenn Sie nicht da sein können.
*** Ihre Wünsche
- - Klausur bestehen
+ - Projekt Erfolgreich abschließen
-
-
-
@@ 188,7 188,6 @@ Entscheiden Sie selbst, wie sie lernen. Sagen Sie Bescheid, wenn Sie nicht da sein können.
*** Fragen
- Verteilung der Slides?
- Mail der Kurssprecher(in)?
- - Projekt oder Klausur?
*** Ablauf Semester
0. [@0] Grundlagen
@@ 219,32 218,26 @@ Entscheiden Sie selbst, wie sie lernen. Sagen Sie Bescheid, wenn Sie nicht da sein können.
- Verblindung in GNU Taler https://taler.net
- Benchmark servers with wrk: https://github.com/wg/wrk
+- Merge Wifi and LoRa with [[https://github.com/markqvist/reticulum][Reticulum]]
- Load Balancing + Autoscaling?
- Virtualization & Containerization
- Kubernetes
-- Netflix (technisch)
- Distributed Game Architecture
-- Election Algorithms — Prüfbarkeit durch Normalleute?
+- Election Algorithms und Prüfbarkeit
- CUDA / Tensorflow / PyTorch
- Hadoop / Spark / YARN
-- SAML
- OAuth
- JSON Web Tokens
-- Wie funktioniert Signal
+- Wie funktioniert Signal?
- QUIC
- Up-/Downgrading attacks on HTTP/2
-- Proxies
-- Reverse-Proxies
+- VPN
**** :BMCOL:
:PROPERTIES:
:BEAMER_col: 0.5
:END:
-- Microservices
-- green/blue deployment
-- Active Directory and Kerberos
-- VLANs
- SOAP
- Message Queues: Rabbit, Kafka, ZeroMQ, ...
- Eigene Anwendungen?
@@ 253,11 246,8 @@ Entscheiden Sie selbst, wie sie lernen. Sagen Sie Bescheid, wenn Sie nicht da sein können.
- VNC
- telnet
- ssh
-- Apache Guacamole
- Remote management
-- Seti@home
-- Cost Savings via Cloud Computing?
-- NoSQL
+- Seti@home / Folding@Home
- Botnet
- https://github.com/papers-we-love/papers-we-love
- https://portswigger.net/research/top-10-web-hacking-techniques-of-2021
@@ 1192,12 1182,12 @@ digraph {
/Übersicht und Konzepte. Konkrete Netze im nächsten Block./
-*** Strukturierter Overlay
+*** Strukturierter Overlay :noexport:
#+attr_latex: :width 0.618\textwidth
[[./overlay-structured.png]]
-*** Strukturierte Overlay Networks
+*** Strukturierte Overlay Networks :noexport:
- Knoten in einer wohldefinierten Struktur:
- Ring, Baum etc.
- Datenelemente z.B. über Hashes identifiziert.
@@ 1346,7 1336,7 @@ digraph {
- Konstruktion: kürzester Weg zwischen 2 Knoten hat
Länge $O(\log N)$.
-*** Strukturierte Overlay Networks - Beispiel Chord
+*** Strukturierte Overlay Networks - Beispiel Chord :noexport:
**** :BMCOL:
:PROPERTIES:
:BEAMER_col: 0.4
@@ 1369,12 1359,12 @@ file:chord-network-schema.png
/Verwandt: [[https://en.wikipedia.org/wiki/Skip_list]]./
-*** Unstrukturierter Overlay
+*** Unstrukturierter Overlay :noexport:
#+attr_latex:: :width 0.618\textwidth
[[./overlay-unstructured.png]]
-*** Unstrukturierte Overlay Networks
+*** Unstrukturierte Overlay Networks :noexport:
- Jeder Knoten verwaltet eine Liste seiner Nachbarn.
- Overlay ähnelt einem Zufallsgraphen.
- Zwischen 2 Knoten u und v existiert eine Kante nur mit einer gewissen Wahrscheinlichkeit.
@@ 1395,7 1385,7 @@ file:chord-network-schema.png
/Geht immer, aber selten gut./
-*** Random Walk
+*** Random Walk :noexport:
- Algorithmus:
- Ein Knoten erhält eine Anfrage für ein Datum.
- Der Knoten sucht lokal nach dem Datum.
M vorlesung-1-p2p/vorlesung-1-p2p.org +2 -1
@@ 795,7 795,8 @@ Sie erkennen, wo die in Kademlia entwickelten Techniken sinnvoll genutzt werden können.
**** *Werkzeuge*
- Ursprünglich Tauschbörsen: :: Kad in aMule, VHT in Torrent clients
- - Inzwischen auch verteilte Datenbanken: :: Amazon Dynamo.
+
+/Amazon Dynamo verwendet das sehr ähnliche Chord./
**** *Anwendung*
M vorlesung-2-koordination/vorlesung-2-koordination.org +186 -48
@@ 113,7 113,7 @@
*** Ablauf heute
Koordination
- - Das Problem der Reihenfolge
+ - Reihenfolge ist relative
- Timestamps als Lösung?
- Uhren im Computer
- Synchronisation von Uhren
@@ 131,7 131,7 @@
- Sie kennen Implementierungen für wechselseitigen Ausschluss (mutual exclusion) in verteilten Systemen
- Sie kennen grundlegende Wahlalgorithmen, um Knoten spezielle Rollen zuzuweisen
-* Problem mit Reihenfolge
+* Reihenfolge ist relativ
** Problem der Reihenfolge
*** Problem der Reihenfolge
@@ 203,7 203,7 @@ dbb .. n1
- Wie lassen sich die Operationen ordnen?
** Uhren + Synchronisation
-*** Lernziele Uhren + Synchronisation
+*** Ziele Uhren + Synchronisation
- Sie kennen die Funktionsweise von Uhren in Computern
- Sie kennen Methoden, um Uhren zu synchronisieren
@@ 219,6 219,8 @@ https://xkcd.com/2867/
- Geben eine Zahl zurück die monoton steigt.
- Beispiel: Java =System.nanoTime()=
+/monoton: läuft _nie_ rückwärts./
+
*** Hardware Uhren
- Bestehen aus einem Quartz und 2 Registern.
- Der Quartz oszilliert in einer bestimmten Frequenz.
@@ 241,6 243,8 @@ https://xkcd.com/2867/
/Admins mussten lokal an den Rechner und die Mainboard-Batterie tauschen./
+/Ist ein Extremfall. Mikrowelle: Etwa +1 Minute pro Monat./
+
*** Clock Skew vs. Clock Drift
Wir vergleichen 2 Uhren:
- Clock Skew: Unterschied der Werte der Uhren
@@ 255,9 259,9 @@ https://xkcd.com/2867/
** Synchronisation
*** Zeit-Synchronisation
Es existieren verschiedene Algorithmen:
- - Cristians Algorithmus
- - NTP
- - Berkeley
+ - Cristians Algorithmus: Client-Server
+ - NTP: Weltzeit
+ - Berkeley: Clusterzeit
*** Cristians Algorithmus
#+BEGIN_SRC plantuml :file cristians.png :exports results
@@ 356,7 360,7 @@ https://xkcd.com/2867/
[[file:ntp.png]]
- Bestandteile des Systems werden in Strata unterteilt.
- - Uhren befinden sich in Stratum 0.
+ - Referenz-Uhren befinden sich in Stratum 0.
- Ein Server in Stratum n kontaktiert Server in Stratum n - 1 zur Synchronisation.
- Oft werden mehrere Server angefragt und die Ergebnisse statistisch behandelt
(Mittel, Ausreißer).
@@ 537,11 541,13 @@ https://xkcd.com/2867/
#+END_COMMENT
*** Berkeley Algorithmus - Beobachtungen
- - Hierbei handelt es sich um interne Synchronisation.
+ - Bietet interne Synchronisation.
- System wird nicht mit externer Uhr (UTC) synchronisiert.
- Solange das System intern einen einheitlichen Zeitbegriff verwendet, können
Operationen geordnet werden.
+/Clusterzeit./
+
*** Spanner
- Nutzt timestamps in der Form [\(T_{lower}\) \(T_{upper}\)][fn:1]
@@ 604,6 610,8 @@ Ziele:
- Eine _Partiellen Ordnung_ kann nur einige vergleichen
- ⇒ /Wir können nicht für alle Ereignisspaare die Reihenfolge bestimmen./
+/Gleichzeitig: „echte“ Reihenfolge unbekannt./
+
*** Umsetzung Lamport Clocks
Jeder Prozess \(P_{i}\) erstellt einen lokalen Zähler \(C_{i}\) und wendet folgende
Regeln an:
@@ 633,14 641,14 @@ Ziele:
P1 is {-}
@20
- P3 is H
+ P3 is K
P3 -> P2@+10
@25
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P1 -> P2@+10
@@ 719,14 727,14 @@ Ziele:
P1 is {-}
@20
- P3 is H
+ P3 is K
P3 -> P2@+10
@25
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P1 -> P2@+10
@@ 798,7 806,7 @@ Ziele:
P1 is {-}
@20
- P3 is H
+ P3 is K
P3 -> P2@+10 : ts=1
note bottom of P3 : 1
@@ 806,7 814,7 @@ Ziele:
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P1 -> P2@+10
@@ 878,7 886,7 @@ Ziele:
P1 is {-}
@20
- P3 is H
+ P3 is K
P3 -> P2@+10 : ts=1
note bottom of P3 : 1
@@ 886,7 894,7 @@ Ziele:
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P1 -> P2@+10
note bottom of P2 : max(0, 1)+1=2
@@ 959,7 967,7 @@ Ziele:
P1 is {-}
@20
- P3 is H
+ P3 is K
P3 -> P2@+10 : ts=1
note bottom of P3 : 1
@@ 967,7 975,7 @@ Ziele:
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P1 -> P2@+10 : ts=2
note bottom of P2 : 2
@@ 1042,7 1050,7 @@ Ziele:
P1 is {-}
@20
- P3 is H
+ P3 is K
P3 -> P2@+10 : ts=1
note bottom of P3 : 1
@@ 1050,7 1058,7 @@ Ziele:
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P1 -> P2@+10 : ts=2
note bottom of P2 : 2
@@ 1124,15 1132,6 @@ Ziele:
- $A \to B \implies \text{ts}(A) < \text{ts}(B)$ *aber*
- $\text{ts}(A) < \text{ts}(B) \implies \{A \to B\} \text{ OR } \{A, B \text{ gleichzeitig}\}$
-*** Lamport Clocks, Bedeutung
-
- - $A \to B \implies \text{ts}(A) < \text{ts}(B)$ *aber*
- - $\text{ts}(A) < \text{ts}(B) \implies \{A \to B\} \text{ OR } \{A, B \text{ gleichzeitig}\}$
-
-/„Wenn es vorher war, dann ist der Zeitstempel kleiner.“/
-
-/„Hattest du hier meine Nachricht schon gesehen?“/
-
*** Lamport Clocks - Übung
#+BEGIN_SRC plantuml :file lamport-ex.png :exports results
@@ 1154,13 1153,13 @@ Ziele:
P1 is {-}
@20
- P3 is H
+ P3 is K
@25
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P2 -> P1@+10
P1 -> P2@+10
@@ 1214,6 1213,146 @@ Ziele:
- C, F
- Berechne die timestamps.
+*** Lamport Clocks, Bedeutung
+
+ - $A \to B \implies \text{ts}(A) < \text{ts}(B)$ *aber*
+ - $\text{ts}(A) < \text{ts}(B) \implies \{A \to B\} \text{ OR } \{A, B \text{ gleichzeitig}\}$
+
+/„Wenn es vorher war, dann ist der Zeitstempel kleiner.“/
+
+Aber *nicht*: /„Hattest du hier meine Nachricht schon gesehen?“/
+
+*** Lamport: Wann reicht das nicht?
+**** :B_columns:
+:PROPERTIES:
+:BEAMER_env: columns
+:END:
+***** :BMCOL:
+:PROPERTIES:
+:BEAMER_col: 0.5
+:END:
+ #+BEGIN_SRC plantuml :file lamport-chat-gratulation.png :exports results
+ Title Gratulation
+ concise "Alice" as P1
+ concise "Bob" as P2
+ concise "Carol" as P3
+ concise "Dave" as P4
+
+ @0
+ P1 is {-}
+ P2 is {-}
+ P3 is {-}
+ P4 is {-}
+ note bottom of P1 : 0
+ note bottom of P2 : 0
+ note bottom of P3 : 0
+ note bottom of P4 : 0
+
+ @10
+ P1 is "Gewonnen!"
+ P3 is "Foul!"
+ note bottom of P1 : 1
+ note bottom of P3 : 1
+
+ @15
+
+ @20
+ P1 is {-}
+ P3 is {-}
+ P1 -> P2@+5 : ts=1
+ P3 -> P2@+15 : ts=1
+
+ @25
+ P1 is {-}
+ P2 is "Verdient!"
+ note bottom of P2 : 3
+
+ @30
+ P3 is {-}
+
+ @35
+ P2 is {-}
+ P2 -> P4@+5 : ts=3
+
+ @40
+ P1 is {-}
+ P2 is {-}
+ P3 is {-}
+ P4 is "???"
+ note bottom of P4 : 4
+ #+END_SRC
+
+ #+RESULTS:
+ [[file:lamport-chat-gratulation.png]]
+
+***** :BMCOL:
+:PROPERTIES:
+:BEAMER_col: 0.5
+:END:
+
+
+ #+BEGIN_SRC plantuml :file lamport-chat-haeme.png :exports results
+ Title Häme
+ concise "Alice" as P1
+ concise "Bob" as P2
+ concise "Carol" as P3
+ concise "Dave" as P4
+
+ @0
+ P1 is {-}
+ P2 is {-}
+ P3 is {-}
+ P4 is {-}
+ note bottom of P1 : 0
+ note bottom of P2 : 0
+ note bottom of P3 : 0
+ note bottom of P4 : 0
+
+ @10
+ P1 is "Gewonnen!"
+ P3 is "Foul!"
+ note bottom of P1 : 1
+ note bottom of P3 : 1
+
+ @15
+
+ @20
+ P1 is {-}
+ P3 is {-}
+ P3 -> P2@+5 : ts=1
+ P1 -> P2@+15 : ts=1
+
+ @25
+ P1 is {-}
+ P2 is "Verdient!"
+ note bottom of P2 : 3
+
+ @30
+ P3 is {-}
+
+ @35
+ P2 is {-}
+ P2 -> P4@+5 : ts=3
+
+ @40
+ P1 is {-}
+ P2 is {-}
+ P3 is {-}
+ P4 is "???"
+ note bottom of P4 : 4
+
+ #+END_SRC
+
+ #+RESULTS:
+ [[file:lamport-chat-haeme.png]]
+
+**** :B_ignoreheading:
+:PROPERTIES:
+:BEAMER_env: ignoreheading
+:END:
+
+/Das Ziel ist nicht, die Wirklichkeit abzubilden, sondern eine Datengrundlage für lokale Entscheidungen zu haben./
+
** Vollständig geordneter Multicast mit Lamport Clocks :noexport:
*** Vollständig geordneter Multicast mit Lamport Clocks
[[file:replicated-database-access.png]]
@@ 1539,14 1678,14 @@ Ziele:
P1 is {-}
@20
- P3 is H
+ P3 is K
P3 -> P2@+10
@25
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P1 -> P2@+10
@@ 1619,14 1758,14 @@ Ziele:
P1 is {-}
@20
- P3 is H
+ P3 is K
P3 -> P2@+10
@25
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P1 -> P2@+10
@@ 1699,7 1838,7 @@ Ziele:
P1 is {-}
@20
- P3 is H
+ P3 is K
P3 -> P2@+10 : (0,0,1)
note bottom of P3 : (0,0,1)
@@ 1707,7 1846,7 @@ Ziele:
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P1 -> P2@+10
@@ 1779,7 1918,7 @@ Ziele:
P1 is {-}
@20
- P3 is H
+ P3 is K
P3 -> P2@+10 : (0,0,1)
note bottom of P3 : (0,0,1)
@@ 1787,7 1926,7 @@ Ziele:
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P1 -> P2@+10 : (2,0,0)
note bottom of P2 : (0,1,1)
@@ 1861,7 2000,7 @@ Ziele:
P1 is {-}
@20
- P3 is H
+ P3 is K
P3 -> P2@+10 : (0,0,1)
note bottom of P3 : (0,0,1)
@@ 1869,7 2008,7 @@ Ziele:
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P1 -> P2@+10 : (2,0,0)
note bottom of P2 : (0,1,1)
@@ 1946,7 2085,7 @@ Ziele:
P1 is {-}
@20
- P3 is H
+ P3 is K
P3 -> P2@+10 : (0,0,1)
note bottom of P3 : (0,0,1)
@@ 1954,7 2093,7 @@ Ziele:
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P1 -> P2@+10 : (2,0,0)
note bottom of P2 : (0,1,1)
@@ 2019,7 2158,7 @@ Ziele:
- es existiert mindestens ein Index k für den: $\text{ts}(A)[k] <
\text{ts}(B)[k]$ gilt.
- In diesem Fall kann man sagen:
+ In diesem Fall gilt:
- *A geht B kausal voraus.*
- B hängt vielleicht kausal von A ab, da es Informationen von A geben könnte, die in B
propagiert werden.
@@ 2054,13 2193,12 @@ Ziele:
P1 is {-}
@20
- P3 is H
-
+ P3 is K
@25
P3 is {-}
@30
- P2 is "E'"
+ P2 is "X"
P1 is B
P2 -> P1@+10
P1 -> P2@+10
@@ 2779,7 2917,7 @@ Ausschluss: Koordinator oder verteilt ⇒ Zusätzliche Nachrichten.
** Meta :noexport:
*** Todos
- finish replikation
- - fix P2 is "E'" error
+ - fix P2 is "X" error
- Beispiele mit pyodide ausführbar machen: https://github.com/iodide-project/pyodide/
- Oder mit Skulpt: https://skulpt.org/
M vorlesung-3-algorithmen/_minted-vorlesung-3-algorithmen/default.pygstyle +94 -94
@@ 1,101 1,101 @@
\makeatletter
-\def\PYGdefault@reset{\let\PYGdefault@it=\relax \let\PYGdefault@bf=\relax%
- \let\PYGdefault@ul=\relax \let\PYGdefault@tc=\relax%
- \let\PYGdefault@bc=\relax \let\PYGdefault@ff=\relax}
-\def\PYGdefault@tok#1{\csname PYGdefault@tok@#1\endcsname}
-\def\PYGdefault@toks#1+{\ifx\relax#1\empty\else%
- \PYGdefault@tok{#1}\expandafter\PYGdefault@toks\fi}
-\def\PYGdefault@do#1{\PYGdefault@bc{\PYGdefault@tc{\PYGdefault@ul{%
- \PYGdefault@it{\PYGdefault@bf{\PYGdefault@ff{#1}}}}}}}
-\def\PYGdefault#1#2{\PYGdefault@reset\PYGdefault@toks#1+\relax+\PYGdefault@do{#2}}
+\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax%
+ \let\PYG@ul=\relax \let\PYG@tc=\relax%
+ \let\PYG@bc=\relax \let\PYG@ff=\relax}
+\def\PYG@tok#1{\csname PYG@tok@#1\endcsname}
+\def\PYG@toks#1+{\ifx\relax#1\empty\else%
+ \PYG@tok{#1}\expandafter\PYG@toks\fi}
+\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{%
+ \PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}}
+\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}}
-\expandafter\def\csname PYGdefault@tok@w\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
-\expandafter\def\csname PYGdefault@tok@c\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@cp\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@k\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@kp\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@kt\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}}
-\expandafter\def\csname PYGdefault@tok@o\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@ow\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nb\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nf\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nc\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nn\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@ne\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nv\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
-\expandafter\def\csname PYGdefault@tok@no\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nl\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@ni\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}}
-\expandafter\def\csname PYGdefault@tok@na\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nt\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nd\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@s\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sd\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@si\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}}
-\expandafter\def\csname PYGdefault@tok@se\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sr\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}}
-\expandafter\def\csname PYGdefault@tok@ss\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sx\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@m\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@gh\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@gu\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@gd\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@gi\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@gr\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@ge\endcsname{\let\PYGdefault@it=\textit}
-\expandafter\def\csname PYGdefault@tok@gs\endcsname{\let\PYGdefault@bf=\textbf}
-\expandafter\def\csname PYGdefault@tok@gp\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@go\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
-\expandafter\def\csname PYGdefault@tok@gt\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}
-\expandafter\def\csname PYGdefault@tok@err\endcsname{\def\PYGdefault@bc##1{\setlength{\fboxsep}{0pt}\strut ##1}}
-\expandafter\def\csname PYGdefault@tok@kc\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@kd\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@kn\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@kr\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@bp\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@fm\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@vc\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
-\expandafter\def\csname PYGdefault@tok@vg\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
-\expandafter\def\csname PYGdefault@tok@vi\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
-\expandafter\def\csname PYGdefault@tok@vm\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sa\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sb\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sc\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@dl\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@s2\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sh\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@s1\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@mb\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@mf\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@mh\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@mi\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@il\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@mo\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@ch\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@cm\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@cpf\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@c1\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@cs\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
+\@namedef{PYG@tok@w}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
+\@namedef{PYG@tok@c}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.24,0.48,0.48}{##1}}}
+\@namedef{PYG@tok@cp}{\def\PYG@tc##1{\textcolor[rgb]{0.61,0.40,0.00}{##1}}}
+\@namedef{PYG@tok@k}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@kp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@kt}{\def\PYG@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}}
+\@namedef{PYG@tok@o}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@ow}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
+\@namedef{PYG@tok@nb}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@nf}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
+\@namedef{PYG@tok@nc}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
+\@namedef{PYG@tok@nn}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
+\@namedef{PYG@tok@ne}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.80,0.25,0.22}{##1}}}
+\@namedef{PYG@tok@nv}{\def\PYG@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
+\@namedef{PYG@tok@no}{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}}
+\@namedef{PYG@tok@nl}{\def\PYG@tc##1{\textcolor[rgb]{0.46,0.46,0.00}{##1}}}
+\@namedef{PYG@tok@ni}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.44,0.44,0.44}{##1}}}
+\@namedef{PYG@tok@na}{\def\PYG@tc##1{\textcolor[rgb]{0.41,0.47,0.13}{##1}}}
+\@namedef{PYG@tok@nt}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@nd}{\def\PYG@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
+\@namedef{PYG@tok@s}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@sd}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@si}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.64,0.35,0.47}{##1}}}
+\@namedef{PYG@tok@se}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.67,0.36,0.12}{##1}}}
+\@namedef{PYG@tok@sr}{\def\PYG@tc##1{\textcolor[rgb]{0.64,0.35,0.47}{##1}}}
+\@namedef{PYG@tok@ss}{\def\PYG@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
+\@namedef{PYG@tok@sx}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@m}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@gh}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
+\@namedef{PYG@tok@gu}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
+\@namedef{PYG@tok@gd}{\def\PYG@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
+\@namedef{PYG@tok@gi}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.52,0.00}{##1}}}
+\@namedef{PYG@tok@gr}{\def\PYG@tc##1{\textcolor[rgb]{0.89,0.00,0.00}{##1}}}
+\@namedef{PYG@tok@ge}{\let\PYG@it=\textit}
+\@namedef{PYG@tok@gs}{\let\PYG@bf=\textbf}
+\@namedef{PYG@tok@gp}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
+\@namedef{PYG@tok@go}{\def\PYG@tc##1{\textcolor[rgb]{0.44,0.44,0.44}{##1}}}
+\@namedef{PYG@tok@gt}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}
+\@namedef{PYG@tok@err}{\def\PYG@bc##1{{\setlength{\fboxsep}{\string -\fboxrule}\strut ##1}}}
+\@namedef{PYG@tok@kc}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@kd}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@kn}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@kr}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@bp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@fm}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
+\@namedef{PYG@tok@vc}{\def\PYG@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
+\@namedef{PYG@tok@vg}{\def\PYG@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
+\@namedef{PYG@tok@vi}{\def\PYG@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
+\@namedef{PYG@tok@vm}{\def\PYG@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
+\@namedef{PYG@tok@sa}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@sb}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@sc}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@dl}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@s2}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@sh}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@s1}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@mb}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@mf}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@mh}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@mi}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@il}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@mo}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@ch}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.24,0.48,0.48}{##1}}}
+\@namedef{PYG@tok@cm}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.24,0.48,0.48}{##1}}}
+\@namedef{PYG@tok@cpf}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.24,0.48,0.48}{##1}}}
+\@namedef{PYG@tok@c1}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.24,0.48,0.48}{##1}}}
+\@namedef{PYG@tok@cs}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.24,0.48,0.48}{##1}}}
-\def\PYGdefaultZbs{\char`\\}
-\def\PYGdefaultZus{\char`\_}
-\def\PYGdefaultZob{\char`\{}
-\def\PYGdefaultZcb{\char`\}}
-\def\PYGdefaultZca{\char`\^}
-\def\PYGdefaultZam{\char`\&}
-\def\PYGdefaultZlt{\char`\<}
-\def\PYGdefaultZgt{\char`\>}
-\def\PYGdefaultZsh{\char`\#}
-\def\PYGdefaultZpc{\char`\%}
-\def\PYGdefaultZdl{\char`\$}
-\def\PYGdefaultZhy{\char`\-}
-\def\PYGdefaultZsq{\char`\'}
-\def\PYGdefaultZdq{\char`\"}
-\def\PYGdefaultZti{\char`\~}
+\def\PYGZbs{\char`\\}
+\def\PYGZus{\char`\_}
+\def\PYGZob{\char`\{}
+\def\PYGZcb{\char`\}}
+\def\PYGZca{\char`\^}
+\def\PYGZam{\char`\&}
+\def\PYGZlt{\char`\<}
+\def\PYGZgt{\char`\>}
+\def\PYGZsh{\char`\#}
+\def\PYGZpc{\char`\%}
+\def\PYGZdl{\char`\$}
+\def\PYGZhy{\char`\-}
+\def\PYGZsq{\char`\'}
+\def\PYGZdq{\char`\"}
+\def\PYGZti{\char`\~}
% for compatibility with earlier versions
-\def\PYGdefaultZat{@}
-\def\PYGdefaultZlb{[}
-\def\PYGdefaultZrb{]}
+\def\PYGZat{@}
+\def\PYGZlb{[}
+\def\PYGZrb{]}
\makeatother
M vorlesung-3-algorithmen/vorlesung-3-algorithmen.org +5 -6
@@ 1,5 1,6 @@
#+title: Verteilte Systeme 3: Algorithmen und Zustand
+#+TAGS: noexport(n)
#+options: toc:nil H:3 ^:nil todo:nil title:nil
#+PROPERTY: header-args :exports code
@@ 73,6 74,7 @@ Logische Uhren:
- Lamport: Ein Zähler pro Knoten. /„Wenn es vorher war, dann ist der Zeitstempel kleiner.“/
- Vektor: N Zähler in jedem der N Knoten. Kausalität. /„Wenn der Zeitstempel kleiner ist, dann war es vorher.“/
+ - sonst *vielleicht gleichzeitig*.
Ausschluss: Koordinator oder verteilt ⇒ Zusätzliche Nachrichten.
@@ 849,7 851,6 @@ Kriterien:
- Fortschritt: Kein Verhungern / livelock → recursion step
- Fairness: Kommt eine Aktion irgendwann dran?
-- Erreichbarkeit eines bestimmten Zustands
- Beendigung (termination): Das Programm wird enden
Richtigkeit = Teilweise Richtigkeit + Beendigung
@@ 1057,8 1058,7 @@ define : nonatomic-switch
- Asserting safety
- Liveness auf bekannte Fragen zurückführen
-- Programmlogik
-- Prädikatumformung
+- Praxisverweise (Programmgestützte Beweise)
*** Asserting safety: Induktion mit Invarianten
@@ 1421,7 1421,6 @@ Aktuell: Konsistenz ohne Koordination \citep{HellersteinAlvaro2019} → [[https://blog.acolyer.org/2019/03/06/keeping-calm-when-distributed-consistency-is-easy/][blog]].
- Safety: Teilweise Richtigkeit → Invariante für alle Übergänge
- Liveness: Beendigung (terminiert) → Rückführung auf Bekanntes
- Einfluss von Fairness und Granularität
-- Programmlogik, Prädikatumformung.
* ☯ Zustand
@@ 1670,7 1669,7 @@ Ein in sich konsistenter Zustand.
#+begin_export latex
\begin{equation}
- (n_0 + n_1 + n_2) + (sent_0 - received_0) + (sent_1 - received_1) (sent_2 - received_2) = 1
+ (n_0 + n_1 + n_2) + (sent_0 - received_0) + (sent_1 - received_1) + (sent_2 - received_2) = 1
\end{equation}
#+end_export
@@ 2239,7 2238,7 @@ wp(toss, x = 0 \lor x = 1) &=& true
[fn:22] Das ist der Normalfall, den wir ab jetzt ignorieren werden.
-[fn:21] Ich nutze entgegen Dijkstras Vorstellungen ausführbaren Code, weil mir in Literatur zum Thema Fehler in dem entsprechenden Pseudocode aufgefallen sind.
+[fn:21] Ich nutze entgegen Dijkstras Vorstellungen ausführbaren Code, weil mir in Literatur zum Thema Fehler in dem entsprechenden Pseudocode aufgefallen sind. Dijkstras Notation produktiv: [[https://en.wikipedia.org/wiki/Promela][Promela]] language ⇒ [[https://spinroot.com/spin/whatispin.html][SPIN]]
[fn:20] Set von schwachen Hashes der Suchwörter, Anzahl keys dynamisch skaliert und interpoliert
M vorlesung-4-datenbanken/vorlesung-4-datenbanken.org +46 -46
@@ 1,7 1,8 @@
-#+TITLE: Datenbanken
+#+TITLE: Replikation, CALM und CRDTs
#+author: Arne Babenhauserheide und Carlo Götz
#+options: toc:nil H:3 ^:nil todo:nil title:nil
#+PROPERTY: header-args :exports code
+#+TAGS: noexport(n)
#+LANGUAGE: de
#+LaTeX_CLASS: beamer
@@ 57,7 58,7 @@ nil
/Versprich nur, was du halten kannst./
#+end_quote
-** Wiederholung
+** Wiederholung :noexport:
*** Wiederholung
- Token zählen ist nicht-trivial
- Konsistente Schnitte müssen alle logisch früheren Daten enthalten
@@ 69,21 70,21 @@ nil
*** Ziele
- Ihr kennt verschiedene Arten der Replikation.
- Ihr versteht, dass Replikation zu Inkonsistenzen führen kann.
- - Ihr kennt die Aussage des CAP Theorems und misstraut Aussagen wie "DB xy ist CA".
- - Ihr kennt die Tradeoffs zwischen Konsistenz und Verfügbarkeit.
- Ihr kennt das CALM Theorem.
- Ihr versteht, dass Koordination vermieden werden kann und dies zu einfacheren
Systemen führt.
+# - Ihr kennt die Aussage des CAP Theorems und misstraut Aussagen wie "DB xy ist CA".
+# - Ihr kennt die Tradeoffs zwischen Konsistenz und Verfügbarkeit.
# - Ihr kennt Möglichkeiten verteilte Systeme zu testen.
# - Ihr kennt HDFS und Map Reduce.
** Ablauf heute
*** Ablauf heute
- Replikation
- - CAP Theorem
- Was ist Availability?
- Welche Konsistenzmodelle gibt es?
- - Wie können wir prüfen, ob ein verteiltes System ein Konsistenzmodell korrekt umsetzt?
- Lässt sich Koordination vermeiden?
+# - CAP Theorem
+# - Wie können wir prüfen, ob ein verteiltes System ein Konsistenzmodell korrekt umsetzt?
# - Hadoop
* Replikation
** Replikation
@@ 105,7 106,7 @@ nil
- Multi Leader
- Leaderless
- Replikation kann synchron oder asynchron erfolgen.
+# /synchron oder asynchron/
** Single Leader
*** Single Leader
@@ 146,7 147,7 @@ nil
/Hierarchie ähnlich zu NTP./
-*** Synchronous vs. Asynchronous
+*** Synchronous vs. Asynchronous :noexport:
#+BEGIN_SRC plantuml :file a-sync-replication.png :exports results
Title Synchronous vs. Asynchronous
@@ 199,7 200,7 @@ nil
Was sind die Vor- und Nachteile von (a)synchroner Replikation?
-*** Synchron vs. Asynchron 2
+*** Synchron vs. Asynchron 2 :noexport:
**** _ :B_columns:
:PROPERTIES:
:BEAMER_env: columns
@@ 229,7 230,7 @@ nil
- 1 synchroner Follower
- Absturz: Neuen synchronen Follower wählen
-*** Replication Logs: Statement Based
+*** Replication Logs: Statement Based :noexport:
/Wie werden Änderungen an den Daten übertragen?/
Beispiel: SQL
@@ 241,7 242,7 @@ Beispiel: SQL
Weitere Probleme: Autoincrement, Trigger usw.
-*** Replication Logs: Write Ahead Log (WAL)
+*** Replication Logs: Write Ahead Log (WAL) :noexport:
- SQL Datenbanken verwalten WAL.
- An WAL wird nur angefügt (append-only)
@@ 253,7 254,7 @@ Weitere Probleme: Autoincrement, Trigger
- Schließt Zero-Downtime-Updates aus
- Logische Logs oft von der Storage Engine entkoppelt
-*** Lag
+*** Lag :noexport:
/Zeitverlust/
Replikation braucht Zeit: Inkonsistenzen
@@ 278,7 279,7 @@ Replikation braucht Zeit: Inkonsistenzen
- Lösung von Schreibkonflikten nötig
-*** Topologien
+*** Topologien :noexport:
#+begin_src plantuml :file topologies.png :exports results
@@ 339,7 340,7 @@ a2 <- a3
#+RESULTS:
[[file:topologies.png]]
-*** Kennzahlen
+*** Kennzahlen :noexport:
#+attr_latex: :width 0.5\textwidth
@@ 351,7 352,7 @@ a2 <- a3
- *Bisektionsbandbreite* :: Kanten zu löschen zum Zerlegen in zwei ähnlich große Teile
- *Kanten/Knotenkonnektivität* :: Anzahl Kanten/Knoten zu löschen zum Zerlegen in 2 Teile
-*** Übung Toplogien
+*** Übung Toplogien :noexport:
Bestimme Durchmesser, Bisektionsbandbreite und Knoten/Kantenkonnektivität für folgende Toplogie:
[[file:topology.png]]
@@ 419,7 420,7 @@ a2 <- a3
- Inkonsistenzen möglich
- Quorum Bedingung: $r + w > n$
-* CAP
+* CAP :noexport:
** CAP (Consistency, Availability, Partition Tolerance)
*** CAP (Consistency, Availability, Partition Tolerance)
#+BEGIN_QUOTE
@@ 555,7 556,7 @@ System ist nicht verfügbar bei Netzwerkpartitionen.
- Kante A -> B bedeutet: B impliziert A
- Beispiel: Causal bedeutet, dass auch Write Follow Reads garantiert wird.
#+END_COMMENT
-** Isolation
+** Isolation :noexport:
*** Isolation
/Welche Regeln gelten wenn mehrere Transaktionen gleichzeitig stattfinden?/
@@ 785,7 786,7 @@ System ist nicht verfügbar bei Netzwerkpartitionen.
Welcher Wert wird für a gelesen?
-** Sessions
+** Sessions :noexport:
*** Sessions
/Welche Regeln gelten transaktionsübergreifend innerhalb einer Session?/
@@ 1171,7 1172,7 @@ System ist nicht verfügbar bei Netzwerkpartitionen.
- UPS versucht Linksabbiegen in seinen Routen zu minimieren
#+END_COMMENT
-*** CALM: Monotonicity
+*** CALM: Monotonicity :noexport:
Formale Definition:
Ein Programm $P$ ist monoton, wenn für alle input sets $S, T$ gilt: $\text{wenn
@@ 1326,33 1327,11 @@ System ist nicht verfügbar bei Netzwerkpartitionen.
--> Solange wir $\forall$ und $\nexists$ verbieten bleiben wir monoton.
-
*** Composability
Wenn die Funktionen $f$ und $g$ monoton sind, ist auch $f(g(x))$ monoton.
- --> Wir können monotone Programme aus monotonen Operationen konstruieren.
-
-*** Beispiel: Shopping Cart
-
- Können wir den Shopping Cart einer Webanwendung monoton gestalten?
-
- Idee: Wir modellieren den Inhalt des Shopping Cart als Set.
-
- Das Hinzufügen eines Artikels ist damit monoton und wir benötigen keine Koordination.
-
- Aber wie können wir einen Artikel aus dem Shopping Cart entfernen?
-
- Idee: Wir verwalten ein Add-Set und ein Remove-Set.
-
-*** Shopping Cart: Bewertung
- Die Verwaltung des Shopping Carts kann ohne Koordination erfolgen.
-
- Allerdings benötigen wir Koordination, sobald wir den Einkauf tätigen.
-
- --> Wir müssen sicherstellen, dass alle Änderungen des Shopping Carts gesehen wurden.
-
- --> Aber wir konnten die nötige Koordination im System reduzieren.
+ --> Monotone Programme aus monotonen Operationen aufbauen.
** Zusammenfassung
@@ 1453,7 1432,7 @@ System ist nicht verfügbar bei Netzwerkpartitionen.
- Benötigt Gruppenzugehörigkeit (alle Beteiligten kennen).
** Beispiele
-*** Counter 1
+*** Counter 1 :noexport:
Operation Based ist trivial.
Versuch State Based:
@@ 1472,13 1451,13 @@ System ist nicht verfügbar bei Netzwerkpartitionen.
Entspricht die Implementierung einem CRDT?
-*** Counter 1?
+*** Counter 1? :noexport:
Counter 1 ist kein CRDT. Wenn wir 2 Counter haben und
jeden einmal inkrementieren, wird der Wert auf 1 statt 2 konvergieren.
Neuer Versuch.
-*** Counter 2
+*** Counter 2 :noexport:
#+BEGIN_SRC python
state = [0 ,0] # Annahme 2 Counter im System
def increment():
@@ 1525,9 1504,30 @@ System ist nicht verfügbar bei Netzwerkpartitionen.
- einmal hinzugefügtes Element kann nie wieder hinzugefügt werden.
-*** Counter - Übung
+*** Counter - Übung :noexport:
Implementiere einen Counter, der =decrement= bietet.
+*** Praxis: Shopping Cart
+
+ Können wir den Shopping Cart einer Webanwendung monoton gestalten?
+
+ Idee: Wir modellieren den Inhalt des Shopping Cart als Set.
+
+ Das Hinzufügen eines Artikels ist damit monoton und wir benötigen keine Koordination.
+
+ Aber wie können wir einen Artikel aus dem Shopping Cart entfernen?
+
+ Idee: Wir verwalten ein Add-Set und ein Remove-Set.
+
+*** Shopping Cart: Bewertung
+ Verwaltung des Shopping Carts ohne Koordination.
+
+ Brauchen Koordination, sobald wir den Einkauf tätigen.
+
+ --> müssen sicherstellen, dass alle Änderungen vorher gesehen wurden.
+
+ --> Koordination im System reduzieren, nicht komplett verhindern.
+
*** Weitere CRDTs
- PN-Set: Counter für jedes Element, Wert des Coutner entscheidet über Set-Zugehörigkeit.
- 2P2P Graph: Je ein 2P Set für Knoten und Kanten.
M vorlesung-5-koordination-konsens-sensornetze/_minted-vorlesung-5-koordination-konsens-sensornetze/default.pygstyle +94 -94
@@ 1,101 1,101 @@
\makeatletter
-\def\PYGdefault@reset{\let\PYGdefault@it=\relax \let\PYGdefault@bf=\relax%
- \let\PYGdefault@ul=\relax \let\PYGdefault@tc=\relax%
- \let\PYGdefault@bc=\relax \let\PYGdefault@ff=\relax}
-\def\PYGdefault@tok#1{\csname PYGdefault@tok@#1\endcsname}
-\def\PYGdefault@toks#1+{\ifx\relax#1\empty\else%
- \PYGdefault@tok{#1}\expandafter\PYGdefault@toks\fi}
-\def\PYGdefault@do#1{\PYGdefault@bc{\PYGdefault@tc{\PYGdefault@ul{%
- \PYGdefault@it{\PYGdefault@bf{\PYGdefault@ff{#1}}}}}}}
-\def\PYGdefault#1#2{\PYGdefault@reset\PYGdefault@toks#1+\relax+\PYGdefault@do{#2}}
+\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax%
+ \let\PYG@ul=\relax \let\PYG@tc=\relax%
+ \let\PYG@bc=\relax \let\PYG@ff=\relax}
+\def\PYG@tok#1{\csname PYG@tok@#1\endcsname}
+\def\PYG@toks#1+{\ifx\relax#1\empty\else%
+ \PYG@tok{#1}\expandafter\PYG@toks\fi}
+\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{%
+ \PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}}
+\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}}
-\expandafter\def\csname PYGdefault@tok@w\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
-\expandafter\def\csname PYGdefault@tok@c\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@cp\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@k\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@kp\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@kt\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}}
-\expandafter\def\csname PYGdefault@tok@o\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@ow\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nb\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nf\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nc\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nn\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@ne\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nv\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
-\expandafter\def\csname PYGdefault@tok@no\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nl\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@ni\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}}
-\expandafter\def\csname PYGdefault@tok@na\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nt\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@nd\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@s\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sd\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@si\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}}
-\expandafter\def\csname PYGdefault@tok@se\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sr\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}}
-\expandafter\def\csname PYGdefault@tok@ss\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sx\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@m\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@gh\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@gu\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@gd\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@gi\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@gr\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@ge\endcsname{\let\PYGdefault@it=\textit}
-\expandafter\def\csname PYGdefault@tok@gs\endcsname{\let\PYGdefault@bf=\textbf}
-\expandafter\def\csname PYGdefault@tok@gp\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@go\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
-\expandafter\def\csname PYGdefault@tok@gt\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}
-\expandafter\def\csname PYGdefault@tok@err\endcsname{\def\PYGdefault@bc##1{\setlength{\fboxsep}{0pt}\strut ##1}}
-\expandafter\def\csname PYGdefault@tok@kc\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@kd\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@kn\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@kr\endcsname{\let\PYGdefault@bf=\textbf\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@bp\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@fm\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
-\expandafter\def\csname PYGdefault@tok@vc\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
-\expandafter\def\csname PYGdefault@tok@vg\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
-\expandafter\def\csname PYGdefault@tok@vi\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
-\expandafter\def\csname PYGdefault@tok@vm\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sa\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sb\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sc\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@dl\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@s2\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@sh\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@s1\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
-\expandafter\def\csname PYGdefault@tok@mb\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@mf\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@mh\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@mi\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@il\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@mo\endcsname{\def\PYGdefault@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYGdefault@tok@ch\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@cm\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@cpf\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@c1\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
-\expandafter\def\csname PYGdefault@tok@cs\endcsname{\let\PYGdefault@it=\textit\def\PYGdefault@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
+\@namedef{PYG@tok@w}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
+\@namedef{PYG@tok@c}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.24,0.48,0.48}{##1}}}
+\@namedef{PYG@tok@cp}{\def\PYG@tc##1{\textcolor[rgb]{0.61,0.40,0.00}{##1}}}
+\@namedef{PYG@tok@k}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@kp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@kt}{\def\PYG@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}}
+\@namedef{PYG@tok@o}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@ow}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
+\@namedef{PYG@tok@nb}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@nf}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
+\@namedef{PYG@tok@nc}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
+\@namedef{PYG@tok@nn}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
+\@namedef{PYG@tok@ne}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.80,0.25,0.22}{##1}}}
+\@namedef{PYG@tok@nv}{\def\PYG@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
+\@namedef{PYG@tok@no}{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}}
+\@namedef{PYG@tok@nl}{\def\PYG@tc##1{\textcolor[rgb]{0.46,0.46,0.00}{##1}}}
+\@namedef{PYG@tok@ni}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.44,0.44,0.44}{##1}}}
+\@namedef{PYG@tok@na}{\def\PYG@tc##1{\textcolor[rgb]{0.41,0.47,0.13}{##1}}}
+\@namedef{PYG@tok@nt}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@nd}{\def\PYG@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
+\@namedef{PYG@tok@s}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@sd}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@si}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.64,0.35,0.47}{##1}}}
+\@namedef{PYG@tok@se}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.67,0.36,0.12}{##1}}}
+\@namedef{PYG@tok@sr}{\def\PYG@tc##1{\textcolor[rgb]{0.64,0.35,0.47}{##1}}}
+\@namedef{PYG@tok@ss}{\def\PYG@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
+\@namedef{PYG@tok@sx}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@m}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@gh}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
+\@namedef{PYG@tok@gu}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
+\@namedef{PYG@tok@gd}{\def\PYG@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
+\@namedef{PYG@tok@gi}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.52,0.00}{##1}}}
+\@namedef{PYG@tok@gr}{\def\PYG@tc##1{\textcolor[rgb]{0.89,0.00,0.00}{##1}}}
+\@namedef{PYG@tok@ge}{\let\PYG@it=\textit}
+\@namedef{PYG@tok@gs}{\let\PYG@bf=\textbf}
+\@namedef{PYG@tok@gp}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
+\@namedef{PYG@tok@go}{\def\PYG@tc##1{\textcolor[rgb]{0.44,0.44,0.44}{##1}}}
+\@namedef{PYG@tok@gt}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}
+\@namedef{PYG@tok@err}{\def\PYG@bc##1{{\setlength{\fboxsep}{\string -\fboxrule}\strut ##1}}}
+\@namedef{PYG@tok@kc}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@kd}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@kn}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@kr}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@bp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
+\@namedef{PYG@tok@fm}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
+\@namedef{PYG@tok@vc}{\def\PYG@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
+\@namedef{PYG@tok@vg}{\def\PYG@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
+\@namedef{PYG@tok@vi}{\def\PYG@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
+\@namedef{PYG@tok@vm}{\def\PYG@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
+\@namedef{PYG@tok@sa}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@sb}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@sc}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@dl}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@s2}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@sh}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@s1}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
+\@namedef{PYG@tok@mb}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@mf}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@mh}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@mi}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@il}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@mo}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
+\@namedef{PYG@tok@ch}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.24,0.48,0.48}{##1}}}
+\@namedef{PYG@tok@cm}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.24,0.48,0.48}{##1}}}
+\@namedef{PYG@tok@cpf}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.24,0.48,0.48}{##1}}}
+\@namedef{PYG@tok@c1}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.24,0.48,0.48}{##1}}}
+\@namedef{PYG@tok@cs}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.24,0.48,0.48}{##1}}}
-\def\PYGdefaultZbs{\char`\\}
-\def\PYGdefaultZus{\char`\_}
-\def\PYGdefaultZob{\char`\{}
-\def\PYGdefaultZcb{\char`\}}
-\def\PYGdefaultZca{\char`\^}
-\def\PYGdefaultZam{\char`\&}
-\def\PYGdefaultZlt{\char`\<}
-\def\PYGdefaultZgt{\char`\>}
-\def\PYGdefaultZsh{\char`\#}
-\def\PYGdefaultZpc{\char`\%}
-\def\PYGdefaultZdl{\char`\$}
-\def\PYGdefaultZhy{\char`\-}
-\def\PYGdefaultZsq{\char`\'}
-\def\PYGdefaultZdq{\char`\"}
-\def\PYGdefaultZti{\char`\~}
+\def\PYGZbs{\char`\\}
+\def\PYGZus{\char`\_}
+\def\PYGZob{\char`\{}
+\def\PYGZcb{\char`\}}
+\def\PYGZca{\char`\^}
+\def\PYGZam{\char`\&}
+\def\PYGZlt{\char`\<}
+\def\PYGZgt{\char`\>}
+\def\PYGZsh{\char`\#}
+\def\PYGZpc{\char`\%}
+\def\PYGZdl{\char`\$}
+\def\PYGZhy{\char`\-}
+\def\PYGZsq{\char`\'}
+\def\PYGZdq{\char`\"}
+\def\PYGZti{\char`\~}
% for compatibility with earlier versions
-\def\PYGdefaultZat{@}
-\def\PYGdefaultZlb{[}
-\def\PYGdefaultZrb{]}
+\def\PYGZat{@}
+\def\PYGZlb{[}
+\def\PYGZrb{]}
\makeatother
M vorlesung-5-koordination-konsens-sensornetze/vorlesung-5-koordination-konsens-sensornetze.org +13 -75
@@ 1,7 1,8 @@
-#+title: Verteilte Systeme 5: Koordination, Fehler, Konsens, Sensornetze
+#+title: Verteilte Systeme 5: Koordination, Fehler, Konsens
#+options: toc:nil H:3 ^:nil todo:nil title:nil
#+PROPERTY: header-args :exports code
+#+TAGS: noexport(n)
#+LANGUAGE: de
#+LaTeX_CLASS: beamer
@@ 47,7 48,7 @@ nil
#+latex: \LARGE \centering \(\ddot \smile\)
****
- Heute: *Koordination, Fehler, Konsens, Sensornetze*.
+ Heute: *Koordinator, Synchronisierer, Fehlertoleranz, Konsens*.
**
*** Zusammenfassung von Vorlesung 4
@@ 81,25 82,24 @@ Distributed Systems - An Algorithmic App
*** ☺ Ablauf heute
- - Koordination
- - Fehler
+ - Koordinator
+ - Synchronisierung
: --- PAUSE 14:15 ---
+ - Fehlertoleranz
- Konsens
- - Sensornetze
-* ☯ Koordination
+* ☯ Koordinator
** Koordinator
-*** ☺ Koordination
+*** ☺ Koordinator
/Verteilte, asynchrone Handlungen für ein gemeinsames Ziel/
*** Ziele für Koordination
- Sie erkennen Algorithmen zur Wahl des Koordinators — leader election
-- Sie kennen Methoden zur Synchronisierung
*** Online-Versuch: Warum Koordination?
@@ 482,8 482,13 @@ define : bully i
- Petersons Algorithmus erreicht auf einem unidirektionalen Ring die skalierung des Bidirektional, tauscht dafür allerdings IDs aus.
- Netze ohne IDs brauchen Symmetriebrüche.
+* Synchronisierer
** Synchronisierer
+*** Ziele für Synchronisierer
+
+- Sie kennen Methoden zur Synchronisierung
+
*** Synchronisierer
- Teilen die Berechnung in Diskrete Schritte (ticks).
@@ 717,8 722,6 @@ Ziele:
- Sie kennen Eigenschaften von Systemen zur Erkennung von Knotenverlusten
- Sie wissen um selbststabilisierende Algorithmen
-**
-
*** Fehler: Definition
- *Fehler* :: Nicht-erwartetes Verhalten.
@@ 1355,70 1358,6 @@ Bewiesen für \(N > 2 m\).
# /Blockchains überlassen wir Ihrer Projektvorstellung./
-* Sensornetze
-**
-*** Sensornetze
-
-/Kommunizierende, selbstorganisierende Minirechner./
-
-Ziele:
-
-- Sie kennen die zentralen Herausforderungen für Sensornetze.
-
-# TODO: Problem in Sicherheit: Sensorknoten sind meist um viele Größenordnungen schwächer als Angreifer. Das bringt uns zurück zu p2p-Netzen.
-
-# TODO: Koordinator-Wahl mit Bully-Algorithmus tauglich? (höchste ID)
-
-*** Mote, Beispiel
-
-#+attr_latex: :width 0.5\linewidth
-[[./xbee.jpg]]
-
-/XBee Series 2 with Whip Antenna, with US Quarter.jpg, Mark Fickett [[https://creativecommons.org/licenses/by/3.0][CC BY 3.0]], [[https://commons.wikimedia.org/wiki/File:XBee_Series_2_with_Whip_Antenna,_with_US_Quarter.jpg][wikimedia]]./
-
-Daten (XBee ZigBee (S2C)):
-
-- Stromverbrauch: 1μA (schlafend) bis 59mA (sendend)
-- Drahtlose Bandbreite: 250kbit/s
-
-*** Herausforderungen
-
-- Energie sparen: Jahre mit Batterie
-- Fehlertoleranz: Ausfall vieler Knoten erwartet
-- Selbstorganisation (Kommunikation und Organisation, mobil)
-- Zeitsynchronisierung (nach Schlaf!)
-- Sicherheit: Angreifer haben mehr Energie!
-
-*** Energie
-
-- Faktor 50000 zwischen Verbrauch bei Aktivität und Schlaf!
-- Algorithmen optimieren
-- Kommunikation ist teuer
-- Daten sammeln, zusammenfassen, von gewähltem Knoten weiterleiten lassen
-- Sender durchwechseln
-
-*** Selbstorganisation
-
-- Ausbringung ohne Setup → Messgeräte in Waldgebiet
-- Daten weiterleiten → größere Reichweite
-- Beweglich: Optimierung der Position
-- Mit oder ohne Basisstation
-
-*** Sicherheit
-
-- Ein Laptop hat mehr Energie als das gesamte Netzwerk
-- neue Bedrohungsszenarien → Mechanismen, die mit wenig lokaler Leistung auskommen
-
-**
-*** Zusammenfassung Sensornetze
-
-Zentrale Herausforderungen:
-
-- Energie
-- Fehlertoleranz
-- Selbstorganisation
-- Zeit
-- Sicherheit
* TODO Sicherheit :noexport:
**
@@ 1452,7 1391,6 @@ Ziele:
- Erkennung: Vollständigkeit, Korrektheit
- Selbststabilisierung
- Konsens: Byzantinische Generäle
-- Sensornetze: Energie, Selbstorganisation, Sicherheit
*** Fragen für die Prüfung? :noexport:
M vorlesung-7-sicherheit/vorlesung-7-sicherheit.org +96 -17
@@ 2,6 2,7 @@
#+options: toc:nil H:3 ^:nil todo:nil title:nil
#+PROPERTY: header-args :exports code
+#+TAGS: noexport(n)
* Setup :B_ignoreheading:
:PROPERTIES:
@@ 54,7 55,7 @@ nil
#+latex: \LARGE \centering \(\ddot \smile\)
****
- Heute: *Sicherheit (danach Rückblick)*.
+ Heute: *Sensornetze und Sicherheit*.
**
@@ 81,14 82,78 @@ Distributed Systems - An Algorithmic App
*** ☺ Ablauf heute
+ - Sensornetze
- Sicherheit
- : --- PAUSE 14:15 ---
+
+* Sensornetze
+**
+*** Sensornetze
+
+/Kommunizierende, selbstorganisierende Minirechner./
+
+Ziele:
+
+- Sie kennen die zentralen Herausforderungen für Sensornetze.
+
+# TODO: Problem in Sicherheit: Sensorknoten sind meist um viele Größenordnungen schwächer als Angreifer. Das bringt uns zurück zu p2p-Netzen.
+
+# TODO: Koordinator-Wahl mit Bully-Algorithmus tauglich? (höchste ID)
+
+*** Mote, Beispiel
+
+#+attr_latex: :width 0.5\linewidth
+[[./xbee.jpg]]
+
+/XBee Series 2 with Whip Antenna, with US Quarter.jpg, Mark Fickett [[https://creativecommons.org/licenses/by/3.0][CC BY 3.0]], [[https://commons.wikimedia.org/wiki/File:XBee_Series_2_with_Whip_Antenna,_with_US_Quarter.jpg][wikimedia]]./
+
+Daten (XBee ZigBee (S2C)):
+
+- Stromverbrauch: 1μA (schlafend) bis 59mA (sendend)
+- Drahtlose Bandbreite: 250kbit/s
+
+*** Herausforderungen
- - Rückblick und Klausurvorbereitung
+- Energie sparen: Jahre mit Batterie
+- Fehlertoleranz: Ausfall vieler Knoten erwartet
+- Selbstorganisation (Kommunikation und Organisation, mobil)
+- Zeitsynchronisierung (nach Schlaf!)
+- Sicherheit: Angreifer haben mehr Energie!
+
+*** Energie
+
+- Faktor 50000 zwischen Verbrauch bei Aktivität und Schlaf!
+- Algorithmen optimieren
+- Kommunikation ist teuer
+- Daten sammeln, zusammenfassen, von gewähltem Knoten weiterleiten lassen
+- Sender durchwechseln
+
+*** Selbstorganisation
+
+- Ausbringung ohne Setup → Messgeräte in Waldgebiet
+- Daten weiterleiten → größere Reichweite
+- Beweglich: Optimierung der Position
+- Mit oder ohne Basisstation
+
+*** Sicherheit
+
+- Ein Laptop hat mehr Energie als das gesamte Netzwerk
+- neue Bedrohungsszenarien → Mechanismen, die mit wenig lokaler Leistung auskommen
+
+**
+*** Zusammenfassung Sensornetze
+
+Zentrale Herausforderungen:
+
+- Energie
+- Fehlertoleranz
+- Selbstorganisation
+- Zeit
+- Sicherheit
+
* ☺ Sicherheit
**
-*** Sicherheit
+*** Sicherheit :noexport:
/Kommunikation über unzuverlässige Infrastruktur./
@@ 130,7 195,7 @@ Kernziel:
- Sde epgellel mrrelqdcbtjdcbe Dsteljecgq ulh Geaelksßlsbkel.
- Sde göllel edl Gebedkldq dl hep Gpunne surtedjel.
-*** Einzelziele:
+*** Ziele
- Sie kennen übliche Angriffe.
- Sie verstehen den Unterschied zwischen secret key und public key Kryptographie.
@@ 192,12 257,21 @@ Entropie 75 sind etwa 12 /zufällige/ Zeichen oder 6 /zufällige/ Wörter.
[[file:letterblock-diceware-back.png]]
+*** Zusammenfassung
+
+
+- nie völlig vertraulich
+- nutzlos — und schwierig
+- Sichere Passwörter!
+
** Server Sicher aufsetzen
*** Server Sicher Aufsetzen
Damit Sie das vermeiden können:
+#+latex: \vspace{1cm}
+
#+begin_quote
„IT des Deutschen Bundestages fremdkontrolliert. Oppositionsabgeordnete ratlos.“ — https://www.draketo.de/it-des-bundestages-fremdkontrolliert-abgeordnete-ratlos
#+end_quote
@@ 309,7 383,7 @@ Internet | DMZ
- BSI-Empfehlungen: https://www.bsi.bund.de/DE/Themen/Unternehmen-und-Organisationen/Informationen-und-Empfehlungen/Empfehlungen-nach-Angriffszielen/Server/server_node.html
-* Σ Angriffe
+* Σ Angriffe :noexport:
**
*** Arten von Angriffen
@@ 325,7 399,7 @@ Internet | DMZ
- 2012: [[https://arstechnica.com/information-technology/2012/04/rise-of-ics-forever-day-vulnerabiliities-threaten-critical-infrastructure/][Rise of “forever day” bugs in industrial systems threatens critical infrastructure]][fn:3]
- 2017: [[https://boingboing.net/2017/05/09/management-engine.html][now all our computers are broken]][fn:4]
-* ☺ Verschlüsselung
+* ☺ Verschlüsselung :noexport:
**
*** Verschlüsselung
@@ 459,7 533,7 @@ e &=& 103 \text{ ; } (103 \cdot 7) mod 1
/„Ist ein händischer Verschiebe-Code mit Public-Key möglich?“/
-* ☺ Hash
+* ☺ Hash :noexport:
**
*** Hash - Inhalt Identifizieren oder Integrität prüfen
@@ 737,9 811,9 @@ gpg --verify example-sign.txt.asc 2>&1
*** Verbesserungen für E-Mails
-- pEp: Pretty Easy Privacy: https://prettyeasyprivacy.com/
- - Verschlüsselt Betreff und andere Header (sind im Body!).
- - Vergleich: Cypherpunk remailer → https://en.wikipedia.org/wiki/Cypherpunk_anonymous_remailer
+# - pEp: Pretty Easy Privacy: https://prettyeasyprivacy.com/
+# - Verschlüsselt Betreff und andere Header (sind im Body!).
+# - Vergleich: Cypherpunk remailer → https://en.wikipedia.org/wiki/Cypherpunk_anonymous_remailer
- Autocrypt: https://autocrypt.org/
- Schlüssel via Header mitschicken: Sender und Empfänger
- Peer-state Header
@@ 879,6 953,8 @@ Resulting secret: D'Artagnan
- Methode: \\
[[https://en.wikipedia.org/wiki/Polynomial_interpolation][en.wikipedia.org/wiki/Polynomial_interpolation]]
+/Ungelöst: wie prüfe ich, ob splits korrekt sind, ohne Zugriff auf die Originaldaten zu haben?/
+
* Schluss
**
@@ 886,16 962,19 @@ Resulting secret: D'Artagnan
#+latex: \scriptsize
+- *Sensornetze*: Energie, Selbstorganisation, Sicherheit
- *Passwortgenerator*! Oder diceware.
-- *Angriffe* von Lauschen bis Überlast (DoS) und Verstellen. MITM und Malware.
-- *Symmetrische* Verschlüsselung → gleicher Schlüssel. Billiger.
-- *Public-key*: Öffentlicher Teil eines Schlüsselpaares. Löst Schlüsselaustausch.
-- *Hash* Identifiziert oder sichert Integrität.
- - \scriptsize *Geburtstagsangriff*: 85% Kollisions-Wahrscheinlichkeit hier im Raum.
- - \scriptsize *Salzen* Sie Ihre Passworthashes.
- *PGP und SSL*: Public key → symmetric session key.
- *Shamir's Secret Sharing*: Brauchen k von N zur Rekonstruktion.
+# - *Angriffe* von Lauschen bis Überlast (DoS) und Verstellen. MITM und Malware.
+# - *Symmetrische* Verschlüsselung → gleicher Schlüssel. Billiger.
+# - *Public-key*: Öffentlicher Teil eines Schlüsselpaares. Löst Schlüsselaustausch.
+# - *Hash* Identifiziert oder sichert Integrität.
+# - \scriptsize *Geburtstagsangriff*: 85% Kollisions-Wahrscheinlichkeit hier im Raum.
+# - \scriptsize *Salzen* Sie Ihre Passworthashes.
+
+
**
*** Fragen für die Prüfung? :noexport:
A => vorlesung-7-sicherheit/xbee.jpg +0 -0