Per calcolare il tag di autenticazione in modalità Galois / Counter (GCM), prima viene calcolato un MAC utilizzando GHASH sulla cifratura testo e dati aggiuntivi. Dopodiché, questo MAC viene crittografato utilizzando GCTR (utilizzando il primo contatore).

La mia domanda è: perché è necessario questo ultimo passaggio di crittografia? Quale sarebbe il problema di sicurezza se usassi loutput di GHASH direttamente come tag di autenticazione?

Risposta

Quale sarebbe il problema di sicurezza se usassi loutput di GHASH direttamente come tag di autenticazione?

Quindi qualcuno che ascolta i messaggi crittografati potrebbe recuperare $ H $ , uno dei quali è corretto.

Loutput di GHASH è un polinomio pubblico (basato sul testo cifrato e lAAD), valutato con un valore segreto $ H $ . Risulta che, dato un tale polinomio, $ H $ può essere ripristinato in modo efficiente, sia riscrivendo il polinomio come $ \ mathrm {GHASH} (H) + \ mathrm {Tag} = 0 $ , e recuperare le radici di ciò (che può essere fatto in un campo finito), o ancora più facile, ottenere due di tali testi cifrati, riscrivendo entrambi e utilizzare un valore euclideo esteso per recuperare la loro radice comune.

Dato $ H $ , un utente malintenzionato può fare banalmente modifiche arbitrarie ai messaggi crittografati ; sì, va male.

Commenti

  • Unaltra domanda: perché è necessario utilizzare GCTR per crittografare il blocco GHASH invece di usare $ Enc_H (GHASH) $ come tag? In questo modo, GMAC potrebbe essere utilizzato senza la necessità di un IV.
  • @mat: intendi inviare $ GHASH $ tramite AES (usando $ H $ come chiave )? Beh, in realtà, quel genere di cose funzionerebbe (beh, non ' userei $ H $ come chiave, ma a parte questo …) e sarebbe un design più conservativo; tuttavia GCM è stato originariamente progettato per essere una modalità pipe-lineable; cioè, potrebbe essere implementato con unimplementazione hardware AES in cui ogni ciclo di clock, diamo il successivo blocco di testo in chiaro allhardware e ogni ciclo di clock, il viene visualizzato un testo cifrato di 10-14 cicli fa. Eseguendo una crittografia sul GHASH, ' blocchiamo la pipeline …
  • Intendo solo un semplice Crittografia ECB (utilizzando $ H $ o $ K $ come chiave) del GHASH invece di farlo con GCTR. Potrebbe avere il vantaggio che GMAC sarebbe più facile da usare, perché ' non avrebbe più bisogno di un nonce. Il pipelinig non è un problema qui, poiché la crittografia del tag è lultimo passaggio da eseguire comunque in GCM, quindi la pipeline è decisamente vuota in questa fase.
  • @David 天宇 Wong: principalmente prestazioni ( GHASH è parallelizzabile, hash senza chiave tipicamente non sono ' t)
  • @David 天宇 Wong: oh, giusto, anche quello …

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *