El cifrado no protege contra alteraciones maliciosas. Si encripta algunos datos con un cifrado de flujo como RC4 o AES-CTR, entonces un atacante puede decidir voltear cualquier bit que quiera en el texto cifrado, y, al descifrarlo, esto voltea el bit correspondiente en el texto plano. Esto permite modificaciones quirúrgicas. Con los cifrados de bloque en el modo CBC, las cosas son un poco menos quirúrgicas, pero aún lo suficientemente contenidas para permitir que el atacante haga muchas cosas ingeniosas (con CBC y un cifrado de bloque con bloques de 16 bytes, si el atacante invierte un bit, entonces esto codifica el bloque correspondiente y voltea el bit correspondiente en el siguiente bloque).
Por lo tanto, necesita integridad comprobada así como cifrado. Algunos modos de cifrado para cifrados de bloque, como EAX , combinan el cifrado y una verificación de integridad. De lo contrario, un MAC independiente puede hacer el truco (pero combinando el cifrado y un MAC correctamente no es una tarea totalmente obvia , por lo que le recomendamos que utilice modos en los que todos Se ha realizado el trabajo duro de especificación, es decir, EAX).
Algunas personas usan el término "firma" para un MAC; Es un uso inadecuado pero generalizado. Un MAC, y a fortiori mero cifrado no protegido, no proporcionan no repudio . El no repudio consiste en tener una prueba que se pueda utilizar contra el firmante; Posiblemente, algo que podría convencer a un tercero como un juez. Un cálculo que utiliza un secreto compartido entre el remitente y el receptor no puede ser una prueba convincente, ya que, por definición, tanto el remitente como el receptor lo saben (y la disputa es entre el remitente y el receptor). El no repudio es una noción compleja con ramificaciones legales, pero, como mínimo, la parte de la computadora debe usar la verdadera firmas digitales se calculan sobre los datos que no se deben repudiar (y no solo sobre una clave compartida).
Nota al margen: por las mismas razones, SSL no proporciona no repudio, incluso cuando se usa un certificado del lado del cliente. Si un servidor SSL registra todo acerca de una conexión SSL de un cliente y el cliente se autentica con un certificado, entonces el servidor puede tener una prueba de que un cliente determinado realmente llegó, pero el servidor no puede probar algo a un tercero sobre lo que el cliente envió en el túnel SSL. Esto es realmente un problema legalmente desafiante cuando se trata de banca en línea.