O que um terminal de pagamento recebe de fato?
O suficiente para encaminhar a transação ao banco certo, e um valor que prova que o cartão participou desta compra específica. O cartão é um pequeno computador que decide o que responder, e não um armazenamento que o terminal lê, e é essa distinção que impede que a troca seja reaproveitada.
Um computador, e não um armazenamento
O modelo mental que causa a confusão é o de um cartão como uma caixa que o terminal abre. Nesse modelo, o que estiver dentro fica exposto a quem o ler.
O modelo correto é o de um cartão como um pequeno computador rodando uma aplicação. O terminal pergunta; a aplicação decide o que responder e recusa o resto.
Tudo o que vem a seguir é consequência disso. Um cartão não é lido, é interrogado, e é ele que tem o direito de resposta.
O que passa, em linhas gerais
Informações de encaminhamento, para que a transação chegue à instituição que emitiu o cartão.
Um valor calculado para esta transação, que prova que o cartão participou e não pode ser produzido sem ele.
Dados sobre a própria transação, reunidos pelo terminal, e não fornecidos pelo cartão.
Os campos exatos, os nomes deles e quais são obrigatórios estão definidos nas especificações EMV de pagamento por aproximação publicadas pela EMVCo, e são essas especificações, e não esta página, que têm autoridade sobre eles.
O que não passa
As chaves dentro do cartão, que nunca saem dele em nenhuma circunstância e são a razão pela qual o valor da transação não pode ser falsificado.
Qualquer coisa que a aplicação de pagamento não seja obrigada a responder, o que é muito mais do que as pessoas presumem e inclui boa parte do que se imagina que um cartão carrega.
E absolutamente nada sobre você como pessoa além do que o emissor do cartão colocou ali, já que um cartão não guarda nenhum histórico de onde esteve.
Por que a distinção importa
Porque ela explica por que capturar uma troca não é o mesmo que capturar um cartão, e por que toda a categoria de ataques por reprodução falha.
Ela explica também por que um aplicativo de uso geral num celular obtém tão pouco de um cartão de pagamento: o aplicativo não é um terminal, e o cartão responde de acordo.
Pegue o NFC Tools. No iOS ele exige um iPhone 7 ou um modelo posterior com iOS 15.6 no mínimo, e o aplicativo tem de ser aberto manualmente. A leitura em segundo plano está disponível a partir do iPhone XS e XR.
E ela cria a expectativa certa para quem desenvolve com NFC: a camada de pagamento é um sistema fechado com regras próprias, ao lado do mundo das tags, e não dentro dele.
Perguntas frequentes
O terminal lê o número do meu cartão?
Ele recebe o que a aplicação de pagamento responde, que é o que as bandeiras exigem para o encaminhamento e a prova. O cartão não é simplesmente lido.
As chaves do cartão chegam a ser enviadas?
Não. Elas ficam dentro do chip, e é por isso que o valor que prova a transação não pode ser produzido por mais nada.
Por que um aplicativo no meu celular vê tão pouco de um cartão bancário?
Porque ele não é um terminal, e a aplicação de pagamento responde de acordo. Isso é deliberado, e não uma limitação.
O cartão sabe onde já esteve?
Não. Um cartão não guarda nenhum histórico de si mesmo, então não existe nada desse tipo para um terminal obter.