Cos'è una chiave API e come utilizzarla in modo sicuro?
Indice dei contenuti
API vs Chiave API
Cos'è una chiave API? 
Firme crittografiche
Firme simmetriche e asimmetriche 
Le chiavi API sono sicure? 
Migliori pratiche per l'utilizzo delle chiavi API
In chiusura
Letture consigliate
Cos'è una chiave API e come utilizzarla in modo sicuro?
Home
Articoli
Cos'è una chiave API e come utilizzarla in modo sicuro?

Cos'è una chiave API e come utilizzarla in modo sicuro?

Intermedio
Pubblicato Jan 6, 2023Aggiornato Feb 1, 2023
7m


Una chiave Application Programming Interface (API) è un codice univoco utilizzato da un'API per identificare l'applicazione o l'utente chiamante. Le chiavi API sono utilizzate per tracciare e controllare chi utilizza un'API e come la utilizza, nonché per autenticare e autorizzare le applicazioni, in modo simile a come funzionano i nomi utente e le password. Una chiave API può assumere la forma di una singola chiave o di un insieme di chiavi multiple. Gli utenti dovrebbero seguire le migliori pratiche per rinforzare la sicurezza generale contro il furto delle chiavi API ed evitare le conseguenze derivanti dalla loro compromissione.

API vs Chiave API

Per capire cosa sia una chiave API, è necessario prima com cos'è un'API. Una Application Programming Interface o API è un intermediario software che consente a due o più applicazioni di condividere informazioni. Ad esempio, l'API di CoinMarketCap consente ad altre applicazioni di recuperare e utilizzare dati sulle criptovalute, come il prezzo, il volume e la capitalizzazione di mercato.

Una chiave API si presenta in diverse forme: può essere una singola chiave o un insieme di chiavi multiple. Diversi sistemi utilizzano queste chiavi per autenticare e autorizzare un'applicazione, in modo simile a come vengono utilizzati un nome utente e una password. Una chiave API viene utilizzata da un client API per autenticare un'applicazione che chiama l'API. 

Ad esempio, se Binance Academy vuole utilizzare l'API di CoinMarketCap, CoinMarketCap genererà una chiave API che verrà utilizzata per autenticare l'identità di Binance Academy (il client dell'API) che richiede l'accesso all'API. Quando Binance Academy accede all'API di CoinMarketCap, questa chiave API deve essere inviata a CoinMarketCap insieme alla richiesta. 

Questa chiave API deve essere utilizzata solo da Binance Academy e non deve essere condivisa o inviata ad altri. La condivisione di questa chiave API consentirà a terzi di accedere a CoinMarketCap come Binance Academy, e qualsiasi azione da parte di terzi apparirà come se provenisse da Binance Academy.

La chiave API può anche essere utilizzata dall'API di CoinMarketCap per confermare se l'applicazione è autorizzata ad accedere alla risorsa richiesta. Inoltre, i proprietari delle API utilizzano le chiavi API per monitorare l'attività delle API, come il tipo, il traffico e il volume delle richieste. 

Cos'è una chiave API? 

Una chiave API viene utilizzata per controllare e tracciare chi utilizza un'API e come la utilizza. Il termine "chiave API" può avere significati diversi per sistemi diversi. Alcuni sistemi hanno un unico codice, mentre altri possono avere più codici per una singola "chiave API".   

Come tale, una "chiave API" è un codice unico o un insieme di codici unici utilizzati da un'API per autenticare e autorizzare l'utente o l'applicazione chiamante. Alcuni codici sono utilizzati per l'autenticazione e altri per la creazione di firme crittografiche per dimostrare la legittimità di una richiesta. 

Questi codici di autenticazione sono comunemente indicati collettivamente come "chiave API", mentre i codici utilizzati per le firme crittografiche hanno vari nomi, come "chiave segreta", "chiave pubblica" o "chiave privata". L'autenticazione comporta l'identificazione delle entità coinvolte e la conferma che sono chi dicono di essere.

L'autorizzazione, invece, specifica i servizi API ai quali è consentito l'accesso. La funzione di una chiave API è simile a quella del nome utente e della password di un account; può anche essere collegata ad altre funzioni di sicurezza per migliorare la sicurezza complessiva. 

Ogni chiave API è tipicamente generata per un'entità specifica dal proprietario dell'API (maggiori dettagli di seguito) e ogni volta che viene effettuata una chiamata a un endpoint API - che richiede l'autenticazione o l'autorizzazione dell'utente, o entrambe - viene utilizzata la relativa chiave.

Firme crittografiche

Alcune chiavi API utilizzano firme crittografiche come ulteriore livello di verifica. Quando un utente desidera inviare determinati dati a un'API, è possibile aggiungere alla richiesta una firma digitale generata da un'altra chiave. Utilizzando la crittografia, il proprietario dell'API può verificare che questa firma digitale corrisponda ai dati inviati.

Firme simmetriche e asimmetriche 

I dati condivisi tramite un'API possono essere firmati da chiavi crittografiche, che rientrano nelle seguenti categorie:

Chiavi simmetriche

Queste comportano l'uso di una chiave segreta per eseguire sia la firma dei dati che la verifica di una firma. Con le chiavi simmetriche, la chiave API e la chiave segreta vengono generalmente generate dal proprietario dell'API e la stessa chiave segreta deve essere utilizzata dal servizio API per la verifica della firma. Il vantaggio principale dell'utilizzo di una chiave singola è che la procedura è più veloce e richiede meno potenza di calcolo per la generazione e la verifica della firma. Un buon esempio di chiave simmetrica è HMAC.

Chiavi asimmetriche

Queste prevedono l'utilizzo di due chiavi: una chiave privata e una chiave pubblica, diverse ma collegate crittograficamente. La chiave privata viene utilizzata per la generazione della firma e la chiave pubblica viene utilizzata per la verifica della firma. La chiave API viene generata dal proprietario dell'API, ma la coppia di chiave privata e chiave pubblica viene generata dall'utente. Solo la chiave pubblica deve essere utilizzata dal proprietario dell'API per la verifica della firma, quindi la chiave privata può rimanere locale e segreta. 

Il vantaggio principale dell'utilizzo di chiavi asimmetriche è la maggiore sicurezza legata al separare la generazione della firma e le chiavi di verifica. Ciò consente ai sistemi esterni di verificare le firme senza essere in grado di generare firme. Un altro vantaggio è che alcuni sistemi di crittografia asimmetrica supportano l'aggiunta di una password alle chiavi private. Un buon esempio è una coppia di chiavi RSA. 

Le chiavi API sono sicure? 

La responsabilità di una chiave API spetta all'utente. Le chiavi API sono simili alle password e devono essere trattate con la stessa cura. La condivisione di una chiave API è simile alla condivisione di una password e, in quanto tale, non dovrebbe essere eseguita in quanto ciò metterebbe a rischio l'account dell'utente. 

Le chiavi API sono comunemente prese di mira negli attacchi informatici perché possono essere utilizzate per eseguire potenti operazioni sui sistemi, come la richiesta di informazioni personali o l'esecuzione di transazioni finanziarie. In effetti, ci sono stati casi di crawler che hanno attaccato con successo database di codici online per rubare chiavi API.

Le conseguenze del furto della chiave API possono essere drastiche e portare a perdite finanziarie significative. Inoltre, poiché alcune chiavi API non scadono, possono essere utilizzate a tempo indeterminato, una volta rubate dagli aggressori, fino a quando le chiavi stesse non vengono revocate.

Migliori pratiche per l'utilizzo delle chiavi API

Per via del loro accesso a dati sensibili e della loro vulnerabilità generale, l'utilizzo in maniera appropriata delle chiavi API è di fondamentale importanza. Puoi seguire queste linee guida sulle best practice quando utilizzi le chiavi API per migliorare la loro sicurezza complessiva: 

  1. Varia spesso le tue chiavi API, se possibile. Ciò significa che dovresti eliminare la tua attuale chiave API e crearne una nuova. Con più sistemi, è facile generare ed eliminare le chiavi API. Analogamente a come alcuni sistemi richiedono di modificare la password ogni 30-90 giorni, dovresti cambiare le tue chiavi API con una frequenza simile, se possibile.

  2. Usa whitelisting IP: quando crei una chiave API, stila un elenco di IP autorizzati a utilizzare la chiave (una whitelist IP). È inoltre possibile specificare un elenco di IP bloccati (una blacklist IP). In questo modo, anche se la tua chiave API viene rubata, non è comunque possibile accedervi da un IP non riconosciuto.

  3. Usa più chiavi API: avere più chiavi e suddividere le responsabilità tra queste ridurrà il rischio per la sicurezza, poiché la tua sicurezza non dipenderà da una singola chiave con autorizzazioni estese. Puoi anche impostare diverse whitelist IP per ogni chiave, riducendo ulteriormente i rischi per la sicurezza. 

  4. Custodisci le chiavi API in modo sicuro: non conservare le tue chiavi in luoghi pubblici, su computer pubblici o nel loro formato di testo originale. Invece, archiviale utilizzando la crittografia o un gestore ad hoc per una maggiore sicurezza e fai attenzione a non esporle accidentalmente. 

  5. Non condividere le tue chiavi API. La condivisione della chiave API è simile alla condivisione della password. In tal modo, concedi a un'altra parte gli stessi tuoi privilegi di autenticazione e autorizzazione. Se vengono compromessi, la tua chiave API può essere rubata e utilizzata per hackerare il tuo account. Una chiave API deve essere utilizzata solo tra te e il sistema che la genera.

Se la tua chiave API è compromessa, devi prima disabilitarla per evitare ulteriori danni. In caso di una perdita finanziaria, fai degli screenshot delle informazioni chiave relative all'incidente, contatta le entità collegate e presenta una denuncia alla polizia. Questo è il modo migliore per aumentare le tue possibilità di recuperare i fondi persi. 

In chiusura

Le chiavi API forniscono funzioni di autenticazione e autorizzazione fondamentali e gli utenti devono gestire e proteggere le proprie chiavi con attenzione. Esistono molti livelli e aspetti per garantire l'utilizzo sicuro delle chiavi API. Nel complesso, una chiave API dovrebbe essere trattata come una password legata al tuo account.

Letture consigliate