Obiettivo: impedire che le app "clone" non autorizzate utilizzino le soluzioni basate su API REST in cui i clienti gestiscono i propri server e servizi invece del fornitore (database, risorsa e identità). In altre parole: server locali invece di una soluzione basata su cloud.
La mia azienda vuole essere in grado di autorizzare solo alcune terze parti a creare app che possano utilizzare le nostre API, ma non solo chiunque, oltre alle nostre app. Quindi probabilmente avremo qualche processo in cui terze parti ci invieranno le loro app per firmare e aggiungere a una sorta di 'white-list' (qualunque forma finisca col prendere .. da qui la domanda.)
(Perché no cloud? Alcuni paesi e settori sono soggetti a normative più severe laddove i server cloud o off-site non sono un'opzione per alcune classi di dati operativi sensibili. Se questo non è un buon motivo, ti preghiamo di considerare questo un esperimento mentale).
Questa domanda è una variazione su questa domanda quasi identica , ma con il vincolo aggiuntivo che il fornitore di software non possiede o gestisce i server.
Non ho affiliazione con CodeBlue, i creatori di Approov, ma hanno pubblicato una spiegazione decente del processo tipico per proteggere le API REST sia per le app Web sia per le app mobili. Ecco un collegamento alla parte 2 di 3 che copre alcuni dei punti critici come il server di mediazione e il processo di attestazione per autorizzare il cliente e le tecniche per mantenere segreti condivisi dai client pubblici (ad es .: app mobili).
La soluzione descritta nell'articolo precedente di CodeBlue suona dandy per un ambiente basato su cloud o controllato da un fornitore. Tuttavia, ho faticato a trovare un modo per proteggere le app clone quando il cliente ha accesso fisico non solo ai client, ma ai server. Probabilmente la sola configurazione potrebbe abilitare app non autorizzate e, se ciò non dovesse funzionare, l'app stessa potrebbe essere modificata.
Ovviamente c'è una rete di sicurezza legale qui (accordo di licenza, termini di servizio), ma c'è qualcosa che possa essere fatto in termini di codice per indurirlo, se non impedirlo a titolo definitivo?
Sono a conoscenza - e perseguendo - varie tecniche per offuscare le soluzioni (come la diffusione dei segreti in giro e la protezione contro il reverse engineering) e per l'attestato dei clienti, ma in tutti i miei modelli finora esiste la possibilità che un cliente malintenzionato (o agente) può ingannare l'API REST facendogli credere che le richieste siano fatte da un cliente autorizzato. So che mi trovo in una specie di corsa agli armamenti qui - quindi mi sto rivolgendo alla comunità per avere dei pensieri su questo perché tutti i metodi che ho esaminato nell'ultima settimana si basano sul fatto che il venditore possiede il server.