( arpad | 2025. 06. 05., cs – 11:07 )

Legközelebb ha jelzed hogy melyik részére reagálsz akkor talán egyszerűbb megérteni és nem beszélünk el egymás mellett.

Ok, akkor átfogalmazom, lehet hogy az én hibám hogy próbáltam kicsit egyszerűsíteni és nem elveszni a részletekben. A szerveren clear textben kell egy olyan információt tárolni amit ha egy támadó (külső vagy belső) megszerez akkor meg tudja személyesíteni a felhasználót, pont mint ha a jelszavát szerezte volna meg.

Ha jól emlékszem ez a Digest auth esetén az md5(realm:user:password) és a responseban ezt az értéket kell felhasználnod. Ilyenkor ez a hash érték pont ugyanolyan szenzitív mint maga a jelszó, hiszen az ismeretében a challenge-ekre (szerver álal küldött nonce értékekre) megfelelő response-t tud generálni a támadó és ezzel bejelentkezni.

Ezt most fejből írom de nekem ez rémlik:

- szerveren tárolva: Hs = md5(realm:user:password)
- szerver elküldi a realm-ot és az egyedi nonce-t a kliensnek
- mind a kliens mind a szerver kiszámol még egy hash-t a requestre: Hr =md5(method:http path)
- a szerver által elvárt response pedig: Hf = md5(Hs:nonce:Hr)

Ahhoz hogy ezt a támadó ki tudja számolni elég a Hs-t ismerni, a nonce-t a szerver adja, a Hr pedig egyértelműen jön abból hogy hova csatlakozik. Ekkor a Hs értékének az ismerete az ugyanannyit jelent a user és a password ismerete.

Szóval az állításom: Digest authnál clear textben kell tárolnod olyan információt amivel felhasználónk be tud lépni. Hogy ezt most username:password-nek hívod vagy Hs-nek, az mindegy. Ez így rendben?