Skip to content
Snippets Groups Projects
Commit 9d404fc8 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Vorbereitung 18.1.2024

parent 4243690e
Branches
No related tags found
No related merge requests found
20240118/Authentisieren-authentifizieren.png

14.9 KiB

../common/Zeichen_123.pdf
\ No newline at end of file
File added
% 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}
../common/logo-hochschule-bochum-cvh-text-v2.pdf
\ No newline at end of file
../common/logo-hochschule-bochum.pdf
\ No newline at end of file
../common/pgslides.sty
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment