

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

A Norma 2805 AS28 (05) da Austrália é uma norma para transferências eletrônicas de fundos usada principalmente para transações de pagamento com cartão. É mantido pela [Standards Australia](https://www.standards.org.au/). O padrão consiste em 6 livros que abrangem vários tópicos, desde formato de mensagem até padrões de criptografia.

A Parte 6 fornece orientação sobre gerenciamento de chaves, incluindo host-to-host (node-to-node) comunicação e requisitos criptográficos relevantes, enquanto outros aspectos são abordados em outras partes. Atualmente, toda a criptografia desse padrão é baseada no TDES. 

**nota**  
 AS2805 está atualmente disponível na região ap-southeast-2. Ele será lançado em outras regiões em um futuro próximo. 

AS2805 tem várias diferenças em comparação com outras implementações, que estão resumidas abaixo.

*Proteção de chaves*  
Depende de variantes de teclas em vez de blocos de teclas, como no TR-31/X9.143. AWS A criptografia de pagamento armazena todas as chaves como blocos de chaves internamente, mas permite importação, exportação e cálculo usando AS28 05 variantes definidas. 

*Teclas unidirecionais*  
AS2805 exige o uso de teclas unidirecionais. Se os dois nós precisarem gerar códigos de autenticação de mensagens (MAC), eles usarão duas chaves. 

*Blocos de pinos*  
AS2805 define uma técnica de derivação de chave para chaves de criptografia de PIN exclusivas por transação. Isso pode ser usado no lugar do DUKPT. O esquema AS28 05 se baseia nos dados da transação (número de rastreamento e valor da transação) em comparação com o uso do contador de transações pela DUKPT. 

*Validação do Key Exchange*  
Define um processo para validar o KEK antes de começar a trocar chaves de trabalho, como chaves de PIN. Em outros esquemas, os KEK são trocados com pouca frequência e são validados usando o KCV. 

AS2805 usa o conceito de variantes de chave em vez de blocos de chaves para garantir que as chaves sejam usadas apenas para a finalidade pretendida (e única). Veja a seguir como a criptografia AWS de pagamento mapeia variantes e blocos de teclas ao importar, exportar ou executar outras funções criptográficas com chaves.


| AS2805 Tipo de chave | AWS Tipo de chave criptográfica de pagamento | 
| --- | --- | 
| TERMINAL\$1MAJOR\$1KEY\$1VARIANT\$100 |  TR31\$1K0\$1KEY\$1ENCRYPTION\$1KEY | 
| VARIANTE\$1CHAVE DE ENCRIPTAÇÃO\$128 |  TR31\$1P0\$1PIN\$1CHAVE DE CRIPTOGRAFIA | 
| VARIANTE\$1CHAVE DE AUTENTICAÇÃO\$1DE MENSAGEM\$124 |  TR31\$1M0\$1ISO\$116609\$1MAC\$1KEY | 
| VARIANTE\$1CHAVE DE CRIPTOGRAFIA DE DADOS\$122 |  TR31\$1D0\$1CHAVE DE CRIPTOGRAFIA DE DADOS SIMÉTRICA | 
| VARIANT\$1MASK\$182, VARIANT\$1MASK\$182C0 |  Opções disponíveis como parte do processo de validação do KEK. Esses tipos de chave são temporários e não são armazenados pelo serviço. | 

Dados dois nós, node1 e node2, os exemplos a seguir são da perspectiva do node1. AWS A criptografia de pagamento oferece suporte APIs de ambos os lados do processo.

**Topics**
+ [Troca de chave inicial (KEK)](as2805.kekexchange.md)
+ [Validação do KEK](as2805.kekvalidation.md)
+ [Criação e transmissão de chaves de trabalho](as2805.workingkeys.create.md)
+ [Exportação de chaves de trabalho](as2805.workingkeys.export.md)
+ [Tradução de pinos](as2805.pintranslation.md)
+ [Geração e validação de Mac](as2805.mac.md)

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

 Em AS28 05, cada lado tem seu próprio KEK. KEK (s) se refere à chave do lado de envio que será usada sempre que o lado remetente precisar das protect/wrap chaves e enviá-las para o node2. KEK (r) é a chave criada pelo lado oposto (node2).

**nota**  
Esses termos são relativos - um lado cria uma chave (lado de envio) e o outro a recebe. Assim KEY1, é referido no node1 como KEK (s) e no node2 como KEK (r).

 KEK para AS28 05 são sempre do tipo chave = TR31 \$1K0\$1KEY\$1ENCRYPTION\$1KEY, pois são usadas para proteger criptogramas e não blocos de chaves. Isso mapeia para TERMINAL\$1MAJOR\$1KEY\$1VARIANT\$100 conforme definido em 05 6.1 AS28 

Etapas:

**1.Crie uma chave**  
Crie uma chave usando a [CreateKey](create-keys.md)API. Você criará uma chave do tipo TR31 \$1K0\$1KEY\$1ENCRYPTION\$1KEY

**2.Determine o método para trocar chaves com o node2**  
Determine como [trocar KEK com a contraparte](keys-export.md). Para AS28 05, o método mais comum e interoperável é o RSA Wrap.

**3. Exportação KEKs**  
Com base na sua seleção acima, você receberá o certificado de chave pública do node2. Você executará a exportação usando esse certificado para proteger a chave (ou derivar uma chave se estiver usando ECDH).

**4. Importar KEKr**  
Com base na sua seleção acima, você enviará um certificado de chave pública para o node2. Você executará a importação usando esse certificado para carregar os nós 2 KEKr no serviço.

# Validação do KEK
<a name="as2805.kekvalidation"></a>

![\[Exemplo de diagrama de rede de alto nível para aplicativos de PIN usando criptografia AWS de pagamento\]](http://docs.aws.amazon.com/pt_br/payment-cryptography/latest/userguide/images/as2805/kek_validation.png)


Quando seu serviço (node1) se conecta ao node2, cada lado garantirá que eles estejam usando o mesmo KEK para operações subsequentes usando um processo chamado KEK Validation. 

**1. Etapas para validar a primeira chave**

**1.1 Receber KRs**  
O Node2 gerará um KRs e o enviará para você como parte do processo de login. Eles podem usar criptografia AWS de pagamento para gerar esse valor ou outra solução.

**1.2 Gerar resposta de validação KEK**  
Seu nó gerará uma resposta de validação KEK com entradas como KEK (r) e as KRs fornecidas na etapa 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**  
Retorne o calculado KRr para node2. Esse nó o comparará com o valor calculado da etapa 1.

**2. Etapas para validar a segunda chave**

**2.1 Gerar KRr e KRs**  
Seu nó gerará um valor aleatório e uma cópia invertida (revertida) desse valor usando criptografia de AWS pagamento. O serviço produzirá esses dois valores agrupados pelo (s) KEK (s). Eles são conhecidos como KR (s) e 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 para o node2**  
Envie o KRs para o node2. Guarde o KRr para validação posterior.

**2.3 O Node2 gera uma resposta de validação KEK**  
O Node2 usa o KEKr e KRs, gera o KRr e o envia de volta ao seu serviço.

**2.4 Validar a resposta**  
Compare KRr a etapa 1 com o valor retornado da etapa 3. Se coincidirem, prossiga.

# Criação e transmissão de chaves de trabalho
<a name="as2805.workingkeys.create"></a>

As teclas de trabalho típicas usadas em AS28 05 incluem dois conjuntos de teclas:

Chaves entre os nós, como: chave de pino de zona (ZPK), chave de criptografia de zona (ZEK) e chave de autenticação de zona (ZAK).

Chaves entre terminais e nós, como: chave principal do terminal (TMK) e chave do pino do terminal (TPK), se não estiver usando DUKPT.

**nota**  
Recomendamos minimizar a chave por chave de terminal e aproveitar técnicas como TR-34 e DUKPT sempre que possível, que usam números menores de chaves.

**Example**  
Neste exemplo, usamos tags opcionais para rastrear a finalidade e o uso dessa chave. As tags não são usadas como parte da função criptográfica do sistema, mas podem ser usadas para categorização, acompanhamento financeiro e podem ser usadas para aplicar políticas do 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"
 }
}
```

# Exportação de chaves de trabalho
<a name="as2805.workingkeys.export"></a>

Para manter a compatibilidade com outras partes, a criptografia de AWS pagamento suporta AS28 05 técnicas de empacotamento simétrico de chaves que usam variantes de chave em vez de blocos de teclas como o TR-31. Se várias chaves forem compartilhadas entre as partes, cada uma deverá ser exportada individualmente. Se os dados forem enviados bidirecionalmente, pode haver duas chaves entre partes do mesmo tipo, como ZAK (s) e ZAK (r), usadas por cada lado para gerar códigos de autenticação de mensagens. 

Os parâmetros adicionais para importar e exportar nesses formatos são especificados nos 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"
    }
}
```

# Tradução de pinos
<a name="as2805.pintranslation"></a>

AS2805 descreve um modo de derivação de chave específico da sessão na seção 6.4. Ele serve a um propósito semelhante ao DUKPT e qualquer algoritmo pode ser usado, pois o DUKPT é abordado na seção 6.7. Nesse esquema, uma chave de pino de sessão (conhecida como KPE) é derivada da chave de pinos do terminal usando SystemTraceAuditNumber (STAN) e TransactionAmount como dados de derivação.

Translate pin é uma função comum que pode traduzir to/from uma variedade de formatos. Neste exemplo, traduzimos um PIN de um KPE para uma chave de criptografia de PIN (PEK), como ao enviar um PIN para uma rede de pagamento.

```
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"
    }
}
```

# Geração e validação de Mac
<a name="as2805.mac"></a>

Os comandos generate and verify MAC oferecem suporte a uma variedade de comandos, MACs incluindo HMAC, CMAC, EMV MAC, etc. Para AS28 05, há uma variação adicional definida em AS28 05.4.1. Normalmente, em AS28 05, as mensagens recebidas são verificadas usando esse MAC e as mensagens enviadas também incluem um 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"
}
```