Una chiave API (Application Programming Interface) è un codice univoco utilizzato da un'API per identificare l'applicazione o l'utente che la chiama. 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 i nomi utente e le password. Una chiave API può avere la forma di una chiave singola o di un gruppo di più chiavi. Gli utenti dovrebbero seguire le migliori pratiche per migliorare la loro sicurezza complessiva contro il furto di chiavi API ed evitare le conseguenze associate alla compromissione delle chiavi API.
API vs. API chiave
Per capire cos'è una chiave API, dobbiamo prima sapere cos'è un'API. Un'interfaccia di programmazione applicativa o API è un software intermediario che consente la condivisione di informazioni tra due o più applicazioni. Ad esempio, l'API CoinMarketCap consente ad altre applicazioni di ottenere e utilizzare dati sulle criptovalute, come prezzo, volume e capitalizzazione di mercato.
D'altro canto, una chiave API può assumere diverse forme. Può trattarsi di una singola chiave o di un gruppo di più chiavi. Sistemi diversi utilizzano queste chiavi per autenticare e autorizzare un'applicazione, in modo simile a come si utilizzano nome utente e password. Un client API utilizza questi tipi di chiavi per autenticare un'applicazione quando chiama l'API.
Ad esempio, se Binance Academy desidera utilizzare l'API di CoinMarketCap, CoinMarketCap genererà una chiave API e la utilizzerà per autenticare l'identità di Binance Academy (il client API), che richiede l'accesso all'API. Quando si accede all'API di CoinMarketCap, Binance Academy deve inviare la chiave API a CMC insieme alla richiesta.
Questa chiave API deve essere utilizzata solo da Binance Academy e non deve essere condivisa o inviata a terzi. La condivisione di questa chiave API consentirebbe a una terza parte di accedere a CoinMarketCap come Binance Academy, quindi qualsiasi azione intrapresa dalla terza parte sembrerebbe provenire da Binance Academy.
L'API di CoinMarketCap può utilizzare questa chiave API anche 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 tipi di richiesta, traffico e volume.
Che cos'è una chiave API?
Una chiave API viene utilizzata per monitorare e tracciare chi utilizza un'API e come la utilizza. Il termine "chiave API" può riferirsi a cose diverse a seconda del sistema. Alcuni sistemi possono avere un unico codice, mentre altri possono avere più codici per una singola "chiave API".
Pertanto, una "chiave API" è un codice univoco o un gruppo di codici che un'API utilizza per autenticare e autorizzare l'utente o l'applicazione che la chiama. Alcuni codici vengono utilizzati per l'autenticazione, altri per creare firme crittografiche che dimostrano la legittimità di una richiesta.
Questi codici di autenticazione vengono collettivamente denominati "chiave API", mentre i codici utilizzati per le firme crittografiche hanno nomi diversi, come "chiave segreta", "chiave pubblica" o "chiave privata". L'autenticazione implica l'identificazione delle entità coinvolte e la conferma che siano effettivamente chi dichiarano di essere.
L'autorizzazione, d'altro canto, specifica i servizi API a cui è concesso l'accesso. La funzione di una chiave API è simile a quella del nome utente e della password di un account. Può anche connettersi ad altre funzionalità di sicurezza per migliorare la sicurezza complessiva.
In genere, il proprietario dell'API genera una chiave API per un'entità specifica (maggiori dettagli di seguito) e ogni volta che viene effettuata una chiamata a un endpoint API (che richiede l'autenticazione dell'utente, l'autorizzazione o entrambe), viene utilizzata tale 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 con chiavi crittografiche, che rientrano nelle seguenti categorie:
Chiavi simmetriche
Questi comportano l'uso di una chiave segreta per eseguire sia la firma dei dati sia la verifica della firma. Con le chiavi simmetriche, il proprietario dell'API spesso genera sia la chiave API che la chiave segreta e il servizio API deve utilizzare la stessa chiave segreta per la verifica della firma. Il vantaggio principale dell'utilizzo di una chiave singola è che è più veloce e richiede meno potenza di calcolo per la generazione e la verifica della firma. Un buon esempio di chiave simmetrica è HMAC (Hashed-Based Message Authentication Code).
Chiavi asimmetriche
Questi implicano l'uso di due chiavi: una chiave privata e una chiave pubblica, diverse ma collegate crittograficamente. La chiave privata viene utilizzata per generare la firma e la chiave pubblica per verificarla. Il proprietario dell'API genera la chiave API, ma l'utente genera la coppia di chiavi pubblica e privata. Il proprietario dell'API dovrebbe utilizzare solo la chiave pubblica per verificare la firma, in modo che la chiave privata rimanga privata e segreta.
Il vantaggio principale dell'utilizzo di chiavi asimmetriche è l'aumento della sicurezza, grazie alla separazione delle chiavi per la generazione e la verifica delle firme. Ciò consente ai sistemi esterni di verificare le firme senza essere in grado di generarle. Un altro vantaggio è che alcuni sistemi di crittografia asimmetrica consentono di aggiungere una password alle chiavi private. Un buon esempio è la coppia di chiavi RSA (Rivest-Shamir-Adelman).
Le chiavi API sono sicure?
La responsabilità della chiave API ricade sull'utente. Le chiavi API sono simili alle password e devono essere trattate con la stessa cura. Condividere una chiave API è simile a condividere una password e, come tale, non dovrebbe essere fatto, poiché metterebbe a rischio l'account dell'utente.
Le chiavi API sono spesso oggetto di attacchi informatici, in quanto possono essere utilizzate per eseguire operazioni importanti all'interno di un sistema, come la richiesta di informazioni personali o l'esecuzione di transazioni finanziarie. Si sono verificati infatti casi in cui i motori di ricerca (crawler) hanno attaccato con successo i database con codice online per rubare le chiavi API.
Le conseguenze del furto di chiavi API possono essere disastrose e comportare notevoli perdite finanziarie. Inoltre, poiché alcune chiavi API non scadono, gli aggressori possono utilizzarle indefinitamente, finché non vengono revocate.
Buone pratiche per l'utilizzo delle chiavi API
A causa dell'accesso a dati sensibili e della vulnerabilità generale, l'utilizzo sicuro delle chiavi API è di fondamentale importanza. Quando utilizzi le chiavi API, puoi seguire queste best practice per migliorare la tua sicurezza complessiva:
Se possibile, modifica frequentemente le tue chiavi API. Ciò significa che devi eliminare la tua chiave API attuale e crearne una nuova. Su molti sistemi è facile generare ed eliminare le chiavi API. Analogamente a come alcuni sistemi richiedono di cambiare la password ogni 30 o 90 giorni, dovresti cambiare le tue chiavi API con la stessa frequenza, se possibile.
Utilizza una whitelist di IP: quando crei una chiave API, crea un elenco degli indirizzi IP a cui è consentito utilizzare la chiave (una whitelist di IP). Imposta anche un elenco di IP bloccati (una blacklist di IP). In questo modo, anche se la tua chiave API venisse rubata, non sarà possibile utilizzarla con un indirizzo IP non riconosciuto.
Utilizzare più chiavi API: disporre di più chiavi e suddividere le responsabilità tra di esse ridurrà i rischi per la sicurezza, poiché la sicurezza non si baserà su un'unica chiave con più autorizzazioni. È anche possibile impostare diverse whitelist di IP per ogni chiave, riducendo ulteriormente i rischi per la sicurezza.
Conserva le chiavi API in modo sicuro: non conservare le chiavi in ambienti pubblici, su computer pubblici o nel loro formato originale di testo normale. In alternativa, conservali tutti utilizzando la crittografia o un Secret Manager per una maggiore sicurezza e fai attenzione a non esporli accidentalmente.
Non condividere le tue chiavi API. Condividere le chiavi API è simile a condividere la password. Così facendo, concedi alla terza parte gli stessi privilegi di autenticazione e autorizzazione di cui disponi tu. Se le tue password vengono compromesse, potrebbero essere utilizzate per hackerare il tuo account. Una chiave API dovrebbe essere utilizzata solo tra il sistema che l'ha generata e il proprietario della chiave.
Se la tua chiave API è compromessa, dovresti prima disattivarla per prevenire ulteriori danni. In caso di perdite finanziarie, effettuare degli screenshot delle informazioni chiave relative all'incidente, contattare le entità competenti e sporgere denuncia alla polizia. Questo è il modo migliore per aumentare le probabilità di recuperare i fondi persi.
Conclusioni
Le chiavi API forniscono funzioni essenziali di autenticazione e autorizzazione, pertanto gli utenti devono gestire e proteggere le proprie chiavi con attenzione. Esistono molti livelli e aspetti per garantire l'uso sicuro delle chiavi API. Ma in generale, una chiave API dovrebbe essere trattata come una password per accedere al tuo account.
Ulteriori letture
Principi generali di sicurezza
5 truffe comuni sulle criptovalute e come evitarle
