Che cosa differenzia l'autenticità fornita dalla firma RSA e AES-GCM?

1

Backstory

Il sistema che sto progettando richiede messaggi crittografati e l'autenticazione dei messaggi. AES-GCM sembra la scelta logica a causa delle sue capacità di autenticazione e throughput elevato.

La chiave utilizzata per crittografare un messaggio viene generalmente generata in modo casuale per messaggio e crittografata utilizzando la chiave pubblica del destinatario. La chiave crittografata viene inviata insieme al messaggio.

Generalmente non ci sono chiavi persistenti tra entrambe le parti.

Esempio

Prendiamo il seguente messaggio come esempio:

{
  "timestamp": "2017-01-01",
  "encryptedMessage": "...",
  "sign": "..."
  "key": "..."
}

Il valore "timestamp" è in testo chiaro, "encryptedMessage" crittografato, "sign" contiene la firma RSA di "timestamp" e "chiave" contiene la chiave crittografata. In questo esempio. Avrebbe senso anche firmare "encryptedMessage"?

Chiarimento delle domande

Ci sono dei vantaggi nell'usare la firma RSA sull'autenticità fornita da AES-GCM?

Avrebbe senso firmare un messaggio già crittografato usando AES-GCM?

    
posta Alex 22.09.2017 - 19:50
fonte

1 risposta

1

La parte di autenticazione di AES-GCM si basa su una chiave condivisa tra mittente e destinatario, nota solo al mittente e al destinatario. Nel tuo schema la chiave di crittografia (e quindi autenticazione) non è legata a un mittente specifico, cioè chiunque conosca la chiave pubblica del destinatario può creare tale messaggio. E dal momento che la chiave pubblica è considerata pubblica, questo significa che tutti possono farlo. Pertanto, la parte di autenticazione di AES-GCM non dimostra che il messaggio proviene da un mittente specifico ma solo che tutte le parti del messaggio provengono dallo stesso mittente, cioè quello che ha generato la chiave segreta.

La crittografia a chiave pubblica con RSA o altro consente invece di dimostrare che il messaggio proviene da un mittente specifico, cioè uno che possiede una chiave privata specifica in cui il destinatario conosce già la chiave pubblica del mittente. Ciò dimostra che una parte rilevante della comunicazione è firmata dalla chiave privata del mittente. Mentre il mittente può firmare la chiave casuale, il sistema potrebbe interrompersi se un utente malintenzionato accede a una singola chiave (hackerando il destinatario) e potrebbe quindi riutilizzare la chiave acquisita e la firma corrispondente in tutti gli altri messaggi (cioè riprodurre la firma). Pertanto, il messaggio stesso dovrebbe essere firmato.

In sintesi, AES-GCM e RSA forniscono diversi livelli di autenticazione. Quale di cui hai bisogno dipende dal tuo caso d'uso specifico. Ma, se è necessario essere sicuri che il messaggio provenga da un mittente specifico (e non da un attaccante), AES-GCM da solo non è sufficiente.

    
risposta data 22.09.2017 - 20:26
fonte

Leggi altre domande sui tag