Menü
Amazon Web Services
Allgemeine Referenz (Version 1.0)

Aufgabe 3: Berechnen der Signatur für AWS Signature Version 4

Bevor Sie eine Signatur berechnen, leiten Sie einen Signaturschlüssel von Ihrem geheimen AWS-Zugriffsschlüssel ab. Da der abgeleitete Signaturschlüssel speziell für das Datum, den Service und die Region gilt, bietet er einen besseren Schutz. Sie verwenden nicht nur Ihren geheimen Zugriffsschlüssel, um die Anforderung zu signieren. Sie verwenden den Signaturschlüssel und die zu signierende Zeichenfolge, die Sie in Aufgabe 2: Erstellen einer zu signierenden Zeichenfolge für Signature Version 4 als Eingabewerte für eine Keyed-Hash-Funktion erstellt haben. Das in Hexadezimalzeichen kodierte Ergebnis der Keyed-Hash-Funktion ist die Signatur.

Bei Signature Version 4 müssen Sie keine bestimmte Zeichenkodierung für die Kodierung der zu signierenden Zeichenfolge verwenden. Bei einigen AWS-Services ist jedoch möglicherweise eine spezielle Kodierung erforderlich. Weitere Informationen finden Sie in der Dokumentation zu dem jeweiligen Service.

So berechnen Sie eine Signatur

  1. Leiten Sie Ihren Signaturschlüssel ab. Verwenden Sie dazu Ihren geheimen Zugriffsschlüssel, um eine Reihe Hash-basierter Message Authentication Codes (HMACs) zu erstellen. Dies wird im folgenden Pseudocode gezeigt, wobei HMAC(key, data) eine HMAC-SHA256-Funktion darstellt, die das Ergebnis im Binärformat ausgibt. Das Ergebnis jeder Hash-Funktion wird als Eingabe für die nächste verwendet.

    Pseudocode für das Ableiten eines Signaturschlüssels

    Copy
    kSecret = your secret access key kDate = HMAC("AWS4" + kSecret, Date) kRegion = HMAC(kDate, Region) kService = HMAC(kRegion, Service) kSigning = HMAC(kService, "aws4_request")

    Beachten Sie, dass das im Hashing-Prozess verwendete Datum im Format YYYYMMDD vorliegt (z. B. 20150830) und nicht die Uhrzeit beinhaltet.

    Stellen Sie sicher, dass Sie die HMAC-Parameter für die Programmiersprache, die Sie verwenden, in der richtigen Reihenfolge angeben. Das folgende Beispiel zeigt den Schlüssel als ersten Parameter und die Daten (Nachricht) als zweiten Parameter. Die Funktion, die Sie verwenden, kann jedoch Schlüssel und Daten in einer anderen Reihenfolge angeben.

    Verwenden Sie den Digest (Binärformat) für die Ableitung des Schlüssels. Die meisten Sprachen verfügen über Funktionen zur Berechnung eines Hashs im Binärformat, in der Regel als "Digest" oder "hexkodierter Hash" ("Hexdigest") bezeichnet. Für die Ableitung des Schlüssels müssen Sie einen binär formatierten Digest verwenden.

    Das folgende Beispiel zeigt die Eingabewerte für die Ableitung eines Signaturschlüssels mit der entsprechenden Ausgabe, wobei kSecret = wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY ist.

    Bei dem Beispiel werden die gleichen Parameter wie bei der Anforderung von Aufgabe 1 und 2 verwendet (eine Anforderung an IAM in der Region us-east-1 am 30. August 2015).

    Eingabebeispiele

    Copy
    HMAC(HMAC(HMAC(HMAC("AWS4" + kSecret,"20150830"),"us-east-1"),"iam"),"aws4_request")

    Das folgende Beispiel zeigt den abgeleiteten Signaturschlüssel, der aus dieser Abfolge von HMAC-Hash-Operationen resultiert. Es zeigt die hexadezimale Darstellung der einzelnen Bytes im binären Signaturschlüssel.

    Beispiel für Signaturschlüssel

    Copy
    c4afb1cc5771d871763a393e44b703571b55cc28424d1a5e86da6ed3c154a4b9

    Weitere Informationen zum Ableiten eines Signaturschlüssels in unterschiedlichen Programmiersprachen finden Sie unter Beispiele für das Ableiten eines Signaturschlüssels für Signature Version 4.

  2. Berechnen Sie die Signatur. Verwenden Sie dazu den Signaturschlüssel, den Sie abgeleitet haben, sowie die zu signierende Zeichenfolge als Eingabewerte für die Keyed-Hash-Funktion. Nachdem Sie die Signatur berechnet haben, konvertieren Sie den binären Wert in eine hexadezimale Darstellung.

    Der folgenden Pseudocode zeigt, wie Sie die Signatur berechnen.

    Copy
    signature = HexEncode(HMAC(derived signing key, string to sign))

    Das folgende Beispiel zeigt die Signatur, die sich ergibt, wenn Sie den gleichen Signaturschlüssel und die zu signierende Zeichenfolge von Aufgabe 2 verwenden:

    Beispielsignatur

    Copy
    5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7