###### tags: `FS3`
# CSS Zusammenfassung
# Schutzziele der IT Sicherheit
- Vertraulichkeit (Confidentiality): *Verschlüsselung*
- Authentizität (Authenticity): *Signaturen*
- Integrität (Integrity): *Hash-Funktionen*
- Unabstreitbarkeit (Non Repudiation): *Signaturen*
- Verfügbarkeit (Availability): *Redundanz*
# Kerckhoffs Prinzipien
1. Unentschlüsselbar
2. Keine Geheimhaltung des Systems
3. Schlüssel ohne Aufschreiben
4. Telegraphische Kommunikation
6. einfach benutzbar
# Angriffe auf Kryptosysteme
- Bekannte Chiffrate (known ciphertext attack, COA)
- Bekannte Klartexte (known plaintext attack, KPA)
- Gewählte Klartexte (chosen plaintext attack, CPA)
- Gewählte Chiffrate (chosen ciphertext attack, CCA)
# Mathematische Grundlagen
### Modulo Gesetze
- $(a+b)\mod n = ((a \mod n)+(b \mod n)) \mod n$
- $(a \cdot b)\mod n = ((a \mod n) \cdot (b \mod n)) \mod n$
### Euklidischer Algorithmus
- gegeben sein $a_0,b_0$, sodass $0 < b_0 < a_0$.
- Wiederhole bis: $r_i = 0$
- $a_i = b_{i - 1}$
- $b_i = r_{i - 1}$
- $q_i = \lfloor \frac{a_i}{b_i} \rfloor$ *(bzw a div b)*
- $r_i = a_i - q_i \cdot b_i$ *(bzw a mod b)*
- es gilt $a_i = ggT(a_0, b_0)$
- $x_i = 0$
- $y_i = 1$
- Wiederhole bis: $i = 0$
- $x_i = y_{i + 1}$
- $y_i = x_{i + 1} - q_i \cdot y_{i+1}$
- es gilt $((y_i \mod a_i) \cdot b_i) \mod a_i = 1$
### Lösung diophantischer Gleichungen
- Sei $a, b, c \in \mathbb{Z}$, mit $ggT(a, b) \mid c$
- Lösung für die diophantische Gleichung $a x + b y = c$ :
- Löse $a x' + a y' = ggT(a, b)$
- $x = \frac{c}{ggT(a, b)} \cdot x'$
- $y = \frac{c}{ggT(a, b)} \cdot y'$
### Eulersche Phi-Funktion
- Für $n$ und Primzahl $p$: $\varphi(p^n) = p^n - p^{n-1}$
- Für $a, b$ mit $ggT(a,b)$: $\varphi(a, b) = \varphi(a) \cdot \varphi(b)$
### Euler-Fermat
- Wenn $ggT(m,n) = 1$ dann $m^{\varphi(n)} = 1$
### Monoide und Gruppen
- Multiplikatives Inverse: $\mathbb{Z}_n^\times := \{x \in \mathbb{Z}_n : ggT(x,n)=1\}$ mit $\mathbb{Z}_n = \{0,1,...,n-1\}$ also alle $x$, die teilerfremd zu $n$ sind
- Ordnung einer Gruppe: $ord(G)=|G|$
- Ordnung eines Elements: $ord(g) = inf\{n \in \mathbb{N}:g^n = e\}$
- Diskreter Logarithmus: $log_a(g):=min\{n \in \mathbb{N}_0:a^n=g\}$
# Symmetrische Verfahren
- Blockchiffren
- Electonic Codebook
- Jeder einzelne Block wird unabhängig von anderen Blöcken verschlüsselt
- $c_i = e(m_i, k) , m_i = d(c_i, k)$
- Cipher Block Chaining
- Alle Blöcke werden abhängig von vorherigen Blöcken verschlüsselt. Erster Block wird mit Initial Vector $r$ verschlüsselt.
- $c_0 = e(m_0 \oplus r, k) , m_0 = d(c_0, k) \oplus r$
- $c_i = e(m_i , k) \oplus c_{i - 1} , m_i = d(c_i, k) \oplus c_{i-1}$
- $\begin{array}{c}
m & & 1101 & 0010 \\
& & 0111 & 1100 \\
c & 1010 & 1110 & 1001 \\
\end{array}\begin{array}{c}
\downarrow & \oplus & \uparrow & \oplus \\
\downarrow & encode & \uparrow & decode \\
\end{array}$
- Counter
- Alle Blöcke werden abhängig von einem Schlüssel, Zufallswert und mitlaufenden Zähler verschlüsselt.
- $c_i = e(n+i, k) \oplus m_i, m_i = d(n+i, k) \oplus c_{i}$
# Asymmetrische Verfahren
### RSA
- Schlüsselgenerierung:
1. Zwei Primzahlen $p, q$ mit $p \neq q$
2. $n = p \cdot q$
3. $\varphi(n) = (p - 1) \cdot (q - 1)$
4. Verschlüsselungsexponenten:
- $e \neq 1$ und $ggT(e, \varphi(n)) = 1$
5. Entschlüsselungsexponenten: (EEA, y ~ d)
- $(d \cdot e) \mod \varphi(n) = 1$
- Verschlüsselung:
1. $c = m^e \mod n$
2. $m = c^d \mod n$
# Signaturen
### RSA Signatur
- Signieren: $s = D(h(m),(d,n))=(h(m))^d\mod n$
- Verifizieren: Teste ob $h(m) = E(s, (e,n)) = s^e\mod n$
### DSA Signatur
- Parametergenerierung
1. Wähle zufällig eine 'kleine' Primzahl $q$
2. Wähle 'große' Primzahl $p: q|(p-1)$
3. Suche $h: h \in \mathbb{Z}_p^\times:h^{\frac{p-1}{q}}\mod p \neq 1$
4. Bestimme $g=h^{\frac{p-1}{q}}\mod p$
- Schlüsselgenerierung
1. Wähle $x: 1<x<q$
2. Berechne $y: y=g^x \mod p$
3. $y$ ist public key, $x$ ist private key
- Signieren
1. Wähle $k: 1<k<q$
2. Berechne $r=(g^k \mod p) \mod q$. Falls $r=0$, beginn von vorne
3. Bestimme $s=k^{-1} \cdot (H(m)+r \cdot x)\mod q$, Falls $s=0$, beginn von vorne
4. Signatur ist Tupel (r,s)
- Verifikation
1. Ungültig, wenn $0<r<q$ oder $0<s<q$ nicht gilt
2. Berechne $w=s^{-1} \mod q$
3. Berechne $u_1 = H(m) \cdot w \mod q$
4. Berechne $u_2 = r \cdot w \mod q$
5. Berechne $v = (g^{u_1} \cdot y^{u_2} \mod p) \mod q$
6. Akzeptiere Signatur, falls $v=r$
# Diffie Hellman Schlüsselaustausch
1. Einigung auf Primzahl $p$ und generator $g$ mit $ggT(p,g) = 1$
2. A wählt $a \in \mathbb{N}: 0<a<p$ und sendet $g^a \mod p$ an B
3. B wählt $b \in \mathbb{N}: 0<a<p$ und sendet $g^b \mod p$ an A
4. A berechnet $(g^b)^a \mod p$
5. B berechnet $(g^a)^b \mod p$
6. $(g^a)^b=(g^b)^a=g^{ab}$ ist der Schlüssel
# Station to Station
- $A \rightarrow B: g^a$
- $B \rightarrow A: g^b, \{\text{sig}(sk_b,(g^a, g^b))\}$
- $A \rightarrow B: g^b, \{\text{sig}(sk_A,(g^a, g^b))\}$