Hlavní navigace

Názor ke zprávičce Velmi rychlá kryptografická hašovací funkce BLAKE3 vyšla ve verzi 1.0.0 od Michal Kubeček - Bacha, v případě hashování pro účely tabulek je...

  • 28. 7. 2021 18:01

    Michal Kubeček

    Bacha, v případě hashování pro účely tabulek je to solení naprosto skrytý implementační detail. A ta sůl se s hashem neukládá.

    Ano, asi jsem měl místo "salt" použít (v tomto kontextu) obvyklejší výraz "secret". Možná bych tím malinko snížil míru všeobecného nedorozumění v této diskusi. Tak se to pokusím aspoň trochu napravit.

    To, co jsem měl na začátku na mysli, jsou hashovací tabulky používané k rychlému vyhledávání položky; z hlavy třeba socket lookup nebo ARP cache. Z klíče se spočítá hash, vezme se zbytek při dělení velikostí tabulky (obvykle mocnina dvou) a ten se použije jako index do pole, kde je hlava jednosměrného spojového seznamu. Velikost tabulky je většinou volena tak, aby ty spojové seznamy nebyly moc dlouhé (ideální délka je 0-1). Samozřejmě také chceme, aby hashovací funkce byla co nejrychlejší a kryptografická kvalita nás teoreticky až tak nezajímá.

    Problém nastane v okamžiku, kdy bude útočník, lokální nebo i vzdálený, schopen generovat větší množství klíčů se stejným hashem (nebo jeho použitou částí), protože nás pak donutí vyrobit si nad konkrétním prvkem pole dlouhý řetěz a ten se při lookupu, který se trefí do dané hodnoty, bude muset procházet lineárně, což zdržuje a zatěžuje procesor. Proto je žádoucí tomu zabránit, buď použitím trochu chytřejší hashovací funkce nebo tím, že se do výpočtu přidá pseudonáhodně generovaná "tajná" hodnota, kterou útočník nezná.