He creado una buena API REST / JSON que es utilizada por otras compañías (nuestros clientes) como un servicio B2B. Cada uno de nuestros clientes tiene un par de nombre de usuario y contraseña, y también hacemos HTTPS y validamos la IP de origen de las solicitudes de servicio. El uso del servicio cuesta dinero, y el cliente recibe una factura mensual por su uso del servicio.
Ahora, algunos de los clientes están creando aplicaciones móviles que entregan a sus usuarios (B2C - usuarios finales). No todos estos usuarios finales de nuestro servicio tienen servidores y desean utilizar el servicio directamente desde el teléfono inteligente (lo que técnicamente no es un gran problema como JSON / REST).
El problema es que no estoy seguro de cómo proteger el servicio contra el fraude. ¿Qué evitará que un desarrollador externo desarme una aplicación móvil del cliente y copie su nombre de usuario / contraseña / cualquier credencial de seguridad y la use en su aplicación? ¡Eso le permitiría consumir el servicio y cobrar el uso a uno de nuestros clientes legítimos!
Estoy bastante seguro de que no hay una solución criptográfica perfecta para este problema a menos que los usuarios finales tengan la obligación de autenticarse en algún servidor. Pero ese no es siempre el caso.
Como último recurso, supongo que puedo distribuir una biblioteca ofuscada para Android / iPhone, que al menos daría la ilusión de seguridad ...
EDITAR (aclaración):
Déjame intentar simplificar el escenario.
- Tengo un servidor web no hackeable que sirve una API REST de JSON.
- Los clientes móviles acceden a mi API directamente. Sus IPs no pueden ser validadas. Están ejecutando un sistema operativo estándar (Android / IOS).
- No hay otros servidores involucrados.
- No puedo acceder al IMEI de los teléfonos (se considera privado), y esto no me ayudaría porque no conozco a los usuarios finales.
- Existen varias aplicaciones móviles legales de este tipo, desarrolladas por diferentes compañías que acceden a nuestra API.
- La seguridad actual (nombre de usuario / contraseña) es fácilmente pirateable por una empresa maliciosa. Dicha compañía deshonesta desmonta una aplicación móvil legítima y copia el nombre de usuario / contraseña a su aplicación ilegal. Distribuyen esta aplicación y los beneficios (el uso de API se carga a la compañía de la que robaron las credenciales).
¿Se puede detener esto?