Muchas API's encontré que usando el mismo método para la autenticación:
La firma es un mensaje codificado HMAC-SHA256 que contiene nonce, ID de cliente (se puede encontrar aquí) y la clave API. El código HMAC-SHA256 debe generarse utilizando una clave secreta que se generó con su clave API. Este código se debe convertir a su representación hexadecimal (64 caracteres en mayúscula).
Creo que para que funcione, el proveedor de servicios debe mantener en secreto una copia de la API, y luego puede verificar si el usuario usó el mismo secreto para generar la firma.
Estoy pensando que es muy inseguro, y es como almacenar una contraseña simple en la base de datos. Cualquier persona que obtenga una copia de seguridad de una base de datos antigua tiene los secretos de todos los usuarios.
¿Me estoy perdiendo algo? Existe un método para que el servidor verifique que el usuario haya codificado una firma utilizando un secreto específico, sin almacenar el secreto en la base de datos.
Debido a esto, creo que para proporcionar al usuario una clave privada de OpenPGP pair, y luego puedo validar la firma usando la clave pública.
¿Cree que hay un error de seguridad en la forma en que bitstamp funciona, por ejemplo, y OpenPGP sería mejor?