Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
1. Ukladanie hesla (správny spôsob):
* hashing: Namiesto priameho ukladania hesla používateľa systém ukladá kryptografický * hash * hesla. Hash je jednosmerná funkcia; Je ľahké vypočítať hash z hesla, ale prakticky nemožné odvodiť pôvodné heslo z hashu.
* Solovanie: Na ďalšie zvýšenie bezpečnosti sa k heslu pridá náhodná * soľ * pred hashovaním. Soľ je jedinečný, náhodne vygenerovaný reťazec znakov. To je pre útočníkov oveľa ťažšie používať vopred vypočítané hashové tabuľky (tabuľky dúhových) na prasknutie hesiel, aj keď získajú prístup k databáze.
* „Soľ“ sa zvyčajne ukladá spolu s heslom `hash` v zázname používateľa.
* silné hashing algoritmy: Moderné systémy používajú robustné hashovacie algoritmy ako:
* bcrypt: Adaptívny hashovací algoritmus, ktorý je pomalý a výpočtovo drahý, takže je veľmi odolný voči útokom brutálnej sily. Zahŕňa generovanie a skladovanie soli v samotnom hashu.
* argon2: Modernejší a pamäťový algoritmus hashovania, často považovaný za nástupcu Bcrypt.
* scrypt: Ďalšia funkcia derivácie kľúčov, ktorá je navrhnutá tak, aby bola výpočtovo intenzívna, takže je ťažšie prelomiť heslá.
2. Proces prihlásenia/autentifikácie:
1. Vstup používateľa: Používateľ zadá svoje používateľské meno a heslo do prihlasovacieho formulára.
2. Načítať soľ: Systém načíta * soľ * spojenú s zadaným používateľským menom z databázy používateľov.
3. hashing so soľou: Systém berie zadané heslo používateľa a získanú *soľ *, kombinuje ich a potom použije rovnaký hashovací algoritmus, ktorý sa použil pri pôvodnom uložení hesla.
4. Porovnanie: Výsledný hash z kroku 3 sa porovnáva s uloženým hashom hesla pre tohto používateľa v databáze.
5. Overenie:
* Ak sa tieto dva hashy zhodujú: Je veľmi pravdepodobné, že používateľ zadal správne heslo. Užívateľ je autentifikovaný a je stanovená relácia.
* Ak sa hash nezhoduje: Zadané heslo je nesprávne. Používateľovi je zamietnutý prístup a zvyčajne prijíma chybové hlásenie.
Prečo je to bezpečné:
* Žiadne heslá s holým textom: Systém * nikdy * ukladá skutočné heslo do PlointExt, takže aj keď je databáza ohrozená, útočníci nebudú mať priamy prístup k heslám.
* Soľ zabraňuje útokom na tabuľku dúhových: Jedinečná soľ pre každého používateľa robí dúhové tabuľky (vopred vypočítané tabuľky hash) neúčinné. Útočník by musel vygenerovať tabuľku dúhovej pre * každú * soľ, ktorá je výpočtovo neúnosná.
* pomalé hashovanie zabraňuje útokom na brutáciu: Moderné hashovacie algoritmy (ako Bcrypt, Argon2 a Scrypt) sú zámerne navrhnuté tak, aby boli pomalé. To znamená, že útočník nemôže rýchlo vyskúšať veľké množstvo odhadov hesiel.
Príklad kódu (Conceptual - Python s Bcrypt):
`` `Python
importovať bcrypt
def hash_password (heslo):
"" "Hashes heslo pomocou BCrypt s náhodne generovanou soľou." "
# Generujte soľ
soľ =bcrypt.gensalt ()
# Hash heslo pomocou soli
hashed_password =bcrypt.hashpw (heslo.enCode ('utf-8'), soľ)
návrat hashed_password, soľ #return hash a soľ, aby sa soľ mohla uložiť s hashom
def overe_password (Entered_password, Stored_Hash, Stored_Salt):
"" "Overuje, či sa zadané heslo zhoduje s uloženým hashom." "
# Hash Zadané heslo s uloženou soľou
hashed_entered_password =bcrypt.hashpw (Entered_password.enCode ('utf-8'), ulored_salt)
# Porovnajte vygenerovaný hash s uloženým hashom
return hashed_entered_password ==Stored_hash
heslo ="MySecretPassword123"
hashed_password, Salt =hash_password (heslo)
Entered_password ="MySecretPassword123" #user poskytuje počas prihlásenia
Stored_hash =b '$ 2b $ 12 $ eK11WE0GQJ8DK9J7CQH9YOC9/s8/6rxlg13n/l604qg1v14k6ydna' #
Stored_salt =b '$ 2B $ 12 $ eK11WE0GQJ8DK9J7CQH9YO' # Príklad - uložené zhora
ak over_password (Entered_password, Stored_Hash, Stored_Salt):
tlač („Overené heslo! Prihláste sa úspešné.“)
inak:
tlač („Nesprávne heslo. Prihlásenie zlyhalo.“)
`` `
Dôležité úvahy:
* Zložitosť hesla: Presadzujte pravidlá zložitosti hesla (minimálna dĺžka, požadované znaky), aby ste sťažovali uhádnuť heslá.
* Obmedzenie rýchlosti: Implementujte obmedzenie sadzieb pri pokusoch o prihlásenie na zabránenie útokov na brutálnu silu. Zamknuté účty po určitom počte neúspešných pokusov.
* Autentifikácia dvojfaktora (2FA): Použite 2FA pre ďalšiu vrstvu bezpečnosti. Aj keď je heslo ohrozené, útočník bude stále potrebovať druhý faktor (napr. Kód z mobilnej aplikácie).
* Pravidelné bezpečnostné audity: Vykonajte pravidelné bezpečnostné audity na identifikáciu a riešenie potenciálnych zraniteľností.
* Udržujte knižnice aktualizované: Udržujte hashovacie knižnice a závislosti aktualizované tak, aby ťažili z najnovších bezpečnostných záplat.
* Mechanizmy resetovania hesla: Implementujte zabezpečené mechanizmy obnovenia hesla pomocou e -mailových overení alebo bezpečnostných otázok.
Použitím týchto princípov môžu systémy efektívne overiť heslá a zároveň chrániť údaje používateľa pred kompromisom. Je to zásadný aspekt celkovej bezpečnosti.