Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Jak fungují hashed hesla?  (Přečteno 2752 krát)

arrange

  • Závislák
  • ***
  • Příspěvků: 4031
  • "jdu s hlavou vztyčenou..."
Jak fungují hashed hesla?
« kdy: 12 Září 2010, 23:32:56 »
Nějak mi není jasné, jak fungují hashed passwords na non-SSL zabezpečení. Zkusím nastínit, o co mi jde, a budu vděčný za případné vysvětlení nebo odkaz  :)

Příklad: fórum podobné tomuto, uživatelé. Je vůbec možné přenosy jejich hesel zabezpečit tak, aby nemohlo dojít ke kompromitaci hesel (příp. autentizace) útočníkem, který odchytí registraci uživatele? Přijde mi, že ne, protože:
  • ať už je posílané heslo při registraci čisté (heslo) nebo hashed (hash(heslo)), následné přidání saltu při autentizaci je už neúčinné, protože útočník má stejné informace jako server (hash(heslo+salt), příp. hash(hash(heslo)+salt))
  • pokud by se při registraci poslalo heslo již se saltem, neměl by jak server při autentizaci s jiným saltem výsledky porovnat (za předpokladu, že neukládá hesla v čisté formě, což předpokládám)

Smysl tohoto zabezpečení by byl jen tehdy, pokud by útočník znal jen komunikaci PO registraci. I tak ale v případě přihlášení a zvolení možnosti "Přihlásit: vždy" by mělo stačit odchytit údaj typu session_id.

Je to tak, nebo mi něco uniká?
http://www.openstreetmap.org - mapy celého světa "wiki style"

soudruh

  • Aktivní člen
  • *
  • Příspěvků: 458
  • Na Linuxu se stále učím...
Re: Jak fungují hashed hesla?
« Odpověď #1 kdy: 13 Září 2010, 07:23:10 »
Pokud by jsme uložili heslo v db plaintextově, tak pak můžeme prohlížeči poslat salt ať už třeba jako cookies, nebo v nějakém js a browser pak pro autentizaci použije pouze jednou tento salt -priste samozrejme jinej (nejlepe ukldatav db jiz pouzite) + budeme paranoidni, ze session navazeme treba i na ip, browser, rozliseni, cas v pc...
Xubuntu 12.10@fermium; Ubuntu 12.04@mandelevium; Android 2.3.3@nobellum; Ubuntu 9.04@lawrencium; FreeNAS@rutherfordium; Xubuntu 12.04@dubnium

arrange

  • Závislák
  • ***
  • Příspěvků: 4031
  • "jdu s hlavou vztyčenou..."
Re: Jak fungují hashed hesla?
« Odpověď #2 kdy: 13 Září 2010, 08:27:13 »
Pokud by jsme uložili heslo v db plaintextově
To by pak nebyl žádný problém, to chápu, ale ukládání a posílání hesel clear text je všude považováno za bezpečnostní prohřešek číslo 1...
http://www.openstreetmap.org - mapy celého světa "wiki style"

soudruh

  • Aktivní člen
  • *
  • Příspěvků: 458
  • Na Linuxu se stále učím...
Re: Jak fungují hashed hesla?
« Odpověď #3 kdy: 13 Září 2010, 08:43:09 »
Pokud by jsme uložili heslo v db plaintextově
To by pak nebyl žádný problém, to chápu, ale ukládání a posílání hesel clear text je všude považováno za bezpečnostní prohřešek číslo 1...
Pak tedy bude nejbezpecnejsi ssl, nebo jednorazovy tokeny. Pokud budeme odesilat uz z prohlizece hash hesla vzdy se stejnym saltem, tak ma tento salt stejnou dulezitost jako heslo samo.
Xubuntu 12.10@fermium; Ubuntu 12.04@mandelevium; Android 2.3.3@nobellum; Ubuntu 9.04@lawrencium; FreeNAS@rutherfordium; Xubuntu 12.04@dubnium

ETNyx

  • Aktivní člen
  • *
  • Příspěvků: 425
Re: Jak fungují hashed hesla?
« Odpověď #4 kdy: 13 Září 2010, 19:11:37 »
jabber: etnyx@jabbim.cz

arrange

  • Závislák
  • ***
  • Příspěvků: 4031
  • "jdu s hlavou vztyčenou..."
Re: Jak fungují hashed hesla?
« Odpověď #5 kdy: 13 Září 2010, 20:21:49 »
Díky za odkaz, ale odpovědi jsem se tam nedopátral, php je pro mě španělská vesnice...

Třeba co jsem zjistil (berte s rezervou): zde na fóru (SMF) se heslo při registraci pošle clear text, a pak při přihlašování jako hash hesla+challenge. Na ubuntuforums.org (vBulletin) je to podobné, jen místo clear text je to hash(heslo), a při přihlašování hash(hash(heslo)+challenge). Není mi jasné, která informace (shared secret) zde může útočníkovi chybět k man-in-the-middle attack. Sám to ale zkoušet nebudu  :)
http://www.openstreetmap.org - mapy celého světa "wiki style"

ETNyx

  • Aktivní člen
  • *
  • Příspěvků: 425
Re: Jak fungují hashed hesla?
« Odpověď #6 kdy: 13 Září 2010, 22:29:32 »
V tom článku to trošku ukryté. Je tam odkaz http://php.vrana.cz/data/challenge.zip ve kterém je file reg.php

Kód: [Vybrat]
<?php
include "./lib.inc.php";

if (
$_POST) {
    if (isset(
$_POST["password"])) {
        echo 
"Insecure ";
        
$password_hmac_md5 md5(hmac_md5($_POST["password"], $_SESSION["challenge"]));
    } else {
        
$password_hmac_md5 $_POST["password_hmac_md5"];
    }
    
$ok mysql_query("INSERT INTO users (login, challenge, password_hmac_md5) VALUES ('$_POST[login]', '$_SESSION[challenge]', '$password_hmac_md5')");
    echo (
$ok "OK." "Error.");
} else {

$_SESSION["challenge"] = get_challenge();
?>

<script type="text/javascript" src="md5.js"></script>
<script type="text/javascript">
function md5form(f) {
    f['password_hmac_md5'].value = hex_md5(hex_hmac_md5(f['password'].value, '<?php echo $_SESSION["challenge"]; ?>'));
    f['password'].disabled = true;
    f.submit();
    f['password'].disabled = false;
    return false;
}
</script>
<form action="" method="post" onsubmit="return md5form(this);">
<input type="hidden" name="password_hmac_md5" value="" />
Login: <input name="login" maxlength="20" />
Password: <input type="password" name="password" />
<input type="submit" value="Register" />
</form>
<?php ?>

takže při registraci se odesílá odesílá md5(hmac_md5(password, challenge)). Takto by to mělo proti men.in.the.middle zabezpečené

jabber: etnyx@jabbim.cz

arrange

  • Závislák
  • ***
  • Příspěvků: 4031
  • "jdu s hlavou vztyčenou..."
Re: Jak fungují hashed hesla?
« Odpověď #7 kdy: 13 Září 2010, 23:39:01 »
Proto nabízím její vylepšení:

   1. U každého uživatele bude uložen login, challenge a md5(hmac_md5(password, challenge)).
   2. Při přihlašování se AJAXem zjistí, jaký challenge uživatel naposledy použil, a pošle se hmac_md5(password, old_challenge) a md5(hmac_md5(password, new_challenge)).

1. To už vypadá lépe, ale je to jen proof of concept. Používá se to někde? Chytilo se to? Výše uvedená fóra to např. nepoužívají.

2. Problém je shrnutý i na wikipedii
...this presents a problem for challenge-response algorithms, which require both the client and the server to have a shared secret. Since the password itself is not stored, a challenge-response algorithm will usually have to use the hash of the password as the secret instead of the password itself. In this case, an intruder can use the actual hash, rather than the password, which makes the stored hashes just as sensitive as the actual passwords.

Jinak pěkná debata na to téma i zde:
http://www.root.cz/clanky/bezpecne-prihlasovani-uzivatelu/nazory/
http://www.openstreetmap.org - mapy celého světa "wiki style"

MacHala

  • Stálý člen
  • **
  • Příspěvků: 1104
  • Big Bro iz watching joo!
    • ZlejT
Re: Jak fungují hashed hesla?
« Odpověď #8 kdy: 18 Září 2010, 15:31:45 »
ja myslim, ze se zabezpecovanim for, jako je tohle se nema cenu prilis zabyvat - prijdu o account? kvuli tomu se prece nerozbrecim... navic kdo by ten man in the middle attack provadel? nudici se technik od O2? a i kdyby - co by z toho mel?
za vetsi riziko nez man in the middle povazuju, ze nekdo pomoci sql injekce zmeni email spojeny s mym accountem (pochybuju, ze se bezne je sifruji) a necha si zaslat nove heslo...
Prislusnik ligy, za kreativni pouzivani interpunkcnich znamenek, carek, predevsim.
=======================================
Tweetuju jako http://twitter.com/zl8

 

Provoz zaštiťuje spolek OpenAlt.