Ein API-Schlüssel (Application Programming Interface) ist ein eindeutiger Code, mit dem eine API die aufrufende Anwendung oder den Nutzer identifiziert. API-Schlüssel dienen dazu, zu verfolgen und zu kontrollieren, wer eine API verwendet und wie sie verwendet wird, sowie um Anwendungen zu authentifizieren und zu autorisieren – ähnlich wie bei Nutzernamen und Passwörtern. Ein API-Schlüssel kann in Form eines einzelnen Schlüssels oder eines Satzes von mehreren Schlüsseln vorliegen. Die Nutzer sollten sich an bewährte Verfahren halten, um ihre allgemeine Sicherheit gegen den Diebstahl von API-Schlüsseln zu verbessern und die damit verbundenen Folgen einer Kompromittierung ihrer API-Schlüssel zu vermeiden.
API vs. API-Schlüssel
Um zu verstehen, was ein API-Schlüssel ist, musst du zunächst wissen, was eine API ist. Eine Application Programming Interface oder API ist ein Software-Vermittler, der es zwei oder mehr Anwendungen ermöglicht, Informationen auszutauschen. Zum Beispiel ermöglicht die API von CoinMarketCap anderen Anwendungen, Krypto-Daten wie Preis, Volumen und Marktkapitalisierung abzurufen und zu nutzen.
Einen API-Schlüssel gibt es in vielen verschiedenen Formen – es kann ein einzelner Schlüssel oder ein Satz von mehreren Schlüsseln sein. Verschiedene Systeme verwenden diese Schlüssel, um eine Anwendung zu authentifizieren und zu autorisieren, ähnlich wie ein Nutzername und ein Passwort verwendet werden. Ein API-Schlüssel wird von einem API-Client verwendet, um eine Anwendung zu authentifizieren, die die API aufruft.
Wenn Binance Academy beispielsweise die CoinMarketCap-API nutzen möchte, wird ein API-Schlüssel von CoinMarketCap generiert und zur Authentifizierung der Identität von Binance Academy (dem API-Client) verwendet, der den API-Zugang anfordert. Wenn Binance Academy auf die API von CoinMarketCap zugreift, sollte dieser API-Schlüssel zusammen mit der Anforderung an CoinMarketCap gesendet werden.
Dieser API-Schlüssel sollte nur von der Binance Academy verwendet werden und sollte nicht mit anderen geteilt oder an andere gesendet werden. Die Weitergabe dieses API-Schlüssels ermöglicht es einem Dritten, auf CoinMarketCap als Binance Academy zuzugreifen, und alle Aktionen des Dritten werden so aussehen, als ob sie von Binance Academy stammen.
Der API-Schlüssel kann auch von der CoinMarketCap-API verwendet werden, um zu bestätigen, dass die Anwendung zum Zugriff auf die angeforderte Ressource berechtigt ist. Darüber hinaus verwenden API-Eigentümer API-Schlüssel, um die API-Aktivität zu überwachen, wie z.B. die Typen, den Traffic und das Volumen der Anfragen.
Was ist ein API-Schlüssel?
Ein API-Schlüssel wird verwendet, um zu kontrollieren und zu verfolgen, wer eine API nutzt und wie er sie nutzt. Der Begriff „API-Schlüssel“ kann für verschiedene Systeme unterschiedliche Bedeutungen haben. Einige Systeme haben einen einzigen Code, andere können mehrere Codes für einen einzigen „API-Schlüssel“ haben.
Ein „API-Schlüssel“ ist ein eindeutiger Code oder eine Reihe eindeutiger Codes, die von einer API zur Authentifizierung und Autorisierung des aufrufenden Nutzers oder der Anwendung verwendet werden. Einige Codes werden für die Authentifizierung verwendet, andere für die Erstellung kryptografischer Signaturen zum Nachweis der Legitimität einer Anfrage.
Diese Authentifizierungscodes werden üblicherweise als „API-Schlüssel“ bezeichnet, während die für kryptografische Signaturen verwendeten Codes verschiedene Bezeichnungen haben, wie „geheimer Schlüssel“, „öffentlicher Schlüssel“ oder „privater Schlüssel“. Bei der Authentifizierung geht es darum, die beteiligten Stellen zu identifizieren und zu bestätigen, dass sie die sind, die sie vorgeben zu sein.
Die Autorisierung hingegen legt fest, auf welche API-Dienste der Zugriff erlaubt ist. Die Funktion eines API-Schlüssels ähnelt der eines Nutzernamens und eines Passworts für ein Konto. Er kann auch mit anderen Sicherheitsfunktionen verbunden werden, um die allgemeine Sicherheit zu verbessern.
Jeder API-Schlüssel wird in der Regel vom API-Eigentümer für eine bestimmte Entität generiert (mehr dazu weiter unten), und bei jedem Aufruf eines API-Endpunkts – der eine Nutzerauthentifizierung oder eine Autorisierung oder beides erfordert – wird der entsprechende Schlüssel verwendet.
Kryptografische Signaturen
Einige API-Schlüssel verwenden kryptografische Signaturen als zusätzliche Verifizierungsebene. Wenn ein Nutzer bestimmte Daten an eine API senden möchte, kann der Anfrage eine von einem anderen Schlüssel generierte digitale Signatur hinzugefügt werden. Mithilfe der Kryptografie kann der API-Eigentümer überprüfen, ob diese digitale Signatur mit den gesendeten Daten übereinstimmt.
Symmetrische und asymmetrische Signaturen
Die über eine API freigegebenen Daten können mit kryptografischen Schlüsseln signiert werden, die in die folgenden Kategorien fallen:
Symmetrische Schlüssel
Es handelt sich hierbei um einen einzigen geheimen Schlüssel, um sowohl das Signieren von Daten als auch die Überprüfung einer Signatur durchzuführen. Bei symmetrischen Schlüsseln werden der API-Schlüssel und der geheime Schlüssel in der Regel vom API-Eigentümer erzeugt, und der API-Dienst muss denselben geheimen Schlüssel für die Signaturprüfung verwenden. Der Hauptvorteil der Verwendung eines singulären Schlüssels ist, dass dies schneller geht und weniger Rechenleistung für die Signaturerstellung und -überprüfung erfordert. Ein gutes Beispiel für einen symmetrischen Schlüssel ist HMAC.
Asymmetrische Schlüssel
Es handelt sich hierbei um zwei Schlüssel: einen privaten Schlüssel und einen öffentlichen Schlüssel, die zwar unterschiedlich, aber kryptografisch miteinander verbunden sind. Der private Schlüssel wird für die Signaturerstellung und der öffentliche Schlüssel für die Signaturprüfung verwendet. Der API-Schlüssel wird vom API-Eigentümer generiert, aber das Paar aus privatem und öffentlichem Schlüssel wird vom Nutzer erzeugt. Nur der öffentliche Schlüssel muss vom API-Eigentümer für die Signaturprüfung verwendet werden, sodass der private Schlüssel lokal und geheim bleiben kann.
Der Hauptvorteil der Verwendung asymmetrischer Schlüssel ist die höhere Sicherheit, die sich aus der Trennung von Signaturerstellungs- und -prüfungsschlüsseln ergibt. Dies ermöglicht es externen Systemen, Signaturen zu überprüfen, ohne dass sie in der Lage sind, Signaturen zu erzeugen. Ein weiterer Vorteil ist, dass einige asymmetrische Verschlüsselungssysteme das Hinzufügen eines Passworts zu privaten Schlüsseln unterstützen. Ein gutes Beispiel ist ein RSA-Schlüsselpaar.
Sind API-Schlüssel sicher?
Die Verantwortung für einen API-Schlüssel liegt beim Nutzer. API-Schlüssel sind ähnlich wie Passwörter und müssen mit der gleichen Sorgfalt behandelt werden. Die Weitergabe eines API-Schlüssels ist mit dem Teilen eines Passworts vergleichbar und darf nicht geschehen, da dies das Konto des Nutzers gefährden würde.
API-Schlüssel sind häufig das Ziel von Cyberangriffen, da sie dazu verwendet werden können, leistungsstarke Operationen auf Systemen durchzuführen, wie z.B. die Abfrage persönlicher Daten oder die Ausführung von Finanztransaktionen. Es hat sogar Fälle gegeben, in denen Crawler erfolgreich Online-Code-Datenbanken angegriffen haben, um API-Schlüssel zu stehlen.
Die Folgen eines API-Schlüsseldiebstahls können drastisch sein und zu erheblichen finanziellen Verlusten führen. Da einige API-Schlüssel nicht ablaufen, können sie von Angreifern nach dem Diebstahl unbegrenzt verwendet werden, bis die Schlüssel selbst widerrufen werden.
Best Practices bei der Verwendung von API-Schlüsseln
Aufgrund ihres Zugriffs auf sensible Daten und ihrer allgemeinen Anfälligkeit ist die sichere Verwendung von API-Schlüsseln von größter Bedeutung. Du kannst diese Best Practices bei der Verwendung von API-Schlüsseln befolgen, um ihre allgemeine Sicherheit zu verbessern:
Ersetze deine API-Schlüssel nach Möglichkeit häufig. Das heißt, du solltest deinen aktuellen API-Schlüssel löschen und einen neuen erstellen. Bei mehreren Systemen ist es einfach, API-Schlüssel zu erstellen und zu löschen. Ähnlich wie du bei manchen Systemen alle 30 bis 90 Tage dein Passwort ändern musst, solltest du deine API-Schlüssel möglichst ähnlich häufig wechseln.
Verwende eine IP-Whitelist: Erstelle bei der Erstellung eines API-Schlüssels eine Liste der IPs, die den Schlüssel verwenden dürfen (eine IP-Whitelist). Du kannst auch eine Liste der gesperrten IPs erstellen (eine IP-Blacklist). Auf diese Weise kann selbst im Falle eines Diebstahls deines API-Schlüssels nicht von einer unbekannten IP-Adresse auf ihn zugegriffen werden.
Verwende mehrere API-Schlüssel: Die Verwendung mehrerer Schlüssel und die Aufteilung der Zuständigkeiten auf diese Schlüssel verringert das Sicherheitsrisiko, da deine Sicherheit nicht von einem einzigen Schlüssel mit umfangreichen Berechtigungen abhängt. Außerdem kannst du für jeden Schlüssel unterschiedliche IP-Whitelists festlegen, was dein Sicherheitsrisiko weiter senkt.
Bewahre API-Schlüssel sicher auf: Bewahre deine Schlüssel nicht an öffentlichen Orten, auf öffentlichen Computern oder in ihrem Originalformat im Klartext auf. Speichere sie stattdessen verschlüsselt oder für eine bessere Sicherheit mit einem Security Manager und achte darauf, sie nicht versehentlich preiszugeben.
Gib deine API-Schlüssel nicht weiter. Das Teilen deines API-Schlüssels ist ähnlich wie das Teilen deines Passworts. Auf diese Weise gibst du einer anderen Partei die gleichen Authentifizierungs- und Autorisierungsprivilegien wie dir. Wenn diese kompromittiert werden, kann dein API-Schlüssel gestohlen und verwendet werden, um sich in dein Konto zu hacken. Ein API-Schlüssel sollte nur zwischen dir und dem System, das ihn generiert, verwendet werden.
Wenn dein API-Schlüssel kompromittiert wurde, musst du ihn zunächst deaktivieren, um weiteren Schaden zu verhindern. Wenn ein finanzieller Verlust entstanden ist, erstelle Screenshots der wichtigsten Informationen im Zusammenhang mit dem Vorfall, kontaktiere die entsprechenden Stellen und erstatte eine Anzeige bei der Polizei. Auf diese Weise erhöhst du deine Chancen, verlorene Mittel wiederzuerlangen.
Fazit
API-Schlüssel bieten zentrale Authentifizierungs- und Autorisierungsfunktionen, und die Nutzer müssen ihre Schlüssel sorgfältig verwalten und schützen. Die sichere Verwendung von API-Schlüsseln umfasst viele Ebenen und Aspekte. Insgesamt sollte ein API-Schlüssel wie ein Passwort für dein Konto behandelt werden.