Voltar para todos os artigos
DUKPT a Partir do Zero: Chaves Únicas Derivadas por Transação (TDES e AES)

DUKPT a Partir do Zero: Chaves Únicas Derivadas por Transação (TDES e AES)

O DUKPT resolve um problema brutal: um milhão de terminais em campo que precisam cifrar PINs, nenhum deles podendo compartilhar chave, e nenhum podendo ligar para casa pedindo outra. Um percurso pela Base Derivation Key, pela IPEK, pelo contador do Key Serial Number e pela derivação não reversível que dá a cada transação uma chave única e com sigilo futuro.

Pesquisa técnica projetada por humanos, sintetizada com assistência de personas de IA.
10 min de leitura

TL;DR / Sumário Executivo

O DUKPT resolve um problema brutal: um milhão de terminais em campo que precisam cifrar PINs, nenhum deles podendo compartilhar chave, e nenhum podendo ligar para casa pedindo outra. Um percurso pela Base Derivation Key, pela IPEK, pelo contador do Key Serial Number e pela derivação não reversível que dá a cada transação uma chave única e com sigilo futuro.

💡 TL;DR (Too Long; Didn't Read)

DUKPT em 90 segundos:

  • O DUKPT (Derived Unique Key Per Transaction) dá a cada terminal uma chave diferente e a cada transação uma chave diferente, a partir de uma única Base Derivation Key (BDK) que o terminal nunca detém.
  • Na injeção, a BDK mais o Key Serial Number (KSN) do terminal produzem a Initial PIN Encryption Key (IPEK / Initial Key) do terminal. A BDK então vai embora.
  • O KSN carrega um identificador de dispositivo e um contador de transações. Cada transação deriva uma chave nova a partir do contador por uma transformação não reversível, então uma chave de transação comprometida não pode revelar as passadas — ele tem sigilo futuro.
  • O host receptor, detendo a BDK, re-deriva exatamente a mesma chave de transação apenas a partir do KSN. Nenhuma chave jamais viaja.
  • O DUKPT TDES (X9.24-1) é o clássico; o DUKPT AES (X9.24-3) é o substituto moderno, com derivação mais limpa e AES do começo ao fim.

Imagine o problema para o qual o DUKPT foi inventado, porque a solução só faz sentido contra o problema. Você tem um milhão de terminais de pagamento em campo. Cada um precisa cifrar PINs. Se todos compartilham uma chave, comprometer um terminal compromete todo PIN em todo lugar. Se cada um tem uma chave única, você tem um milhão de chaves para gerenciar, e um terminal capturado ainda vaza todo PIN que ele já processou. E nenhum desses terminais pode ligar para casa pedindo uma chave nova por transação — eles são baratos, às vezes offline, sempre numerosos. O DUKPT — Derived Unique Key Per Transaction, padronizado na ANSI X9.24 — passa a linha por essa agulha: uma chave única por transação, derivada localmente, com sigilo futuro, sem nada secreto sendo transmitido e sem o terminal nunca deter o segredo mestre. É assim que funciona. Como em toda peça de criptografia desta série, mostro a construção, não bytes de chave fabricados, e todo passo com chave roda onde a chave já vive.

O único segredo que nunca entra num terminal

No topo da hierarquia está a Base Derivation Key (BDK) — uma única chave mestra, guardada no HSM do adquirente, que governa toda uma população de terminais. A propriedade crítica: a BDK nunca é carregada num terminal. Se fosse, capturar um dispositivo exporia o mestre e toda chave derivável dele.

Em vez disso, terminais são personalizados numa instalação segura de injeção de chaves. O processo de injeção combina a BDK com o Key Serial Number (KSN) do terminal para calcular a Initial PIN Encryption Key daquele terminal — historicamente chamada IPEK, chamada Initial Key (IK) na geração AES. A IPEK é carregada no terminal; a BDK permanece no HSM e é esquecida pelo terminal para sempre. Desse momento em diante, o terminal pode derivar tudo de que precisa a partir da IPEK e de seu contador, e o HSM pode re-derivar tudo a partir da BDK e do KSN.

O Key Serial Number é um contador com nome

O KSN é o pivô do esquema inteiro. No DUKPT TDES ele tem dez bytes, estruturados como um número serial inicial de chave (identificando a BDK e o dispositivo específico) mais um contador de transações ocupando os 21 bits inferiores. O contador incrementa a cada transação. Como o KSN viaja em claro ao lado de cada PIN block cifrado, o host receptor sempre sabe exatamente qual chave de transação foi usada — sem ninguém transmitir uma chave.

Duas consequências decorrem deste desenho. Primeira, o KSN não é secreto; é um índice. Segunda, o contador de 21 bits limita a vida de um terminal em transações antes de precisar ser reinjetado — um número grande, mas finito, e a estrutura do contador (ele não conta simplesmente 0,1,2,3, mas usa um padrão específico de bits ligados) é parte do que faz a derivação funcionar.

Derivando a chave de transação

Aqui está o coração, descrito estruturalmente. O terminal detém a IPEK. Para cada transação ele deriva a chave de transação atual a partir da IPEK e do valor atual do contador por uma sequência de transformações de mão única — no DUKPT TDES, um padrão específico de operações DES chaveadas pelos bits do contador, percorrendo um conjunto de registradores de chaves futuras que permitem ao terminal calcular as próximas chaves de que vai precisar enquanto apaga as que já usou.

Esse apagamento é a propriedade de sigilo futuro, e é o ponto. Depois de uma transação, o terminal destrói a chave que acabou de usar e retém apenas o que precisa para derivar chaves futuras. Então, se um atacante captura o terminal e extrai seu estado de chaves, ele pode derivar chaves adiante (até o dispositivo ser desativado) mas não pode reconstruir nenhuma chave de transação passada, porque essas chaves e o material para derivá-las foram apagados irrecuperavelmente. A transformação é não reversível por construção: você vai da IPEK e um contador para uma chave de transação, mas não de volta de uma chave de transação para a IPEK.

O lado do host: re-derivação, não troca de chaves

A elegância está na ponta receptora. O host recebe um PIN block cifrado e um KSN em claro. Ele detém a BDK em seu HSM. A partir da BDK e do KSN ele re-deriva exatamente a mesma chave de transação que o terminal usou — primeiro a IPEK (BDK + KSN inicial), então a chave de transação (IPEK + contador) — e decifra. Nenhuma chave foi transmitida; o KSN bastou, porque ambos os lados podem calcular a mesma função dele. É por isso que o DUKPT escala: adicionar um terminal custa uma injeção, e o host não precisa de armazenamento de chave por terminal, apenas da BDK e da aritmética.

A prática moderna separa chaves por finalidade usando variantes — o material da chave de transação é diversificado em chaves distintas para cifragem de PIN, geração de MAC e cifragem de dados, para que a chave que protege um PIN não sejam os mesmos bytes da chave que faz MAC de uma mensagem. Uma árvore de derivação, várias folhas tipadas.

DUKPT TDES vs DUKPT AES

O esquema clássico (ANSI X9.24-1) é construído sobre TDES com o KSN de 10 bytes e o percurso de registradores da era DES descrito acima. Funciona e está em todo lugar, mas herda o bloco de 64 bits do DES e o pôr do sol iminente do 3DES.

O DUKPT AES (ANSI X9.24-3) é o substituto moderno e é mais limpo em quase toda dimensão. Usa AES do começo ao fim, uma função de derivação redesenhada que é mais simples de raciocinar e de implementar corretamente, suporte a chaves de trabalho AES-128/192/256, e uma estrutura de KSN/derivação adequada ao bloco de 128 bits do AES. Também deriva chaves de trabalho tipadas (PIN, MAC, dados) diretamente da função de derivação em vez de por XORs de variante ad-hoc. Se você está construindo gerenciamento de chaves novo, você constrói DUKPT AES; DUKPT TDES é com o que você interopera na base instalada. A migração é uma dessas re-plataformizações silenciosas de vários anos rodando pelo mundo adquirente, exatamente como a migração 3DES→AES no mundo do ARQC.

A regra que torna isto seguro

Tudo acima é seguro de entender e de rodar com material de teste. O que nunca é seguro é fazê-lo com uma BDK viva em qualquer lugar que não seja um HSM. A BDK é o mestre de uma frota inteira de terminais; ela existe em hardware resistente a violação e é dividida em componentes sob controle duplo durante uma cerimônia de chaves, nunca montada em software num host de propósito geral. Uma ferramenta DUKPT construída do jeito certo roda no cliente com chaves de teste, para você ver uma IPEK derivar de uma BDK de teste e um KSN e conferir contra vetores conhecidos — e ela nunca pede uma BDK de produção, porque um serviço que pedisse estaria pedindo as chaves do reino. A derivação determinística, validada contra os vetores de teste da X9.24, é a fonte da verdade.

Cicatrizes de batalha

O contador do KSN não é um inteiro comum. O contador do DUKPT usa uma codificação específica de bits ligados que conduz o percurso de registradores; tratá-lo como um inteiro ingênuo 0,1,2… vai derivar as chaves erradas. Use a contagem do padrão, não sua intuição.

Sigilo futuro só é tão bom quanto o apagamento. A garantia inteira repousa no terminal de fato apagar chaves usadas e o material para recalculá-las. Uma implementação que guarda uma cópia conveniente "para depuração", ou um alocador de memória que deixa os bytes legíveis, quebra silenciosamente o sigilo futuro enquanto passa em todo teste funcional. A destruição é uma funcionalidade; verifique que ela acontece.

Não misture BDKs e KSNs entre populações. Um KSN identifica a qual BDK ele pertence. Re-derive com a BDK errada e você obtém uma chave bem formada que decifra em lixo — a recorrente falha silenciosa da criptografia de pagamentos. Higiene de gerenciamento de chaves (qual BDK, qual key-check-value) é o trabalho chato que previne o incidente das 2 da manhã.

Onde isto se encaixa

O DUKPT é como a chave que cifra um PIN block consegue ser única por transação, e suas chaves de trabalho tipadas também fazem MAC das mensagens ISO 8583 que carregam o resultado. Compartilha sua disciplina de cliente e vetores de teste com o ARQC — ambos casos em que a ferramenta determinística, não uma IA, é a fonte da verdade.

Leitura Relacionada no gsstk

Ferramentas: o Dicionário de Tags EMV e o Parser ISO 8583 cobrem o transporte. (Uma Calculadora DUKPT no cliente — TDES e AES — está no roadmap.)

Arquivado em: Payment Crypto · Payments · Acquiring · EMV

Este artigo foi arquitetado por humanos e sintetizado com assistência de IA sob a persona Daedalus (AI).

Receba novos artigos

Cadastre-se para receber notificações sobre novos artigos direto no seu email

Não enviaremos spam. Você pode cancelar a inscrição a qualquer momento.