Azure AD in sinhronizacija gesel

O varnosti sinhroniziranja gesel v Microsoftov oblak, Azure AD, vedno poteka burna razprava.

Prvo kot prvo – gesla se nikoli ne sinhronizirajo v oblak. Pravzaprav se sinhronizira rezultat tisoče iteracije HMAS-SHA256 funkcije razprševanja (“hashing” funkcije). Microsoft pri ustvarjanju hasha, ki bo poslan v oblak, uporablja tudi “per user salt”. To pomeni, bo tudi pri uporabnikih, ki uporabljajo isto geslo, hash v oblaku izgledal drugače.

Celoten proces je opisan v tem članku, spodaj pa lahko preberete povzetek.

  1. Vsaki dve minuti agent za sinhronizacijo “hashov” gesel, ki se nahaja na AD Connect strežniku, od DC-ja zahteva “hashe” gesel (unicodePwd atribut). Ta zahtevek gre preko MS-DRSR protokola za replikacijo, ki se uporablja za sinhronizacijo podatkov med DC-ji. Storitveni račun mora imeti Replicate Directory Changes ter Replicate Directory Changes All AD pravice (te so po privzetih nastavitvah dane že ob namestitvi). Brez njih namreč ne more dobiti “hashov” gesel.
  2. DC pred pošiljanjem MD4 hashe gesel kriptira s ključem, ki je MD5 hash ključa RPC seje, ter s “saltom”. Rezultat nato preko RPC-ja pošlje agentu za sinhronizacijo gesel. DC preko DC protokola za replikacijo agentu za sinhronizacijo preda tudi “salt”, ki jo agent potrebuje za dekripcijo ovojnice.
  3. Ko agent za sinhronizacijo hashov gesel prejme kriptirano ovojnico, s pomočjo MD5CryptoServiceProvider ter “salta” generira ključ, s katerim prejete podatke dekriptira nazaj v MD4 format. Agent za sinhronizacijo hashov gesel nikoli nima dostopa do gesel v obliki nešifriranega teksta. Agent uporablja MD5 samo za kompatibilnost protokola za replikacijo z DC-jem in se uporablja izključno “on-premises” med DC-jem ter agentom za sinhronizacijo hashov gesel.
  4. Agent za sinhronizacijo hashov gesel razširi 16 bajtni binarni hash gesla v 64 bajtov, tako da najprej pretvori hash v 32 bajtni heksadecimalni besedilni niz (string), nato pa ta niz pretvori nazaj v binaren zapis s pomočjo UTF-16 kodiranja.
  5. Agent za sinhronizacijo hashov gesel 64 bajtnemu binarnemu zapisu doda še “per user salt”, ki je sestavljen iz “salta” dolgega 10 bajtov, s katerim še dodatno zaščiti prvotni hash.
  6. Agent za sinhronizacijo hashov gesel nato kombinira MD4 hash s “per user salt” ter rezultat vstavi v PBKDF2 funkcijo. Uporabi se 1000 iteracij HMAC-SHA256 “keyed hashing” algoritma.
  7. Agent za sinhronizacijo hashov gesel uporabi ta 32 bajtni hash ter ga združi s “per user salt” ter številom SHA256 iteracij (v vednost Azure AD-ju), ter ta string preko SSL pošlje z Azure AD Connect na Azure AD.

Ko se želi uporabnik vpisati v Azure AD in vpiše svoje geslo, gre geslo čez celoten postopek MD4+salt+PBKDF2+HMAC-SHA256. Če se hash, ki iz tega nastane, ujema s hashom, ki je shranjen v Azure AD, je uporabnik vpisal pravilno geslo in je avtenticiran. Ker so hashi v Azure AD in on-premises okolju različni, se jih ne da uporabljati za priljubljene “pass the hash” napade.

Ko je hash gesla sinhroniziran v oblak, se bodo uporabniki lahko vedno avtenticirali v Office 365 okolje, tudi če vaše on-premises okolje iz kakršnegakoli razloga izgubi povezavo z internetom.

Dodaj odgovor

Vaš e-naslov ne bo objavljen. * označuje zahtevana polja