Challenge-response

Z Wikipedie, otevřené encyklopedie

Challenge-response (výzva-odpověď) je v informatice výměna informací mezi dvěma stranami komunikace, kdy jedna strana vyzve otázkou druhou stranu (anglicky challenge) k poskytnutí správné odpovědi (anglicky response), aby mohlo dojít k autentizaci přístupu.

Výzva k zadání hesla[editovat | editovat zdroj]

Nejjednodušší formou challenge-response je případ, kdy uživatel počítače při autentizaci zadá své uživatelské jméno a počítač ho vyzve k zadání správného hesla. Pokud se zadaná dvojice jména a hesla neshoduje s uloženými informacemi, k autentizaci nedojde a přístup je uživateli odepřen.

Tímto způsobem funguje například přihlašování k počítači, na kterém pracuje více uživatelů (tzv. víceuživatelský operační systém), kde je obvykle nutné data jednotlivých uživatelů chránit. Počítač tak zpřístupňuje data jen v rozsahu, ke kterým má uživatel oprávnění (například pomocí oprávnění v systému souborů). Stejně tak je výzva k vložení hesla uplatňována v architektuře klient–server.

Nevýhodou této metody je případ, kdy je uživatelské jméno a heslo přepravováno na delší vzdálenost (např. pomocí počítačové sítě), protože třetí strana může komunikaci odposlechnout (viz Man in the middle) a následně využít k neoprávněné autentizaci (Replay attack). Řešením může být použití jednorázových hesel (heslo lze použít pro autentizaci jen jednou) nebo využití soli, případně nějaké šifry (viz níže).

Využití hashe[editovat | editovat zdroj]

Aby nebylo možné uložená hesla jednoduše zjistit, jsou často místo nich ukládány jen jejich hashe (tzv. otisky, např. MD5, SHA). Algoritmus výpočtu hashe je známý a proto na základě výzvy není druhou stranou posláno heslo ve své originální podobě, nýbrž pouze jeho hash vypočtený smluvenou funkcí. Strana, která si vyžádala heslo, pak získá pouze jeho otisk a ten porovná s otiskem, který má uložen. V případě shody je autentizace schválena.

Tato metoda nechrání přenášené heslo (v podobě hashe) před odposlechnutím (viz Man in the middle), avšak znesnadňuje krádež uložených hesel. Jsou-li hesla uložena jen v podobě jejich hashe, není z nich totiž možné snadno získat jejich vzory (ze kterých by výpočtem hashe vznikl žádaný otisk), protože výpočet hashe je jednosměrná funkce.

Využití soli[editovat | editovat zdroj]

Odposlechnutí komunikace a její následné využití k provedení neoprávněné autentizace je závažný problém. Nejjednodušším řešením je využití soli (pseudonáhodné číslo). Server, který generuje výzvu, přidá k žádosti i sůl a zároveň si toto náhodné zvolené číslo zapamatuje. Druhá strana při výpočtu odpovědi použije nejen dohodnutou hashovací funkci, ale aplikuje do výpočtu i sůl, která byla ve výzvě zaslána. Server po přijetí odpovědi nejprve aplikuje na své uložené heslo sůl, kterou si zapamatoval při generování výzvy. Pak porovná přijatou odpověď se svým výsledkem a v případě shody schválí autentizaci.

Použití soli umožňuje znesnadnit použití odposlechnuté komunikace, protože sůl je volena náhodně a každý její bit zvyšuje počet možných variant druhou mocninou – je-li sůl dlouhá 32 bitů, je možné vygenerovat 232 (4,294,967,296) možných výzev, a proto je málo pravděpodobné, že odposlechnutý hash (kombinovaný se solí) bude možné využít v dalším pokusu o autentizaci (server s vysokou pravděpodobností zvolí jinou sůl).

Využití kryptografie[editovat | editovat zdroj]

Metodu challenge-response je možné zabezpečit též pomocí kryptografie, například pomocí bezpečné Diffie-Hellman výměny klíčů.

Související články[editovat | editovat zdroj]