A hitelesítési címke kiszámításához a Galois / Counter módban (GCM) először a MAC-t kell kiszámítani a titkosítás GHASH használatával szöveget és a kiegészítő adatokat. Ezt követően ezt a MAC-ot a GCTR használatával (az első számláló használatával) titkosítják.
A kérdésem a következő: Miért nem szükséges ez az utolsó titkosítási lépés? Mi lenne a biztonsági probléma, ha csak a GHASH kimenetet használnám hitelesítési címkeként?
Válasz
Mi lenne a biztonsági probléma, ha csak közvetlenül a GHASH kimenetét használnám hitelesítési címkeként?
Ezután valaki, aki titkosított üzeneteket hallgat, helyreállíthatja a $ H $ értéket, amelyek közül az egyik helyes.
A GHASH kimenete egy nyilvános polinom (a titkosítási szöveg és az AAD alapján), titkos értéken értékelve $ H $ . Kiderült, hogy egy ilyen polinom mellett a $ H $ hatékonyan helyreállítható, akár a polinom átírásával $ \ mathrm {GHASH} (H) + \ mathrm {Tag} = 0 $ , és ennek gyökereinek helyreállítása (ami véges mezőben is elvégezhető), vagy még egyszerűbb, ha két ilyen rejtjelet kap, átírva mindkettőt kibővített euklideszi értékkel állítsa vissza a közös gyökérzetet.
Adva $ H $ , a támadó triviálisan tetszőlegesen módosíthatja a titkosított üzeneteket ; igen, ez rossz.
Megjegyzések
- Még egy kérdés: Miért van szükség a GCTR használatára a GHASH blokk titkosításához ahelyett, hogy csak használnánk $ Enc_H (GHASH) $ címkeként? Így a GMAC IV nélkül is használható.
- @mat: a $ GHASH $ küldését érted AES-en keresztül (kulcsként $ H $ -ot használva). )? Nos, valójában az ilyesmi működne (nos, nem használnám kulcsként a $ H $ kulcsot, de ettől eltekintve …), és konzervatívabb tervezés; azonban a GCM-et eredetileg csővezetékes üzemmódnak tervezték; vagyis megvalósítható egy AES hardveres megvalósítással, ahol minden óraciklusban a következő sima szövegblokkot adjuk meg a hardvernek, és minden óraciklusnak 10-14 ciklus előtti rejtjeles szöveg jelenik meg. A GHASH-on történő titkosítással ' blokkoljuk a folyamatot …
- Csak egy egyszerűre gondolok Az EKB titkosítása (vagy $ H $, vagy $ K $ használatával kulcsként) a GHASH-ból, ahelyett, hogy a GCTR-lel csinálná. Előnye lehet, hogy a GMAC-ot könnyebben lehet használni, mert már nem lenne ' szüksége egy nonce-re. A pipelinig itt nem jelent problémát, mivel a címke titkosítása a GCM-ben egyébként is a legutolsó lépés, ezért a folyamat ebben a szakaszban határozottan üres.
- @David 天宇 Wong: többnyire performance ( A GHASH párhuzamos, a kulcs nélküli hashok általában nem ' t)
- @David 天宇 Wong: ja, ugye, ez is …