Che cos'è una chiave API?
Una chiave API è un codice univoco che permette a un'interfaccia di programmazione di applicazioni (API) di identificare l'utente o l'applicazione che la sta chiamando. Utilizzando le chiavi API è possibile monitorare e controllare chi sta usando l'API e in che modo. Svolge una funzione simile a nome utente e password ma ha una forma diversa, a volte costituita da una singola chiave o da più chiavi. Per garantire la massima sicurezza contro il possibile furto di chiavi API, gli utenti dovrebbero seguire le best practice per proteggersi dagli effetti correlati.
API
Per comprendere cosa sia una chiave API, dobbiamo prima riconoscere il concetto di API. Un'API, o Application Programming Interface, è una forma di intermediario software che permette a due o più programmi di collaborare. Ad esempio, l'API di CoinMarketCap consente a diverse applicazioni di accedere e utilizzare informazioni sulle valute digitali, come prezzo, volume e capitalizzazione di mercato.
Una chiave API è uno strumento di autenticazione che si presenta in varie forme, da una singola chiave a un insieme di chiavi multiple. È analoga a un nome utente e a una password ed è utilizzata da un client API per convalidare l'accesso di un'applicazione a un'API. Grazie a questa chiave, un dato sistema può determinare se un'app ha l'autorità necessaria per effettuare una chiamata all'API. I proprietari delle API usano le chiavi API per osservare l'attività dell'API, inclusi tipi, livelli e volumi di richieste.
API Key
Una chiave API è un codice usato per identificare e gestire l'accesso a un'API. A seconda del sistema specifico, può riferirsi a un singolo codice o a più codici. La chiave API viene usata per controllare e monitorare l'uso dell'API, tracciando chi la sta usando e in che modo.
Una chiave API è un identificatore univoco utilizzato da un'API per autenticare e autorizzare l'utente o l'applicazione che effettua la richiesta. L'autenticazione può essere ottenuta tramite l'uso di codici, mentre la firma crittografica di una richiesta può essere verificata con un set speciale di codici.
L'autenticazione generalmente comporta l'identificazione delle entità coinvolte e la conferma della loro identità. Questi codici di autenticazione sono generalmente chiamati "API key", mentre i codici usati per le firme crittografiche hanno nomi diversi, come "secret key", "public key" o "private key".
L'autorizzazione definisce a quali servizi API è consentito accedere. Una chiave API funziona in modo simile al nome utente e alla password di un account. Può essere usata per aggiungere livelli di sicurezza extra all'intero processo.
Una chiave API è unica per ogni entità autorizzata a effettuare richieste a un endpoint API. La chiave appropriata deve essere inclusa quando si effettua una chiamata API che richiede autenticazione o autorizzazione.
Firme crittografiche
Alcune chiavi API sono dotate di firme crittografiche per fornire un ulteriore grado di protezione. Quando un utente deve inviare dati a un'API, può allegare una firma digitale creata con una chiave diversa. La crittografia permette al fornitore dell'API di valutare la firma digitale confrontandola con i dati inviati per garantirne la correttezza.
Firme simmetriche e asimmetriche
I dati condivisi tramite un'API possono essere verificati con chiavi crittografiche che rientrano nelle seguenti categorie:
Chiavi simmetriche
La crittografia a chiave simmetrica utilizza un'unica chiave segreta sia per firmare i dati sia per verificare le firme. In questo caso, la chiave API e la secret key sono generalmente generate dal proprietario dell'API, e il servizio API deve usare la stessa secret key per la verifica della firma. Poiché viene usata la stessa chiave, la crittografia simmetrica è più veloce in quanto richiede un'elaborazione minore per generare e verificare la firma. HMAC è un buon esempio di chiave simmetrica.
Chiavi asimmetriche
Queste richiedono una coppia di chiavi: una privata e una pubblica. La chiave privata è usata per generare la firma, mentre la chiave pubblica è usata per verificarla. Il proprietario dell'API genera la chiave API, mentre l'utente è responsabile della generazione della coppia di chiavi privata/pubblica. La chiave pubblica è l'unica che deve essere condivisa con il proprietario dell'API, mentre la chiave privata rimane sicura e locale all'utente.
L'uso di chiavi asimmetriche offre una maggiore sicurezza grazie alla separazione tra generazione e verifica della firma. Questo significa che sistemi terzi possono verificare le firme senza avere la possibilità di crearle. Inoltre, alcune forme di crittografia asimmetrica possono offrire protezioni aggiuntive aggiungendo una password alle chiavi private. Un esempio di questo è una coppia di chiavi RSA.
Una chiave API è un metodo sicuro di autenticazione?
Come utente, sei responsabile della corretta gestione della tua chiave API. Deve essere trattata con lo stesso livello di attenzione di una password, poiché funziona essenzialmente nello stesso modo. Non condividere mai la tua chiave API con altre persone, poiché ciò potrebbe mettere a rischio il tuo account.
Le chiavi API sono un bersaglio molto attraente per i cybercriminali, in quanto possono essere utilizzate per compiere azioni sensibili sui sistemi, come richiedere informazioni riservate o effettuare transazioni finanziarie. Purtroppo sono stati segnalati casi di crawler web che invadono con successo repository di codice online per ottenere chiavi API.
Il furto di chiavi API può essere estremamente dannoso e causare ingenti perdite finanziarie. Inoltre, le chiavi API che non scadono mai danno ai perpetratori la possibilità di utilizzarle per un periodo indeterminato prima che possano essere revocate.
Consigli per l'uso corretto delle chiavi API
È essenziale adottare misure per proteggere le chiavi API, poiché forniscono accesso a dati sensibili e possono essere facilmente sfruttate. Per massimizzare la loro sicurezza complessiva, attenersi alle seguenti linee guida best practice quando si utilizzano le chiavi API:
- Se possibile, le chiavi API dovrebbero essere aggiornate regolarmente. Ciò comporta la rimozione della chiave API in uso e la creazione di una nuova. Con più sistemi, è semplice creare ed eliminare chiavi API. Poiché alcuni sistemi richiedono di reimpostare la password ogni 30-90 giorni, le chiavi API dovrebbero essere ruotate con una frequenza simile, se possibile.
- Per contribuire a prevenire l'accesso non autorizzato alla tua chiave API, crea una whitelist di indirizzi IP autorizzati a usarla. Puoi anche creare una blacklist con gli IP che desideri specificamente bloccare. Con una whitelist e una blacklist di IP, anche se la tua chiave API viene rubata, non potrà essere utilizzata da un indirizzo IP non riconosciuto.
- Creando più chiavi API e assegnando a ciascuna una funzione specifica, puoi ridurre il rischio che un utente non autorizzato ottenga accesso al tuo sistema. Inoltre, puoi limitare l'accesso a ciascuna chiave tramite l'uso della whitelist IP, riducendo ulteriormente il potenziale rischio di una violazione.
- Assicura la custodia sicura delle tue chiavi API evitando di memorizzarle in aree pubbliche, su computer pubblici o in formato testo semplice. Utilizza la crittografia o un secret manager per proteggere ciascuna delle tue chiavi e presta attenzione quando le gestisci per evitare esposizioni accidentali.
- Per garantire la sicurezza del tuo account, non condividere la tua chiave API con nessuno. Farlo consentirebbe ad altre persone di ottenere lo stesso livello di accesso e autorizzazione, aumentando il rischio che la chiave venga sottratta in caso di vulnerabilità. Mantieni la tua chiave API tra te e il sistema che la autorizza, senza condividerla con esterni.
Se la tua chiave API viene esposta, è importante agire rapidamente. Disabilitala immediatamente per ridurre al minimo i rischi. Inoltre, raccogli prove, come screenshot di documenti relativi all'incidente, e contatta le organizzazioni competenti. Infine, presentare una denuncia alla polizia aumenta le possibilità di recuperare eventuali perdite.
Conclusione
Le chiavi API sono essenziali per mantenere processi sicuri di autenticazione e autorizzazione, quindi gli utenti devono prestare la massima attenzione nella loro gestione e protezione. Mettere in sicurezza le chiavi API richiede la considerazione di vari aspetti e livelli. Per mantenere sicuri i propri account, gli utenti dovrebbero trattare la loro chiave API come una password.