Files
GKNB_MSTM071/Backend_ppt/authn_z/hash.tex
T
2026-02-24 01:29:59 +01:00

153 lines
4.1 KiB
TeX

\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}