Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy
počítačové znalosti >> otázka >> hesla >> .

Keď sa používateľ prihlási do systému, ako overuje, či bolo heslo správne dodané?

Proces overovania hesla používateľa zahŕňa niekoľko krokov, pričom sa zameriava skôr na osvedčené postupy zabezpečenia, než na ukladanie hesla do obyčajného textu. Tu je zrútenie toho, ako to zvyčajne funguje:

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

Príklad použitia (pri vytváraní nového používateľa):

heslo ="MySecretPassword123"

hashed_password, Salt =hash_password (heslo)

Uložte hashed_password a soľ do databázy (spojené s používateľom)

Príklad použitia (počas prihlásenia):

Entered_password ="MySecretPassword123" #user poskytuje počas prihlásenia

Získajte STORED_HASH a STORED_SALT z databázy na základe používateľského mena

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.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené