Si firmamos mensajes sin cuidado, los ataques de extensión de longitud pueden colarse. Por eso apostamos por sha tres y por hmac para blindar la integridad sin dramas.
Antes, lo básico. Una función hash toma trozos de un archivo digital, los mezcla con una receta fija y entrega un resumen único. Ese resumen nos sirve para verificar autenticación y que el contenido no haya sido tocado. Es rápido, determinista y muy útil en flujos de validación.
El problema aparece cuando usamos el hash sin diseño de autenticación. En sha dos y en md cinco existe una debilidad clásica si alguien calcula un hash de una clave secreta pegada al mensaje y cree que eso ya es un código de autenticación. Un atacante que vea el mensaje y su resumen puede reanudar el estado interno del cálculo, añadir datos al final y producir un nuevo resumen válido sin conocer la clave. Vaya jugada.
Aquí entra sha tres con su construcción de esponja. Este diseño separa una parte visible y otra oculta del estado interno. La zona oculta no se filtra en el resumen, así que no hay forma práctica de continuar el cálculo desde fuera. Dicho corto y al pie, la extensión maliciosa se queda sin puerta de entrada.
Pongamos un caso financiero. Imaginemos una orden de transferencia con campos de cuenta, concepto y cantidad. Si alguien intercepta el mensaje y solo se usa un hash simple, podría añadir un texto extra o variar el formato y provocar un fallo o un cambio no deseado. Con un esquema bien hecho, ese intento salta a la vista porque la verificación falla.
Buenas prácticas para no darle ventaja a nadie. Uno, usar hmac para firmar mensajes. Hmac funciona con sha dos y con sha tres y evita el alargamiento del mensaje por diseño. Dos, si usamos sha tres también existe kmac, que ya viene con clave y dominio separados. Tres, definir un formato estricto de mensajes con orden fijo, prefijos de longitud y validaciones de campo, sin aceptar campos sorpresa. Cuatro, añadir identificadores únicos y límites de tiempo para evitar reenvíos.
Mini propuesta para gamificar. Montamos un juego de cartas con campos de un mensaje y un mazo de cambios permitidos y no permitidos. Repartimos en equipos y puntuamos quién detecta mejor qué modificaciones pasarían con hash simple y cuáles rompe hmac.
Si queremos aprender más con ideas frescas y divertidas sobre seguridad y aprendizaje, visitemos JeiJoLand.