No . La crittografia dei messaggi funziona solo in circostanze ben definite per autenticare un messaggio, non è una soluzione di autenticazione generale.
If an attacker can capture this message, he won't be able to do anything unless he knows the keys.
Questo è falso. Ecco un insieme di circostanze in cui fallisce completamente: immagina di utilizzare un codice a blocchi usando blocchi da 8 byte in modalità ecb. In questa modalità, un blocco precedente non influenza il seguente blocco.
Ora supponiamo che Alice cripta un segreto per Bob, ovvero "Ti amo, Bob!". Questo produce "ztlk43aAb2329iw2". Voglio cambiare questo messaggio A Alice davvero non piace il lavoro di Bob, e se posso incoraggiarla a criptare qualcosa come "Odio il tuo lavoro!" con la stessa chiave, potrebbe produrre qualcosa come "7ZutlwNmsdlfdsaK". Ora prendo semplicemente i primi 8 byte di questo e inserisco gli ultimi 8 byte del messaggio originale fino alla fine, producendo "7ZutlwNmb2329iw2". Quando Bob decifra questo, produce "Ti odio, Bob!".
L'autenticazione non è riuscita e l'amore in erba è morto a metà volo.
Come ha detto Christian, è necessario utilizzare un hmac per l'autenticazione. Hmacs lavora concatenando un segreto (password) al messaggio per essere crittografato e hashing (è un po 'più complicato di quello, infatti, semplicemente concatenando non sarebbe sicuro), e tu autentica il messaggio facendo lo stesso con il segreto noto e confrontando il valore hash risultante.
Un tempo c'era un dibattito tra le persone di sicurezza sul fatto di crittografare, quindi autenticare o autenticare e quindi crittografare, il che dimostra che la crittografia da sola non è considerata sufficiente, anche se la sequenza delle due operazioni non era 't / non è immediatamente ovvio.
In effetti, penso che il modo giusto per farlo sia encrypt-then-authenticate (e sul ricevente autenticare-poi-decifrare), in modo da non provare mai a decifrare un messaggio che non è stato autenticato per la prima volta.