Az API-kulcs egy egyedi kód, amelyet egy API (Application Programming Interface – alkalmazásprogramozási felület) a hívó alkalmazás vagy felhasználó azonosításához használ. Az API-kulcsok segítségével nyomon követhető és ellenőrizhető, hogy ki és hogyan használ egy API-t, továbbá alkalmazások hitelesítésére és engedélyezésére is alkalmas – a felhasználónevek és jelszavak működéséhez hasonlóan. Az API-kulcs jelenthet egyetlen kulcsot, vagy több kulcsból álló csoportot is. Az API-kulcslopás elleni általános biztonságuk javítása érdekében a felhasználóknak érdemes követniük a bevált gyakorlatokat, hogy elkerülhessék az API-kulcsok illetéktelen felhasználásának következményeit.
API vs API-kulcs
Ahhoz, hogy megértsük mi az az API-kulcs, először meg kell értenünk, mi az API. Az alkalmazásprogramozási felület vagy API egy közvetítő szoftver, amely lehetővé teszi, hogy kettő vagy több alkalmazás információt osszon meg egymással. Például a CoinMarketCap API-ja lehetővé teszi, hogy más alkalmazások lekérjék és használják a kriptók adatait, például az árfolyam-, a forgalmi és piaci kapitalizációs adatokat.
Az API-kulcs számos különböző formát ölthet: lehet egyetlen kulcs, de egy több kulcsból álló készlet is. A különböző rendszerek ezekkel a kulcsokkal végzik az alkalmazása hitelesítését és engedélyezését, hasonlóan a felhasználónevek és a jelszavak használatához. Az API-kliens az API-kulccsal hitelesíti az API-t hívó alkalmazást.
Például, ha Binance Academy használni kívánja a CoinMarketCap API-ját, akkor a CoinMarketCap generál egy API-kulcsot, és azzal ellenőrzi a Binance Academy (az API-kliens) kilétét, amely az API-hozzáférést kéri. Amikor a Binance Academy csatlakozik a CoinMarketCap API-jához, ezt az API-kulcsot kell elküldeni a CoinMarketCap részére a kérelemmel együtt.
Ezt az API-kulcsot csak a Binance Academy használhatja, és nem szabad másokkal megosztani, illetve másnak elküldeni. Az API-kulcs megosztása lehetővé teszi a harmadik félnek, hogy a Binance Academy-nek kiadva magát hozzáférjen a CoinMarketCap-hez, és úgy tűnik majd, mintha az általa végrehajtott összes műveletet a Binance Academy hajtotta volna végre.
Az API-kulcsot a CoinMarketCap API is felhasználhatja annak megerősítésére, hogy az alkalmazás rendelkezik engedéllyel a kért forrás elérésére. Emellett az API-tulajdonosok az API-kulcsok segítségével megfigyelhetik az API-tevékenységet, például a kérések típusát, adatforgalmát és mennyiségét.
Mi az API-kulcs?
Az API-kulcs segítségével kontrollálható és nyomon követhető, hogy ki és hogyan használja az API-t. Az „API-kulcs” kifejezés a különböző rendszerek esetén eltérő jelentést hordozhat. Egyes rendszerek egyetlen kódot alkalmaznak, míg másoknál egyetlen „API-kulcs” több kódból épül fel.
Így az „API-kulcs” egy egyedi kód vagy több egyedi kódból álló készlet, amellyel egy API a hívó felhasználót vagy alkalmazást hitelesíti és engedélyezi. Egyes kódok a hitelesítést szolgálják, míg mások az adatkérés legitimitását bizonyító kriptográfiai aláírások létrehozásában vesznek részt.
Az ilyen hitelesítő kódok széles körben használt közös megnevezése az „API-kulcs”, míg a kriptográfiai aláírások létrehozásához használt kódok különböző néven ismertek, például „titkos kulcs”, „nyilvános kulcs” vagy „privátkulcs”. A hitelesítés magával hozza az érintett entitások azonosítását és annak megerősítését, hogy valóban azok, akiknek mondják magukat.
Ellenben a engedélyezés azokat az API-szolgáltatásokat határozza meg, amelyekhez engedélyezett a hozzáférés. Az API-kulcs szerepe hasonló egy fiókhoz tartozó felhasználónév és jelszó szerepéhez; más biztonsági funkciókhoz is hozzákapcsolható az általános biztonság javítása érdekében.
Az API-kulcsokat általában egy konkrét entitás részére generálja az API-tulajdonos (további részletek alább olvashatók), és minden alkalommal, amikor egy API-végpontra hívás érkezik – amely megköveteli a felhasználó hitelesítését, engedélyezését vagy mindkettőt – a hozzákapcsolt kulcsot használja.
Kriptográfiai aláírások
Néhány API-kulcs kriptográfiai aláírásokat használ, hogy további szintet adjon a hitelesítéshez. Amikor egy felhasználó bizonyos adatokat kíván elküldeni egy API felé, egy másik kulccsal generált digitális aláírás adható a kéréshez. Az API-tulajdonos kriptográfiai módszerekkel ellenőrizheti, hogy a digitális aláírás megegyezik a küldött adattal.
Szimmetrikus és aszimmetrikus aláírások
Egy API-n keresztül megosztott adatokat kriptográfiai kulcsok segítségével is alá lehet írni, amelyek a következő kategóriákba sorolhatók:
Szimmetrikus kulcsok
Ilyen megoldás esetén egy titkos kulcs használatos az adat aláírásához és az aláírás ellenőrzéséhez. Szimmetrikus kulcsok esetén az API-kulcsot és titkos kulcsot általában az API-tulajdonos generálja, és az API-szolgáltatásnak ugyanazt a titkos kulcsot kell használnia az aláírás ellenőrzéséhez. Az egyetlen kulcs használatának fő előnye, hogy gyorsabb és kisebb számítási teljesítményt igényel az aláírás létrehozásához, illetve ellenőrzéséhez. A szimmetrikus kulcsra jó példa a HMAC.
Aszimmetrikus kulcsok
Ez a módszer két kulcsot használ: egy privátkulcsot és egy nyilvános kulcsot, amelyek különbözőek, de kriptografikus módon kapcsolódnak egymáshoz. A privátkulcs szolgál az aláírás generálására, a nyilvános kulcs pedig az aláírás ellenőrzésére. Az API-kulcsot az API-tulajdonos hozza létre, ám a privátkulcsot és a nyilvános kulcsot a felhasználó. Az API-tulajdonosnak az aláírás ellenőrzéséhez csak a nyilvános kulcsra van szüksége, így a privátkulcs helyben és titokban maradhat.
Az aszimmetrikus kulcsok használatából fakadó fő előny a nagyobb biztonság, amelyet az aláírást létrehozó és az azt ellenőrző kulcs szétválasztása eredményez. Ez lehetővé teszi, hogy a külső rendszerek anélkül ellenőrizhessék az aláírásokat, hogy generálni tudnák őket. Egy másik előny, hogy az aszimmetrikus titkosítási rendszerek támogatják a jelszó hozzáadását a privátkulcshoz. Jó példa erre egy RSA-kulcspár.
Biztonságosak az API-kulcsok?
Az API-kulccsal kapcsolatos felelősség a felhasználóé. Az API-kulcsok hasonlóak a jelszavakhoz, és ugyanazzal a körültekintéssel kell kezelni őket. Egy API-kulcs megosztása hasonló egy jelszó megosztásához, és mint ilyen, nem szabad megtenni, mivel veszélyezteti a felhasználó fiókját.
Az API-kulcsok a kibertámadások gyakori célpontjai, mert a segítségükkel nagyszabású műveleteket lehet végrehajtani bizonyos rendszerekben, például személyes adatokat lehet lekérni, illetve pénzügyi tranzakciókat lehet végrehajtani. Bizony, volt már rá példa hogy adatgyűjtő programokkal (ún. crawlerekkel) sikeresen támadtak online kódadatbázisokat és loptak el API-kulcsokat.
Az API-kulcslopás drasztikus következményekkel járhat, és jelentős pénzügyi veszteségeket okozhat. Továbbá, mivel néhány API-kulcs érvényessége nem jár le, azokat a támadók a lopás után egészen addig használhatják, amíg a kulcsokat vissza nem hívják.
Az API-kulcsok felhasználásának bevált gyakorlatai
Az érzékeny adatokhoz való hozzáférésük és általános sebezhetőségük miatt az API-kulcsok biztonságos használata felbecsülhetetlen jelentőséggel bír. Az API-kulcsok használata során az alábbi bevált gyakorlatokat követve fokozható az általános biztonságuk:
Váltogassuk az API-kulcsokat, amilyen gyakran csak lehet. Ez azt jelenti, hogy törölni kell az aktuális API-kulcsot, és újat kell készíteni helyette. Több rendszer esetén az API-kulcsok generálása és törlése egyszerű. Hasonlóan ahhoz, ahogy egyes rendszerek 30–90 naponta megkövetelik a jelszó módosítását, az API-kulcsokat is hasonló gyakorisággal váltogatni kell, ha lehetséges.
Használjon IP engedélyezési listát: amikor létrehoz egy API-kulcsot, írjon listát azokkal az IP-címekkel, amelyek használhatják az adott kulcsok (vagyis készítsen egy IP engedélyezési listát). Emellett listába szedheti a blokkolt IP-címeket is (ez pedig az IP-feketelista). Így még ha az API-kulcsot el is lopják, ismeretlen IP-címről akkor sem kaphatnak hozzáférés.
Használjon több API-kulcsot: több kulcs használatával és a felelősség felosztásával a kulcsok között csökkentheti a biztonsági kockázatot, mivel a védelme nem egyetlen, kiterjedt hozzáférési engedélyekkel rendelkező kulcson áll vagy bukik. Emellett minden kulcshoz felállíthat egy különálló IP engedélyezési listát, tovább csökkentve a biztonsági kockázatot.
Tárolja az API-kulcsokat biztonságos helyen: ne tárolja a kulcsokat nyilvános helyeken, bárki által hozzáférhető számítógépeken, illetve az eredeti, egyszerű szövegformátumban. Ehelyett a nagyobb biztonság érdekében tárolja az egyes kulcsokat titkosított módon vagy egy titkos kezelőnél, és legyen óvatos, nehogy véletlenül felfedje őket.
Ne hossza meg mással az API-kulcsait. Az API-kulcs megosztása olyan, mintha a jelszavát osztaná meg. Ha így tesz, azzal ugyanazokat a hitelesítési és felhasználói jogosultságokat adja a másik félnek, mint ami Önnek is van. Biztonsági incidens esetén az API-kulcsát ellophatják, és felhasználhatják arra, hogy feltörjék a fiókját. Az API-kulcsot csak Ön használhatja a kulcsot létrehozó rendszerhez.
Ha az API-kulcsa kitudódik, akkor először is le kell tiltania azt, hogy megelőzze a további károkat. Ha pénzügyi veszteség is keletkezett, akkor készítsen képernyőképeket az incidenshez kapcsolódó legfontosabb információkról, lépjen kapcsolatba az érintett entitásokkal és tegyen bejelentést a rendőrségen. Ez a legjobb módja annak, hogy növelje az esélyt az elvesztett pénzeszközök visszaszerzésére.
Záró gondolatok
Az API-kulcsok alapvető hitelesítési és engedélyezési funkciókat kínálnak, a felhasználók pedig kötelesek kellő óvatossággal kezelni és védeni a kulcsaikat. Az API-kulcsok biztonságos használatának számos vetülete és szintje van. Összefoglalva azt mondhatjuk, hogy az API-kulcsot ugyanúgy kell kezelni, mint a saját fiókhoz tartozó jelszót.