

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# MAC generieren und verifizieren
<a name="crypto-ops-mac"></a>

Message Authentication Codes (MAC) werden normalerweise verwendet, um die Integrität einer Nachricht zu authentifizieren (unabhängig davon, ob sie geändert wurde). Kryptografische Hashes wie HMAC (Hash-Based Message Authentication Code), CBC-MAC und CMAC (Cipher-based Message Authentication Code) bieten durch den Einsatz von Kryptografie zusätzliche Sicherheit beim Absender des MAC. HMAC basiert auf Hash-Funktionen, während CMAC auf Blockchiffren basiert. Der Dienst unterstützt auch die ISO9797 Algorithmen 1 und 3, die Typen von CBC- sind. MACs 

Alle MAC-Algorithmen dieses Dienstes kombinieren eine kryptografische Hash-Funktion und einen gemeinsamen geheimen Schlüssel. Sie nehmen eine Nachricht und einen geheimen Schlüssel, z. B. das Schlüsselmaterial in einem Schlüssel, und geben ein eindeutiges Tag oder einen eindeutigen Mac zurück. Wenn sich auch nur ein Zeichen der Nachricht ändert oder wenn sich der geheime Schlüssel ändert, ist das resultierende Tag völlig anders. Durch die Anforderung eines geheimen Schlüssels bietet die Kryptografie MACs auch Authentizität. Ohne den geheimen Schlüssel ist es unmöglich, einen identischen Mac zu generieren. Kryptografische Signaturen MACs werden manchmal als symmetrische Signaturen bezeichnet, da sie wie digitale Signaturen funktionieren, aber einen einzigen Schlüssel sowohl für das Signieren als auch für die Überprüfung verwenden. 

AWS Die Zahlungskryptografie unterstützt verschiedene Arten von: MACs

**ISO9797 ALGORITHMUS 1**  
Bezeichnet mit `KeyUsage` von \$1. ISO9797 ALGORITHM1 Wenn das Feld kein Vielfaches der Blockgröße ist (8 Byte/16 Hexadezimalzeichen für TDES, 16 Byte/32 Zeichen für AES), wendet Payment Cryptography automatisch die Füllmethode 1 an. AWS ISO9797 Wenn andere Füllmethoden erforderlich sind, können Sie diese anwenden, bevor Sie den Dienst aufrufen.

**ISO9797 ALGORITHMUS 3 (MAC für den Einzelhandel)**  
Bezeichnet mit \$1`KeyUsage`. ISO9797 ALGORITHM3 Es gelten dieselben Füllregeln wie bei Algorithmus 1.

**ISO9797 ALGORITHMUS 5 (CMAC)**  
Wird mit \$1M6\$1ISO\$19797\$15\$1CMAC\$1KEY bezeichnet `KeyUsage` TR31

**HMAC**  
Wird mit `KeyUsage` TR31 \$1M7\$1HMAC\$1KEY bezeichnet, einschließlich HMAC\$1, HMAC\$1, HMAC\$1 und HMAC\$1 SHA224 SHA256 SHA384 SHA512

**AS28053.4.1 MAC**  
Wird mit \$1M0\$1ISO\$116609\$1MAC\$1KEY `KeyUsage` bezeichnet. TR31 Weitere Informationen zu finden Sie unter AS2805 [AS2805](advanced.regional.as2805.md)

**DUKPT MAC**  
DUKPT MAC wird in der Regel verwendet, um die Quelle und die Nutzlast von Zahlungsterminals für Nachrichten to/from zu bestätigen. Es leitet mithilfe von DUKPT-Ableitungstechniken einen Schlüssel ab und führt dann den MAC durch. Schlüssel, die mit dieser Option verwendet werden, werden mit einem von \$1B0\$1BASE\$1DERIVATION\$1KEY gekennzeichnet. `KeyUsage` TR31 

**EMV MAC**  
EMV MAC wird in der EMV-Dokumentation in der Regel als Integritätsschlüssel bezeichnet. Es leitet einen Schlüssel mithilfe von EMV-Ableitungstechniken ab und verwendet dann \$1 intern. ISO9797 ALGORITHM3 Es wird normalerweise verwendet, um Ausstellerskripte zur Neuprogrammierung an eine Chipkarte zu senden. Schlüssel, die mit dieser Option verwendet werden, werden mit einem von \$1E2\$1EMV\$1MKEY\$1INTEGRITY gekennzeichnet. `KeyUsage` TR31 Wenn Sie sowohl ein Skript senden als auch eine Offline-PIN aktualisieren, achten Sie darauf, dass diese beiden Operationen ausgeführt werden. [GenerateMacEmvPinChange](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GenerateMacEmvPinChange) 

**Topics**
+ [MAC generieren](generate-mac.md)
+ [MAC verifizieren](verify-mac.md)

# MAC generieren
<a name="generate-mac"></a>

Die Generate MAC API wird verwendet, um kartenbezogene Daten zu authentifizieren, z. B. Tracking-Daten von einem Kartenmagnetstreifen. Dabei werden bekannte kryptografische Schlüssel verwendet, um einen MAC (Message Authentication Code) für die Datenvalidierung zwischen sendenden und empfangenden Parteien zu generieren. Die zur Generierung von MAC verwendeten Daten umfassen Nachrichtendaten, einen geheimen MAC-Verschlüsselungsschlüssel und einen MAC-Algorithmus zur Generierung eines eindeutigen MAC-Werts für die Übertragung. Die empfangende Partei des MAC verwendet dieselben MAC-Nachrichtendaten, denselben MAC-Verschlüsselungsschlüssel und denselben Algorithmus, um einen anderen MAC-Wert für den Vergleich und die Datenauthentifizierung zu reproduzieren. Selbst wenn sich ein Zeichen der Nachricht ändert oder der zur Überprüfung verwendete MAC-Schlüssel nicht identisch ist, ist der resultierende MAC-Wert unterschiedlich. Die API unterstützt ISO 9797-1 Algorithmus 1 und ISO 9797-1 Algorithmus 3 MAC (unter Verwendung eines statischen MAC-Schlüssels und eines abgeleiteten DUKPT-Schlüssels), HMAC- und EMV-MAC-Verschlüsselungsschlüssel für diesen Vorgang.

Der Eingabewert für muss HexBinary-Daten sein. `message-data`

Weitere Informationen zu allen Optionen für diese API finden Sie unter [GenerateMac](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GenerateMac.html)und [VerifyMac](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyMac.html).

Mit dem optionalen Parameter mac-length können Sie den Ausgabewert kürzen (obwohl dies auch in Ihrem Code möglich ist). Eine Länge von 8 bezieht sich auf 8 Byte oder 16 Hex-Zeichen.

MAC-Schlüssel können entweder mit AWS Payment Cryptography per Anruf erstellt [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html)oder per Anruf [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html)importiert werden. 

**Anmerkung**  
Für CMAC- und HMAC-Algorithmen ist kein Padding erforderlich. Alle anderen erfordern, dass die Daten entsprechend der Blockgröße des Algorithmus aufgefüllt werden, die einem Vielfachen von 8 Byte (16 Hex-Zeichen) für TDES und 16 Byte (32 Hex-Zeichen) für AES entspricht. 

**Topics**
+ [Generieren Sie HMAC](#generate-mac-hmac)
+ [Generieren Sie MAC mit dem ISO 9797-1-Algorithmus 3](#generate-mac-iso9797-alg3)
+ [Generieren Sie MAC mit CMAC](#generate-mac-cmac)
+ [Generieren Sie MAC mit DUKPT CMAC](#generate-mac-dukpt-cmac)

## Generieren Sie HMAC
<a name="generate-mac-hmac"></a>

In diesem Beispiel werden wir einen HMAC (Hash-Based Message Authentication Code) für die Kartendatenauthentifizierung mithilfe des HMAC-Algorithmus `HMAC_SHA256` und des HMAC-Verschlüsselungsschlüssels generieren. Der Schlüssel muss auf und auf KeyUsage eingestellt sein. `TR31_M7_HMAC_KEY` KeyModesOfUse `Generate` Die Hash-Länge (z. B. 256) wird bei der Erstellung des Schlüssels definiert und kann nicht geändert werden. 

Der optionale Parameter mac-length kürzt den ausgegebenen MAC, obwohl dies auch außerhalb des Dienstes erfolgen kann. Dieser Wert wird in Byte angegeben, sodass bei einem Wert von 16 eine Hexadezimalzeichenfolge der Länge 32 erwartet wird.

**Example**  

```
$ aws payment-cryptography-data generate-mac \ 
    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 \ 
    --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \
    --generation-attributes Algorithm=HMAC
```

```
           
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6",
    "KeyCheckValue": "2976E7",
    "Mac": "ED87F26E961C6D0DDB78DA5038AA2BDDEA0DCE03E5B5E96BDDD494F4A7AA470C"
}
```

## Generieren Sie MAC mit dem ISO 9797-1-Algorithmus 3
<a name="generate-mac-iso9797-alg3"></a>

In diesem Beispiel generieren wir einen MAC mit dem ISO 9797-1-Algorithmus 3 (Retail MAC) für die Kartendatenauthentifizierung. Der Schlüssel muss auf und auf KeyUsage gesetzt sein`TR31_M3_ISO_9797_3_MAC_KEY`. KeyModesOfUse `Generate` 

**Example**  

```
$ aws payment-cryptography-data generate-mac \ 
    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h \ 
    --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \ 
    --generation-attributes="Algorithm=ISO9797_ALGORITHM3"
```

```
           
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h",
    "KeyCheckValue": "2976EA",
    "Mac": "A8F7A73DAF87B6D0"
}
```

## Generieren Sie MAC mit CMAC
<a name="generate-mac-cmac"></a>

CMAC wird am häufigsten verwendet, wenn es sich bei den Schlüsseln um AES handelt, unterstützt aber auch TDES. In diesem Beispiel generieren wir einen MAC mit CMAC (ISO 9797-1 Algorithm 5) für die Kartendatenauthentifizierung mit einem AES-Schlüssel. Der Schlüssel muss auf und auf KeyUsage gesetzt sein. `TR31_M6_ISO_9797_5_CMAC_KEY` KeyModesOfUse `Generate` 

**Example**  

```
$ aws payment-cryptography-data generate-mac \ 
    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \ 
    --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \ 
    --generation-attributes Algorithm="CMAC"
```

```
           
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "C1EB8F",
    "Mac": "1F8C36E63F91E4E93DF7842BF5E2E5F7"
}
```

## Generieren Sie MAC mit DUKPT CMAC
<a name="generate-mac-dukpt-cmac"></a>

In diesem Beispiel werden wir einen MAC mithilfe von DUKPT (Derived Unique Key Per Transaction) mit CMAC für die Kartendatenauthentifizierung generieren. Der Schlüssel muss auf `TR31_B0_BASE_DERIVATION_KEY` und auf true KeyUsage KeyModesOfUse `DeriveKey` gesetzt sein. DUKPT-Schlüssel leiten mithilfe eines Base Derivation Key (BDK) und einer Key Serial Number (KSN) für jede Transaktion einen eindeutigen Schlüssel ab. 



**Example**  

```
$ aws payment-cryptography-data generate-mac --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" --generation-attributes="DukptCmac={KeySerialNumber="932A6E954ABB32DD00000001",Direction=BIDIRECTIONAL}"
```

```
       
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6",
    "KeyCheckValue": "C1EB8F"
}
```

# MAC verifizieren
<a name="verify-mac"></a>

Überprüfen Sie, ob die MAC-API verwendet wird, um den MAC (Message Authentication Code) für die kartenbezogene Datenauthentifizierung zu verifizieren. Es muss derselbe Verschlüsselungsschlüssel verwendet werden, der bei der MAC-Generierung verwendet wurde, um den MAC-Wert für die Authentifizierung zu reproduzieren. Der MAC-Verschlüsselungsschlüssel kann entweder mit AWS Payment Cryptography per Anruf erstellt [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html)oder per Anruf importiert werden. [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html) Die API unterstützt DUKPT MAC-, HMAC- und EMV-MAC-Verschlüsselungsschlüssel für diesen Vorgang.

Wenn der Wert verifiziert ist, kehrt der Antwortparameter `MacDataVerificationSuccessful` zurück`Http/200`, andernfalls `Http/400` mit einer entsprechenden Meldung. `Mac verification failed`

**Topics**
+ [Überprüfen Sie HMAC](#verify-mac-hmac)
+ [Überprüfen Sie den MAC mit DUKPT CMAC](#verify-mac-dukpt-cmac)

## Überprüfen Sie HMAC
<a name="verify-mac-hmac"></a>

In diesem Beispiel verifizieren wir einen HMAC (Hash-Based Message Authentication Code) für die Kartendatenauthentifizierung mithilfe des HMAC-Algorithmus `HMAC_SHA256` und des HMAC-Verschlüsselungsschlüssels. Der Schlüssel muss auf `TR31_M7_HMAC_KEY` und KeyModesOfUse `Verify` auf KeyUsage true gesetzt sein. 

**Example**  

```
$ aws payment-cryptography-data verify-mac \ 
     --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 \ 
     --message-data "3b343038383439303031303733393431353d32343038323236303030373030303f33" \ 
     --mac ED87F26E961C6D0DDB78DA5038AA2BDDEA0DCE03E5B5E96BDDD494F4A7AA470C \ 
     --verification-attributes Algorithm=HMAC_SHA256
```

```
       
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6",
    "KeyCheckValue": "2976E7"
}
```

## Überprüfen Sie den MAC mit DUKPT CMAC
<a name="verify-mac-dukpt-cmac"></a>

In diesem Beispiel verifizieren wir einen MAC mithilfe von DUKPT (Derived Unique Key Per Transaction) mit CMAC für die Kartendatenauthentifizierung. Der Schlüssel muss auf `TR31_B0_BASE_DERIVATION_KEY` und auf true KeyUsage KeyModesOfUse `DeriveKey` gesetzt sein. DUKPT-Schlüssel leiten mithilfe eines Base Derivation Key (BDK) und einer Key Serial Number (KSN) für jede Transaktion einen eindeutigen Schlüssel ab. Der Wert von DukptKeyVariant muss zwischen Sender und Empfänger übereinstimmen. REQUEST wird normalerweise von Terminal zu Backend verwendet, VERIFY von Backend zu Terminal und BIDIRECTIONAL, wenn ein einzelner Schlüssel in beide Richtungen verwendet wird. 

**Example**  

```
$ aws payment-cryptography-data verify-mac \ 
     --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \ 
     --message-data "3b343038383439303031303733393431353d32343038323236303030373030303f33" \ 
     --mac D8E804EE74BF1D909A2C01C0BDE8EF34 \ 
     --verification-attributes DukptCmac='{"KeySerialNumber":"932A6E954ABB32DD00000001","DukptKeyVariant":"BIDIRECTIONAL"}'
```

```
       
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "C1EB8F"
}
```