Autentizace: partial password 2

Organizace, které dříve používaly autentizaci založenou na zadávání jen vybraných znaků z hesla, tento koncept z mnoha důvodů pomalu opouštějí a přecházejí na skutečnou vícefaktorovou autentizaci.

Vzhledem k tomu, že systém, který tuto formu autentizace používá, musí být schopen ověřit, zda uživatel zadal na jeho výzvu ty správné znaky, tak v databázi nemůže být heslo uživatele uloženo jako hash, neboť z hashe není možné zpětně zjistit původní hodnotu a tudíž by systém nemohl ověřit, zda znaky zadané uživatelem byly ty správné.

Z výše uvedeného tedy vyplývá jedna podstatná skutečnost, že organizace, která tuto autentizaci provozuje, v podstatě zná hesla všech svých uživatelů. Už to samo o sobě představuje určité bezpečnostní riziko. To, jakým způsobem organizace tato hesla chrání, je věc druhá. Když se nad tím zamyslíme, tak ale moc možností nemá. V zásadě existuje jediná možnost, jak tato hesla chránit. Šifrovat je, např. pomocí symetrické blokové šifry jako je AES nebo Triple DES.

Předpokládám, že vás snad ani nenapadlo, že byste mohli hesla uložit do systému v otevřené podobě. Možná vás ale napadlo, že by se daly ukládat hashe pro všechny možné n-tice znaků, které systém po uživateli může požadovat, neboť jejich počet se dá snadno spočítat. To by jistě bylo řešením. Uvědomte si však, že i kdyby uživatel vytvářel opravdu komplexní hesla, která by obsahovala velká a malá písmena, čísla a speciální znaky, tak hash, byť by byla použita bezpečná jednocestná hashovací funkce SHA 256, bude generován jen z pouhých n znaků. Kde n je počet znaků, které jsou po uživateli vyžadovány.

Pokud by systém po uživateli požadoval zadání 3 znaků z hesla, které se nacházejí na vybraných pozicích, znamenalo by to, že v DB musí být uloženy hashe pro všechny možné 3znakové kombinace. Prolomení takového hashe ale znamená vyzkoušet v krajním případě pouhých 95^3 možností, což je při stávajících výkonech procesorů otázka několika málo milisekund. Není v tomto případě použití hashovacích funkcí jen zbytečná obfuskace?

Kromě toho je zde ještě jeden, možná již méně závažný problém, který byste museli řešit, a to že si uživatelé mohou zadat různě dlouhá hesla. To by potom znamenalo, že tabulka v DB by musela být navrhnuta s ohledem na maximální délku hesla resp. maximální možný počet hashů, vygenerovaných pro všechny kombinace. Velikost DB by sama o sobě nemusela představovat zásadní problém.

Vyjdeme-li z předpokladu, že délka hashe je 256 bitů, a že budeme do DB ukládat řetězec o délce 64 znaků, tak při délce hesla 8 znaků a 56 kombinacích se jedná o necelé 4 kB na uživatele. Vynásobíte-li tuto velikost počtem uživatelů, zjistíte přibližné nároky na diskový prostor. Samozřejmě, existují i jiné, co se týká nároků na zdroje úspornější řešení, ale je otázka, zda se v takových případech nejedná o security through obscurity přístup.

Pokud se rozhodnete, že pro jednotlivé kombinace znaků hashe vytvářet nebudete, a heslo, které si uživatel zadá, budete šifrovat, tak potom musíte dobře chránit klíč, který je k šifrování a dešifrování těchto hesel používán. Rozhodně by se nemělo jednat o šifrování na úrovni DB a stejně tak by klíč neměl být uložen přímo v aplikaci. Řešením by mohl být např. HSM (Hardware Security Module), který by prováděl příslušné krypto-operace.

Celé řešení by pak mohlo fungovat tak, že v DB by bylo uloženo zašifrované heslo. Systém by uživatele vyzval k zadání znaků, které se nachází na určitých pozicích. Znaky zadané uživatelem by byly předány spolu se zašifrovaným heslem HSM modulu. Ten by heslo dešifroval, provedl by porovnání a jako výsledek by vrátil aplikaci odpověď true/false. Nebo máte nějaký jiný nápad?

Pokud vás tento článek zaujal, můžete odkaz na něj sdílet.

Štítky: ,


K článku “Autentizace: partial password 2” se zde nenachází žádný komentář - buďte první.

Diskuse na tomto webu je moderována. Pod článkem budou zobrazovány jen takové komentáře, které nebudou sloužit k propagaci konkrétní firmy, produktu nebo služby. V případě, že chcete, aby z těchto stránek vedl odkaz na váš web, kontaktujte nás, známe efektivnější způsoby propagace.

Přihlášeným uživatelům se tento formulář nezobrazuje - zaregistrujte se.

Jméno:(požadováno)
E-mail:(požadováno - nebude zobrazen)
Web:

Text vaší reakce: