¿Qué partes de una aplicación web deben asegurarse con firmas digitales y qué partes están bien con hashes o MAC?

Es de aplicación y tarea específica.

Piensa desde el punto de vista de un atacante: estás sentado en un Starbucks, usando el envenenamiento de caché ARP para redirigir todas las conexiones a través de ti primero. Puede ver todos los datos “en el cable” y modificarlos.

Diría que si los datos son una secuencia TLS (es decir, estás haciendo todo a través de HTTPS), como atacante eres SOL: no puedes descifrarlos (sin la clave privada del servidor) y no puedes modificarlos. sin que esto resulte en errores instantáneos en ambos extremos. Lo único que puede hacer es romper la conexión (aunque a veces incluso esto puede ser útil, piense en las cámaras de seguridad basadas en IP). Por supuesto, suponiendo que algo como sslstrip no funcione (es decir, la redirección a HTTPS no se puede omitir, es decir, el servidor no aceptará ningún trabajo a través del canal inseguro).

Se vuelve más interesante si es HTTP simple, incluso si el inicio de sesión en sí fue a través de HTTPS, por lo que no vio el nombre de usuario y la contraseña, tal vez verá una cookie de sesión; probablemente pueda simplemente crearla en su propio navegador, y se inicia sesión instantáneamente como el usuario en cuestión.

Ahora, aquí hay algunas preguntas para usted: ¿qué puede hacer simplemente iniciando sesión, sin que se le solicite una contraseña nuevamente? Y nunca transmites la contraseña a través de HTTP simple, ¿verdad? Además, ¿cuáles son los efectos de que el cliente obtenga datos falsificados (es decir, en lugar de pretender ser el cliente para el servidor, pretender ser el servidor para el cliente)? Y la última pregunta, ¿por qué no estás usando HTTPS (en modo de encriptación y firma) para todo, cuando puedes obtener certificados gratuitos de Let’s Encrypt y tener aceleración de hardware en las CPU Intel modernas (y cuando probablemente lo necesites para tu iniciar sesión de todos modos, excepto si está utilizando algún proveedor de identidad de terceros)?

Si se pregunta cómo se ve su aplicación “en el cable”, le recomiendo el excelente Wireshark F / OSS. Simplemente comience a capturar y luego haga lo que un usuario haría normalmente (y luego deje de capturar). Luego tiene filtro por puerto o dirección IP, haga clic con el botón derecho y “siga la secuencia TCP” y similares. Tenga en cuenta que el atacante también puede modificar los datos, en ambas direcciones. Si tales modificaciones pueden resultar en un desastre, debe asegurarse de que sean capturadas (principalmente mediante el uso de criptografía de clave pública de una forma u otra).