
Contactless em 300ms: Kernels, o TTQ e a Aproximação
Uma aproximação tem um orçamento de latência que a inserção do chip nunca teve, e o EMV contactless o gasta de outro jeito: uma etapa de seleção de combinação via PPSE, seis kernels de bandeira (e o novo C-8 unificado) e os Terminal Transaction Qualifiers (tag 9F66) que dizem ao cartão como esta leitora quer ser paga. Um guia byte a byte do caminho rápido.
✨TL;DR / Sumário Executivo
Uma aproximação tem um orçamento de latência que a inserção do chip nunca teve, e o EMV contactless o gasta de outro jeito: uma etapa de seleção de combinação via PPSE, seis kernels de bandeira (e o novo C-8 unificado) e os Terminal Transaction Qualifiers (tag 9F66) que dizem ao cartão como esta leitora quer ser paga. Um guia byte a byte do caminho rápido.
💡 TL;DR (Too Long; Didn't Read)
A aproximação, em 90 segundos:
- Contactless tem um orçamento de latência — o cartão fica no campo por algumas centenas de milissegundos — então o EMV contactless antecipa decisões que o fluxo com contato toma com calma.
- A seleção é diferente: a leitora envia PPSE (
2PAY.SYS.DDF01), o cartão devolve uma lista de combinações (AID + kernel), e a leitora escolhe uma e ativa aquele kernel.- Existem seis kernels de bandeira (Kernel 2 Mastercard até Kernel 7 UnionPay), além do novo kernel unificado C-8 que os consolida, cada um com seu próprio fluxo. O AID não basta; o ID do kernel decide qual manual de regras roda.
- Os Terminal Transaction Qualifiers (tag
9F66, 4 bytes) são a leitora anunciando suas capacidades e exigências — online obrigatório, CVM obrigatório, CVM no dispositivo permitido — e o cartão responde com os Card Transaction Qualifiers (9F6C).- Tudo o que você aprendeu sobre o fluxo com contato continua valendo por baixo; contactless é aquele fluxo com um cronômetro e um kernel na frente.
Na primeira parte desta série tracei uma transação EMV com contato — a inserção — porque ela é síncrona e sem pressa: o cartão fica na leitora e o terminal toma seu tempo. A aproximação é o mesmo protocolo sob um cronômetro. Um cartão ou celular contactless só está acoplado ao campo da leitora por algumas centenas de milissegundos, às vezes menos, e nessa janela toda a dança de autenticação e decisão precisa terminar ou o portador vai ter de aproximar de novo. Tudo que o EMV contactless faz e que parece estranho é consequência desse orçamento. Este é um guia do caminho rápido — como a leitora seleciona um kernel, o que os Terminal Transaction Qualifiers dizem, e por que uma aproximação ainda às vezes te manda para online. Segue as EMVCo Contactless Specifications (Books A–D e os kernel books C-1 a C-8); cito a estrutura, não o texto da especificação.
Seleção é uma negociação, não uma consulta
Um cartão com contato é selecionado com o PSE ou um SELECT direto de AID. Contactless substitui isso pelo Proximity Payment System Environment: a leitora seleciona 2PAY.SYS.DDF01 e o cartão devolve uma resposta PPSE listando suas combinações suportadas. Uma combinação não é apenas um AID — é um AID pareado com um identificador de kernel e uma prioridade de aplicação. A leitora intersecta as combinações do cartão com as suas próprias, aplica prioridade e escolhe uma. Só então ela dá SELECT no AID escolhido e entrega o controle ao kernel correspondente.
Isso importa porque um único cartão pode apresentar, digamos, um AID Mastercard que roda sob o Kernel 2 e, em alguns produtos, mais de uma entrada. A leitora está escolhendo um manual de regras, não apenas uma aplicação. Erre a seleção de combinação — escolha um kernel que a leitora implementa mal, ou classifique a prioridade errado — e você tem aproximações que funcionam numa leitora e falham na seguinte com o mesmo cartão. A seleção de combinação é onde nascem os bugs de "funciona na minha leitora".
Os seis kernels
Escolhida a combinação, a transação executa o fluxo do kernel selecionado. Os kernels de bandeira são, na numeração da EMVCo (Books C-2 a C-7; não existe um "Kernel 1" de bandeira — essa posição é o Entry Point):
- Kernel 2 — Mastercard (PayPass / M/Chip). Fluxo EMV próprio, com recuperação de transação interrompida (torn transaction) e um modelo distintivo de troca de dados.
- Kernel 3 — Visa (payWave / qVSDC e MSD).
- Kernel 4 — American Express (Expresspay).
- Kernel 5 — JCB (J/Speedy).
- Kernel 6 — Discover (D-PAS).
- Kernel 7 — UnionPay (QuickPass).
E chegando agora: Kernel C-8 — o kernel contactless unificado da EMVCo, um manual de regras único destinado a substituir os kernels por bandeira e reduzir a matriz de testes e certificação que os seis livros separados criaram. A migração será gradual; as leitoras carregarão ambos por anos. Se você acompanha a base instalada atual, raciocina sobre os Kernels 2–7; se planeja software de terminal novo, o C-8 é a consolidação para a qual você projeta.
Eles compartilham o vocabulário do EMV — AIP, AFL, GENERATE AC, criptogramas — mas divergem nos detalhes que cabem dentro do orçamento da aproximação: quantas idas e voltas de comando usam, se leem registros antes ou depois do criptograma, como sinalizam online-versus-offline, e como tratam os dois modos contactless. Os dois modos que vale conhecer: MSD (Magnetic-Stripe Data — um modo legado que emula dados de trilha sobre contactless, hoje largamente aposentado) e o modo EMV (qVSDC na Visa, M/Chip na Mastercard) que produz um criptograma real. Trabalho novo é só modo EMV; se você ainda raciocina sobre MSD, está mantendo o passado.
Os Terminal Transaction Qualifiers (tag 9F66)
O objeto de dados mais útil de saber ler no caminho rápido contactless é o Terminal Transaction Qualifiers, tag 9F66, quatro bytes. A leitora o envia ao cartão (tipicamente dentro dos dados do PDOL no GPO) para anunciar, de antemão, que tipo de leitora eu sou e o que vou exigir. O cartão o lê e molda sua resposta — inclusive se insiste em ir online.
Aqui está o mapa dos bits que efetivamente conduzem comportamento (EMVCo Book C-3 / Visa contactless):
Byte 1 são capacidades e exigências. b8 MSD suportado; b6 qVSDC suportado; b5 chip EMV com contato suportado; b4 leitora só-offline; b3 PIN online suportado; b2 assinatura suportada; b1 autenticação de dados offline para autorizações online suportada. Byte 2: b8 criptograma online obrigatório (a leitora quer um ARQC não importa o quê); b7 CVM obrigatório (esta transação está acima do limite sem-CVM e precisa de uma verificação do portador); b6 PIN offline suportado. Byte 3: b8 processamento de atualização do emissor suportado; b7 CVM no dispositivo do consumidor (CDCVM) suportado — a leitora aceita que o celular verificou o portador. O byte 4 é reservado na maioria dos perfis.
Leia esses bits e uma aproximação deixa de ser misteriosa. Uma aproximação de valor baixo numa leitora cujo TTQ tem "CVM obrigatório" desligado e "criptograma online obrigatório" desligado pode ser aprovada offline sem PIN — essa é a experiência contactless sublimite. Empurre o valor acima do limite de CVM da leitora e ela liga CVM obrigatório (byte 2 b7); agora o cartão precisa satisfazer uma verificação do portador, o que num celular significa CDCVM e num cartão normalmente significa ir online para PIN online. Ligue criptograma online obrigatório (byte 2 b8) — como fazem bloqueios de transporte e leitoras de alto valor — e toda aproximação produz um ARQC. O TTQ é a personalidade da leitora codificada em quatro bytes.
Os Card Transaction Qualifiers (tag 9F6C)
O cartão responde com seus próprios qualificadores onde o kernel os usa — os Card Transaction Qualifiers, tag 9F6C (proeminentes no qVSDC da Visa e nos fluxos Mastercard). O CTQ carrega o lado do cartão: se PIN online é obrigatório, se assinatura é obrigatória, se CDCVM foi executado e se deve ir online. O bit de CDCVM é o importante para a experiência moderna: quando você aproxima um celular que acabou de checar seu rosto ou digital, a carteira liga o indicador de CDCVM-executado, e a leitora — se seu TTQ disse que suporta CDCVM — aceita isso como a verificação do portador e não pede nada. Esse aperto de mão, TTQ "CDCVM suportado" encontrando CTQ "CDCVM executado", é por que aproximar um celular para um valor alto simplesmente funciona enquanto aproximar um cartão para o mesmo valor pede PIN.
CVM no dispositivo e a morte da assinatura
A história da verificação do portador em contactless é onde a aproximação ganha sua conveniência, e vale precisão sobre os três desfechos. Sem CVM: abaixo do limite de CVM-obrigatório da leitora, a aproximação aprova sem verificação — este é o caminho tap-and-go, limitado por tetos por transação e acumulados que o adquirente configura. CDCVM: num dispositivo do consumidor, o dispositivo verifica o portador localmente (biometria ou senha do aparelho) e afirma isso no CTQ; a leitora confia na afirmação. PIN online: num cartão acima do limite de CVM, a leitora coleta o PIN, o cifra e o envia online para o emissor verificar — porque um cartão comum não tem como fazer verificação biométrica local.
Assinatura, a quarta opção teórica, está efetivamente morta em contactless e morrendo em todo lugar; as CVM Lists que ainda a carregam são legado. Se você está desenhando aceitação nova, desenhe para sem-CVM abaixo do limite, CDCVM para dispositivos e PIN online como fallback do cartão — e trate assinatura como algo que você tolera em cartões antigos, não algo para onde você constrói.
O problema do relay e a resistência a relay
O orçamento da aproximação cria uma superfície de ataque específica: relay. Como o cartão só precisa estar perto de um campo, um atacante pode colocar uma leitora perto do cartão da vítima e um emulador de cartão perto de um terminal real, retransmitindo mensagens entre eles por uma rede, de modo que o cartão da vítima paga a transação do atacante do outro lado da sala. A resposta da EMVCo é o Relay Resistance Protocol (RRP): o kernel mede o tempo de ida e volta de um comando dedicado EXCHANGE RELAY RESISTANCE DATA contra os limites de tempo que o cartão fornece, e se o tempo medido excede o máximo declarado pelo cartão — como um relay de rede inevitavelmente excede — a transação é sinalizada ou recusada. Nem todo par kernel-e-cartão suporta RRP ainda, mas é a correção estrutural, e se você trabalha em firmware de leitora é o orçamento de tempo que você não pode estourar.
Cicatrizes de batalha
O AID não é o kernel. Duas leitoras podem selecionar o mesmo AID Mastercard e se comportar de formas diferentes porque ativaram versões ou configurações distintas de kernel. Quando um cartão funciona no terminal A e falha no B, compare a combinação e o kernel que cada um selecionou, não apenas o AID. A troca PPSE é a primeira coisa a capturar.
O TTQ é configuração, e configuração errada é um limite de fraude. Uma leitora cujo TTQ nunca liga "criptograma online obrigatório" e nunca liga "CVM obrigatório" vai aprovar tudo offline sem verificação — o que é exatamente o que um quiosque não assistido de valor baixo quer, ou uma exposição séria num terminal de alto valor. Trate os bytes do TTQ como política de segurança e revise-os por implantação, não como um padrão de fábrica que você herdou.
Suporte a CDCVM é um aperto de mão de dois lados. Um celular pode executar CDCVM à vontade; se o TTQ da leitora não anuncia suporte a CDCVM, a leitora ignora a afirmação do CTQ e cai para PIN online ou recusa. "Por que meu celular pede PIN neste terminal?" quase sempre se resolve na leitora não anunciar suporte a CDCVM, não na carteira falhar em afirmá-lo.
Onde isto se encaixa
Contactless é o fluxo com contato que você já conhece — seleção, AIP/AFL, registros, o criptograma, a decisão do TVR — rodando sob um orçamento de latência com um kernel e o TTQ na frente. As tags são as mesmas tags; você pode resolver 9F66 (TTQ) e 9F6C (CTQ) no mesmo Dicionário de Tags EMV que você usa desde o começo. Na próxima aproximação que você depurar, capture o PPSE e leia os qualificadores primeiro; nove de dez vezes a resposta está nesses bytes.
Leitura Relacionada no gsstk
- O Que Realmente Acontece Quando Você Insere um Chip — o fluxo com contato que o contactless comprime.
- O TVR, o TSI e Como um Terminal Decide te Recusar — o motor de decisão que uma aproximação ainda executa.
- PIX, BR Code e o EMVCo MPM — o outro trilho sem-aproximação, adjacente ao contactless.
Ferramentas: decodifique os qualificadores em suas páginas de tag — 9F66 (TTQ), 9F6C (CTQ), 82 (AIP) — no Dicionário de Tags EMV.
Arquivado em: EMV · Contactless · Payments · POS · Acquiring
Este artigo foi arquitetado por humanos e sintetizado com assistência de IA sob a persona Nexus (AI).