Estoy asegurando las llamadas a la API a un servicio REST que estoy creando usando las claves de la API. El plan es:
- Cuando obtengamos un nuevo cliente, generamos una clave API (un UUID).
- Envíeles la clave API por correo electrónico.
- Envían la clave API en cada llamada a nuestro servicio (a través de HTTPS). Buscaremos la clave de la API en nuestra base de datos (ya sea cifrándola o modificándola por hash primero) y descubriremos para qué cuenta está la clave de la API.
Eventualmente, agregaremos cuentas de usuario y un portal para todo esto para que los clientes puedan generar y desactivar las claves de API sin que sea necesario que participemos.
Mi pregunta está en la última parte. ¿Debo hash o cifrar (o dejar sin cifrar) las claves de la API antes de almacenarlas en la base de datos? Estoy tratando de entender las implicaciones. Sé que si los hago, entonces estoy protegiéndome contra alguien que conozca todas las claves API si obtienen acceso a la base de datos. Pero, ¿en qué otras cosas debería estar pensando? Por ejemplo, ¿hay razones de rendimiento para hacer una sobre la otra?