it-swarm-eu.dev

Jak dlouho by měla být náhodná neteř?

NIST poskytuje dobré pokyny pro délku klíčů a hashů pro různé algoritmy . Ale nevidím nic konkrétně o délce náhodného nebo pseudonáhodného nonce (číslo bylo použito jednou).

Pokud existuje jediná dobrá odpověď pro různá použití, rád bych to viděl. Ale abych to učinil konkrétním, budu používat běžnou situaci „reset hesla pomocí e-mailu“, kdy server vygeneruje URL s komponentou pseudonáhodné cesty. Vypadá to trochu jako HTTP Digest Authentication, ve kterém příklad v RFC vypadá, že má 136 bitů (dcd98b7102dd2f0e8b11d0f600bfb0c093).

Všiml jsem si, že mnoho lidí podle všeho používá UUID verze 4 (které poskytují 122 pseudonáhodných bitů) nebo toto, jak je uvedeno v Jsou GUID bezpečné pro jednorázové tokeny? , i když si uživatel musí dávat pozor na použití mnohem mnohem předvídatelnějších verzí UUID a ošklivé přetrvávající místní útoky na generátor náhodných čísel ve Windows = které byly většinou opraveny do roku 2008.

Kolik faktorů pseudonáhodných bitů by však mělo být zahrnuto do adresy URL, nehledě na rizikovost zamotání se do verzí a implementací UUID?

35
nealmcb

64bitová neces je pravděpodobně více než dostatečná pro většinu praktických účelů, pokud je 64 bitů náhodná krypto-kvalita.

Proč je 64 bitů dostačujících? Dovolte mi nastínit druh odůvodnění, na který můžete odpovědět na tuto otázku. Předpokládám, že se jedná o časově omezenou adresu URL pro jedno použití; poté, co je použit jednou, již není platný a po chvíli (řekněme 3 dny) vyprší a již není platný. Protože neteř má smysl pouze pro server, jediný způsob, jak může útočník zkusit odhadnout, je odeslat 64bitový odhad na server a zjistit, jak server reaguje. Kolik odhadů může útočník vyzkoušet v době, než vyprší platnost nonce? Řekněme, že útočník může podat 1000 požadavků HTTP za sekundu (to je docela svalnatý útočník); pak může útočník vydělat asi 1 000 * 3600 * 24 * 3 = 228 hádání během 3 dnů. Každý odhad má 1/264 šance na pravdu. Útočník má tedy maximálně 1/236 šance na porušení systému. To by mělo být pro většinu nastavení dostatečně bezpečné.

23
D.W.

Nejprve odhadněte maximální množství využití, které váš systém získá (kolikrát bude vygenerována náhodná neteř). Dále rozhodněte o přijatelné úrovni zabezpečení, to znamená, jak nepravděpodobné musí být, že neces je duplikátem starého. Vypočítejte počet použití v bitech, zdvojnásobte je a přidejte nepravděpodobnost, kterou potřebujete v bitech, a máte svou nenulovou délku.

Příklad z AES-GCM s náhodným IV. Počet vyvolání povolených s náhodným IV pro určitý klíč je 232. Pravděpodobnost opakovaného použití IV musí být menší než 2-32. Požadovaná délka nonce je 32 × 2 + 32 == 96 bitů.

Pokud byste hypoteticky chtěli generovat 296 pakety, každý s náhodnou nonce a chtěl by pravděpodobnost duplikátu nonce být menší než 2-32, budete potřebovat nonce, který je dlouhý 96 × 2 + 32 == 224 bitů.

Porovnáním s výše uvedenou odpovědí 64 bitů ... pokud máte více než 216 (65536) využití vašeho systému, pravděpodobnost, že v té době bude mít duplicitní neteř, je více než 2-32 (více než 1 ze 4 miliard, krátký rozsah). To může být docela přijatelné, v závislosti na vašich bezpečnostních požadavcích, nebo nemusí.

Jako jedna velikost vyhovuje všem odpovědím - uvedené náhodné UUID jsou docela v pořádku.

Nezapomeňte, že tyto hodnoty jsou přibližné hodnoty a přesnější výpočty jsou mnohem složitější.

7
Nakedible