# Modelo de segurança e PIN

O aplicativo Pinpad Getnet usa uma arquitetura de segurança robusta para proteger os dados sensíveis do portador do cartão. Esse modelo se apoia em três pilares principais. A criptografia assimétrica RSA protege os dados de mensageria, e o gerenciamento de chaves DUKPT criptografa o PIN e o PAN. O módulo especializado **PinEntryActivity** gerencia o ciclo de vida do teclado seguro. Para o modelo completo de criptografia, consulte [Criptografia do Pinpad](https://docs.globalgetnet.com/pt/products/in-store-payments/host-to-host?doc=h2h-pinpad-encryption).

## Criptografia RSA para dados sensíveis

O terminal usa uma chave pública RSA, fornecida pelo Sistema Host na requisição `Y19`, para criptografar informações sensíveis do cartão antes da transmissão. Assim, mesmo que a comunicação serial seja interceptada, os dados permanecem ilegíveis sem a chave privada correspondente. A criptografia se aplica aos dados sensíveis retornados nas respostas dos comandos `Y19` (para contactless) e `Y02` (para chip/tarja).

Os seguintes elementos de dados são criptografados com a chave RSA:

* **Dados da Trilha I e da Trilha II**.
* **Código de segurança (CDS)**.
* **Dados EMV**.

<Callout type="warning">

o **PAN (número do cartão)** **não** é criptografado com RSA. Ele é criptografado separadamente com 3DES DUKPT — retornado como `ENC-PAN` com seu próprio `KSN-PAN` — e o PAN dentro das trilhas criptografadas com RSA é mascarado com zeros. Consulte [Criptografia do Pinpad](https://docs.globalgetnet.com/pt/products/in-store-payments/host-to-host?doc=h2h-pinpad-encryption).

</Callout>

O Sistema Host gera o par de chaves e informa o módulo e o expoente nos campos `RSA` e `EXP` do `Y19`. Para o procedimento, consulte [Gerar e Injetar Chaves de Criptografia](https://docs.globalgetnet.com/pt/products/in-store-payments/host-to-host?doc=h2h-generate-and-inject-keys).

## Gerenciamento de chaves DUKPT

O terminal usa o **DUKPT** (Derived Unique Key Per Transaction) para criptografar o **PIN** e o **PAN**. Cada transação deriva uma chave única a partir de uma chave base, montando o **PINBLOCK** e o **KSN** (PIN) e o **`ENC-PAN`** e o **`KSN-PAN`** (PAN) enviados nas respostas `Y19` e `Y02`. O PIN e o PAN usam contadores KSN independentes. Consulte [Criptografia do Pinpad](https://docs.globalgetnet.com/pt/products/in-store-payments/host-to-host?doc=h2h-pinpad-encryption) para ver os slots de chave e os parâmetros `ENC` e `PMK`.

As chaves base não são geradas pelo Host. Elas são injetadas na memória segura do Pinpad em um ambiente controlado — o **slot 3** para o PIN e o **slot 4** para o PAN em terminais de chave dupla — e o Pinpad nunca as expõe em texto claro. Se um comando referenciar um slot de chave que não contém chave, a operação termina imediatamente com erro. Para o procedimento de injeção, consulte [Gerar e Injetar Chaves de Criptografia](https://docs.globalgetnet.com/pt/products/in-store-payments/host-to-host?doc=h2h-generate-and-inject-keys).

## Tratamento e verificação do PIN

A **PinEntryActivity** gerencia a interface do teclado seguro e captura a entrada do usuário com segurança dentro da área segura do terminal.

* **Comportamento da interface**: o teclado permite no máximo seis dígitos. Cada dígito inserido é mascarado na tela especificamente com um **asterisco (\*)**.
* **Tempo limite**: o teclado seguro tem um **tempo limite fixo de 10 segundos**. Se nenhuma ação ocorrer nessa janela, o processo de entrada expira.

### Métodos de verificação de PIN

O método usado é determinado pelo perfil do cartão e informado ao Host:

* **PIN Online**: o PIN capturado é criptografado com DUKPT e enviado ao Sistema Host para validação remota.
* **PIN Offline**: o PIN é validado localmente pelo chip do cartão, sem criptografia adicional. Para transações CHIP, o campo **Y02.PVF** indica se um PIN Offline foi verificado com sucesso.
* **PIN Offline Cifrado**: o PIN é validado pelo cartão, mas viaja criptografado do teclado seguro até o chip com uma chave fornecida pelo próprio cartão.

## Regras de comportamento de segurança

* **Bloqueio de comandos e Y06**: para evitar a interrupção de uma entrada segura, o Pinpad ignora todos os comandos enquanto o teclado seguro está ativo. Isso inclui especificamente o comando **Y06 (Cancel)**.
* **PIN Bypass**: para emissores específicos, como a **American Express**, o usuário pode pular a entrada do PIN pressionando "Confirmar" sem digitar nada. A transação prossegue como se nenhum PIN fosse necessário.
* **Falhas de validação**: se o índice do slot de chave DUKPT informado no comando não corresponder a uma chave carregada na memória do terminal, a operação é finalizada imediatamente com erro.

## Recursos relacionados

1. [**Gerar e Injetar Chaves de Criptografia**](https://docs.globalgetnet.com/pt/products/in-store-payments/host-to-host?doc=h2h-generate-and-inject-keys): gere o par RSA e carregue as chaves DUKPT no terminal.
2. [**Processar Pagamentos com Cartão**](https://docs.globalgetnet.com/pt/products/in-store-payments/host-to-host?doc=h2h-process-card-payments\&section=kei2fli2gqggbwgaddtl3xb7): siga os fluxos de transação passo a passo.
3. [**Comandos da API**](https://docs.globalgetnet.com/pt/products/in-store-payments/host-to-host?doc=h2h-api-commands\&section=g7b851vgbt737kwul1fmgve2): revise a estrutura de baixo nível dos comandos `Y19` e `Y02` para preencher corretamente os campos RSA e DUKPT.