diff --git a/20240118/Authentisieren-authentifizieren.png b/20240118/Authentisieren-authentifizieren.png
new file mode 100644
index 0000000000000000000000000000000000000000..1ef3814ca0343ae315442f161ad2eb9fb9db2348
Binary files /dev/null and b/20240118/Authentisieren-authentifizieren.png differ
diff --git a/20240118/Zeichen_123.pdf b/20240118/Zeichen_123.pdf
new file mode 120000
index 0000000000000000000000000000000000000000..fdbc897227df059cfda790a16555e6e417682116
--- /dev/null
+++ b/20240118/Zeichen_123.pdf
@@ -0,0 +1 @@
+../common/Zeichen_123.pdf
\ No newline at end of file
diff --git a/20240118/dbs-20240118.pdf b/20240118/dbs-20240118.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d1e36e8ca9bb4d888ac85240828244e16e49a081
Binary files /dev/null and b/20240118/dbs-20240118.pdf differ
diff --git a/20240118/dbs-20240118.tex b/20240118/dbs-20240118.tex
new file mode 100644
index 0000000000000000000000000000000000000000..90f855739a19ae9fb6c490d70df5c3532df021bb
--- /dev/null
+++ b/20240118/dbs-20240118.tex
@@ -0,0 +1,632 @@
+% dbs-20240118.pdf - Lecture Slides on Databases and Information Security
+% Copyright (C) 2024  Peter Gerwinski
+%
+% This document is free software: you can redistribute it and/or
+% modify it either under the terms of the Creative Commons
+% Attribution-ShareAlike 3.0 License, or under the terms of the
+% GNU General Public License as published by the Free Software
+% Foundation, either version 3 of the License, or (at your option)
+% any later version.
+%
+% This document is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this document.  If not, see <http://www.gnu.org/licenses/>.
+%
+% You should have received a copy of the Creative Commons
+% Attribution-ShareAlike 3.0 Unported License along with this
+% document.  If not, see <http://creativecommons.org/licenses/>.
+
+% README: Ausfallsicherheit
+
+\documentclass[10pt,t]{beamer}
+
+\usepackage{pgslides}
+
+\newcommand{\vfilll}{\vspace{0pt plus 1filll}}
+
+\newcommand{\underconstruction}{%
+  \begin{picture}(0,0)
+    \put(11,1.2){\makebox(0,0)[b]{\includegraphics[width=1.5cm]{Zeichen_123.pdf}}}
+    \put(11,0.9){\makebox(0,0)[t]{\shortstack{Änderungen\\vorbehalten}}}
+  \end{picture}}
+
+\title{Datenbanken und Datensicherheit}
+\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
+\date{18.\ Januar 2024}
+
+\begin{document}
+
+\maketitleframe
+
+\nosectionnonumber{\inserttitle}
+
+\begin{frame}
+
+  \shownosectionnonumber
+
+  \begin{itemize}
+    \item[\textbf{1}] \textbf{Einführung}
+      \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/dbs}}}%
+    \item[\textbf{2}] \textbf{Kurzeinführung Unix}
+    \item[\textbf{3}] \textbf{Kurzeinführung TCP/IP}
+    \item[\textbf{4}] \textbf{Relationale Datenbanken}
+      \begin{itemize}
+        \vspace*{-\smallskipamount}
+        \item[\textbf{\dots}]
+        \item[4.11] GUI-Zugriff
+        \color{medgreen}
+        \item[4.12] SQL Injection
+        \item[4.13] Datensicherheit bei Datenbanken 
+        \item[4.14] Sonstige Datenbanken
+      \end{itemize}
+    \item[\textbf{5}] \textbf{Kryptographie}
+      \begin{itemize}
+        \color{medgreen}
+        \item[5.1] Einführung
+        \item[5.2] Symmetrische Verschlüsselung
+        \item[5.3] Asymmetrische Verschlüsselung
+        \item[5.4] Signaturen
+        \vspace*{-\smallskipamount}
+        \item[\dots]
+      \end{itemize}
+    \item[\textbf{6}] \textbf{Netzwerksicherheit}
+    \item[\textbf{7}] \textbf{Verfügbarkeit}
+  \end{itemize}
+
+  \vfilll
+  \underconstruction
+
+\end{frame}
+
+\setcounter{section}{3}
+\section{Relationale Datenbanken}
+\setcounter{subsection}{10}
+\subsection{SQL Injection}
+
+\begin{frame}[fragile]
+
+  \showsection
+  \showsubsection
+
+  Problem:
+  \begin{itemize}
+    \item
+      Ein böswilliger Benutzer gibt über eine Benutzerschnittstelle
+      (z.\,B.\ ein Web-Interface) Daten ein (z.\,B.\ einen "`Namen"'),
+      die Sonderzeichen enthalten, damit sie als SQL-Befehle ausgeführt werden.
+    \item
+      Literatur: \url{https://xkcd.com/327/}
+  \end{itemize}
+
+  \medskip
+
+  Lösung: Die Benutzerschnittstelle prüft die Daten auf Sonderzeichen\\
+  und ersetzt diese durch geeignete Escape-Sequenzen
+  \begin{itemize}
+    \item
+      \lstinline[style=cmd]{'} durch \lstinline[style=cmd]{''} ersetzen
+    \item
+      Funktion \lstinline[style=cmd]{CHR()}
+    \item
+      Viele DBMS verstehen ein vorangestelltes \lstinline[style=cmd]{\}.
+  \end{itemize}
+
+  \medskip
+
+  Bessere Lösung: \newterm{Prepared Statements}
+  \begin{itemize}
+    \item
+      \url{https://www.postgresql.org/docs/current/sql-prepare.html}
+    \item
+      \url{https://www.w3schools.com/php/php_mysql_prepared_statements.asp}
+  \end{itemize}
+
+\end{frame}
+
+\subsection{Datensicherheit bei Datenbanken}
+
+\begin{frame}
+
+  \showsection
+  \showsubsection
+
+  \begin{itemize}
+    \item
+      kein direkter Zugriff von außen auf die Datenbank
+    \item
+      feingranulare Benutzerrechte
+    \item
+      Software aktuell halten
+    \item
+      Prepared Statements
+    \item
+      Transportverschlüsselung
+  \end{itemize}
+
+\end{frame}
+
+\subsection{Sonstige Datenbanken}
+
+\begin{frame}
+
+  \showsection
+  \showsubsection
+
+  \begin{itemize}
+    \item
+      Eingebettete Datenbanken:\\
+      Berkeley DB, SQLite\\
+      Software-Bibliothek, keine Client-Server-Struktur
+    \item
+      Nicht-relationale Datenbanken:\\
+      dokumentenorientierte Datenbanken, noSQL\\
+      Performanz wichtiger als Konsistenz\\
+      \textarrow\ Applikationen stärker in Konsistenzprüfung eingebunden
+  \end{itemize}
+
+\end{frame}
+
+\section{Kryptographie}
+\subsection{Einführung}
+
+\begin{frame}
+
+  \showsection
+  \showsubsection
+
+  \textbf{Was ist Datensicherheit?}
+
+  \smallskip
+
+  \begin{minipage}[t]{0.24\textwidth}
+    \begin{itemize}
+      \item[] \strut
+      \item Vertraulichkeit
+      \item Integrität\\\strut
+      \item Verfügbarkeit
+    \end{itemize}
+  \end{minipage}%
+  \begin{minipage}[t]{0.25\textwidth}
+    \begin{itemize}
+      \item[] (CIA)
+      \item[] (confidentiality)
+      \item[] (integrity)\\\strut
+      \item[] (availability)
+    \end{itemize}
+  \end{minipage}\quad
+  \begin{minipage}[t]{0.45\textwidth}
+    \begin{itemize}
+      \item[] \strut
+      \arrowitem {\only<2->{\color{red}}Verschlüsselung}
+      \arrowitem Konsistenzprüfungen,\\
+                 Prüfwerte, {\only<2->{\color{red}}Signaturen}
+      \arrowitem Backups, Ausfallsicherheit
+    \end{itemize}
+  \end{minipage}
+
+  \bigskip
+
+  \begin{itemize}
+    \item
+      Identifizierbarkeit
+      (Authentizität, Nichtabstreitbarkeit, Zurechenbarkeit)\\
+      \textarrow\ {\only<2->{\color{red}}Passwörter},
+                  {\only<2->{\color{red}}Signaturen}\\[\smallskipamount]
+      bzw.
+    \item
+      Anonymität
+      (plausible Abstreitbarkeit, Nichtzurechenbarkeit)\\
+      \textarrow\ Pseudonymisierung, Anonymisierung,\\
+      \phantom{\textarrow\ }{\only<2->{\color{red}}Verschlüsselung}, Steganographie
+      \pause\hfill\textcolor{red}{\textarrow\ Kryptographie}
+  \end{itemize}
+
+\end{frame}
+
+\subsection{Symmetrische Verschlüsselung}
+
+\begin{frame}
+
+  \showsection
+
+  \textbf{Kryptographie}
+  \begin{itemize}
+    \item
+      Verschlüsselung: symmetrisch, asymmetrisch, hybrid
+    \item
+      Hashes: Einwegfunktionen, Salt
+    \item
+      Signaturen, Zertifikate
+    \item
+      Schlüsselaustausch
+  \end{itemize}
+
+  \bigskip
+
+  \showsubsection
+
+  \vspace{-\medskipamount}
+
+  \begin{itemize}
+    \item
+      Derselbe Schlüssel zum Ver- und Entschlüsseln
+    \item
+      Beispiele:
+      {\only<6->{\color{red}}Cäsar-Chiffre},
+      {\only<6->{\color{red}}Monoalphabetische Substitution}\pause,\\
+      One Time Pad\visible<4->{,}\\
+      \visible<4->{%
+        \only<5->{\emph{spezielle }}Pseudozufallszahlengenerator\only<5->{en},
+        Startwert als Schlüssel\only<5->{:}\\
+        \visible<5->{
+          {\only<6->{\color{red}}Enigma},
+          {\only<6->{\color{red}}DES},
+          {\only<6->{\color{orange}}3DES},
+          {\only<6->{\color{orange}}RC4},
+          IDEA,
+          Blowfish,
+          TwoFish,
+          CAST,
+          AES,
+          \dots
+        }
+      }
+    \pause
+    \item
+      Problem: Schlüsselaustausch
+    \pause[7]
+    \item
+      Lösung: \newterm{asymmetrische Verschlüsselung}
+  \end{itemize}
+
+\end{frame}
+
+\subsection{Asymmetrische Verschlüsselung}
+
+\begin{frame}
+
+  \showsubsection
+
+  \vspace{-\medskipamount}
+
+  \begin{itemize}
+    \item
+      verschiedene Schlüssel zum Ver- und Entschlüsseln:\\
+      öffentlicher und privater Schlüssel
+    \item
+      Prinzip: mathematische Operation,\\
+      einfach durchzuführen, schwer rückgängig zu machen
+    \medskip
+    \item
+      Beispiel: $N = p \cdot q$ -- einfacher als Primfaktorzerlegung von $N$
+      \textarrow\ RSA\\[\smallskipamount]
+      $73 \cdot 97 = 7081$: geht notfalls noch im Kopf\\
+      Primfaktorzerlegung von $7081$: mindestens schriftlich, besser mit Rechner
+    \medskip
+    \item
+      Beispiel: $c = b^a$ -- einfacher als $a = \log_b c$
+      \textarrow\ Diffie-Hellman, ElGamal\\[\smallskipamount]
+      $7^5 = 16807$: geht notfalls noch im Kopf\\
+      $\log_7 16807$: mindestens schriftlich, besser mit Rechner
+    \medskip
+    \arrowitem
+      Details: Algorithmen und Datenstrukturen
+    \pause
+    \bigskip
+    \item
+      Nachteil: wesentlich aufwendiger und daher langsamer\\
+      als symmetrische Verschlüsselung
+    \arrowitem
+      \newterm{hybride Verschlüsselung}: nur Schlüsselaustausch asymmetrisch,\\
+      eigentliche Vrschlüsselung symmetrisch
+  \end{itemize}
+
+\end{frame}
+
+\subsection{Signaturen}
+
+\begin{frame}
+
+  \showsubsection
+
+  \vspace{-\medskipamount}
+
+  \begin{itemize}
+    \item
+      \newterm{kryptographische Hash-Funktion\/}:
+      leicht auszurechnen, schwer zu manipulieren
+    \item
+      asymmetrisch: \newterm{Signatur}\\
+      Hash-Wert mit privatem Schlüssel verschlüsseln,\\
+      mit öffentlichem Schlüssel entschlüsseln
+    \item
+      symmetrisch: \newterm{Message Authentication Code\/} (MAC)\\
+      z.\,B.\ Hash-Wert über Nachricht + geheimer Schlüssel
+  \end{itemize}
+
+  \pause
+  \bigskip
+
+  Angriffsmöglichkeit: \newterm{Man-in-the-middle\/}-Angriff\\
+  Beim Schlüsselaustausch anderen Schlüssel unterschieben\\
+  \textarrow\ Sorgfalt beim Schlüsselaustausch
+
+  \pause
+  \bigskip
+
+  \textbf{Praxis-Beispiele}
+  \begin{itemize}
+    \item
+      SSH
+    \item
+      HTTPS
+    \item
+      OpenPGP
+  \end{itemize}
+
+\end{frame}
+
+\subsection{Authentifizierung}
+
+\begin{frame}
+
+  \showsubsection
+
+  \begin{itemize}
+    \item
+      Zugangsdaten:\hfill
+        \makebox(0,0)[tr]{%
+          \begin{minipage}[t]{7cm}
+            \vspace*{-0.5cm}
+            \begin{center}
+              \includegraphics[width=7cm]{Authentisieren-authentifizieren.png}\\
+              \tiny
+              Bild: \url{https://de.wikipedia.org/wiki/Datei:Authentisieren-authentifizieren.png}
+            \end{center}
+          \end{minipage}}\\
+      Benutzername, Passwort
+    \smallskip
+    \item
+      Problem:\\
+      Zugangsdaten mitlesen
+    \item
+      Lösung:\\
+      verschlüsselte Verbindung
+    \only<1>{%
+      \smallskip
+      \item
+        Problem:\\
+        Zugangsdaten speichern
+      \item
+        Lösung:\\
+        Hash-Wert statt Passwort\\
+        speichern
+      \smallskip
+      \item
+        Problem:\\
+        gleiche Passwörter identifizierbar
+      \item
+        Lösung:\\
+        \newterm{Salt}
+    }
+    \only<2->{%
+      \item
+        Lösung:\\
+        \newterm{Challenge-Response-Authentifizierung}\\
+        Beispiel: HTTP Digest
+        \vfilll
+        \begin{itemize}
+          \item
+            gemeinsamer geheimer Schlüssel (Passwort)
+          \item
+            Server schickt \newterm{Nonce\/} an Benutzer
+          \item
+            Benutzer schickt Hash über [Passwort + Nonce] an Server
+          \item
+            Server berechnet denselben Hash
+            \textarrow\ Authentifizierung erfolgreich
+          \item
+            Nonce nur einmal verwenden!\\
+            ("`number used once"')
+        \end{itemize}
+    }
+  \end{itemize}
+
+\end{frame}
+
+\subsection{Quantencomputer}
+
+\begin{frame}
+
+  \showsubsection
+
+  \begin{itemize}
+    \item
+      Prinzip: $2^n$ Berechnungen gleichzeitig\\
+      ($n$ = Registerbreite)
+    \arrowitem
+      Klassisch schwierige Probleme werden einfacher.
+    \item
+      Beispiel: Primfaktorzerlegung:
+      $\mathcal{O}\bigl((\log n)^3\bigr)$
+      statt $\mathcal{O}\bigl(2^{\sqrt{n\log n}}\bigr)$
+    \item
+      Problem für asymmetrische Verschlüsselungsalgorithmen,\\
+      z.\,B.\ RSA (Primfaktorzerlegung), ElGamal (diskreter Logarithmus)
+    \item
+      weniger problematisch für symmetrische Verschlüsselungsalgorithmen
+    \arrowitem
+      Suche nach Post-Quanten-Kryptographie\\
+      Beispiel: McEliece-Kryptosystem
+    \arrowitem
+      \newterm{Forward Secrecy}\\
+      Kompromittierung betrifft nur zukünftige Kommunikation,\\
+      nicht bereits vergangene.
+      \vfilll
+      Beispiel:
+      \begin{itemize}
+        \item
+          RSA nur für Authentifizierung
+        \item
+          Austausch eines Sitzungsschlüssels via Diffie-Hellman
+        \item
+          Kommunikation über Sitzungsschlüssel (symmetrisch)
+        \item
+          Sitzungsschlüssel nur einmal verwenden!
+      \end{itemize}
+  \end{itemize}
+
+\end{frame}
+
+\section{Netzwerksicherheit}
+
+\begin{frame}
+
+  \showsection
+
+  \begin{itemize}
+    \item
+      Firewall: nur bestimmte IP-Adressen / Ports / Inhalte zulassen
+    \item
+      VPN: verschlüsselte Verbindung von Netzwerken\\
+      über ansonsten unsichere Verbidung (Internet)
+    \item
+      \newterm{Intrusion Detection System}
+  \end{itemize}
+
+  \bigskip
+
+  Anonymität
+  \begin{itemize}
+    \item
+      Beispiel: Tor -- Zwiebel-Routing
+      \begin{itemize}
+        \item
+          Tor-Browser
+        \item
+          Tails
+      \end{itemize}
+    \item
+      Beispiel: Corona-Warn-App
+  \end{itemize}
+
+  \bigskip
+
+  Cross-Site-Scripting
+
+\end{frame}
+
+\begin{frame}
+
+  \showsection
+
+  Die menschliche Komponente
+  \begin{itemize}
+    \item
+      Bequemlichkeit
+    \item
+      Social Engineering
+      \begin{itemize}
+        \item
+          \newterm{Phishing}
+        \item
+          KI-Sprachmodelle
+      \end{itemize}
+  \end{itemize}
+
+  \bigskip
+
+  \begin{quote}
+    Es gibt für jedes menschliche Problem\\
+    immer eine wohl bekannte Lösung -\\
+    sauber, einleuchtend, und falsch.
+    \begin{flushright}
+      \em
+      Henry Louis Mencken, The Divine Afflatus, 1917\\
+      \small\url{https://de.wikiquote.org/wiki/Lösung}
+    \end{flushright}
+  \end{quote}
+
+\end{frame}
+
+\section{Verfügbarkeit}
+
+\begin{frame}
+
+  \showsection
+
+  Wann wird wirklich auf den Datentäger geschrieben?
+  \begin{itemize}
+    \item
+      DBMS: Persistenz-Einstellungen
+    \item
+      \newterm{Write Ahead Log\/} (WAL)\\
+      \newterm{Journaling-Dateisysteme}
+    \item
+      \newterm{CAP-Theorem}
+  \end{itemize}
+
+  Daten sicher aufbewahren
+  \begin{itemize}
+    \item
+      Backup
+    \item
+      RAID
+  \end{itemize}
+
+  Hochverfügbarkeit
+  \begin{itemize}
+    \item
+      allgemein: \newterm{High-Availability-Cluster}
+    \item
+      speziell: Datenbank-Cluster: Replikation über mehrere Server
+  \end{itemize}
+
+\end{frame}
+
+\section{Datenschutz}
+
+\begin{frame}
+
+  \showsection
+
+  \begin{itemize}
+    \item
+      Schutz vor mißbräuchlicher Datenverarbeitung
+    \item
+      informationelle Selbstbestimmung
+    \item
+      Persönlichkeitsrecht
+    \item
+      Privatsphäre
+  \end{itemize}
+
+  \bigskip
+
+  Datenmißbrauch ermöglicht hohe Gewinne
+  \begin{itemize}
+    \arrowitem
+      viel Interesse an persönlichen Daten
+    \arrowitem
+      "`Datenschutz hemmt den Fortschritt!"'%
+      \begin{picture}(0,0)
+        \color{red}\thicklines
+        \put(-2.54,0.1){\line(1,0){2.54}}
+      \end{picture}\,
+      die persönliche Bereicherung
+  \end{itemize}
+
+  \bigskip
+
+  \begin{itemize}
+    \item
+      DSGVO
+  \end{itemize}
+
+\end{frame}
+
+\end{document}
diff --git a/20240118/logo-hochschule-bochum-cvh-text-v2.pdf b/20240118/logo-hochschule-bochum-cvh-text-v2.pdf
new file mode 120000
index 0000000000000000000000000000000000000000..4aa99b8f81061aca6dcaf43eed2d9efef40555f8
--- /dev/null
+++ b/20240118/logo-hochschule-bochum-cvh-text-v2.pdf
@@ -0,0 +1 @@
+../common/logo-hochschule-bochum-cvh-text-v2.pdf
\ No newline at end of file
diff --git a/20240118/logo-hochschule-bochum.pdf b/20240118/logo-hochschule-bochum.pdf
new file mode 120000
index 0000000000000000000000000000000000000000..b6b9491e370e499c9276918182cdb82cb311bcd1
--- /dev/null
+++ b/20240118/logo-hochschule-bochum.pdf
@@ -0,0 +1 @@
+../common/logo-hochschule-bochum.pdf
\ No newline at end of file
diff --git a/20240118/pgslides.sty b/20240118/pgslides.sty
new file mode 120000
index 0000000000000000000000000000000000000000..5be1416f4216f076aa268901f52a15d775e43f64
--- /dev/null
+++ b/20240118/pgslides.sty
@@ -0,0 +1 @@
+../common/pgslides.sty
\ No newline at end of file