El cliente tomaría una parte de los datos, generalmente el cuerpo de su mensaje y usaría un algoritmo de hashing que toma dos entradas: su entrada y una clave secreta compartida aleatoria, normalmente la clave se concatenaría al mensaje antes del hash para que sea más difícil determinar la clave a partir de un bloque de texto cifrado.
Esto crea un código de autenticación de mensaje hash HMAC, se puede crear con muchos algoritmos de hashing como md5 o la familia SHA. El HMAC ofrece una garantía de integridad de los datos, ya que el hash no coincidiría si se modificara alguna parte del mensaje.
El cliente realiza una operación en la forma MAC = Hash (clave, datos) y la envía con el mensaje.
Al recibirlo, el servidor que conoce la clave puede realizar la misma operación y verificar que proviene de la fuente reclamada. Para ser más precisos, solo prueba que proviene de una fuente que conoce la clave secreta.
La seguridad HMAC depende del algoritmo elegido y de la longitud de la clave, los ataques comunes son intentos de fuerza bruta en la clave.
Más información
RFC 2104 HMAC
Wiki - Código de autenticación de mensaje
pregunta sobre el intercambio de seguridad