OCRA

OCRA ( OATH Challenge-Response Algorithm , RFC 6287. ) je algoritmus , který kombinuje možnosti autentizace klienta , vzájemné autentizace a podepisování transakcí pomocí jednorázových hesel . Jedná se o modifikaci algoritmu HOTP . Hlavní rozdíl mezi OCRA a HOTP spočívá v tom, že jako vstup používá náhodnou hodnotu přijatou ze serveru, nikoli počítadlo událostí.

Historie

Spolupráce OATH vyvíjí od roku 2004 jednorázové ověřovací algoritmy založené na heslech. Vzhledem k rychlému rozvoji mobilního průmyslu byly tyto algoritmy velmi populární. Koncem roku 2005 vyšel HOTP. Algoritmus HOTP používá pro generování jednorázových hesel časově nezávislý čítač. Tím se zabrání desynchronizaci, když je mezi klientem a serverem velká vzdálenost. [1] [2]

OATH představil algoritmus TOTP v roce 2008, což je modifikace HOTP. [3] TOTP pro autentizaci generuje heslo na základě času, na rozdíl od HOTP, kde bylo heslo vygenerováno na základě čítače. Toto heslo je platné pouze po určitou dobu. Díky tomu je částečně vyřešen problém desynchronizace uzlů umístěných daleko od sebe, přičemž nedochází ke ztrátě komunikace náhodným nebo záměrným resetem čítačů. [čtyři]

Na podzim roku 2010 společnost OATH upravila TOTP zavedením algoritmu OCRA. Jeho hlavní výhodou je skutečnost, že se server může autentizovat. Algoritmus je také schopen vytvořit elektronický digitální podpis a server lze také autentizovat. [jeden]

Obecné schéma

Použitá označení: [5]

Typické režimy provozu

Jednosměrná autentizace

V tomto režimu musí server odeslat náhodný požadavek klientovi, který zase musí poskytnout platnou odpověď, aby mohl být ověřen. Obě strany se musí předem dohodnout na tajném klíči K. [4] [5]

V tomto případě by měly být použity následující parametry: [5]

Algoritmus akce: [5]

  1. Server odešle klientovi Q požadavek.
  2. Klient vytvoří R = OCRA(K, {[C] | Q | [P | S | T]}) a odešle odpověď R na server.
  3. Server zkontroluje odpověď R. Pokud je odpověď správná, odešle klientovi OK, v opačném případě NOK.

Vzájemná autentizace

V tomto režimu se klient a server vzájemně ověřují. Klient odešle náhodný požadavek na server, který vygeneruje odpověď a odešle ji klientovi spolu se svým požadavkem. Klient nejprve zkontroluje odpověď serveru, aby se ujistil, že je správná. Poté klient vytvoří svou odpověď a odešle ji na server. Server zkontroluje odpověď klienta a tím dokončí proces vzájemné autentizace. Obě strany se musí předem dohodnout na tajném klíči K. [4] [5]

Parametry serveru pro odpověď: [5]

Klientské možnosti odpovědi: [5]

Algoritmus akce: [5]

  1. Klient odešle na server požadavek kontroly kvality.
  2. Server vygeneruje RS = OCRA(K, [C] | QC | QS | [S | T]). Odešle RS a jeho QS požadavek klientovi.
  3. Klient zkontroluje odpověď serveru a vypočítá svou vlastní odpověď RC = OCRA(K, [C] | QS | QC | [P | S | T]). Odesílá na RC server.
  4. Server zkontroluje odpověď klienta a pokud je úspěšná, odešle potvrzení o ověření.

Jednoduchý podpis

Server musí klientovi poslat nějakou hodnotu k podpisu. Touto hodnotou může být například informace, která má být podepsána, nebo hashovací funkce z této informace. Obě strany se musí předem dohodnout na tajném klíči K. [5]

Používají se následující parametry: [5]

Algoritmus akce: [5]

  1. Server odešle klientovi požadavek Q na podpis.
  2. Klient vygeneruje SIGN = OCRA(K, [C] | QS | [P | T]) a odešle na server odpověď SIGN.
  3. Server zkontroluje odpověď R. Pokud je odpověď správná, odešle klientovi OK.

Ověřovací podpis serveru

V tomto případě klient nejprve zkontroluje pravost serveru a teprve poté vypočítá a odešle elektronický podpis. Klient nejprve odešle serveru náhodnou hodnotu jako požadavek, načež server klientovi odešle odpověď na jeho požadavek a informaci k podpisu. Obě strany se musí předem dohodnout na tajném klíči K. [5]

Parametry serveru pro odpověď: [5]

Klientské možnosti odpovědi: [5]

Algoritmus akce: [5]

  1. Klient odešle na server požadavek kontroly kvality.
  2. Server vygeneruje RS = OCRA(K, [C] | QC | QS | [T]). Odešle RS a jeho požadavek QS klientovi k podpisu.
  3. Klient zkontroluje odpověď serveru a vypočítá svou vlastní odpověď SIGN = OCRA(K, [C] | QS | QC | [P | T]). Odešle SIGN na server.
  4. Server zkontroluje odpověď klienta a pokud je úspěšná, odešle potvrzení OK.

Požadavky na implementaci

Spolehlivost algoritmu

Autentizační systémy založené na jednorázových heslech jsou poměrně spolehlivé. OCRA má zároveň řadu výhod oproti svým předchůdcům, algoritmům TOTP a HOTP. [čtyři]

Jednou ze závažných metod útoku je spoofing autentizačního serveru, který může být účinný při útocích na TOTP a HOTP. V tomto případě útočník obdrží data od uživatele a může je použít ke komunikaci se serverem. V případě algoritmu OCRA, který pracuje podle metody „request-response“, však musí útočník fungovat jako prostředník mezi uživatelem a serverem. Útočník bude také muset nahradit adresu klienta, aby mohl přijímat data ze serveru a používat je ke komunikaci s klientem. [čtyři]

Algoritmus OCRA lze také implementovat tak, aby byl odolný vůči útoku na základě desynchronizace časovače nebo čítače, které podléhají HOTP a TOTP, protože tyto parametry lze v OCRA kombinovat. Když je zaveden čítač, odeslání opakované zprávy útočníkem pomocí metody Man-in-the-middle selže , protože čítač na straně serveru (nebo klienta, v závislosti na tom, koho se útočník snaží napodobit) se změní a zpráva bude zkontrolována již nikoli hodnota, se kterou byla vytvořena. Je také možné změnit dobu, po kterou je heslo platné, v závislosti na vzdálenosti mezi klientem a serverem, čímž se zabrání desynchronizaci. [čtyři]

Srovnání s vrstevníky

Hlavními konkurenty OCRA mezi algoritmy pracujícími na metodě „request-response“ jsou SCRAM a CHAP . Oproti nim má OCRA výhody i nevýhody. Všechny tři algoritmy podporují vzájemnou autentizaci, ale CHAP nebyl původně navržen jako důležitá součást algoritmu. Také v CHAP je každý přenos dat prováděn jako paket, který označuje účel tohoto paketu, jeho délku atd. To zvyšuje množství přenášených dat a může degradovat algoritmus na pomalém připojení. Tato forma zpráv však umožňuje provádět některé další operace, například změnit tajné slovo uložené serverem i klientem. OCRA tuto funkci nemá, algoritmus nepodporuje možnost změny tajemství. Ve SCRAM mají server a klient klíčová pole chráněná saltem . To vám umožní změnit klíč při každé nové autentizační relaci. SCRAM má také schopnost detekovat útok pomocí metody „man in the middle“. Po úspěšné detekci takového útoku je komunikace mezi klientem a serverem zastavena. OCRA a SCRAM, na rozdíl od CHAP, používají náhodnou hodnotu přijatou ze serveru jako argument kryptografické funkce. OCRA má schopnost vytvořit elektronický podpis, zatímco SCRAM používá podpis k ověření. Server (klient) odešle klientovi (serveru) parametry pro šifrovací funkci a šifrovaný text. Poté klient (server) text dešifruje, podepíše a odešle serveru (klientovi). Když je podpis ověřen, je autentizace považována za prošlou. OCRA má na rozdíl od svých konkurentů možnost používat čítače a časovače jako další ochranu proti hackování. [6] [7]

Poznámky

  1. 12 Nathan Willis, 2010 .
  2. Schéma autentizace uživatele v domácích sítích založené na HOTP, 2009 .
  3. OATH předkládá TOTP: Time-Based One Time Password Specification IETF .
  4. 1 2 3 4 5 6 Koncept jednorázových hesel při budování autentizačního systému, 2006-07, 2006-08 .
  5. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 RFC 6287, 2011 .
  6. RFC 5802, 2010 .
  7. RFC 1994, 1996 .

Zdroje