authn_z
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
\section{Hash}
|
||||
|
||||
\begin{frame}{Mi az a hash?}
|
||||
\begin{block}{Definíció}
|
||||
Tetszőleges hosszúságú bemenetet rögzített méretű lenyomattá alakít.
|
||||
\end{block}
|
||||
|
||||
\begin{itemize}
|
||||
\item Egyirányű függvény (nem visszafejthető)
|
||||
\item Gyorsan számolható
|
||||
\item Kis változás teljesen más hasht eredményez
|
||||
\end{itemize}
|
||||
|
||||
\begin{alertblock}{Fontos}
|
||||
Hash $\neq$ titkosítás: nem visszafejthető!
|
||||
\end{alertblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Hash tulajdonságok}
|
||||
\begin{itemize}
|
||||
\item \textbf{Deterministic}: azonos bemenet = azonos kimenet
|
||||
\item \textbf{Preimage resistance}: nehéz visszafejteni
|
||||
\item \textbf{Second preimage}: nehéz másik bemenetet találni
|
||||
\item \textbf{Collision resistance}: nehéz két különböző bemenetet találni azonos hash-sel
|
||||
\end{itemize}
|
||||
|
||||
\begin{exampleblock}{Példa}
|
||||
\texttt{hash("jelszo") = 5f4dcc3b5aa765d61d8327deb882cf99}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Gyenge vs. erős hash}
|
||||
\begin{columns}
|
||||
\begin{column}{0.48\textwidth}
|
||||
\begin{block}{Gyenge hash}
|
||||
\begin{itemize}
|
||||
\item MD5, SHA1 (elavult)
|
||||
\item Gyors → brute force könnyebb
|
||||
\item Ütközések ismertek
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{column}
|
||||
|
||||
\begin{column}{0.48\textwidth}
|
||||
\begin{block}{Erős hash}
|
||||
\begin{itemize}
|
||||
\item bcrypt, Argon2, scrypt
|
||||
\item Lassú, konfigurálható
|
||||
\item Salt + work factor támogatás
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{column}
|
||||
\end{columns}
|
||||
|
||||
\vspace{0.4cm}
|
||||
|
||||
\begin{alertblock}{Jelszavakhoz}
|
||||
Soha ne használj általános hash-t (MD5, SHA1) jelszavak tárolásához!
|
||||
\end{alertblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Salt és Pepper}
|
||||
\begin{block}{Miért fontos?}
|
||||
\textbf{Salt:} véletlen érték, amit a jelszóhoz adunk hash előtt.
|
||||
\end{block}
|
||||
|
||||
\begin{itemize}
|
||||
\item Védelem rainbow table ellen
|
||||
\item Minden jelszónál egyedi salt
|
||||
\item Salt-et tárolhatjuk adatbázisban
|
||||
\end{itemize}
|
||||
|
||||
\begin{exampleblock}{Pepper}
|
||||
Közös titkos kulcs, szerver konfigban tárolva.
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Password hashing algoritmusok}
|
||||
\begin{itemize}
|
||||
\item \textbf{bcrypt}
|
||||
\begin{itemize}
|
||||
\item Beépített salt és work factor
|
||||
|
||||
\end{itemize}
|
||||
\item \textbf{scrypt}
|
||||
\begin{itemize}
|
||||
\item Memória-igényes → GPU támadások ellen jobb
|
||||
\end{itemize}
|
||||
\item \textbf{Argon2}
|
||||
\begin{itemize}
|
||||
\item Modern szabvány (PHC winner)
|
||||
\item Paraméterezhető (time, memory, parallelism)
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile,shrink=10]{bcrypt használat (Node.js)}
|
||||
\begin{exampleblock}{Hash készítés}
|
||||
\tiny
|
||||
\begin{verbatim}
|
||||
const bcrypt = require('bcrypt');
|
||||
const saltRounds = 12;
|
||||
|
||||
const hashPassword = async (password) => {
|
||||
const salt = await bcrypt.genSalt(saltRounds);
|
||||
return bcrypt.hash(password, salt);
|
||||
};
|
||||
\end{verbatim}
|
||||
\end{exampleblock}
|
||||
|
||||
\begin{exampleblock}{Ellenőrzés}
|
||||
\tiny
|
||||
\begin{verbatim}
|
||||
const isValid = await bcrypt.compare(password, storedHash);
|
||||
\end{verbatim}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Hash-elés felhasználása}
|
||||
\begin{itemize}
|
||||
\item Jelszó tárolás
|
||||
\item Fájl integritás ellenőrzés
|
||||
\item Digitális aláírások
|
||||
\item Cache kulcsok
|
||||
\end{itemize}
|
||||
|
||||
\begin{alertblock}{Megjegyzés}
|
||||
Authentikációban: jelszó soha ne legyen visszaolvasható.
|
||||
\end{alertblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Hash Best Practices}
|
||||
\begin{itemize}
|
||||
\item Jelszhoz \textbf{bcrypt/Argon2/scrypt}
|
||||
\item Egyedi salt minden jelszóhoz
|
||||
\item Work factor beállítása (pl. bcrypt 10-12)
|
||||
\item Soha ne plain text
|
||||
\item Rate limiting + lockout
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Összefoglalás - Hash}
|
||||
\begin{itemize}
|
||||
\item Hash = egyirányú lenyomat
|
||||
\item Jelszavakhoz speciális algoritmus kell
|
||||
\item Salt és pepper növeli a biztonságot
|
||||
\item Argon2 a legajánlottabb modern választás
|
||||
\item Hash nem titkosítás!
|
||||
\end{itemize}
|
||||
|
||||
\vspace{0.5cm}
|
||||
|
||||
\end{frame}
|
||||
Reference in New Issue
Block a user