Initial commit

This commit is contained in:
Valentin Brandl 2018-10-13 13:23:37 +02:00
commit 1ad2f0e3ab
No known key found for this signature in database
GPG Key ID: 30D341DD34118D7D
32 changed files with 2541 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
build

32
Makefile Normal file
View File

@ -0,0 +1,32 @@
.PHONY: default clean
MD_SOURCES=$(shell find . -name '*.md' -not -path "./templates/*")
HTML_TARGETS=$(MD_SOURCES:%.md=build/%.html)
PDF_TARGETS=$(MD_SOURCES:%.md=build/%.pdf)
DOT_SOURCES=$(shell find . -name '*.dot' -not -path "./templates/*")
DOT_TARGETS=$(DOT_SOURCES:%.dot=build/%.png)
TEX_SOURCES=$(shell find . -not -path "./templates/*" -name '*.tex')
TEX_TARGETS=$(TEX_SOURCES:%.tex=build/%.pdf)
default: $(DOT_TARGETS) $(HTML_TARGETS) $(PDF_TARGETS) $(TEX_TARGETS)
build/%.html: %.md
@mkdir -p $$(dirname $@)
pandoc -s --mathjax --template ./templates/mindoc.html --toc --toc-depth=2 -o $@ $<
build/%.pdf: %.md
@mkdir -p $$(dirname $@)
pandoc --resource-path=$$(dirname $@) --template ./templates/eisvogel.tex --toc --toc-depth=2 -o $@ $<
build/%.png: %.dot
@mkdir -p $$(dirname $@)
dot -Tpng -o $@ $<
build/%.pdf: %.tex
@mkdir -p $$(dirname $@)
latexmk -pdf -outdir=$$(dirname $@) $<
clean:
rm -r build

10
index.md Normal file
View File

@ -0,0 +1,10 @@
---
title: My Knowledge Wiki
subtitle: >
Things to know, learn and remember
---
## University
- [Diskrete Mathematik](school/di-ma)
- [Einführung in die Kryptographie](school/intro-crypto)
- [Netzsicherheit 1](school/netsec1)

9
school/di-ma.md Normal file
View File

@ -0,0 +1,9 @@
---
title: Diskrete Mathematik
subtitle: >
Notizen und Mitschrift zur Vorlesung Diskrete Mathematik
---
- [2018-10-09 Intro](di-ma/20181009_1-intro)
- [2018-10-09 Kombinatorik](di-ma/20181009_2-kombinatorik)
- [2018-10-10 Binomialkoeffizient](di-ma/20181010_1-binomialkoeffizient)

View File

@ -0,0 +1,24 @@
digraph undirected {
edge [ arrowhead="none" ];
node [ shape="circle" ];
{
rank=same;
2;
4;
}
{
rank=same;
3;
}
{
rank=same;
1;
5;
}
1 -> 2;
3 -> 2;
3 -> 4;
2 -> 4;
4 -> 5;
5 -> 6;
}

View File

@ -0,0 +1,56 @@
---
title: Intro Veranstalting
date: 2018-10-09
---
# Organisatorisches
## Moodle
Passwort: `gauss`
## Übungen
- Bis zu 10% Bonus für Prüfung
- Bearbeitung von Dienstag bis Dienstag
- Abgabe in Kästen in NA?
- 3er Gruppen erlaubt
- Anmeldung ab 11.10. 12:00 Uhr
# Themen
1. Kombinatorik
2. Graphentheorie
3. Zahlentheorie/Algebra
## Beispiel zu 1.
### Gegeben
$n$ Bälle
$m$ Urnen
### Frage
Wieviele Möglichkeiten gibt es, die Bälle auf die Urnen zu verteilen?
#### Nebenbedingungen
1. Bälle/Urnen sind (nicht) Unterscheidbar
2. Mindestens in jeder Urne 1 Ball (surjektiv)
3. Höchstens 1 Ball pro Urne (injektiv)
4. Genau 1 Ball je Urne
## Beispiel zu 2.
![Ungerichteter Graph](./20181009-graph1.png)
### Gegeben
Ungerichteter Graph G
### Frage
Für 2 Knoten aus G. Was ist der kürzeste Weg zwischen den Knoten?

View File

@ -0,0 +1,238 @@
---
title: Kombinatorik
date: 2018-10-09
---
# Kombinatorik
## Elementare Zählprobleme und Grundlegende Regeln
### Beispiel
#### Gegeben
- 3 elementige Menge $M = \{1, 2, 3\}$
#### Frage
Wie viele Möglichkeiten gibt es, 2 Elemente azs M zu ziehen?
#### Antwort
It depends
--- | geordnet | ungeordnet
--- | --- | ---
mit zurücklegen | A:<br>$(1,1),(1,2),(1,3)$<br>$(2,1),(2,2),(2,3)$<br>$(3,1),(3,2),(3,3)$ | D:<br>$\{1,1\},\{1,2\}\{1,2\}$<br>$\{2,2\},\{3,2\}$<br>$\{3,3\}$
ohne zurücklegen | B:<br>$(1,2),(1,3)$<br>$(2,1),(2,3)$<br>$(3,1),(3,2)$ | C:<br>$\{1,2\},\{1,3\}$<br>$\{2,3\}$<br>
Wie viele Möglichkeiten gibt es allgemein, aus einer $n$-elementingen Menge $k$ elemente zu ziehen?
## *Zuerst:* Einfache Grundregeln
### Summenregel
Seien $S$, $T$ endliche Mengen, disjunkt, d.h. $S \cap T = \emptyset$ (Notation $S \dot\cup T$, disjunkte Vereinigung),
dann gilt
$$
| S \dot\cup T | = | S | + | T |
$$
Allgemeiner: Gegeben $S_1, S_2, ... S_n$, endliche, disjunkte Mengen, dann gilt
$$
| \dot\cup^n_{i=1} S_i | = | S_1 | + | S_2 | + ... + | S_n | = \sum\limits^n_{i=1} | S_i |
$$
### Produktregel
Seien $S$, $T$ endliche Mengen, dann gilt
$$
| S \times T | = | S | \cdot | T |
$$
wobei
$$
S \times T = \{(s,t) \mid s \in S, t \in T \}
$$
Allgemeiner: Gegeben $S_1, S_2, ... S_n$ endliche Mengen, dann gilt
$$
\vert S_1 \times S_2 \times ... S_n \vert = \vert S_1 \vert \cdot \vert S_2 \vert \cdot ... \vert S_n \vert
$$
#### Beispiel
$$
S_1, ..., S_n = \{0, 1\}, n = 64 \\
\vert S^n \vert = \vert \{0,1\}^{64} \vert = 2^{64}
$$
Anzahl der Zustände eines 64-bit Registers.
### Gleichheitsregel
Seien $S$, $T$ endliche Mengen und $f: S \to T$ eine bijektive Abbildung, dann gilt
$$
\vert S \vert = \vert T \vert
$$
(eigentlich: Definition von "gleich groß")
Allgemeiner: Seien $S$, $T$ endliche Mengen und $f: S \to T$ eine $k$ auf $1$ Abbildung, d.h. $\forall t \in T$ gilt
$\vert\{s \in S \mid f(s) = t \}\vert = \vert f^{-1}(t) \vert = k$ dann gilt
$$
\vert S \vert = k \cdot \vert T \vert
$$
Damit können wir nun die Fälle A - D untersuchen.
### Fall A
In Fall A zählen wir $k$-Tupel mit Komponenten aus der $n$-elementigen Menge $M$, d.h. Elemente aus
$M \times M \times ... M = M^k$
Aus der Produktregel folgt: Es gibt $\vert M \vert^k = n^k$ Möglichkeiten
#### Satz
Die Anzahl der $k$-Tupel mit Komponenten aus einer $n$-elementigen Menge ist
$$
n^k\\
\Box
$$
### Fall B
Wir ziehen aus einer $n$-elementigen Menge ohne zurücklegen
- Für die erste Komponente haben wir $n$ Möglichkeiten
- Für die zweite Komponente haben wir $n - 1$ Möglichkeiten
- usw.
D.h. insgesamt haben wir $n(n-1)(n-2)...(n-k+1) = n^{\underline{k}}$ Möglichkeiten ($k$-te absteigende Faktorielle).
#### Satz
Die Anzahl der $k$-Tupel mit paarweise verschiedenen Komponenten aus einer $n$-elementigen Menge ist
$$
n^{\underline{k}} = n\cdot(n-1)\cdot...\cdot(n-k+1)
$$
**Wichtiger Spezialfall**:
$$
n = k
$$
Dann ist das nichts anderes als die Anzahl der Permutationen von $n$ Elementen
##### Beispiel
$$
n = 3 \\
M = \{1,2,3\}
$$
Mögliche Permutationen: $(123), (132), (213), (231), (312), (321)$
$3! = 3\cdot2\cdot1$ Möglichkeiten
$n! = n\cdot(n-1)\cdot...\cdot2\cdot1$ Möglichkeiten
**Bemerkung:** Es gilt
$$
n^{\underline{k}} = \frac{n!}{(n-1)!}
$$
### Fall C
Wir zählen die Anzahl der $k$-elementigen Teilmengen einer $n$-elementigen Menge.
Von fall B zu Fall c durch ignorieren der Reihenfolge.
Beachte die Abbildung die einem $k$-Tupel mit paarweise verschiedenen Komponenten $(i_1, ..., i_k)$ die $k$-elementige
Teilmenge $\{i_1, ..., i_k\}$ zuordnet. Diese Abbildung ist $k!$ - auf $-1$ da jede $k$-elementige Teilmenge auf $k!$
Arten angeordnet werden kann.
Damit folgt (Gleichheitsregel)
#### Satz
Die Anzahl der $k$-elementigen Teilmengen einer $n$-elementigen Menge ist
$$
\binom{n}{k} = \frac{n^{\underline{k}}}{k!} = \frac{n!}{k!(n-k)!}
$$
$\binom{n}{k}$ ist der Binomialkoeffizient.
##### Beispiel
$$
n = 3, k = 2 \\
\binom{3}{2} = \frac{3!}{2! \cdot 1!} = \frac{3\cdot2}{2} = 3
$$
### Fall D
Hier zählen wir Multimengen. In einer Multimenge können Elemente mehrfach vorkommen, mit Vielfachheit.
In $k$-elementigen Multimengen addieren sich die Vielfachkeiten zu $k$.
Wir wollen die Gleichheitsregel anwenden. Dazu folgende Kodierung einer Multimenge:
- Zwei Symbole `*` und `|`
- Wir schreiben $t$ Sterne `*` falls ein Element $i$ Vielfachkeit $t$ hat
- Übergang von $i$ zu $i-1$ wird gekennzeichnet durch `|`
#### Beispiel 1
$M = \{1,2,3,4,5\}$ und Multimenge $S = \{1,1,1,3,3,4,4,4\}$ wird kodiert als
```
*** | | ** | *** |
```
#### Beispiel 2
$T = \{1,1,5,5\}$ wird kodiert als
```
** | | | | **
```
Jede $k$-elementige Multimenge einer $n$-elementigen Menge entspricht eindeutig einer Sequenz aus $k$ `*` Symbolen und
$n-1$ `|` Symbolen.
Jede Sequenz von $k$ `*` Symbolen und $n-1$ `|` Symbolen entspricht genau einer $k$-elementigen Multimenge.
Abbildung Multimenge $\to$ Kodierungssequenz ist bijektiv.
Wegen der Gleichheitsregel können wir also genausogut die Anzahl der möglichen Kodierungssequenzen zählen.
Kodierungssequenz hat die Länge $(n-1)+k$ und an $k$ Stellen steht ein `*`. Dann gibt es genau $\binom{n-1+k}{k}$
solcher Sequenzen.
#### Satz
Die Anzahl der $k$-elementigen Multimengen einer $n$-elementigen Menge ist
$$
\binom{n-1+k}{k}
$$
##### Beispiel
25 Eissorten. Wie viele mögliche Eisbecher mit 5 Kugeln gibt es?
**Antwort**:
$$
n = 25, k = 5 \\
\binom{25-1+5}{5} = \binom{29}{5} = 118755
$$

View File

@ -0,0 +1,22 @@
digraph personen {
edge [ arrowhead="none" ];
node [ shape="circle" ];
1;
{
rank=same;
2;
3;
}
{
rank=same;
4;
5;
}
1 -> 2;
1 -> 3;
1 -> 4;
1 -> 5;
4 -> 5;
5 -> 3;
2 -> 3;
}

View File

@ -0,0 +1,223 @@
---
title: Binomialkoeffizient
date: 2018-10-10
---
# Wiederholung
$n$ Elemente, $k$ mal ziehen:
--- | geordnet | ungeordnet
:---: | :---: | :---:
mit zurücklegen | $n^k$ | $\binom{n+k-1}{k}$
ohne zurücklegen | $n^{\underline{k}}$ | $\binom{n}{k} = \frac{n!}{k!\cdot(n-k)!}$
## Beispiel a
**Frage**: Wie viele 10-elementige Teilmengen von der 100-elementigen Menge $M = \{1,2,...100\}$
1. gibt es?
2. die entweder die 1 oder die 2 enthalten gibt es?
### Zu 1)
$$
\binom{100}{10}
$$
### Zu 2)
Zwei Teile:
* Die Anzahl der 10 elementingen Teilmengen, die 1 aber nicht 2 enthalten
* Die Anzahl der 10 elementingen Teilmengen, die 2 aber nicht 1 enthalten
In beiden Fällen gibt es $\binom{98}{9}$ Möglichkeiten.
Die Fälle sind disjunkt $\Rightarrow$ es gibt $2 \cdot \binom{98}{9}$ Möglichkeiten
## Beispiel b
Wahl mit 100 Wahlberechtigten und 2 Kandidaten. Jede Stimme hat 4 Möglichkeiten (Kandidat 1, Kandidat 2, enthalten oder
ungültig).
**Frage**: Wie viele Ergebnisse kann es geben?
Dies entspricht der Anzahl der 100 elementigen Multimengen einer 4-elementigen Menge
$$
\binom{100+4-1}{100} = \binom{103}{100} = 353702
$$
# Eigenschaften von Binomialkoeffizienten
**Satz**: Seien $n, k \in \mathbb{N}$ $k \leq n$ dann gilt
1. $\binom{n}{k} = \binom{n}{n-k}$
2. $\binom{n}{k} = \binom{n-1}{k} + \binom{n-1}{k-1}$
3. $\binom{n}{k} = \sum\limits^k_{l=0} \binom{n}{l} \cdot \binom{n}{k-l}$
4. $(a+b)^n = \sum\limits^n_{k=0} \binom{n}{k} \cdot a^k \cdot b^{n-k}$
## Beweis
Wir wollen kombinatorische Beweise geben. Wir zählen auf beiden Seiten der Gleichung die gleichen Objekte aber auf
verschiedene Weise.
**zu 1)** Sei $M$ eine $n$-elementige Menge
* $\binom{n}{k}$ zählt die $k$-elementigen Teilmengen von $M$
* $\binom{n}{n-k}$ zählt die $(n-k)$-elementigen Teilmengen von $M$
Wir betrachten die Abbildung
$$
f: \text{Teilmenge von M} \to \text{Teilmenge von M} \\
f(A) = M \setminus A = \{x \in M \mid x \notin A\} = A^{\mathrm{C}}
$$
Es gilt:
1. $\vert A \vert = k \Rightarrow \vert f(A) \vert = n-k$
2. $f$ ist bijektiv (die Umkehrabbildung ist $f$ selbst)
Damit folgt aus dem Gleichheitsprinzip
$$
\binom{n}{k} = \binom{n}{n-k}
$$
**zu 2)** Sei $M = \{1, ... n\}$ und $\mathbb{T} = \{A \subseteq M \mid \vert A \vert = k\}$
Es gilt $\vert\mathbb{T}\vert = \binom{n}{k}$
Wir teilen die Menge $\mathbb{T}$ auf in zwei disjunkte Teile
$$
\mathbb{T}_1 = \{ A \subseteq M \mid \vert A \vert = k, n \notin A\} \\
\mathbb{T}_2 = \{ A \subseteq M \mid \vert A \vert = k, n \in A\}
$$
Dann gilt (Summenregel)
$$
\binom{n}{k} = \vert \mathbb{T} \vert = \vert \mathbb{T}_1 \vert + \vert \mathbb{T}_2 \vert
$$
* $\vert \mathbb{T}_1 \vert = \binom{n-1}{k}$, denn Elemente aus $\mathbb{T}_1$ entsprechen $k$-elementigen Teilmengen
aus $M^\prime = \{1,... n-1\}$
* $\vert \mathbb{T}_2 \vert = \binom{n-1}{k-1}$, denn für jedes $A \in \mathbb{T}_2$, d.h.
$A \subseteq M, \vert A \vert = k$ und $n \in A$ betrachte
$$
A^\prime = A \setminus \{n\}
$$
$A^\prime$ ist eine $(k-1)$-elementige Teilmenge von $M^\prime = \{1,... n-1\}$
**zu 3)** Seien $A$, $B$ Mengen mit $\vert A \vert = n$ und $\vert B \vert = m$ mit $A \cap B = \emptyset$ (disjunkt)
$\binom{n+m}{k}$ ist die Anzahl der $k$-elementigen Teilmengen von $A \dot\cup B$ ($\vert A \dot\cup B \vert = n + m$).
Wir teilen die $k$-elementigen Teilmengen von $A \dot\cup B$ in $k+1$ disjunkte Fälle auf
** hier wäre ein Venn Diagramm. Mach das mal
**Fall l** (für $l \in \{0,...k\}$)
Betrachte die $k$-elementigen Teilmengen $S$ von $A \cup B$, so dass $\vert A \cap S \vert = l$
($\Leftrightarrow \vert B \cap S \vert = k - l$), d.h. wir betrachten die Anzahl der $l$-elemeniigen Teilmengen von $A$
und der $(k-l)$-elementigen Teilmenge von $B$.
Mit der Produktregel ergeben sich $\binom{n}{l} \cdot \binom{m}{k-l}$.
Mit der Summenformel ergibt sich
$$
\binom{n+m}{k} = \sum\limits^k_{l=0} \binom{n}{l} \cdot \binom{m}{k-l}
$$
**zu 4)**
$$
(a+b)^n = (a+b) \cdot (a+b) \cdot ... (a+b)
$$
Beim Ausmultiplizieren "entscheiden" wir uns für jede der $n$ Klammern for $a$ oder $b$. Für einen Term
$a^k\cdot b^{n-k}$ wählen wir aus den $n$ Klammern genau $k$-mal das $a$. Damit haben wir genau $\binom{n}{k}$
Möglichkeiten den Term $a^k \cdot b^{n-k}$ zu erhalten.
# Kombinatorische Prinzipien
## Schubfachprinzip
**Beispiel**: Wir haben 9 Schubladen und 10 Objekte, die wir auf die Schubladen verteilen wollen. Dann gibt es eine
Schublade, in der mindestens 2 Objekte landen.
### Satz
Seien $X$, $Y$ endliche Mengen mit $\vert X \vert \geq \vert Y \vert + 1$ und $f: X \to Y$ eine Abbildung dann
$$
\exists y \in Y \text{ so dass } \vert f^{-1}(y) \vert = \vert \{x\in X \mid f(x) = y\} \vert \geq 2
$$
### Beweis
Statt $A \Rightarrow B$ zeigen wir $\lnot B \Rightarrow \lnot A$
Sei $f: X \to Y$ gegeben so dass $\forall y \in Y$ gilt $\vert f^{-1}(y) \vert \leq 1$, dann gilt
$$
\vert X \vert = \sum\limits_{y \in Y} \vert f^{-1}(y) \vert \leq \sum\limits_{y \in Y} 1 = \vert Y \vert
$$
Allgemeiner gilt: Seien $X$, $Y$ endliche Mengen und $f: X \to Y$ eine Abbildung, dann $\exists y \in Y$ so dass
$$
\vert f^{-1}(y) \vert \geq \left\lceil \frac{\vert X \vert}{\vert Y \vert} \right\rceil
$$
($\lceil \cdot \rceil$ ist die obere Gaussklammer, das heißt die kleinste natürliche Zahl größer als $x$).
**Beispiel 1**: *Gegeben*: $n$ Personen $1,...n$ mit Bekanntschaftsrelationen, darstellbar als Graph mit Personen als
Konten und Kanten zwischen Knoten, falls sich die Personen kennen.
![Personen Graph](./20181010-personen.png)
* 1 kennt 4 Personen
* 2 kennt 2 Personen
* 3 kennt 3 Personen
* 4 kennt 2 Personen
* 5 kennt 3 Personen
Es gibt (mindestens) 2 Personen, die die gleiche Anzahl von Personen kennen. Dies gilt **immer**.
### Satz
Unter $n$ Personen gibt es immer mindestens 2, die die selbe Anzahl von Personen kennen.
### Beweis
Wir wollen das Schubfachprinzip nutzen. Für die Personen $P = \{1, ... n\}$ betrachte die Abbildung
$f: P \to \{0, ... n-1\}$, die jeder dieser Personen die Anzahl der Personen, die sie kennt, zuweist.
Problem: $\vert P \vert = n = \vert \{1, ... n\} \vert$
Betrachte 2 Fälle:
1. Es gibt eine Person, die niemanden kennt, das heißt $\exists i \in P$ so dass $f(i) = 0$. Dann gilt
$\forall j \in P \neq n - 1$ da "kennen" symmetrisch ist. Damit ist $f(P) \subseteq \{0, ... n-2\}$ und das
Schubfachprinzip ist anwendbar.
2. Es gibt keine Person, die niemanden kennt, dann $f(P) \subseteq \{1, ... n-1\}$ und auch hier ist das
Schubfachprinzip anwendbar.
$$
\Box
$$
**Beispiel 2**: In Bochum wohnen ca $350000$ Menschen, jeder Mensch hat zwischen $0$ und $150000$ Kopfhaare.
$\Rightarrow$ es gibt mindestens 2 Menschen in Bochum mit der gleichen Anzahl Haare.

8
school/intro-crypto.md Normal file
View File

@ -0,0 +1,8 @@
---
title: Einführung in die Kryptographie
subtitle: >
Notizen und Mitschrift zur Vorlesung Einführung in die Kryptographie
---
- [2018-10-11 Intro](intro-crypto/20181011_1-intro)
- [2018-10-11 Klassifikation, Kerckhoffs' Prinzip, Substitutionschiffre](intro-crypto/20181011_2-klassifikation)

View File

@ -0,0 +1,28 @@
digraph classification {
edge [ arrowhead="none" ];
1 [ label="Kryptologie" ];
2 [ label="Kryptographie" ];
3 [ label="Kryptoanalyse" ];
4 [ label="symmetrische\nChiffren" ];
5 [ label="asymmetrische\nChiffren" ];
6 [ label="Protokolle\n& Sonstiges" ];
{
rank=same;
2;
3;
}
{
rank=same;
4;
5;
6;
}
1 -> 2;
1 -> 3;
2 -> 4;
2 -> 5;
2 -> 6;
}

View File

@ -0,0 +1,26 @@
---
title: Intro
date: 2018-10-11
---
# Moodle
**Kursnummer**: 141022
**Passwort** : krypto1819
# Klausur
* 10% Bonus durch Übungen, nur wenn bestanden (>49%)
* Anmeldung im Prüfungsamt
## Hilfsmittel
* Taschenrechner
* 1 Seite handschriftlich
# Übungen
**Abgabe**: Donnerstag 12:14 Uhr
Handschriftlich oder LaTeX (Vorlage vorhanden)

View File

@ -0,0 +1,59 @@
---
title: Klassifikation, Grundlagen, Substitutionschiffre
date: 2018-10-11
---
# Klassifikation der "Kryptographie"
![Klassifikation](./20181011-classification.png)
## Anwendungen
* WhatsApp
* Auto
* Mensa Karte
* Medizinische Geräte
* Kreditkarten
* mobile Kommunikation
* IoT
* BitCoin
* Flugzeuge
* E-Mail
* (Schadsoftware)
# Grundlagen symmetrischer Chiffren
Einfache Ausgangssituation:
![Ausgangssituation](./20181011_situation.png)
* $e \widehat{=}$ Verschlüsselung oder Chiffrierung
* $d \widehat{=}$ Entschlüsselung oder Dechiffrierung
* $x \widehat{=}$ Klartext
* $y \widehat{=}$ Chiffrat
* $k \widehat{=}$ Schlüssel
* $\vert k \vert \widehat{=}$ Schlüsselraum
## Kerckhoffs' Prinzip
> Ein Kryptosystem muss auch dann sicher sein, wenn der Angreifer alle Deteils kennt, bis auf den Schlüssel.
Bei Verletzung der Prinzips: `Security by Obscurity`.
# Substitutionschiffre
* operiert auf Buchstaben
* Prinzip:
$$
A \to l \\
B \to d \\
C \to w \\
...
$$
**Beispiel**: $ABBA \to^e lddl$
## Angriffe
1. Häufigkeitsanalyse (Übung)
2. Vollständige Schlüsselsuche (Bruteforce): $\vert k \vert = 26! \approx 2^{88}$ Möglichkeiten

View File

@ -0,0 +1,51 @@
digraph situation {
rankdir=LR;
a [ label="Alice" shape="none" ];
b [ label="Bob" shape="none" ];
o [ label="Oscar" shape="none" ];
i [ label="unsicherer\nKanal" ];
e [ label="e" shape="box" ];
d [ label="d" shape="box" ];
g [ label="Gen" shape="box"];
1 [ style="invisible" shape="point" width=0 ];
2 [ style="invisible" shape="point" width=0 ];
3 [ style="invisible" shape="point" width=0 ];
4 [ style="invisible" shape="point" width=0 ];
{
rank=same;
a;
g;
}
{
rank=same;
e;
1;
}
{
rank=same;
d;
2;
}
{
rank=same;
i; o;
}
a -> e [ label="x" ];
e -> i [ label="y" ];
i -> d [ label="y" ];
d -> b [ label="x" ];
g -> 1 [ arrowhead="none" ];
1 -> e [ label="k" ];
1 -> 3 [ arrowhead="none" ];
3 -> 4 [ arrowhead="none"; penwidth=10; label="sicherer Kanal\n " ];
4 -> 2 [ arrowhead="none" ];
2 -> d [ label="k" ];
i -> o [ label="y" ];
}

View File

@ -0,0 +1,51 @@
digraph situation {
rankdir=LR;
a [ label="Alice" shape="none" ];
b [ label="Bob" shape="none" ];
o [ label="Oscar" shape="none" ];
i [ label="unsicherer\nKanal" ];
e [ label="e" shape="box" ];
d [ label="d" shape="box" ];
g [ label="Gen" shape="box"];
1 [ style="invisible" shape="point" width=0 ];
2 [ style="invisible" shape="point" width=0 ];
3 [ style="invisible" shape="point" width=0 ];
4 [ style="invisible" shape="point" width=0 ];
{
rank=same;
a;
g;
}
{
rank=same;
e;
1;
}
{
rank=same;
d;
2;
}
{
rank=same;
i; o;
}
a -> e [ label="x" ];
e -> i [ label="y" ];
i -> d [ label="y" ];
d -> b [ label="x" ];
g -> 1 [ arrowhead="none" ];
1 -> e [ label="k" ];
1 -> 3 [ arrowhead="none" ];
3 -> 4 [ arrowhead="none"; penwidth=10; label="sicherer Kanal\n " ];
4 -> 2 [ arrowhead="none" ];
2 -> d [ label="k" ];
i -> o [ label="y" ];
}

View File

@ -0,0 +1,99 @@
\documentclass[12pt,a4paper,german]{article}
\usepackage{url}
%\usepackage{graphics}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{epsfig}
\usepackage{paralist}
\geometry{left=2.0cm,textwidth=17cm,top=3.5cm,textheight=23cm}
%%%%%%%%%% Fill out the the definitions %%%%%%%%%
\def \name {Valentin Brandl} %
\def \matrikel {108018274494} %
\def \gruppe {VB} %
\def \uebung {1} %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DO NOT MODIFY THIS HEADER
\newcommand{\hwsol}{
\vspace*{-2cm}
\noindent \matrikel \quad \name \hfill Gruppe:\gruppe \\
% \noindent \pmatrikel \quad \pname \\
\begin{center}{\Large \bf L\"osung f\"ur \"Ubung \# \uebung}\end{center}
}
\begin{document}
%Import header
\hwsol
\section*{Aufgabe 1}
\begin{enumerate}[(a)]
\item
\begin{itemize}
\item Algorithmen sollen offengelegt werden, nur Schlüssel werden geheim gehalten
\item Es ist schwer, einen Algorithmus geheim zu halten
\item Prinzip def vielen Augen: ein öffentlicher Algorithmus wird ggf. analysiert und Schwachstellen gefunden
\end{itemize}
\item
\begin{itemize}
\item Kryptographie: Entwerfen von Algorithmen und Protokollen
\item Kryptoanalyse: Schwachstellen in existierenden Verfahren suchen
\end{itemize}
\item
\parbox{\linewidth}{\centering
\includegraphics[width=\textwidth]{20181011_situation.png}
}
Ein Angreifer (Eve) kann die ausgetauschten Nachrichten mitlesen und verändern
\item
\begin{itemize}
\item Schlüssel: $k$
\item Verschlüsselung $e(\cdot)$
\item Schlüsselraum $\#k = \vert k \vert$
\item Chiffrat $y$
\item Entschlüsselung $d(\cdot)$
\item Klartext $x$
\end{itemize}
\end{enumerate}
\section*{Aufgabe 2}
\begin{enumerate}[(a)]
\item $2^{128}$. Mit $2^{10} \approx 10^3 \to 2^{130} \approx 10^{39}$
\item
\begin{itemize}
\item 80 Eur pro ASIC
\item $10^6$ Eur Kapital
\item $7 \cdot 10^8 \frac{k}{s}$ Leistung
\end{itemize}
\begin{eqnarray*}
10^6 / 80 &=& 12500 \\
7 \cdot 10^8 \cdot 12500 &=& 8.75 \cdot 10^{12} \frac{k}{s} \\
\frac{2^{128}k}{8.75 \cdot 10^{12} \frac{k}{s}} &\approx{}& 3.89 \cdot 10^{25} s \\
&\approx{}& 1.23 \cdot 10^{18} y
\end{eqnarray*}
\item
\begin{eqnarray*}
24 h &=& 86400 s \\
\frac{2^{128}}{x} &=& 86400 \\
\frac{2^{128}}{86400} &=& x \\
x &\approx{}& 3.94 \cdot 10^{33} \text{ gesuchte $\frac{k}{s}$} \\
\frac{x}{12500} &\approx{}& 3.15 \cdot 10^{29} \text{ gesuchte $\frac{k}{s}$ pro ASIC} \\
\\
(7 \cdot 10^8) \cdot 2^n &\geq{}& 3.15 \cdot 10^{29} \\
n &\geq{}& 68.6 \approx 69 \text{ (Leistung muss sich 69 mal verdoppeln)} \\
69 * 18m &=& 1242m = 103.5 y
\end{eqnarray*}
In $103.5$ Jahren wäre man in der Lage alle $2^{128}$ Schlüssel innerhlab von 24h durch zu probieren.
\end{enumerate}
\end{document}

View File

@ -0,0 +1,67 @@
\documentclass[12pt,a4paper,german]{article}
\usepackage{url}
%\usepackage{graphics}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage{epsfig}
\usepackage{paralist}
\geometry{left=2.0cm,textwidth=17cm,top=3.5cm,textheight=23cm}
%%%%%%%%%% Fill out the the definitions %%%%%%%%%
\def \name {Vorname1 Nachname1} %
\def \matrikel {Matrikelnummer1} %
\def \pname {Vorname2 Nachname2} %
\def \pmatrikel {Matrikelnummer2} %
\def \gruppe {Gruppenkuerzel} %
\def \uebung {1} %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DO NOT MODIFY THIS HEADER
\newcommand{\hwsol}{
\vspace*{-2cm}
\noindent \matrikel \quad \name \hfill Gruppe:\gruppe \\
\noindent \pmatrikel \quad \pname \\
\begin{center}{\Large \bf L\"osung f\"ur \"Ubung \# \uebung}\end{center}
}
\begin{document}
%Import header
\hwsol
\section*{Aufgabe 1}
\begin{enumerate}[(a)]
\item Beispielantwort
\item Hier k\"onnte deine Antwort auf diese Teilaufgabe stehen.
\item Für das Beispiel gilt $b_1=2^4+1=17=(10001)_2$ und $b_2=2^4-1=15=(1111)_2$.
\end{enumerate}
\section*{Aufgabe 2}
Notation von mathematischen L\"osungen:
\begin{eqnarray*}
r_{0} &=& \beta^{K_{X}} \bmod n\\
r_{1} &=& \alpha^{K_{X}+1} = \alpha \cdot \alpha^{K_{n}} = \alpha \cdot r_{1} \bmod p\\
r_{2} &=& (a_{1}-d \cdot q_{1}) \cdot z_{E}^{-1} \bmod p-1 \Leftrightarrow d = (x_{1}-s_{1} \cdot o_{E}) \cdot r_{1}^{-1} \bmod p-1\\
\end{eqnarray*}
\section*{Aufgabe 3}
\begin{center}
\begin{tabular}{|c|c|c|c|}
\hline
Tabellenzeile & Tabellenzeile & Tabellenzeile & Tabellenzeile \\
\hline
e & f & g & h \\
\hline
i & j & k & l \\
\hline
m & n & o & p \\
\hline
\end{tabular}
\end{center}
\end{document}

View File

@ -0,0 +1,248 @@
\documentclass[12pt,a4paper,german]{article}
\usepackage{url}
%\usepackage{graphics}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{ngerman}
\usepackage{float}
\usepackage{diagbox}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{csquotes}
\usepackage{graphicx}
\usepackage{epsfig}
\usepackage{paralist}
\geometry{left=2.0cm,textwidth=17cm,top=3.5cm,textheight=23cm}
%%%%%%%%%% Fill out the the definitions %%%%%%%%%
\def \name {Valentin Brandl} %
\def \matrikel {108018274494} %
% \def \pname {Vorname2 Nachname2} %
% \def \pmatrikel {Matrikelnummer2} %
\def \gruppe {Gruppenkuerzel} %
\def \uebung {1} %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DO NOT MODIFY THIS HEADER
\newcommand{\hwsol}{
\vspace*{-2cm}
\noindent \matrikel \quad \name \hfill Gruppe:\gruppe \\
% \noindent \pmatrikel \quad \pname \\
\begin{center}{\Large \bf L\"osung f\"ur \"Ubung \# \uebung}\end{center}
}
\begin{document}
%Import header
\hwsol
\section*{Aufgabe 2}
\begin{enumerate}[(a)]
\item
\begin{eqnarray*}
A &\text{:}& 23 \to{} 0.02 \\
B &\text{:}& 5 \to{} 0.00 \\
C &\text{:}& 22 \to{} 0.02 \\
D &\text{:}& 8 \to{} 0.01 \\
E &\text{:}& 17 \to{} 0.02 \\
F &\text{:}& 2 \to{} 0.00 \\
G &\text{:}& 80 \to{} 0.07 \\
J &\text{:}& 66 \to{} 0.06 \\
K &\text{:}& 39 \to{} 0.04 \\
L &\text{:}& 47 \to{} 0.04 \\
M &\text{:}& 2 \to{} 0.00 \\
N &\text{:}& 17 \to{} 0.02 \\
O &\text{:}& 63 \to{} 0.06 \\
P &\text{:}& 80 \to{} 0.07 \\
Q &\text{:}& 62 \to{} 0.06 \\
R &\text{:}& 57 \to{} 0.05 \\
S &\text{:}& 136 \to{} 0.12 \\
T &\text{:}& 6 \to{} 0.01 \\
U &\text{:}& 57 \to{} 0.05 \\
V &\text{:}& 6 \to{} 0.01 \\
W &\text{:}& 76 \to{} 0.07 \\
X &\text{:}& 25 \to{} 0.02 \\
Y &\text{:}& 8 \to{} 0.01 \\
Z &\text{:}& 83 \to{} 0.08 \\
\text{\"A} &\text{:}& 43 \to{} 0.04 \\
\text{\"O} &\text{:}& 14 \to{} 0.01 \\
\text{\"U} &\text{:}& 28 \to{} 0.03 \\
\text{ß} &\text{:}& 18 \to{} 0.02 \\
sum &\text{:}& 1090
\end{eqnarray*}
\item
\begin{displayquote}
gründlich durchgecheckt steht sie da \\
und wartet auf den start - alles klar! \\
experten streiten sich um ein paar daten \\
die crew hat da noch ein paar fragen \\
doch der countdown läuft \\
\end{displayquote}
\item
\begin{tabular}{|c|c|}
\hline
von & zu \\\hline
A & f \\
B & ä \\
C & g \\
D & j \\
E & ö \\
F & x \\
G & n \\
J & i \\
K & m \\
L & c \\
M & ß \\
N & v \\
O & d \\
P & r \\
Q & a \\
R & l \\
S & e \\
T & ü \\
U & h \\
V & z \\
W & t \\
X & w \\
Y & p \\
Z & s \\
Ä & o \\
Ö & b \\
Ü & u \\
ß & k \\
H/I & q/y \\
\hline
\end{tabular}
Weder H noch I kommen im Ciphertext vor, daher ist es nicht möglich, die Substitution von H/I eindeutig zu
bestimmen. Da jedoch auch weder q noch y im Plaintext vorkommen, muss entweder $H \to q \text{ und } I \to y$
oder $H \to y \text{ und } I \to q$ gelten.
\item $30! = \vert \{A,B,...Z,\text{Ä},\text{Ö},\text{Ü},\text{ß}\} \vert!$
\item Name des Textes: Major Tom (völlig losgelöst) \\
Erscheinungsjahr: 1982
\end{enumerate}
\section*{Aufgabe 3}
\begin{enumerate}[(a)]
\item $2^{63} = 9,223,372,036,854,775,808$
\item $2^{63} * 0.03g = 276,701,161,105,643,260g \approx 276,701,161,106t$ \\
$277 \cdot 10^9 / 460 \cdot 10^6 \approx 602 \Rightarrow$ mehr als das 600-fache der jährlichen Reisernte
\item $2^{10} * 0.1mm = 102.4mm = 1.204m$
\item
\begin{eqnarray*}
2^n * 0.1mm &\geq{}& 1,000,000mm \\
2^n &\geq{}& 10000000 \\
n &\geq{}& 24
\end{eqnarray*}
Man muss das Blatt 24 mal falten.
\item
\begin{eqnarray*}
2^n * 0.1mm &\geq{}& 384,400,000,000mm \\
2^n &\geq{}& 3,844,000,000,000 \\
n &\geq{}& 42
\end{eqnarray*}
Man muss das Blatt 42 mal falten.
\item
\begin{eqnarray*}
2^n * 0.1mm &\geq{}& 9,460,730,472,580,800,000mm \\
2^n &\geq{}& 94,607,304,725,808,000,000mm \\
n &\geq{}& 67
\end{eqnarray*}
Man muss das Blatt 67 mal falten.
\end{enumerate}
\section*{Aufgabe 4}
\begin{enumerate}[(a)]
\item $2^n$
\item $\frac{2^n}{2}$
\item Gerechnet mit $1y = 365d$
\begin{figure}[h]
\begin{tabular}{|l|l|l|l|}
\hline
\diagbox{Case}{$n$} & 80 & 112 & 192 \\\hline
Worst Case & $2.50 * 10^8y$ & $1.08 * 10^{18}y$ & $1.30 * 10^{42}y$ \\\hline
Average Case & $1.25 * 10^8y$ & $5.38 * 10^{17}y$ & $6.50 * 10^{41}y$ \\\hline
\end{tabular}
\caption{GPU}
\end{figure}
\begin{figure}[h]
\begin{tabular}{|l|l|l|l|}
\hline
\diagbox{Case}{$n$} & 80 & 112 & 192 \\\hline
Worst Case & $5.81 * 10^7y$ & $2.49 * 10^{17}y$ & $3.02 * 10^{41}y$ \\\hline
Average Case & $2.90 * 10^7y$ & $1.25 * 10^{17}y$ & $1.51 * 10^{41}y$ \\\hline
\end{tabular}
\caption{Amazon Cloud}
\end{figure}
\begin{figure}[h]
\begin{tabular}{|l|l|l|l|}
\hline
\diagbox{Case}{$n$} & 80 & 112 & 192 \\\hline
Worst Case & $3.41 * 10^7y$ & $1.46 * 10^{17}y$ & $1.77 * 10^{41}y$ \\\hline
Average Case & $1.70 * 10^7y$ & $7.32 * 10^{16}y$ & $8.85 * 10^{40}y$ \\\hline
\end{tabular}
\caption{FPGA}
\end{figure}
\item Unter Anwendung der Erkenntnisse aus e):
\begin{eqnarray*}
n &=& 80 \\
n + w &=& 112 \\
w &=& 32 \\
x &=& \frac{2^{112} - 2^{80}}{r} \\
\end{eqnarray*}
\begin{itemize}
\item $r_{GPU} = 15.3 * 10^7 \frac{k}{s}$
\item $r_{Amazon} = 66 * 10^7 \frac{k}{s}$
\item $r_{FPGA} = 11.25 * 10^8 \frac{k}{s}$
\end{itemize}
\begin{eqnarray*}
x_{GPU} &=& 1.06 * 10^{18}y \\
x_{Amazon} &=& 2.49 * 10^{17}y \\
x_{FPGA} &=& 1.46 * 10^{17}y \\
\end{eqnarray*}
\item
\begin{itemize}
\item $r$: Anzahl der Versuche pro Sekunde
\item $n$: Aktuelle Bit Länge der Schlüssel
\item $w$: Verlängerung der Schlüssellänge um $w$ Bit
\item $x$: Gesucht: Wie viel langsamer der Angriff wird
\end{itemize}
\begin{eqnarray*}
\frac{2^n}{r} + x &=& \frac{2^{n+w}}{r} \\
x &=& \frac{2^{n+w} - 2^n}{r} \\
x &=& \frac{2^n(2^w-1)}{r}
\end{eqnarray*}
\item
\begin{eqnarray*}
183d &=& 4392h \\\\
\frac{4392}{2^n} &\leq{}& 1 \\
n &\geq{}& 13 \Rightarrow \text{ 13 Verdoppelungen der Rechenleistung} \\\\
13 * 18m &=& 234 m = 19.5y \approx 20y \\
1992 + 20 &=& 2012
\end{eqnarray*}
Seit dem Jahr 2012 sollte es möglich sein, 50-bit Keys in weniger als 1 Stunde zu Bruteforcen.
\end{enumerate}
\end{document}

View File

@ -0,0 +1,60 @@
CPTGORJLU OÜPLUCSLUSLßW ZWSUW ZJS OQ
ÜGO XQPWSW QÜA OSG ZWQPW - QRRSZ ßRQP!
SFYSPWSG ZWPSJWSG ZJLU ÜK SJG YQQP OQWSG
OJS LPSX UQW OQ GÄLU SJG YQQP APQCSG
OÄLU OSP LÄÜGWOÄXG RBÜAW
SAASßWJNJWBW ÖSZWJKKW OQZ UQGOSRG
KQG NSPRBZZW ZJLU ÖRJGO QÜA OSG QGOSP'G
DSOSP XSJM CSGQÜ, XQZ NÄG JUK QÖUBGCW
DSOSP JZW JK ZWPSZZ, OÄLU KQDÄP WÄK
KQLUW SJGSG ZLUSPV
OQGG USÖW SP QÖ ÜGO
NERRJC RÄZCSREZW
NÄG OSP SPOS
ZLUXSÖW OQZ PQÜKZLUJAA
NERRJC ZLUXSPSRÄZ
OJS SPOQGVJSUÜGCZßPQAW JZW TÖSPXÜGOSG
QRRSZ RBÜAW YSPASßW, ZLUÄG ZSJW ZWÜGOSG
XJZZSGZLUQAWRJLUS SFYSPJKSGWS
OÄLU XQZ GTWVSG OJS QK SGOS, OSGßW
ZJLU KQDÄP WÄK
JK ßÄGWPÄRRVSGWPÜK, OQ XJPO KQG YQGJZLU
OSP ßÜPZ OSP ßQYZSR, OSP ZWJKKW DQ CQP GJLUW
"UQRRÄ KQDÄP WÄK, ßEGGSG ZJS UEPSG
XÄRR'G ZJS OQZ YPÄDSßW OSGG ZÄ VSPZWEPSG?"
OÄLU SP ßQGG GJLUWZ UEP'G
SP ZLUXSÖW XSJWSP
NERRJC RÄZCSREZW
NÄG OSP SPOS
ZLUXSÖW OQZ PQÜKZLUJAA
NERRJC ZLUXSPSRÄZ
OJS SPOS ZLUJKKSPW ÖRQÜ, ZSJG RSWVWSP AÜGß ßÄKKW
"CPTMW KJP KSJGS APQÜ", ÜGO SP NSPZWÜKKW
ÜGWSG WPQÜSPG GÄLU OJS SCÄJZWSG
KQDÄP WÄK OSGßW ZJLU, XSGG OJS XTZZWSG
KJLU ATUPW UJSP SJG RJLUW OÜPLU OQZ QRR
OQZ ßSGGW JUP GÄLU GJLUW, JLU ßÄKKS ÖQRO
KJP XJPO ßQRW
NERRJC RÄZCSREZW
NÄG OSP SPOS
ZLUXSÖW OQZ PQÜKZLUJAA
ZLUXSPSRÄZ
NERRJC RÄZCSREZW
NÄG OSP SPOS
ZLUXSÖW OQZ PQÜKZLUJAA
ZLUXSPSRÄZ
NERRJC RÄZCSREZW
NÄG OSP SPOS
ZLUXSÖW OQZ PQÜKZLUJAA
NERRJC ZLUXSPSRÄZ

View File

@ -0,0 +1,30 @@
A & f \\
B & ä \\
C & g \\
D & j \\
E & ö \\
F & x \\
G & n \\
J & i \\
K & m \\
L & c \\
M & ß \\
N & v \\
O & d \\
P & r \\
Q & a \\
R & l \\
S & e \\
T & ü \\
U & h \\
V & z \\
W & t \\
X & w \\
Y & p \\
Z & s \\
Ä & o \\
Ö & b \\
Ü & u \\
ß & k \\
? & q \\
? & y \\

View File

@ -0,0 +1,2 @@
/target
**/*.rs.bk

View File

@ -0,0 +1,32 @@
[[package]]
name = "countmap"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "num-traits"
version = "0.1.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "num-traits"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "u01"
version = "0.1.0"
dependencies = [
"countmap 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[metadata]
"checksum countmap 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1ef2a403c4af585607826502480ab6e453f320c230ef67255eee21f0cc72c0a6"
"checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"
"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1"

View File

@ -0,0 +1,7 @@
[package]
name = "u01"
version = "0.1.0"
authors = ["Valentin Brandl <vbrandl@riseup.net>"]
[dependencies]
countmap = "0.2.0"

View File

@ -0,0 +1,81 @@
extern crate countmap;
use countmap::CountMap;
use std::{
fs::File,
io::{BufRead, BufReader},
};
fn count() {
let args: Vec<_> = std::env::args().collect();
let file = args.get(1).unwrap();
let mut map: CountMap<char, u32> = CountMap::new();
let read = BufReader::new(File::open(file).unwrap());
for line in read.lines() {
if let Ok(line) = line {
line.chars().filter(|c| c.is_alphabetic()).for_each(|c| {
map.insert_or_increment(c);
});
}
}
let sum: u32 = map
.iter()
.filter(|(k, _)| k.is_alphabetic())
.map(|(_, v)| v)
.sum();
let mut vec: Vec<_> = map.into_iter().collect();
vec.sort_unstable();
vec.into_iter().for_each(|(k, v)| {
println!(
"{} &\\text{{:}}& {:3} \\to{{}} {:.2} \\\\",
k,
v,
v as f64 / sum as f64
)
});
println!("sum &\\text{{:}}& {}", sum);
}
fn main() {
let args: Vec<_> = std::env::args().collect();
let file = args.get(1).unwrap();
let read = BufReader::new(File::open(file).unwrap());
for line in read.lines() {
if let Ok(line) = line {
let s: String = line
.chars()
.map(|c| match c {
'A' => 'f',
'B' => 'ä',
'C' => 'g',
'D' => 'j',
'E' => 'ö',
'F' => 'x',
'G' => 'n',
'J' => 'i',
'K' => 'm',
'L' => 'c',
'M' => 'ß',
'N' => 'v',
'O' => 'd',
'P' => 'r',
'Q' => 'a',
'R' => 'l',
'S' => 'e',
'T' => 'ü',
'U' => 'h',
'V' => 'z',
'W' => 't',
'X' => 'w',
'Y' => 'p',
'Z' => 's',
'Ä' => 'o',
'Ö' => 'b',
'Ü' => 'u',
'ß' => 'k',
c => c,
}).collect();
println!("{}", s);
}
}
}

Binary file not shown.

View File

@ -0,0 +1,67 @@
\documentclass[12pt,a4paper,german]{article}
\usepackage{url}
%\usepackage{graphics}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage{epsfig}
\usepackage{paralist}
\geometry{left=2.0cm,textwidth=17cm,top=3.5cm,textheight=23cm}
%%%%%%%%%% Fill out the the definitions %%%%%%%%%
\def \name {Vorname1 Nachname1} %
\def \matrikel {Matrikelnummer1} %
\def \pname {Vorname2 Nachname2} %
\def \pmatrikel {Matrikelnummer2} %
\def \gruppe {Gruppenkuerzel} %
\def \uebung {1} %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DO NOT MODIFY THIS HEADER
\newcommand{\hwsol}{
\vspace*{-2cm}
\noindent \matrikel \quad \name \hfill Gruppe:\gruppe \\
\noindent \pmatrikel \quad \pname \\
\begin{center}{\Large \bf L\"osung f\"ur \"Ubung \# \uebung}\end{center}
}
\begin{document}
%Import header
\hwsol
\section*{Aufgabe 1}
\begin{enumerate}[(a)]
\item Beispielantwort
\item Hier k\"onnte deine Antwort auf diese Teilaufgabe stehen.
\item Für das Beispiel gilt $b_1=2^4+1=17=(10001)_2$ und $b_2=2^4-1=15=(1111)_2$.
\end{enumerate}
\section*{Aufgabe 2}
Notation von mathematischen L\"osungen:
\begin{eqnarray*}
r_{0} &=& \beta^{K_{X}} \bmod n\\
r_{1} &=& \alpha^{K_{X}+1} = \alpha \cdot \alpha^{K_{n}} = \alpha \cdot r_{1} \bmod p\\
r_{2} &=& (a_{1}-d \cdot q_{1}) \cdot z_{E}^{-1} \bmod p-1 \Leftrightarrow d = (x_{1}-s_{1} \cdot o_{E}) \cdot r_{1}^{-1} \bmod p-1\\
\end{eqnarray*}
\section*{Aufgabe 3}
\begin{center}
\begin{tabular}{|c|c|c|c|}
\hline
Tabellenzeile & Tabellenzeile & Tabellenzeile & Tabellenzeile \\
\hline
e & f & g & h \\
\hline
i & j & k & l \\
\hline
m & n & o & p \\
\hline
\end{tabular}
\end{center}
\end{document}

View File

@ -0,0 +1,65 @@
---
title: Intro
date: 2018-10-12
---
# Intro
**Prof**: Jörg Schwenk
Beteiligt an EFAIL?
## Moodle
Nächste Vorlesung
## Klausur
### Hilfsmittel
* Buch
## Übungen
Erst ab 2018-10-19.
## Links
* [Blog](https://web-in-security.blogspot.com)
## Buch
Wird überarbeitet.
> Wir werden kein Blockchain machen, in dieser Vorlesung
**Schwerpunkt in Netsec 2**: TLS
## Notzizen
* **Starker Angriff**: Wenig Voraussetzungen
* **Schwacher Angriff**: Viele Voraussetzungen
**EC**:
$$
y^2 = x^3 + \underline{a}x + \underline{b}
$$
$b$ ggf nicht geprüft
## Nachschlagen
* DNSSEC schwache Schlüssel
* Bleichenbacher
* Chinesischer Restsatz
* Small Subgroup Attack (TLS)
* TLS Attacher
* DOMParator
* Professos
* WS-Attacker

View File

@ -0,0 +1,10 @@
---
title: Kryptographie und das Internet
date: 2018-10-12
---
# Kryptographie und das Internet
**AE**: Authenticated Encryption
**AEAD**: AE with Additional Data

8
school/netsec1.md Normal file
View File

@ -0,0 +1,8 @@
---
title: Netzsicherheit 1
---
# Netzsicherheit 1
- [2018-10-12 Intro](netsec/20181012_0-intro)
- [2018-10-12 Kryptographie und das Internet](netsec/20181012_1-kryptographie_und_das_internet)

805
templates/eisvogel.tex Normal file
View File

@ -0,0 +1,805 @@
%%
% Copyright (c) 2018, Pascal Wagler;
% Copyright (c) 2014--2018, John MacFarlane
%
% All rights reserved.
%
% Redistribution and use in source and binary forms, with or without
% modification, are permitted provided that the following conditions
% are met:
%
% - Redistributions of source code must retain the above copyright
% notice, this list of conditions and the following disclaimer.
%
% - Redistributions in binary form must reproduce the above copyright
% notice, this list of conditions and the following disclaimer in the
% documentation and/or other materials provided with the distribution.
%
% - Neither the name of John MacFarlane nor the names of other
% contributors may be used to endorse or promote products derived
% from this software without specific prior written permission.
%
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
% "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
% LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
% FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
% COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
% INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
% BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
% LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
% LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
% ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
% POSSIBILITY OF SUCH DAMAGE.
%%
%%
% For usage information and examples visit the GitHub page of this template:
% https://github.com/Wandmalfarbe/pandoc-latex-template
%%
\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere
\PassOptionsToPackage{hyphens}{url}
\PassOptionsToPackage{dvipsnames,svgnames*,table}{xcolor}
$if(dir)$$if(latex-dir-rtl)$
\PassOptionsToPackage{RTLdocument}{bidi}
$endif$$endif$%
\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$babel-lang$,$endif$$if(papersize)$$papersize$paper,$else$a4paper,$endif$$if(beamer)$ignorenonframetext,$if(handout)$handout,$endif$$if(aspectratio)$aspectratio=$aspectratio$,$endif$$endif$$for(classoption)$$classoption$$sep$,$endfor$,tablecaptionabove]{$if(book)$scrbook$else$scrartcl$endif$}
$if(beamer)$
$if(background-image)$
\usebackgroundtemplate{%
\includegraphics[width=\paperwidth]{$background-image$}%
}
$endif$
\usepackage{pgfpages}
\setbeamertemplate{caption}[numbered]
\setbeamertemplate{caption label separator}{: }
\setbeamercolor{caption name}{fg=normal text.fg}
\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$
$for(beameroption)$
\setbeameroption{$beameroption$}
$endfor$
% Prevent slide breaks in the middle of a paragraph:
\widowpenalties 1 10000
\raggedbottom
$if(section-titles)$
\setbeamertemplate{part page}{
\centering
\begin{beamercolorbox}[sep=16pt,center]{part title}
\usebeamerfont{part title}\insertpart\par
\end{beamercolorbox}
}
\setbeamertemplate{section page}{
\centering
\begin{beamercolorbox}[sep=12pt,center]{part title}
\usebeamerfont{section title}\insertsection\par
\end{beamercolorbox}
}
\setbeamertemplate{subsection page}{
\centering
\begin{beamercolorbox}[sep=8pt,center]{part title}
\usebeamerfont{subsection title}\insertsubsection\par
\end{beamercolorbox}
}
\AtBeginPart{
\frame{\partpage}
}
\AtBeginSection{
\ifbibliography
\else
\frame{\sectionpage}
\fi
}
\AtBeginSubsection{
\frame{\subsectionpage}
}
$endif$
$endif$
$if(beamerarticle)$
\usepackage{beamerarticle} % needs to be loaded first
$endif$
$if(fontfamily)$
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
$else$
\usepackage{lmodern}
$endif$
$if(linestretch)$
\usepackage{setspace}
\setstretch{$linestretch$}
$else$
\usepackage{setspace}
\setstretch{1.2}
$endif$
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provides euro and other symbols
\else % if luatex or xelatex
$if(mathspec)$
\ifxetex
\usepackage{mathspec}
\else
\usepackage{unicode-math}
\fi
$else$
\usepackage{unicode-math}
$endif$
\defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
$for(fontfamilies)$
\newfontfamily{$fontfamilies.name$}[$fontfamilies.options$]{$fontfamilies.font$}
$endfor$
$if(mainfont)$
\setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
$endif$
$if(sansfont)$
\setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$}
$endif$
$if(monofont)$
\setmonofont[Mapping=tex-ansi$if(monofontoptions)$,$for(monofontoptions)$$monofontoptions$$sep$,$endfor$$endif$]{$monofont$}
$endif$
$if(mathfont)$
$if(mathspec)$
\ifxetex
\setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\else
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\fi
$else$
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
$endif$
$endif$
$if(CJKmainfont)$
\ifxetex
\usepackage{xeCJK}
\setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
\fi
$endif$
$if(luatexjapresetoptions)$
\ifluatex
\usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset}
\fi
$endif$
$if(CJKmainfont)$
\ifluatex
\usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec}
\setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
\fi
$endif$
\fi
$if(beamer)$
$if(theme)$
\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$}
$endif$
$if(colortheme)$
\usecolortheme{$colortheme$}
$endif$
$if(fonttheme)$
\usefonttheme{$fonttheme$}
$endif$
$if(mainfont)$
\usefonttheme{serif} % use mainfont rather than sansfont for slide text
$endif$
$if(innertheme)$
\useinnertheme{$innertheme$}
$endif$
$if(outertheme)$
\useoutertheme{$outertheme$}
$endif$
$endif$
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
% use microtype if available
\IfFileExists{microtype.sty}{%
\usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
$if(indent)$
$else$
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
}
$endif$
$if(verbatim-in-note)$
\usepackage{fancyvrb}
$endif$
$if(colorlinks)$
\usepackage{xcolor}
\definecolor{default-linkcolor}{HTML}{A50000}
\definecolor{default-filecolor}{HTML}{A50000}
\definecolor{default-citecolor}{HTML}{4077C0}
\definecolor{default-urlcolor}{HTML}{4077C0}
$endif$
\usepackage{hyperref}
\hypersetup{
$if(title-meta)$
pdftitle={$title-meta$},
$endif$
$if(author-meta)$
pdfauthor={$author-meta$},
$endif$
$if(subject)$
pdfsubject={$subject$},
$endif$
$if(keywords)$
pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
$endif$
$if(colorlinks)$
colorlinks=true,
linkcolor=$if(linkcolor)$$linkcolor$$else$default-linkcolor$endif$,
filecolor=$if(filecolor)$$filecolor$$else$default-filecolor$endif$,
citecolor=$if(citecolor)$$citecolor$$else$default-citecolor$endif$,
urlcolor=$if(urlcolor)$$urlcolor$$else$default-urlcolor$endif$,
$else$
pdfborder={0 0 0},
$endif$
breaklinks=true}
\urlstyle{same} % don't use monospace font for urls
$if(verbatim-in-note)$
\VerbatimFootnotes % allows verbatim text in footnotes
$endif$
$if(geometry)$
\usepackage[margin=2.5cm,includehead=true,includefoot=true,centering,$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$else$
\usepackage[margin=2.5cm,includehead=true,includefoot=true,centering]{geometry}
$endif$
$if(logo)$
\usepackage[export]{adjustbox}
\usepackage{graphicx}
$endif$
$if(beamer)$
\newif\ifbibliography
$endif$
$if(listings)$
\usepackage{listings}
\newcommand{\passthrough}[1]{#1}
$endif$
$if(lhs)$
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
$endif$
$if(highlighting-macros)$
$highlighting-macros$
$endif$
$if(tables)$
\usepackage{longtable,booktabs}
$if(beamer)$
\usepackage{caption}
% These lines are needed to make table captions work with longtable:
\makeatletter
\def\fnum@table{\tablename~\thetable}
\makeatother
$else$
% Fix footnotes in tables (requires footnote package)
\IfFileExists{footnote.sty}{\usepackage{footnote}\makesavenoteenv{longtable}}{}
$endif$
$endif$
$if(graphics)$
\usepackage{graphicx,grffile}
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
$endif$
$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
$endif$
$if(strikeout)$
\usepackage[normalem]{ulem}
% avoid problems with \sout in headers with hyperref:
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
$endif$
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
$if(numbersections)$
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
$else$
\setcounter{secnumdepth}{0}
$endif$
$if(beamer)$
$else$
$if(subparagraph)$
$else$
% Redefines (sub)paragraphs to behave more like sections
\ifx\paragraph\undefined\else
\let\oldparagraph\paragraph
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
\let\oldsubparagraph\subparagraph
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
\fi
$endif$
$endif$
$if(pagestyle)$
\pagestyle{$pagestyle$}
$endif$
% Make use of float-package and set default placement for figures to H
\usepackage{float}
\floatplacement{figure}{H}
$for(header-includes)$
$header-includes$
$endfor$
$if(lang)$
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}
$if(babel-newcommands)$
$babel-newcommands$
$endif$
\else
$if(mainfont)$
$else$
% See issue https://github.com/reutenauer/polyglossia/issues/127
\renewcommand*\familydefault{\sfdefault}
$endif$
% load polyglossia as late as possible as it *could* call bidi if RTL lang (e.g. Hebrew or Arabic)
\usepackage{polyglossia}
\setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$}
$for(polyglossia-otherlangs)$
\setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$}
$endfor$
\fi
$endif$
$if(dir)$
\ifxetex
% load bidi as late as possible as it modifies e.g. graphicx
\usepackage{bidi}
\fi
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\TeXXeTstate=1
\newcommand{\RL}[1]{\beginR #1\endR}
\newcommand{\LR}[1]{\beginL #1\endL}
\newenvironment{RTL}{\beginR}{\endR}
\newenvironment{LTR}{\beginL}{\endL}
\fi
$endif$
$if(natbib)$
\usepackage[$natbiboptions$]{natbib}
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
$endif$
$if(biblatex)$
\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex}
$for(bibliography)$
\addbibresource{$bibliography$}
$endfor$
$endif$
$if(title)$
\title{$title$$if(thanks)$\thanks{$thanks$}$endif$}
$endif$
$if(subtitle)$
\providecommand{\subtitle}[1]{}
\subtitle{$subtitle$}
$endif$
$if(author)$
\author{$for(author)$$author$$sep$ \and $endfor$}
$endif$
$if(institute)$
\providecommand{\institute}[1]{}
\institute{$for(institute)$$institute$$sep$ \and $endfor$}
$endif$
\date{$date$}
$if(beamer)$
$if(titlegraphic)$
\titlegraphic{\includegraphics{$titlegraphic$}}
$endif$
$if(logo)$
\logo{\includegraphics{$logo$}}
$endif$
$endif$
%%
%% added
%%
%
% No language specified? take American English.
%
$if(lang)$$else$
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=english]{babel}
$if(babel-newcommands)$
$babel-newcommands$
$endif$
\else
$if(mainfont)$
$else$
% See issue https://github.com/reutenauer/polyglossia/issues/127
\renewcommand*\familydefault{\sfdefault}
$endif$
% load polyglossia as late as possible as it *could* call bidi if RTL lang (e.g. Hebrew or Arabic)
\usepackage{polyglossia}
\setmainlanguage[]{english}
$for(polyglossia-otherlangs)$
\setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$}
$endfor$
\fi
$endif$
%
% colors
%
\usepackage[]{xcolor}
%
% listing colors
%
\definecolor{listing-background}{HTML}{F7F7F7}
\definecolor{listing-rule}{HTML}{B3B2B3}
\definecolor{listing-numbers}{HTML}{B3B2B3}
\definecolor{listing-text-color}{HTML}{000000}
\definecolor{listing-keyword}{HTML}{435489}
\definecolor{listing-identifier}{HTML}{435489}
\definecolor{listing-string}{HTML}{00999A}
\definecolor{listing-comment}{HTML}{8E8E8E}
\definecolor{listing-javadoc-comment}{HTML}{006CA9}
%\definecolor{listing-background}{rgb}{0.97,0.97,0.97}
%\definecolor{listing-rule}{HTML}{B3B2B3}
%\definecolor{listing-numbers}{HTML}{B3B2B3}
%\definecolor{listing-text-color}{HTML}{000000}
%\definecolor{listing-keyword}{HTML}{D8006B}
%\definecolor{listing-identifier}{HTML}{000000}
%\definecolor{listing-string}{HTML}{006CA9}
%\definecolor{listing-comment}{rgb}{0.25,0.5,0.35}
%\definecolor{listing-javadoc-comment}{HTML}{006CA9}
%
% for the background color of the title page
%
$if(titlepage)$
\usepackage{pagecolor}
\usepackage{afterpage}
$endif$
%
% TOC depth and
% section numbering depth
%
\setcounter{tocdepth}{3}
$if(numbersections)$
\setcounter{secnumdepth}{3}
$endif$
%
% break urls
%
\PassOptionsToPackage{hyphens}{url}
%
% When using babel or polyglossia with biblatex, loading csquotes is recommended
% to ensure that quoted texts are typeset according to the rules of your main language.
%
\usepackage{csquotes}
%
% captions
%
\definecolor{caption-color}{HTML}{777777}
\usepackage[font={stretch=1.2}, textfont={color=caption-color}, position=top, skip=4mm, labelfont=bf, singlelinecheck=false, justification=$if(caption-justification)$$caption-justification$$else$raggedright$endif$]{caption}
\setcapindent{0em}
\captionsetup[longtable]{position=above}
%
% blockquote
%
\definecolor{blockquote-border}{RGB}{221,221,221}
\definecolor{blockquote-text}{RGB}{119,119,119}
\usepackage{mdframed}
\newmdenv[rightline=false,bottomline=false,topline=false,linewidth=3pt,linecolor=blockquote-border,skipabove=\parskip]{customblockquote}
\renewenvironment{quote}{\begin{customblockquote}\list{}{\rightmargin=0em\leftmargin=0em}%
\item\relax\color{blockquote-text}\ignorespaces}{\unskip\unskip\endlist\end{customblockquote}}
%
% Source Sans Pro as the de­fault font fam­ily
% Source Code Pro for monospace text
%
% 'default' option sets the default
% font family to Source Sans Pro, not \sfdefault.
%
$if(mainfont)$
$else$
\usepackage[default]{sourcesanspro}
\usepackage{sourcecodepro}
$endif$
%
% heading color
%
\definecolor{heading-color}{RGB}{40,40,40}
\addtokomafont{section}{\color{heading-color}}
% When using the classes report, scrreprt, book,
% scrbook or memoir, uncomment the following line.
%\addtokomafont{chapter}{\color{heading-color}}
%
% variables for title and author
%
\usepackage{titling}
\title{$title$}
\author{$for(author)$$author$$sep$, $endfor$}
%
% tables
%
$if(tables)$
\definecolor{table-row-color}{HTML}{F5F5F5}
\definecolor{table-rule-color}{HTML}{999999}
%\arrayrulecolor{black!40}
\arrayrulecolor{table-rule-color} % color of \toprule, \midrule, \bottomrule
\setlength\heavyrulewidth{0.3ex} % thickness of \toprule, \bottomrule
\renewcommand{\arraystretch}{1.3} % spacing (padding)
% Reset rownum counter so that each table
% starts with the same row colors.
% https://tex.stackexchange.com/questions/170637/restarting-rowcolors
\let\oldlongtable\longtable
\let\endoldlongtable\endlongtable
\renewenvironment{longtable}{
\rowcolors{3}{}{table-row-color!100} % row color
\oldlongtable} {
\endoldlongtable
\global\rownum=0\relax}
% Unfortunately the colored cells extend beyond the edge of the
% table because pandoc uses @-expressions (@{}) like so:
%
% \begin{longtable}[]{@{}ll@{}}
% \end{longtable}
%
% https://en.wikibooks.org/wiki/LaTeX/Tables#.40-expressions
$endif$
%
% remove paragraph indention
%
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em} % prevent overfull lines
%
%
% Listings
%
%
$if(listings)$
\lstdefinestyle{eisvogel_listing_style}{
language = java,
$if(listings-disable-line-numbers)$
xleftmargin = 0.6em,
framexleftmargin = 0.4em,
$else$
numbers = left,
xleftmargin = 2.7em,
framexleftmargin = 2.5em,
$endif$
backgroundcolor = \color{listing-background},
basicstyle = \color{listing-text-color}\small\ttfamily{}\linespread{1.15}, % print whole listing small
breaklines = true,
frame = single,
framesep = 0.6mm,
rulecolor = \color{listing-rule},
frameround = ffff,
tabsize = 4,
numberstyle = \color{listing-numbers},
aboveskip = 1.0em,
belowcaptionskip = 1.0em,
keywordstyle = \color{listing-keyword}\bfseries,
classoffset = 0,
sensitive = true,
identifierstyle = \color{listing-identifier},
commentstyle = \color{listing-comment},
morecomment = [s][\color{listing-javadoc-comment}]{/**}{*/},
stringstyle = \color{listing-string},
showstringspaces = false,
escapeinside = {/*@}{@*/}, % Allow LaTeX inside these special comments
literate =
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
{à}{{\`a}}1 {è}{{\'e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
{À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
{}{{\EUR}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1
{»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1
{}{{\ldots}}1 {}{{>=}}1 {}{{<=}}1 {}{{\glqq}}1 {}{{\grqq}}1
{}{{''}}1
}
\lstset{style=eisvogel_listing_style}
\lstdefinelanguage{XML}{
morestring = [b]",
moredelim = [s][\bfseries\color{listing-keyword}]{<}{\ },
moredelim = [s][\bfseries\color{listing-keyword}]{</}{>},
moredelim = [l][\bfseries\color{listing-keyword}]{/>},
moredelim = [l][\bfseries\color{listing-keyword}]{>},
morecomment = [s]{<?}{?>},
morecomment = [s]{<!--}{-->},
commentstyle = \color{listing-comment},
stringstyle = \color{listing-string},
identifierstyle = \color{listing-identifier}
}
$endif$
%
% header and footer
%
$if(disable-header-and-footer)$
$else$
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\lhead[$if(header-right)$$header-right$$else$$date$$endif$]{$if(header-left)$$header-left$$else$$title$$endif$}
\chead[$if(header-center)$$header-center$$else$$endif$]{$if(header-center)$$header-center$$else$$endif$}
\rhead[$if(header-left)$$header-left$$else$$title$$endif$]{$if(header-right)$$header-right$$else$$date$$endif$}
\lfoot[$if(footer-right)$$footer-right$$else$\thepage$endif$]{$if(footer-left)$$footer-left$$else$$for(author)$$author$$sep$, $endfor$$endif$}
\cfoot[$if(footer-center)$$footer-center$$else$$endif$]{$if(footer-center)$$footer-center$$else$$endif$}
\rfoot[$if(footer-left)$$footer-left$$else$$for(author)$$author$$sep$, $endfor$$endif$]{$if(footer-right)$$footer-right$$else$\thepage$endif$}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
$endif$
%%
%% end added
%%
\begin{document}
%%
%% begin titlepage
%%
$if(titlepage)$
\begin{titlepage}
\newgeometry{left=6cm}
$if(titlepage-color)$
\definecolor{titlepage-color}{HTML}{$titlepage-color$}
\newpagecolor{titlepage-color}\afterpage{\restorepagecolor}
$endif$
\newcommand{\colorRule}[3][black]{\textcolor[HTML]{#1}{\rule{#2}{#3}}}
\begin{flushleft}
\noindent
\\[-1em]
\color[HTML]{$if(titlepage-text-color)$$titlepage-text-color$$else$5F5F5F$endif$}
\makebox[0pt][l]{\colorRule[$if(titlepage-rule-color)$$titlepage-rule-color$$else$435488$endif$]{1.3\textwidth}{$if(titlepage-rule-height)$$titlepage-rule-height$$else$4$endif$pt}}
\par
\noindent
{ \setstretch{1.4}
\vfill
\noindent {\huge \textbf{\textsf{$title$}}}
$if(subtitle)$
\vskip 1em
{\Large \textsf{$subtitle$}}
$endif$
\vskip 2em
\noindent
{\Large \textsf{$for(author)$$author$$sep$, $endfor$}
\vfill
}
$if(logo)$
\noindent
\includegraphics[width=$if(logo-width)$$logo-width$$else$100$endif$pt, left]{$logo$}
$endif$
\textsf{$date$}}
\end{flushleft}
\end{titlepage}
\restoregeometry
$endif$
%%
%% end titlepage
%%
$if(title)$
$if(beamer)$
\frame{\titlepage}
$endif$
$if(abstract)$
\begin{abstract}
$abstract$
\end{abstract}
$endif$
$endif$
$for(include-before)$
$include-before$
$endfor$
$if(toc)$
$if(toc-title)$
\renewcommand*\contentsname{$toc-title$}
$endif$
$if(beamer)$
\begin{frame}
$if(toc-title)$
\frametitle{$toc-title$}
$endif$
\tableofcontents[hideallsubsections]
\end{frame}
$if(toc-own-page)$
\newpage
$endif$
$else$
{
$if(colorlinks)$
\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$}
$endif$
\setcounter{tocdepth}{$toc-depth$}
\tableofcontents
$if(toc-own-page)$
\newpage
$endif$
}
$endif$
$endif$
$if(lot)$
\listoftables
$endif$
$if(lof)$
\listoffigures
$endif$
$body$
$if(natbib)$
$if(bibliography)$
$if(biblio-title)$
$if(book-class)$
\renewcommand\bibname{$biblio-title$}
$else$
\renewcommand\refname{$biblio-title$}
$endif$
$endif$
$if(beamer)$
\begin{frame}[allowframebreaks]{$biblio-title$}
\bibliographytrue
$endif$
\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
$if(beamer)$
\end{frame}
$endif$
$endif$
$endif$
$if(biblatex)$
$if(beamer)$
\begin{frame}[allowframebreaks]{$biblio-title$}
\bibliographytrue
\printbibliography[heading=none]
\end{frame}
$else$
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
$endif$
$endif$
$for(include-after)$
$include-after$
$endfor$
\end{document}

122
templates/mindoc.html Normal file
View File

@ -0,0 +1,122 @@
<!doctype html>
<html$if(lang)$ lang="$lang$"$endif$$if(dir)$ dir="$dir$"$endif$>
<head>
<meta charset="utf-8">
<meta name="generator" content="pandoc">
<meta name="viewport" content="width=device-width, initial-scale=1">
$if(description)$
<meta name="description" content="$description$">
$endif$
$for(author-meta)$
<meta name="author" content="$author-meta$">
$endfor$
$if(date-meta)$
<meta name="dcterms.date" content="$date-meta$">
$endif$
<title>$if(title-prefix)$$title-prefix$ - $endif$$pagetitle$</title>
<!-- Yahoo! CDN combo URL for selected Pure.css modules -->
<link rel="stylesheet" href="http://yui.yahooapis.com/combo?pure/0.6.0/base-min.css&pure/0.6.0/grids-responsive-min.css&pure/0.6.0/menus-min.css&pure/0.6.0/tables-min.css">
<!-- Extra styles -->
<style>
body{margin:1em 0 0}.pure-g{padding:0 1em}.pure-menu-link:focus{background-color:#d3d3d3}nav{margin:0 0 1em;padding:0 0 1em;border-bottom:1px solid #ccc}footer{margin:5em 0 1em}pre{white-space:pre-wrap;margin-left:3em}code{font-size:89%;color:#191919}.author{margin-bottom:0;padding-bottom:0}.headnote,.published,.license{font-size:89%;margin-bottom:.75em}@media screen and (max-width:35.5em){thead{display:none}tr,th,td{display:block}td{border-top:0}tr td:first-child{border-top:1px solid #ddd;font-weight:700}}
</style>
$if(quotes)$
<style>q {quotes: "“" "”" "" "";}</style>
$endif$
$if(highlighting-css)$
<style>
$highlighting-css$
</style>
$endif$
$for(css)$
<link rel="stylesheet" href="$css$">
$endfor$
$if(math)$
$math$
$endif$
$for(header-includes)$
$header-includes$
$endfor$
</head>
<body>
<section id="page-content">
<div class="pure-g">
<div class="pure-u-1 pure-u-sm-1 pure-u-md-1 pure-u-lg-1 pure-u-xl-1">
<!-- page content begins here -->
$for(include-before)$
$include-before$
$endfor$
$if(headnote)$
<div class="headnote">$headnote$</div>
$endif$
$if(published)$
<div class="published">$published$</div>
$endif$
$if(license)$
<div class="license">$license$</div>$endif$
$if(title)$
<header>
<h1 class="title">$title$</h1>
$if(subtitle)$
<h1 class="subtitle">$subtitle$</h1>
$endif$
$if(author)$
$for(author)$
$if(author.name)$
<h2 class="author">$author.name$</h2>
$else$
<h2 class="author">$author$</h2>
$endif$
$if(author.affiliation)$
<div class="affiliation">$author.affiliation$</div>
$endif$
$if(author.email)$
<div class="email"><a href="mailto:$author.email$">$author.email$</a></div>
$endif$
$endfor$
$endif$
$if(version)$
<h3 class="version">Version $version$</h3>
$endif$
$if(date)$
<h3 class="date">$date$</h3>
$endif$
</header>
$endif$
$if(abstract)$
<div class="abstract">
<h3>Abstract</h3>
$abstract$
</div>
$endif$
$if(toc)$
<nav id="$idprefix$TOC">
$toc$
</nav>
$endif$
$body$
$for(include-after)$
$include-after$
$endfor$
<!-- page content ends here -->
</div> <!-- pure-u-1... -->
</div> <!-- pure-g -->
</section> <!-- page-content -->
<div class="pure-g">
<footer><a href="https://bitfragment.github.io/mindoc">mindoc</a> v1.1.0</footer>
</div>
<script>
var mindoc=function(){function e(e){return e=e.toLowerCase(),e.charAt(0).toUpperCase()+e.substr(1)}function n(e){var n=new RegExp(/^\b[a-z]\S+\b-\b\S+\b/);return n.test(e)&&(e=e.replace(/-+/g," ")),e}function t(t){return t=n(t),e(t)}function r(e,n){return!!e.className.match(new RegExp("(\\s|^)"+n+"(\\s|)"))}function a(e,n){r(e,n)||(e.className+=" "+n)}function o(e,n){if(r(e,n)){var t=new RegExp("(\\s|^)"+n+"(\\s|)");e.className=e.className.replace(t," ")}}function u(){var e,n,t={table:"pure-table pure-table-bordered"};Object.keys(t).forEach(function(r){if(e=document.getElementsByTagName(r),n=e.length,n>1)for(var o=0;n>o;o++)a(e[o],t[r])})}function c(e,n){for(var t=0,r=e.length;r>t;t++)for(var a=e[t].getElementsByTagName("a"),u=0,c=a.length;c>u;u++)a[u].addEventListener("click",function(){o(n,"hidden")})}function i(e,n){for(var t=0,r=e.length;r>t;t++)e[t].addEventListener("click",function(){o(n,"hidden")})}function d(){var e=document.createElement("li");return a(e,"pure-menu-item"),e}function l(e){var n=document.createElement("a");return n.id="menu-"+e,n.href="#",n.innerHTML=t(e),a(n,"pure-menu-link"),n}function m(e){var n=document.createDocumentFragment(),t=document.createElement("nav"),r=document.createElement("div"),o=document.createElement("ul");n.appendChild(t),t.appendChild(r),r.appendChild(o),a(r,"pure-menu"),a(o,"pure-menu-list");var u="All sections",c=d();a(c,"pure-menu-selected"),o.appendChild(c),c.appendChild(l(u));for(var i,m,s=0,f=e.length;f>s;s++)i=e[s].getAttribute("id"),m=d(),o.appendChild(m),m.appendChild(l(i));var p=document.getElementById("page-content");document.querySelector("body").insertBefore(n,p)}function s(e){var n;e.hasAttribute("pure-menu-selected")||(n=document.querySelector(".pure-menu-selected"),o(n,"pure-menu-selected"),a(e,"pure-menu-selected"))}function f(e,n){var t,u=n.getAttribute("id"),c=u.replace(/menu-/,""),i=document.getElementById(u).parentNode;s(i);for(var d in e)t=e[d],r(t,"hidden")||a(t,"hidden"),t.getAttribute("id")===c&&r(t,"hidden")&&o(t,"hidden")}function p(e){var n;for(var t in e)n=e[t],r(n,"hidden")&&o(n,"hidden")}function v(e){for(var n=document.querySelectorAll(".pure-menu-link"),t=0,r=n.length;r>t;t++)0===t?n[t].addEventListener("click",function(){p(e)}):n[t].addEventListener("click",function(){f(e,this)})}return{main:function(){if(u(),document.getElementsByClassName("level2").length>0){var e,n=[];["abstract","level2","footnotes"].forEach(function(t){e=document.getElementsByClassName(t);for(var r=0,a=e.length;a>r;r++)n.push(e[r])});var t;for(var o in n)t=n[o],r(t,"level2")||a(t,"level2"),r(t,"footnotes")&&t.setAttribute("id","footnotes");m(n),v(n);var d=document.getElementsByClassName("citation"),l=document.getElementById("references");c(d,l);var s=document.getElementsByClassName("footnoteRef"),f=document.getElementById("footnotes");i(s,f)}}}}();window.addEventListener("load",function(){mindoc.main()});
</script>
<!-- For debugging local scripts -->
<!-- <script src="../build/mindoc.js"></script> -->
</body>
</html>