Wie funktioniert API-Schlüssel und geheimen Schlüssel Arbeit? Wäre es sicher sein, wenn ich meine API und geheime Schlüssel zu einer anderen Anwendung übergeben?

StackOverflow https://stackoverflow.com/questions/2674445

Frage

Ich bin gerade erst darüber nachdenken, wie api Schlüssel und geheime Schlüssel arbeiten. Nur 2 Tagen habe ich unterschrieben für Amazon S3 und installiert die S3Fox Plugin . Sie fragten mich, sowohl für meinen Access Key und geheimen Zugriffsschlüssel, von denen beide mir den Zugang zu Anmeldung erforderlich ist.

Also ich frage mich, ob sie mich für meine geheimen Schlüssel sind gefragt, sie müssen es irgendwo Recht werden zu speichern? Ist das nicht im Grunde das Gleiche wie mich für meine Kreditkartennummern oder Passwort zu fragen und zu speichern, die in ihrer eigenen Datenbank?

Wie sind geheime Schlüssel und api Schlüssel sollten Arbeit? Wie Geheimnis brauchen sie zu sein? Sind diese Anwendungen, die die geheimen Schlüssel es verwenden Speichern irgendwie?

War es hilfreich?

Lösung

Im Grunde genommen auf die Ausarbeitung was hier .

Hier ist, wie es funktioniert: Nehmen wir an, wir haben eine Funktion, die eine Zahl von null bis neun nimmt, fügt drei, und wenn das Ergebnis größer als zehn ist, zehn subtrahiert. So f (2) = 5, f (8) = 1 usw. Jetzt können wir eine andere Funktion machen, rufen Sie es f‘, die rückwärts geht, von sieben statt drei Zugabe. f '(5) = 2, f' (1) = 8, etc.

Das ist ein Beispiel für eine Zwei-Wege-Funktion und ihre Inverse. alle mathematischen Funktionen Theoretisch dass eins zum anderen Karten kann rückgängig gemacht werden. In der Praxis kann jedoch eine Funktion, dass mixt sein Eingang so gut, dass es unglaublich schwierig ist, rückgängig zu machen.

einen Eingang nehmen und Anlegen eine Einwegfunktion ist „Hashing“ die Eingabe genannt, und was Amazon speichert auf ihrem System ist ein „Hash“ Ihren geheimen Schlüssels. SHA1 ein Beispiel für diese Art von „one-way“ -Funktion ist, wird es auch gegen Angriffe gehärtet.

Die HMAC Funktion auf etablierte Hash-Funktionen baut einen bekannten Schlüssel verwenden, um ein zu authentifizieren Text-String. Es funktioniert wie folgt:

  • Sie nehmen den Text Ihrer Anfrage und Ihre geheimen Schlüssel und wenden Sie die HMAC-Funktion.
  • Sie fügen, dass die Authentifizierung Header auf Ihre Anfrage und an Amazon schicken.
  • Amazon sieht ihre Kopie des geheimen Schlüssels, und der Text, den Sie gerade gesendet und wendet die HMAC-Funktion.
  • Wenn das Ergebnis Streichhölzer, sie wissen, dass Sie den gleichen geheimen Schlüssel haben.

Der Unterschied zwischen diesem und PKI ist, dass diese Methode RESTful , so dass eine minimale Anzahl von Austausch zwischen Ihrem System und Amazon-Servern.

  

Ist das nicht im Grunde das gleiche wie   fragen mich, für meine Kreditkartennummern   oder Passwort und zu speichern, die in ihrem   eigene Datenbank?

Ja, obwohl der Schaden kann jemand mit S3 tun scheint Trockenlegung Ihr Konto beschränkt.

  

Wie geheim brauchen sie zu sein? Sind   diese Anwendungen, die den geheimen Schlüssel,   Schlüssel speichert es irgendwie?

Irgendwann wirst du den geheimen Schlüssel zu laden, haben, und mit den meisten Unix-basierten Systemen, wenn ein Angreifer Root-Zugriff bekommen können, können sie den Schlüssel erhalten. Wenn Sie den Schlüssel verschlüsseln, müssen Sie Code haben, um es zu entschlüsseln, und an einem gewissen Punkt des Code Entschlüsselung hat Klartext sein, so dass er ausgeführt werden kann. Dies ist das gleiche Problem DRM hat, mit der Ausnahme, dass Sie den Computer besitzen.

In vielen Fällen Ich habe nur geheime Schlüssel in einer Datei mit eingeschränkten Rechten, und die üblichen Vorsichtsmaßnahmen, um mein System zu verhindern, verwurzelt. Es gibt ein paar Tricks, um es richtig mit einem Mehrbenutzersystem, wie zum Beispiel der Vermeidung von temporären Dateien und so weiter.

funktioniert

Andere Tipps

Public Key Cryptography verwendet wird, gegen ganz bestimmte Angriffe zu verteidigen, von denen einige sind üblich. Kurz gesagt ist diese komplexe Mathematik, die auf einzelne zu überprüfen ermöglicht, dass sowohl Paar die öffentlichen und privaten Schlüssel hat, während nur den öffentlichen Schlüssel zu kennen. Das ist sehr verschieden von einer Kreditkarte oder statisches Passwort. Als Beispiel, wenn Sie mit einem OpenSSH-Server dann dem Server muss nicht den privaten Schlüssel .

Im Idealfall, wenn Amazon API Datenbank, wo der Angreifer kompromittiert würde, um eine Liste der öffentlichen Schlüssel hat und wäre nicht in der Lage des Benutzers API mit diesen Daten zuzugreifen. Allerdings ideale Systeme sind nicht immer in der Praxis umgesetzt und ich weiß nicht sicher, ob Amazon gegen diesen Angriffsvektor ist der Schutz, aber sie sollten sein.

In Public-Key-Authentifizierung ist statistisch immun gegen Brute-Force. Passwörter sind oft Wörterbuch Wörter, die Relativität schnell gebrochen werden kann. Doch ein privater Schlüssel ist eine massive Zahl, die nicht leicht zu erraten ist. Wenn der Angreifer den öffentlichen Schlüssel hatte, dann könnten sie viele Vermutungen „offline“ auf einem Supercomputer ausführen, aber selbst dann wäre es viel Zeit und Geld, um die Schlüssel zu brechen.

AWS hat ihren eigenen Authentifizierungsalgorithmus entwickelt. v4 wurde im Jahr 2014 Einzelheiten freigegeben werden hier beschrieben: authentifizieren Requests (AWS Signature Version 4) . Ein wichtiger Punkt ist, dass die Anforderung nicht mit dem Geheimnis signiert selbst, sondern mit einem Signaturschlüssel, die die geheimen erzeugt werden. Es nutzt auch HMAC-SHA256 für die Unterzeichnung.

asymmetrischen Schlüssels Verwendung sicherer wäre, da AWS nur einen öffentlichen Schlüssel anstelle des geheimen speichern würde, die sowohl durch den Benutzer und AWS gespeichert wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top