

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# AS2805
<a name="advanced.regional.as2805"></a>

La Norma de Australia 2805 (AS2805) es una norma para transferencias electrónicas de fondos que se utiliza principalmente para transacciones de pago con tarjeta. Su mantenimiento corre a cargo de [Standards Australia](https://www.standards.org.au/). El estándar consta de 6 libros que cubren numerosos temas, desde el formato de los mensajes hasta los estándares de cifrado.

La parte 6 proporciona orientación sobre la gestión de claves, incluida host-to-host la comunicación y los requisitos criptográficos pertinentes, mientras que otros aspectos se tratan en otras partes. node-to-node Toda la criptografía de este estándar se basa actualmente en el TDES. 

**nota**  
 AS2805 está disponible actualmente en la región ap-southeast-2. Se extenderá a más regiones en un futuro próximo. 

AS2805 presenta una serie de diferencias en comparación con otras implementaciones, que se resumen a continuación.

*Protección de claves*  
Se basa en variantes de teclas en lugar de en bloques de teclas, como en el TR-31/X9.143. AWS La criptografía de pagos almacena todas las claves como bloques de claves internamente, pero permite importarlas, exportarlas y calcularlas utilizando 05 variantes definidas. AS28 

*Claves unidireccionales*  
AS2805 exige el uso de teclas unidireccionales. Si ambos nodos necesitan generar códigos de autenticación de mensajes (MAC), utilizan dos claves. 

*Bloques de pines*  
AS2805 define una técnica de derivación de claves para claves de cifrado de pines únicas por transacción. Se puede utilizar en lugar de DUKPT. El esquema AS28 05 se basa en los datos de las transacciones (número de rastreo e importe de la transacción) en comparación con el uso del contador de transacciones por parte de DUKPT. 

*Validación del intercambio de claves*  
Define un proceso para validar la KEK antes de empezar a intercambiar claves de trabajo, como las teclas PIN. En otros esquemas, las KEK se intercambian con poca frecuencia y se validan mediante KCV. 

AS2805 utiliza el concepto de variantes clave en lugar de bloques clave para garantizar que las claves solo se utilicen para el propósito previsto (y único). A continuación se muestra cómo la criptografía de AWS pagos mapea las variantes y los bloques de teclas al importar, exportar o realizar otras funciones criptográficas con claves.


| AS2805 Tipo de clave | AWS Tipo de clave de criptografía de pago | 
| --- | --- | 
| TERMINAL\$1MAJOR\$1KEY\$1VARIANT\$100 |  TR31\$1K0\$1KEY\$1CLAVE DE CIFRADO | 
| PIN\$1ENCRYPTION\$1KEY\$1VARIANT\$128 |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY | 
| MENSAJE\$1AUTHENTICATION\$1KEY\$1VARIANT\$124 |  TR31\$1M0\$1ISO\$116609\$1MAC\$1KEY | 
| DATA\$1ENCRYPTION\$1KEY\$1VARIANT\$122 |  TR31\$1D0\$1KEY\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY | 
| VARIANT\$1MASK\$182, VARIANT\$1MASK\$182C0 |  Las opciones están disponibles como parte del proceso de validación de la KEK. Estos tipos de claves son efímeros y el servicio no los almacena. | 

Dados dos nodos, el nodo1 y el nodo2, los siguientes ejemplos son desde la perspectiva del nodo1. AWS La criptografía de pagos es compatible con APIs ambos lados del proceso.

**Topics**
+ [Intercambio de clave inicial (KEK)](as2805.kekexchange.md)
+ [Validación de la KEK](as2805.kekvalidation.md)
+ [Creación y transmisión de claves de trabajo](as2805.workingkeys.create.md)
+ [Exportación de claves de trabajo](as2805.workingkeys.export.md)
+ [Traducción de pines](as2805.pintranslation.md)
+ [Generación y validación de Mac](as2805.mac.md)

# Intercambio de clave inicial (KEK)
<a name="as2805.kekexchange"></a>

 En AS28 05, cada lado tiene su propia KEK. Las KEK se refieren a la clave del lado remitente que se utilizará siempre que el remitente necesite protect/wrap claves y las envíe al nodo 2. KEK (r) es la clave creada por el lado opuesto (node2).

**nota**  
Estos términos son relativos: un lado crea una clave (lado emisor) y el otro lado la recibe. Por lo tanto KEY1, en el nodo 1 se denomina KEK (s) y en el nodo 2 se denomina KEK (r).

 Las KEK de AS28 05 son siempre del tipo de clave = TR31 \$1K0\$1KEY\$1ENCRYPTION\$1KEY, ya que se utilizan para proteger criptogramas y no bloques de claves. Esto se corresponde con AS28 TERMINAL\$1MAJOR\$1KEY\$1VARIANT\$100, tal como se define en 05 6.1 

Pasos:

**1. Crea una clave**  
Cree una clave mediante la [CreateKey](create-keys.md)API. Creará una clave del tipo TR31 \$1K0\$1KEY\$1ENCRYPTION\$1KEY

**2. Determine el método para intercambiar claves con el nodo 2**  
Determine cómo [intercambiar KEK con la contraparte](keys-export.md). En el caso de AS28 05, el método más común e interoperable es RSA Wrap.

**3. Exportar KEKs**  
Según su selección anterior, recibirá un certificado de clave pública del nodo 2. Ejecutará la exportación con ese certificado para proteger la clave (o derivará una clave si utiliza el ECDH).

**4. Importar KEKr**  
Según la selección anterior, enviará un certificado de clave pública a node2. Ejecutará la importación con ese certificado para cargar el nodo 2 KEKr en el servicio.

# Validación de la KEK
<a name="as2805.kekvalidation"></a>

![\[Ejemplo de diagrama de red de alto nivel para aplicaciones de PIN que utilizan criptografía AWS de pago\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/images/as2805/kek_validation.png)


Cuando su servicio (nodo1) se conecte al nodo2, cada parte se asegurará de utilizar la misma KEK para las operaciones posteriores mediante un proceso denominado validación de KEK. 

**1. Pasos para validar la primera clave**

**1.1 Recibir KRs**  
Node2 generará un mensaje KRs y se lo enviará como parte del proceso de inicio de sesión. Pueden usar la criptografía AWS de pago para generar este valor u otra solución.

**1.2 Generar una respuesta de validación de KEK**  
El nodo generará una respuesta de validación de la KEK con entradas como la KEK (r) y las que KRs se proporcionan en el paso 1.  

**Example**  

```
cat >> generate-kek-validation-response.json
{
    "KekValidationType": {
        "KekValidationResponse": {
            "RandomKeySend": "9217DC67B8763BABCFDF3DADFCD0F84A"
        }
    },
    "RandomKeySendVariantMask": "VARIANT_MASK_82",
    "KeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza"
}
```

```
$ aws payment-cryptography-data generate-as2805-kek-validation --cli-input-json file://generate-kek-validation-response.json
```

```
{
 "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",
 "KeyCheckValue": "0A3674",
 "RandomKeyReceive": "A4B7E249C40C98178C1B856DB7FB76EB",
 "RandomKeySend": "9217DC67B8763BABCFDF3DADFCD0F84A"
}
```

**1.3 Retorno calculado KRr**  
Devuelve lo calculado KRr al nodo 2. Ese nodo lo comparará con el valor calculado en el paso 1.

**2. Pasos para validar la segunda clave**

**2.1 Generar y KRr KRs**  
Su nodo generará un valor aleatorio y una copia invertida (invertida) de este valor mediante criptografía de AWS pago. El servicio generará ambos valores envueltos en las KEK. Se conocen como KR (s) y KR (r).  

**Example**  

```
cat >> generate-kek-validation-request.json 
{
    "KekValidationType": {
        "KekValidationRequest": {
            "DeriveKeyAlgorithm": "TDES_2KEY"
        }
    },
"RandomKeySendVariantMask": "VARIANT_MASK_82",
    "KeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/rhfm6tenpxapkmrv"
}
```

```
$ aws payment-cryptography-data generate-as2805-kek-validation --cli-input-json file://generate-kek-validation-request.json
```

```
{
 "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/rhfm6tenpxapkmrv",
 "KeyCheckValue": "DC1081",
 "RandomKeyReceive": "A4B7E249C40C98178C1B856DB7FB76EB",
 "RandomKeySend": "9217DC67B8763BABCFDF3DADFCD0F84A"
}
```

**2.2 Enviar KRs al nodo 2**  
Envíelo al nodo KRs 2. Consérvela KRr para su posterior validación.

**2.3 El nodo 2 genera la respuesta de validación KEK**  
El nodo 2 usa la KEKr y KRs, la genera KRr y la envía de vuelta a su servicio.

**2.4 Valida la respuesta**  
Compare el valor KRr del paso 1 con el valor devuelto en el paso 3. Si coinciden, proceda.

# Creación y transmisión de claves de trabajo
<a name="as2805.workingkeys.create"></a>

Las teclas de trabajo típicas utilizadas en AS28 05 incluyen dos juegos de claves:

Claves entre nodos, como la clave PIN de zona (ZPK), la clave de cifrado de zona (ZEK) y la clave de autenticación de zona (ZAK).

Claves entre terminales y nodos, como la clave principal del terminal (TMK) y la clave PIN del terminal (TPK) si no se utiliza DUKPT.

**nota**  
Recomendamos minimizar las llaves por terminal y utilizar técnicas como la TR-34 y la DUKPT, siempre que sea posible, que utilizan un número menor de teclas.

**Example**  
En este ejemplo, hemos utilizado etiquetas opcionales para hacer un seguimiento del propósito y el uso de esta clave. Las etiquetas no se utilizan como parte de la función criptográfica del sistema, pero se pueden utilizar para la categorización, el seguimiento financiero y para aplicar políticas de IAM.  

```
cat >> create-zone-pin-key.json 
{
    "KeyAttributes": {
        "KeyUsage": "TR31_P0_PIN_ENCRYPTION_KEY",
        "KeyClass": "SYMMETRIC_KEY",
        "KeyAlgorithm": "TDES_2KEY",
        "KeyModesOfUse": {
            "Encrypt": true,
            "Decrypt": true,
            "Wrap": true,
            "Unwrap": true,
            "Generate": false,
            "Sign": false,
            "Verify": false,
            "DeriveKey": false,
            "NoRestrictions": false
        }
    },
    "KeyCheckValueAlgorithm": "ANSI_X9_24",
    "Exportable": true,
    "Enabled": true,
    "Tags": [
        {
            "Key": "AS2805_KEYTYPE",
            "Value": "ZONE_PIN_KEY_VARIANT28"
        }
    ]
}
```

```
$ aws payment-cryptography-data create-key --cli-input-json file://create-zone-pin-key.json --region ap-southeast-2
```

```
{
 "Key": {
 "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/alsuwfxug3pgy6xh",
 "KeyAttributes": {
 "KeyUsage": "TR31_P0_PIN_ENCRYPTION_KEY",
 "KeyClass": "SYMMETRIC_KEY",
 "KeyAlgorithm": "TDES_2KEY",
 "KeyModesOfUse": {
 "Encrypt": true,
 "Decrypt": true,
 "Wrap": true,
 "Unwrap": true,
 "Generate": false,
 "Sign": false,
 "Verify": false,
 "DeriveKey": false,
 "NoRestrictions": false
 }
 },
 "KeyCheckValue": "9A325B",
 "KeyCheckValueAlgorithm": "ANSI_X9_24",
 "Enabled": true,
 "Exportable": true,
 "KeyState": "CREATE_COMPLETE",
 "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
 "CreateTimestamp": "2025-12-17T09:05:27.586000-08:00",
 "UsageStartTimestamp": "2025-12-17T09:05:27.570000-08:00"
 }
}
```

# Exportación de claves de trabajo
<a name="as2805.workingkeys.export"></a>

Para mantener la compatibilidad con otras partes, la criptografía de AWS pagos admite AS28 05 técnicas de empaquetado simétrico de claves que utilizan variantes de claves en lugar de bloques de teclas, como la TR-31. Si las partes comparten varias claves, cada una debe exportarse de forma individual. Si los datos se envían de forma bidireccional, es posible que haya dos claves entre partes del mismo tipo, como ZAK (s) y ZAK (r), que cada parte utilice para generar los códigos de autenticación de los mensajes. 

Los parámetros adicionales para importar y exportar en estos formatos se especifican en los comandos.

```
cat >> export-zone-pin-key.json 
{
    "ExportKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/alsuwfxug3pgy6xh",
    "KeyMaterial": {
        "As2805KeyCryptogram": {
            "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/rhfm6tenpxapkmrv",
            "As2805KeyVariant: "PIN_ENCRYPTION_KEY_VARIANT_28"
        }
    }
}
```

```
$ aws payment-cryptography-data export-key --cli-input-json file://export-zone-pin-key.json --region ap-southeast-2
```

```
{
    "WrappedKey": {
        "KeyCheckValue": "DC1081",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "KeyMaterial": "HDC10AEF038E695DDD72AF08DC1BB422D",
        "WrappedKeyMaterialFormat": "KEY_CRYPTOGRAM",
        "WrappingKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/rhfm6tenpxapkmrv"
    }
}
```

# Traducción de pines
<a name="as2805.pintranslation"></a>

AS2805 describe un modo de derivación de claves específico de la sesión en la sección 6.4. Tiene un propósito similar al DUKPT y se puede utilizar cualquiera de los dos algoritmos, ya que el DUKPT se describe en la sección 6.7. En este esquema, una clave PIN de sesión (conocida como KPE) se deriva de la clave PIN del terminal utilizando SystemTraceAuditNumber (STAN) y como datos de derivación. TransactionAmount 

Translate pin es una función común que puede traducir to/from una variedad de formatos. En este ejemplo, traducimos un PIN de un KPE a una clave de cifrado de pines (PEK), como cuando enviamos un PIN a una red de pago.

```
cat >> translate-pin-as2805.json 
{
    "EncryptedPinBlock": "B3B34B43BAB5F81A",
    "IncomingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
    "IncomingTranslationAttributes": {
        "IsoFormat0": {
            "PrimaryAccountNumber": "9999179999900013"
        }
    },
      "IncomingAs2805Attributes": {
        "SystemTraceAuditNumber": "000348",
        "TransactionAmount": "000000000328"
    },
    "OutgoingKeyIdentifier": "",
    "OutgoingTranslationAttributes": {    
        "IsoFormat0": {
            "PrimaryAccountNumber": "9999179999900013"
        }
    }
}
```

```
$ aws payment-cryptography-data translate-pin-data --cli-input-json file://translate-pin-as2805.json  --region ap-southeast-2
```

```
{
    "WrappedKey": {
        "KeyCheckValue": "DC1081",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "KeyMaterial": "HDC10AEF038E695DDD72AF08DC1BB422D",
        "WrappedKeyMaterialFormat": "KEY_CRYPTOGRAM",
        "WrappingKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/rhfm6tenpxapkmrv"
    }
}
```

# Generación y validación de Mac
<a name="as2805.mac"></a>

Los comandos de generación y verificación de MAC admiten una variedad de comandos, MACs incluidos HMAC, CMAC, EMV MAC, etc. Para AS28 05, hay una variación adicional definida en la versión 05.4.1. AS28 Por lo general, en AS28 05, los mensajes entrantes se verifican con este MAC y los mensajes salientes también incluyen un MAC. 

```
cat verify-mac.json 
{
    "KeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6",
    "Mac": "86304058",
    "MessageData": "73D8BA54D3852951DAEA41",
    "VerificationAttributes": {
        "Algorithm": "AS2805_4_1"
    }
}
```

```
$ aws payment-cryptography-data verify-mac --cli-input-json file://verify-mac.json --region ap-southeast-2
```

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