Chcete-li vypočítat ověřovací značku v režimu Galois / Counter (GCM), nejprve se vypočítá MAC pomocí GHASH přes šifru text a další údaje. Poté je tento MAC šifrován pomocí GCTR (pomocí prvního čítače).

Moje otázka zní: Proč je nutný tento poslední šifrovací krok? Jaký by byl bezpečnostní problém, kdybych použil výstup GHASH přímo jako ověřovací značku?

Odpovědět

Jaký by byl bezpečnostní problém, kdybych použil výstup GHASH přímo jako ověřovací značku?

Potom někdo, kdo poslouchá šifrované zprávy, může obnovit $ H $ , z nichž jeden je správný.

Výstup GHASH je veřejný polynom (založený na šifrovacím textu a AAD), hodnocený na tajnou hodnotu $ H $ . Ukazuje se, že vzhledem k takovému polynomu lze $ H $ efektivně obnovit, a to přepsáním polynomu na $ \ mathrm {GHASH} (H) + \ mathrm {Tag} = 0 $ a obnovení kořenů toho (což lze provést v konečném poli), nebo ještě snadnější, získání dvou takových šifrových textů, přepsání obou a pomocí rozšířené euklidovské hodnoty obnoví jejich společný kořen.

Vzhledem k $ H $ může útočník triviálně provádět libovolné úpravy šifrovaných zpráv. ; ano, to je špatné.

Komentáře

  • Ještě jedna otázka: Proč je nutné používat GCTR k šifrování bloku GHASH namísto pouhého použití $ Enc_H (GHASH) $ jako značka? Tímto způsobem by mohl být GMAC použit bez potřeby IV.
  • @mat: máte na mysli zasílání $ GHASH $ prostřednictvím AES (jako klíč $ H $ )? No, ve skutečnosti by takové věci fungovaly (no, nepoužíval bych ' t jako klíč $ H $, ale kromě toho …) a byl by konzervativnější design; nicméně GCM byl původně navržen jako režim s možností potrubí; to znamená, že by mohl být implementován s hardwarovou implementací AES, kde každý hodinový cyklus dáme další blok holého textu hardwaru a každý hodinový cyklus, objeví se ciphertext z doby před 10–14 cykly. Šifrováním na GHASH ' d zablokujeme potrubí …
  • Mám na mysli jednoduchý Šifrování ECB (používající jako klíč $ H $ nebo $ K $) GHASH namísto toho, aby to bylo prováděno pomocí GCTR. Mohli byste mít tu výhodu, že GMAC by se snadněji používal, protože by to už ' nepotřebovalo nonce. Pipelinig zde není problém, protože šifrování značky je stejně posledním krokem v GCM, takže v této fázi je potrubí rozhodně prázdné.
  • @David 天宇 Wong: většinou performance ( GHASH je paralizovatelný, neotočené hodnoty hash obvykle nejsou ' t)
  • @David 天宇 Wong: ach jo, taky …

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *