Differenze nel meccanismo di sicurezza tra Google e le API di Amazon

5

Qualcuno sa perché le API di Google e Amazon (AWS) hanno modi così diversi di gestire la sicurezza? Ad esempio, Google ha una semplice chiave API che puoi revocare in qualsiasi momento, mentre Amazon ha questo meccanismo chiave pubblico / segreto oltre a un complesso richiesta firma richiesta .

Il processo di firma di Amazon è così complesso che sembra più un'offuscamento che una vera sicurezza? Sei quasi obbligato a usare il loro SDK a meno che non voglia passare qualche ora a capire i requisiti.

Perché i due approcci sono completamente diversi e la firma di Amazon aggiunge davvero sicurezza alle loro API? Perché Google dovrebbe utilizzare un'alternativa così semplice? L'approccio di Amazon è davvero utile considerando che applicano anche HTTPS?

    
posta Nicolas Bouvrette 01.08.2016 - 22:54
fonte

2 risposte

7

Penso che la domanda qui dovrebbe essere più una risposta da una prospettiva di marketing che di sicurezza.

In generale, direi che Google utilizza probabilmente una chiave API relativamente semplice per usabilità / accessibilità, al fine di rendere più facile per la massa degli sviluppatori implementare i loro servizi (e guadagnare denaro da questo).

Amazon probabilmente ha più dubbi sull'uso della loro API e utilizza un diverso sistema di chiavi pubbliche e segrete. L'uso di una chiave segreta aggiunge una certa protezione e non può essere considerato direttamente come obsolescenza di sicurezza (mentre tecnicamente la maggior parte della sicurezza è fondamentalmente una forma di offuscamento).

Per rispondere alla tua domanda nel commento:

I'm actually curious to understand why would anyone want to make public (lucrative) service hard to use. Other than complexity what other gains is there to signature VS using a key?

Mi sono venute in mente due ragioni:

Il primo è probabilmente che dia un senso di sicurezza e questo può essere un motivo per cui le aziende scelgono un servizio di implementazione più difficile al di sopra di un servizio facile da implementare. Perché è considerato "più sicuro". Ciò solleva la questione se le funzionalità di sicurezza aggiungano effettivamente un ulteriore livello di sicurezza o se complicano inutilmente le cose.

Il secondo è probabilmente che può aggiungere effettivamente ulteriore sicurezza . Quando, ad esempio, utilizziamo un servizio che addebita denaro per ogni richiesta e l'unica autenticazione è una chiave. Quindi, se la chiave perde, chiunque può utilizzare quell'API usando la mia chiave e quindi mi verrà addebitato. Un esempio di un ulteriore livello di sicurezza è la whitelist IP in combinazione con la chiave. Questo ha attenuato almeno il problema che chiunque possa abusare della mia chiave. SSL (HTTPS) aggiunge uno strato di crittografia alla comunicazione tra il server e il client (probabilmente mitigando gli attacchi man-in-the-middle). Altre possibili caratteristiche o misure possono essere DNSSEC, crittografia personalizzata, intervalli di tempo, scadenza delle chiavi / credenziali e così via, il tutto aggiungendo la sicurezza effettiva per mitigare attacchi diversi.

Per i venditori, è (come spesso con sicurezza) una considerazione costante tra usabilità e sicurezza. Prenderanno in considerazione cose come:

  • Fino a che punto possiamo e dovremmo andare, senza diventare paranoici?
  • Quanto lontano dobbiamo andare per proteggere i servizi (dati) che offriamo?
  • È ancora accettabile dagli sviluppatori se andiamo così lontano?
risposta data 04.08.2016 - 14:50
fonte
0

Ho lavorato con la creazione del mio wrapper per una parte dell'API dei prodotti Amazons ed è stato molto difficile da usare.

Credo che ciò sia dovuto al fatto che l'API di Amazon (almeno l'API del marketplace) deve gestire dati in rapida evoluzione e consentire a terzi l'accesso per visualizzare questo mercato richiede grandi quantità di restrizioni per garantire che gli oggetti visualizzati siano accurati.

La chiamata all'API include la creazione di una firma (con un timestamp incluso) per impedire la manipolazione dei dati in base al tempo. (Forse mostrando i prezzi di un prodotto che in realtà sono prezzi di anni fa?)

    
risposta data 04.08.2016 - 15:38
fonte

Leggi altre domande sui tag