TL;DR
Una chiave API (Application Programming Interface) è un codice univoco utilizzato da un'API per identificare l'applicazione o l'utente chiamante. Le chiavi API vengono 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 nomi utente e password. Una chiave API può presentarsi sotto forma di una chiave singola o di un insieme di più chiavi. Gli utenti dovrebbero seguire le migliori pratiche per migliorare la loro sicurezza generale contro il furto di chiavi API ed evitare le conseguenze correlate della compromissione delle loro chiavi API.
API e chiave API
Per capire cos'è una chiave API, devi prima capire cos'è un'API. Un'interfaccia di programmazione dell'applicazione 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 crittografici, come prezzo, volume e capitalizzazione di mercato.
Una chiave API è disponibile in molte forme diverse: può essere una chiave singola o un insieme di più chiavi. Sistemi diversi 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 desidera utilizzare l'API CoinMarketCap, una chiave API verrà generata da CoinMarketCap e utilizzata per autenticare l'identità di Binance Academy (il client 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 una terza parte di accedere a CoinMarketCap come Binance Academy e qualsiasi azione della terza parte apparirà come se provenisse da Binance Academy.
La chiave API può essere utilizzata anche dall'API CoinMarketCap per confermare se l'applicazione è autorizzata ad accedere alla risorsa richiesta. Inoltre, i proprietari dell'API utilizzano le chiavi API per monitorare l'attività dell'API, ad esempio tipi, traffico e volume delle richieste.
Cos'è una chiave API?
Una chiave API viene utilizzata per controllare e tenere traccia di chi utilizza un'API e di come la utilizza. Il termine “chiave API” può significare cose diverse per sistemi diversi. Alcuni sistemi hanno un unico codice ma altri possono avere più codici per una singola “chiave API”.
Pertanto, una "chiave API" è un codice univoco o un insieme di codici univoci utilizzati da un'API per autenticare e autorizzare l'utente o l'applicazione chiamante. Alcuni codici vengono utilizzati per l'autenticazione e altri per creare firme crittografiche per dimostrare la legittimità di una richiesta.
Questi codici di autenticazione vengono comunemente definiti 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 implica l'identificazione delle entità coinvolte e la conferma che sono chi dicono di essere.
L'autorizzazione, invece, specifica i servizi API a cui è consentito l'accesso. La funzione di una chiave API è simile a quella del nome utente e della password di un account; può anche essere collegato ad altre funzionalità di sicurezza per migliorare la sicurezza generale.
Ogni chiave API viene in genere 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 chiave pertinente.
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 tramite chiavi crittografiche, che rientrano nelle seguenti categorie:
Chiavi simmetriche
Questi 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 solitamente 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 farlo è più veloce e richiede meno potenza di calcolo per la generazione e la verifica della firma. Un buon esempio di chiave simmetrica è HMAC.
Tasti asimmetrici
Si tratta dell'utilizzo di due chiavi: una chiave privata e una chiave pubblica, diverse ma legate 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 delle chiavi asimmetriche è la maggiore sicurezza data dalla separazione delle chiavi di generazione della firma e 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, come tale, non dovrebbe essere eseguita poiché 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 operazioni potenti sui sistemi, come la richiesta di informazioni personali o l'esecuzione di transazioni finanziarie. In effetti, si sono verificati 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, una volta rubate possono essere utilizzate indefinitamente dagli aggressori, fino a quando le chiavi stesse non vengono revocate.
Best practice per l'utilizzo delle chiavi API
A causa del loro accesso a dati sensibili e della loro vulnerabilità generale, l’utilizzo sicuro delle chiavi API è di fondamentale importanza. Puoi seguire queste linee guida sulle best practice quando utilizzi le chiavi API per migliorare la sicurezza complessiva:
Se possibile, ruota spesso le chiavi API. Ciò significa che dovresti eliminare la tua chiave API corrente 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 ruotare le chiavi API con una frequenza simile, se possibile.
Utilizza la whitelist IP: quando crei una chiave API, stila un elenco di IP autorizzati a utilizzare la chiave (una whitelist IP). Puoi anche specificare un elenco di IP bloccati (una lista nera di IP). In questo modo, anche se la tua chiave API viene rubata, non sarà comunque possibile accedervi da un IP non riconosciuto.
Utilizza più chiavi API: avere più chiavi e dividere le responsabilità tra di esse 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 ciascuna chiave, riducendo ulteriormente il rischio per la sicurezza.
Archivia le chiavi API in modo sicuro: non archiviare le chiavi in luoghi pubblici, su computer pubblici o nel formato di testo normale originale. Conservali invece ciascuno utilizzando la crittografia o un gestore di segreti per una maggiore sicurezza e fai attenzione a non esporli accidentalmente.
Non condividere le tue chiavi API. La condivisione della chiave API è simile alla condivisione della password. In tal modo, concedi a un'altra parte i tuoi stessi 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 perdite finanziarie, acquisire screenshot delle informazioni chiave relative all'incidente, contattare le entità correlate e presentare una denuncia alla polizia. Questo è il modo migliore per aumentare le tue possibilità di recuperare i fondi persi.
Pensieri conclusivi
Le chiavi API forniscono funzioni di autenticazione e autorizzazione fondamentali e gli utenti devono gestire e proteggere attentamente le proprie chiavi. Esistono molti livelli e aspetti per garantire l'utilizzo sicuro delle chiavi API. Nel complesso, una chiave API dovrebbe essere trattata come una password per il tuo account.
Ulteriori letture
Principi generali di sicurezza
5 truffe comuni sulle criptovalute e come evitarle


