Challenge-response

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

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

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

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

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