Grundsätzlich wird näher darauf eingegangen, was hier beschrieben wird .
So funktioniert es: Nehmen wir an, wir haben eine Funktion, die eine Zahl von null bis neun annimmt, drei addiert und, wenn das Ergebnis größer als zehn ist, zehn subtrahiert. Also ist f (2) = 5, f (8) = 1 usw. Jetzt können wir eine andere Funktion erstellen, sie f 'nennen, die rückwärts geht, indem wir sieben statt drei addieren. f '(5) = 2, f' (1) = 8 usw.
Das ist ein Beispiel für eine Zwei-Wege-Funktion und ihre Umkehrung. Theoretisch können alle mathematischen Funktionen, die eine Sache einer anderen zuordnen, umgekehrt werden. In der Praxis können Sie jedoch eine Funktion erstellen, die ihre Eingabe so gut verschlüsselt, dass es unglaublich schwierig ist, sie umzukehren.
Das Eingeben einer Eingabe und das Anwenden einer Einwegfunktion wird als "Hashing" der Eingabe bezeichnet, und was Amazon auf seinem System speichert, ist ein "Hash" Ihres geheimen Schlüssels. SHA1 ist ein Beispiel für diese Art von "Einweg" -Funktion, es ist auch gegen Angriffe gehärtet.
Die HMAC-Funktion baut auf etablierten Hash-Funktionen auf, um einen bekannten Schlüssel zur Authentifizierung einer Textzeichenfolge zu verwenden. Es funktioniert so:
- Sie nehmen den Text Ihrer Anfrage und Ihren geheimen Schlüssel und wenden die HMAC-Funktion an.
- Sie fügen diesen Authentifizierungsheader Ihrer Anfrage hinzu und senden ihn an Amazon.
- Amazon sucht nach der Kopie des geheimen Schlüssels und dem gerade gesendeten Text und wendet die HMAC-Funktion an.
- Wenn das Ergebnis übereinstimmt, wissen sie, dass Sie denselben geheimen Schlüssel haben.
Der Unterschied zwischen dieser und der PKI besteht darin, dass diese Methode REST-fähig ist und eine minimale Anzahl von Austauschen zwischen Ihrem System und den Servern von Amazon ermöglicht.
Ist das nicht im Grunde das Gleiche wie mich nach meinen Kreditkartennummern oder meinem Passwort zu fragen und dieses in ihrer eigenen Datenbank zu speichern?
Ja, obwohl der Schaden, den jemand mit S3 anrichten kann, auf die Entleerung Ihres Kontos beschränkt zu sein scheint.
Wie geheim müssen sie sein? Speichern diese Anwendungen, die die geheimen Schlüssel verwenden, sie irgendwie?
Irgendwann müssen Sie den geheimen Schlüssel laden, und bei den meisten Unix-basierten Systemen kann ein Angreifer den Schlüssel erhalten, wenn er Root-Zugriff erhält. Wenn Sie den Schlüssel verschlüsseln, benötigen Sie Code, um ihn zu entschlüsseln, und irgendwann muss der Entschlüsselungscode Klartext sein, damit er ausgeführt werden kann. Dies ist das gleiche Problem, das DRM hat, außer dass Sie den Computer besitzen.
In vielen Fällen füge ich nur geheime Schlüssel in eine Datei mit eingeschränkten Berechtigungen ein und treffe die üblichen Vorsichtsmaßnahmen, um zu verhindern, dass mein System gerootet wird. Es gibt einige Tricks, damit es mit einem Mehrbenutzersystem ordnungsgemäß funktioniert, z. B. das Vermeiden temporärer Dateien und dergleichen.