La crittografia non protegge da alterazioni dannose. Se si codificano alcuni dati con un codice di flusso come RC4 o AES-CTR, un utente malintenzionato può decidere di capovolgere qualsiasi bit che desidera sul testo cifrato e, dopo la decrittografia, questo capovolge il bit corrispondente nel testo in chiaro. Questo consente modifiche chirurgiche. Con i cifrari a blocchi in modalità CBC, le cose sono un po 'meno chirurgiche, ma ancora contenute abbastanza da consentire all'aggressore di fare un sacco di cose belle (con CBC e un codice a blocchi con blocchi da 16 byte, se l'attaccante lancia un bit, quindi questo rimescola il blocco corrispondente e capovolge il bit corrispondente nel blocco successivo).
Quindi hai bisogno di integrità controllata e di crittografia. Alcune modalità di crittografia per cifrari a blocchi, come EAX , combinano la crittografia e un controllo di integrità. In caso contrario, un MAC autonomo può fare il trucco (ma combinando la crittografia e un MAC correttamente non è un compito assolutamente ovvio quindi sei incoraggiato a utilizzare le modalità in cui tutto il duro lavoro di specifica è stato fatto, cioè EAX).
Alcune persone usano il termine "firma" per un MAC; è un uso improprio ma diffuso. Un MAC e a fortiori una semplice crittografia non protetta, non forniscono non ripudio . Il non ripudio consiste nell'avere una prova che può essere usata contro il firmatario; presumibilmente, qualcosa che potrebbe convincere una terza parte come un giudice. Un calcolo che utilizza un segreto condiviso tra mittente e destinatario non può essere una prova convincente, perché, per definizione, sia il mittente sia il destinatario lo sanno (e la controversia è tra il mittente e il destinatario). Il non ripudio è una nozione complessa con implicazioni giuridiche, ma, per lo meno, la parte del computer deve utilizzare vere firme digitali calcolato sui dati che non devono essere ripudiati (e non solo su una chiave condivisa).
Nota a margine: per gli stessi motivi, SSL non fornisce non ripudio, anche quando viene utilizzato un certificato sul lato client. Se un server SSL registra tutto su una connessione SSL da un client e il client è autenticato con un certificato, allora il server può avere una prova che un determinato client è venuto veramente, ma il server non può provare qualsiasi cosa a terzi su ciò che il client ha inviato nel tunnel SSL. Questo è in realtà un problema legalmente impegnativo quando si tratta di servizi bancari online.