it-swarm-eu.dev

Při použití AES a CBC je nutné udržovat IV tajemství?

Pokud zašifruji některá data náhodně vygenerovaným klíčem a inicializačním vektorem, uložím všechny tři informace do stejného řádku tabulky; je nutné zašifrovat i klíč i klíč?

Zjednodušená struktura tabulky:

  • Šifrovaná data
  • Klíč (šifrovaný pomocí druhé metody)
  • IV (šifrované?)

Předpokládejme, že je nutná architektura a metoda: Vysvětlení je zdlouhavé a matné.

44
Stu Pegg

Od Wikipedia :

Inicializační vektor má jiné bezpečnostní požadavky než klíč, takže IV obvykle nemusí být tajné . Ve většině případů je však důležité, aby se inicializační vektor nikdy znovu nepoužil pod stejným klíčem . Pro CBC a CFB opakované použití IV nevrací některé informace o prvním bloku prostého textu ao jakékoli společné předponě sdílené oběma zprávami.

Nemusíte udržovat IV tajemství, ale musí to být náhodné a jedinečné.

51
Polynomial

I když ve vašem případě by měl být IV v pořádku v prostém textu v DB, existuje vážná zranitelnost, pokud uživateli povolíte ovládání IV.

Dešifrování IV se používá (a používá se pouze) k XOR první blok do finálního prostého textu - takže pokud útočník dokáže ovládat IV, může libovolně řídit první blok dat a zbytek prostého textu přežije beze změny.

enter image description here

Pokud útočník zná původní prostý text prvního bloku, problém se opět zvětšuje, protože útočník si může zvolit libovolná data pro první blok bez pokusu a chyby.

To je zvláště důležité v případě, kdy jsou šifrovaná data přenášena nedůvěryhodnými kanály s IV, možná do prohlížeče nebo do aplikace atd.

8
George Powell