31 files changed, 550 insertions(+), 405 deletions(-)

M vorlesung-0-einfuehrung/architecture-event-based.png
M vorlesung-0-einfuehrung/architecture-layered.png
M vorlesung-0-einfuehrung/architecture-object-based.png
M vorlesung-0-einfuehrung/chord-network-schema.png
M vorlesung-0-einfuehrung/cloud-orga.png
M vorlesung-0-einfuehrung/cluster.png
M vorlesung-0-einfuehrung/communication-types.png
M vorlesung-0-einfuehrung/configuration-two-layers.png
M vorlesung-0-einfuehrung/dispatcher-worker-model.png
M vorlesung-0-einfuehrung/distributed-transactions.png
M vorlesung-0-einfuehrung/ex-2-layer.png
M vorlesung-0-einfuehrung/message-broker.png
M vorlesung-0-einfuehrung/message-oriented-middleware.png
M vorlesung-0-einfuehrung/middelware-model.png
M vorlesung-0-einfuehrung/middleware.png
M vorlesung-0-einfuehrung/osi-model.png
M vorlesung-0-einfuehrung/overlay-network-metrics.pdf
M vorlesung-0-einfuehrung/pipeline-zmq.png
M vorlesung-0-einfuehrung/publish-subscribe-zmq.png
M vorlesung-0-einfuehrung/rpc-detail.png
M vorlesung-0-einfuehrung/rpc-schema.png
M vorlesung-0-einfuehrung/vorlesung-0-einfuehrung.org
M vorlesung-1-p2p/vorlesung-1-p2p.org
M vorlesung-2-koordination/vorlesung-2-koordination.org
M vorlesung-3-algorithmen/_minted-vorlesung-3-algorithmen/default.pygstyle
M vorlesung-3-algorithmen/vorlesung-3-algorithmen.org
M vorlesung-4-datenbanken/vorlesung-4-datenbanken.org
M vorlesung-5-koordination-konsens-sensornetze/_minted-vorlesung-5-koordination-konsens-sensornetze/default.pygstyle
M vorlesung-5-koordination-konsens-sensornetze/vorlesung-5-koordination-konsens-sensornetze.org
M vorlesung-7-sicherheit/vorlesung-7-sicherheit.org
A => vorlesung-7-sicherheit/xbee.jpg
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