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?