L'utilizzo della stessa chiave segreta per AES-256-CBC e HMAC-SHA512 in Encrypt-then-MAC può potenzialmente compromettere la chiave?

4

Supponiamo che io usi una chiave (e una IV) per crittografare un pezzo di dati binari con AES-256-CBC per produrre i dati crittografati corrispondenti.

Supponiamo che io lanci questi dati crittografati in HMAC-SHA512 utilizzando la stessa chiave di cui sopra per produrre un MAC. Invio i dati crittografati e il MAC a un destinatario.

Il destinatario può ora verificare i dati crittografati rispetto al MAC (se conosce la chiave).

La mia domanda è semplicemente: il fatto che la chiave che ho usato per AES-256-CBC I anche usata per l'HMAC-SHA512 potenzialmente comprometta la mia chiave in qualche modo? In altre parole, si tratta di un potenziale vettore di attacco aggiunto contro la mia chiave (a causa di potenziali punti deboli in SHA-512 o qualcos'altro)?

Per dirla in modo diverso, mi chiedo se ci sia qualche differenza in termini di protezione di una chiave se quella chiave viene utilizzata solo per AES-256-CBC rispetto ad AES-256-CBC e HMAC-SHA512.

Sarebbe meglio usare CBC-MAC? (Specialmente se l'uso di CBC-MAC fa passare la chiave anche attraverso AES-256-CBC, senza aggiungere ulteriori vettori di attacco? Non sono sicuro di ciò.)

    
posta cryptonamus 03.07.2015 - 14:20
fonte

1 risposta

2

Questa domanda risponde efficacemente a una variazione della domanda su crypto.SE , qui: Utilizzo della stessa chiave segreta per la crittografia e l'autenticazione in uno schema Encrypt-then-MAC

La parte pertinente della risposta è qui: (sottolineatura mia).

Potential problems with using the same key for encryption and MAC would be structural; [One] example is CBC-MAC, which is indeed identical to CBC encryption, except that you only use the last encrypted block as MAC. CBC-MAC works fine as long as you do not give to the attacker access to pairs (p,c): p is a plaintext block, c is the corresponding ciphertext block, for the key k which you use for CBC-MAC. But if you use the same key k for encrypting the data, then you are giving to the attacker a lot of such blocks.

With HMAC vs AES, no such interference is known. The general feeling of cryptographers is that AES and SHA-1 (or SHA-256) are "sufficiently different" that there should be no practical issue with using the same key for AES and HMAC/SHA-1. However, simply defining that "difference" with any kind of scientific rigor would be hard, and it is not a much explored security feature. So that's one of these constructions which can be qualified as "no urgency to fix it, but don't do it if you can avoid it". A much "safer" way (in the sense of: "we know what characteristics of the involved algorithms we are exercising") is to take your master key K, and derive from it, with a good one-way Key-Derivation Function, a sub-key for encryption and another sub-key for the MAC. This can be as simple as applying SHA-256 on K and splitting the 256-bit result into two 128-bit keys.

There are some MAC and encryption algorithms which intrinsically support sharing the same key. This is exactly what happens in GCM.

Quindi, il consenso generale è che la sicurezza è ok, e non si introducono vulnerabilità condividendo una chiave tra AES e HMAC, ma è anche opinione generale che non è buona igiene riutilizzare una chiave per diversi scopi. Quindi, ciò che decidiamo di risolvere è che questa costruzione è generalmente disapprovata, ma al momento non ci sono problemi di sicurezza noti o sospetti.

    
risposta data 26.09.2016 - 17:34
fonte

Leggi altre domande sui tag