Por Lucas de Araújo

Apresentação

Antes de adentrarmos nos assuntos técnicos que serão abordados ao decorrer deste post, gostaria de me apresentar a você, leitor. Meu nome é Lucas de Araújo, sou analista de segurança júnior do setor de Consultoria da Tempest, setor especializado em realizar projetos envolvendo segurança ofensiva.

Aproveitando a possibilidade de pesquisa durante meu período de estágio, optei por analisar, sob a perspectiva da cibersegurança, quais seriam as problemáticas de uma tecnologia utilizada diariamente por tantas pessoas, a identificação por radiofrequência.

Identificação por Radiofrequência: Uma Introdução

A radiofrequência (RF) é uma tecnologia utilizada amplamente em diversas áreas e seu principal benefício é a facilitação da comunicação à distância, permitindo que as pessoas se conectem e compartilhem informações de maneira eficiente. Seu funcionamento consiste na transmissão de ondas eletromagnéticas (ondas estas que carregam diversos tipos de dados) através do espaço, em frequências que variam entre hertz e giga-hertz.

Para as pessoas se comunicarem em um sistema que utiliza a radiofrequência, elas precisam de uma identificação dentro deste sistema, com isso, surge a necessidade da utilização de alguma tecnologia que permita esta identificação, tecnologia esta conhecida como RFID.

A tecnologia de RFID permite a identificação de um sujeito por meio de um sistema de etiquetas eletrônicas (em inglês, tags) que contém informações que serão transmitidas via radiofrequência para se realizar operações no sistema.

Estas etiquetas eletrônicas são normalmente observadas na forma de cartões ou chaveiros e possuem internamente uma estrutura similar a esta:

Figura 1: Estrutura dos Cartões RFID – Imagem extraída de https://nexqo.com/portfolio-items/rfid-nfc-card/

Toda etiqueta eletrônica possui três componentes principais: uma antena, um chip (ou circuito integrado) e uma estrutura de suporte.

  • Antena: Responsável por receber as ondas de rádio emitidas pelo leitor e converter a energia destas ondas em energia elétrica. Essa energia então é utilizada para alimentar o chip
  • Chip: Responsável por armazenar as informações que serão transmitidas para o leitor. Ele também controla a comunicação e realiza o processo de criptografar e descriptografar as informações transmitidas entre cartão e leitor.
  • Estrutura: Tem como função proteger a antena e o chip, neste caso, seria a carapaça do cartão, para evitar danos aos componentes.

Cartões MIFARE Classic

Apresentado um pouco sobre o que é radiofrequência, o sistema de identificação envolvendo a mesma e os mecanismos utilizados para isto, introduzo agora o protagonista deste post, os cartões de RFID do tipo MIFARE Classic.

Lançado em 1994 pela NXP Semiconductors (anteriormente Philips Semiconductors), os cartões MIFARE Classic rapidamente ganharam espaço no mercado por conta do seu baixo custo, permitindo a implementação de forma massiva em sistemas de controle de acesso com muitos agentes, como, por exemplo, sistemas de bilhetagem.

O MIFARE Classic possui dois modelos que se diferenciam pela capacidade de armazenamento, sendo um com capacidade de 1K e outro com capacidade de 4K. Ambos possuem sua estrutura interna dividida em setores e blocos, tendo cada setor um conjunto de blocos de dados e duas chaves A e B que regem o controle de acesso deste bloco.

Os cartões MIFARE Classic utilizam uma criptografia proprietária, chamada Crypto-1, desenvolvida pela própria NXP durante o concebimento do cartão. Durante muito tempo, a empresa se utilizou do princípio de segurança por obscuridade para garantir que nenhum indivíduo mal-intencionado pudesse subverter os mecanismos desta cifra, porém, como será visto adiante, desde 2008 pesquisadores têm relatado vulnerabilidades envolvendo essa criptografia.

Irei trabalhar a partir de agora, neste post, com a versão de 1K, pois foi a mesma na qual trabalhei minha pesquisa, porém todos os fatos observados, incluindo as vulnerabilidades descritas posteriormente, se aplicam igualmente para versão de 4K.

A Engenharia por trás do Cartão

Para facilitar a visualização do que será descrito nesta seção, aqui temos uma imagem ilustrando a estrutura lógica dos cartões MIFARE Classic (1K):

Figura 2 – Imagem extraída da dissertação “Cartão MIFARE classic: ataques e contramedidas”, do autor Wellington Baltazar de Souza

Como é possível constatar, os setores seguem um padrão de estrutura, com exceção do bloco 0 no setor 0. Começaremos por ele então.

Bloco do Fabricante

Este bloco é responsável por armazenar a identificação única (UID) do cartão, como se fosse um “carimbo” atribuído a cada cartão que sai da fábrica. No caso, este carimbo é um conjunto de 4 bytes, como, por exemplo: 4A 5B 2C 9D

Logo ao lado deste conjunto de bytes, temos o BCC, um byte responsável por verificar a integridade do UID para garantir que o mesmo não sofreu nenhuma adulteração. O processo de checagem é realizado por meio de operações de XOR (famigerado, “ou exclusivo”).

Após o BCC, o restante dos dados presentes neste bloco são referentes ao fabricante. Estes dados são informações como: modelo do cartão, nome da fabricante, etc.

Uma característica importante de se destacar sobre este bloco é que ele possui permissão apenas para leitura, ou seja, durante a comunicação com o leitor, a mesma não possui permissão para realizar escrita neste bloco e alterar seus dados.

Porém, existem cartões “mágicos” (não ironicamente apelidados de Chinese Magic Cards) que possuem a exata mesma estrutura de um cartão MIFARE Classic, porém, com a permissão de escrita disponível neste bloco, permitindo assim que seu UID seja alterado. Posteriormente, citarei as possibilidades de subversões que estes cartões mágicos podem fornecer.

Bloco de Dados

O bloco de dados é responsável por armazenar informações do usuário, informações relacionadas ao controle de acesso e qualquer outra informação que seja relevante para o contexto em que está sendo utilizado. Em um sistema de bilhetagem de transporte público, é neste setor que ficariam as informações como o nome da pessoa e quantidade de saldo disponível no cartão.

Bloco Trailer

Por fim, localizado no fim de cada setor, o bloco trailer do cartão é responsável por armazenar as chaves A (obrigatória) e B (opcional) que gerenciam o acesso de controle sobre as informações que estão presentes no respectivo setor em que se encontram.

A chave A sempre será obrigatória e é comumente utilizada para realizar a leitura e autenticação no setor, enquanto a chave B pode ser opcional e é normalmente utilizada para realizar operações sobre os dados presentes no bloco de dados do setor (leitura, escrita e deleção). Contudo, não há impedimento durante a concepção do cartão para que os papéis destas respectivas chaves sejam diferentes do mencionado.

Quando a chave B não se encontra presente no setor, normalmente em seu lugar estarão outros dados que podem ser utilizados pelo cartão.

Comunicação

Falarei agora sobre como funciona o processo de comunicação entre um leitor RFID e o cartão assim que eles são aproximados para que você possa entender como é exatamente feita a troca de informação entre um e outro.

O processo de comunicação pode ser dividido da seguinte forma:

  1. Ativação do Campo: Quando o cartão se encontra presente em um determinado raio no qual a leitora possa detectá-lo, ela enviará uma requisição do tipo A ou B
  2. Resposta do Cartão: Assim que o cartão recebe essa requisição, ele irá responder à leitora para informar sobre qual tipo de cartão ele é, permitindo que a leitora saiba como prosseguir com a comunicação.
  3. Anti-Colisão: Após receber a resposta do cartão, a leitora envia mais algumas requisições para detectar se há algum outro cartão nas proximidades, evitando interferências na comunicação com o cartão desejado. Se apenas um cartão responder aos sinais, a leitora selecionará esse cartão e dará prosseguimento à comunicação.
  4. Autenticação: Antes de realizar a troca de informações com o cartão, a leitora precisa se autenticar utilizando a chave (A ou B) apropriada para a operação que deseja realizar. A leitora e o cartão então realizam um processo de challenge-response handshake utilizando a cifra Crypto-1. Este passo garante que a leitora possui a respectiva chave que afirma ter e que, dessa forma, pode acessar as informações do cartão.
  5. Troca de Dados: Após a autenticação bem-sucedida, a leitora e o cartão passarão a trocar informações criptografadas pelas chaves e as operações desejadas pela leitora serão realizadas.
  6. Finalização: Assim que a leitora terminar de realizar o processo desejado, a mesma irá enviar um comando chamado de Halt para que o cartão seja colocado em um estado de “cochilo” e não responda mais aos comandos da leitora até que seja aproximado novamente e todo processo se repita.

A imagem a seguir ilustra o processo:

Figura 3 – Imagem extraída da dissertação “Cartão MIFARE classic: ataques e contramedidas”, do autor Wellington Baltazar de Souza

Crypto-1: Introdução

Desenvolvida pela NXP durante o concebimento do cartão MIFARE Classic, a Crypto-1 foi um algoritmo proprietário que visava garantir a segurança da comunicação entre cartão e leitora durante a transmissão de informações. O algoritmo foi mantido em segredo de indústria por muitos anos, técnica conhecida como “segurança por obscuridade” para garantir que ninguém, em teoria, fosse capaz de descobrir vulnerabilidades presentes no mesmo.

Porém, no ano de 2007, dois pesquisadores (Nohl e Plotz) realizaram o processo de engenharia reversa de parte do algoritmo através do uso de um microscópio eletrônico e foram capazes de reconstruir a cifra. Logo no ano seguinte, outros dois pesquisadores (Gans e Garcia) realizam também a recuperação do algoritmo através da observação da comunicação entre a leitora e o cartão, o que permitiu a criação de um software chamado Crapto-1, que visa demonstrar as vulnerabilidades na implementação original da Crypto-1.

O algoritmo Crypto-1 é uma cifra de fluxo essencialmente. Sua peça principal é o gerador de bits pseudo-aleatório que produz como resultado, os bits do keystream que será utilizado para criptografar e descriptografar as mensagens. Este gerador consiste em um LFSR de 48 bits que segue a estrutura do seguinte polinômio

x⁴⁸ + x⁴³ + x³⁹ + x³⁸ + x³⁶ + x³⁴ + x³³ + x³¹ + x²⁹ + x²⁴ + x²³ + x²¹ + x¹⁹ + x¹³ + x⁹ + x⁷ + x⁶ + x⁵ + 1

A imagem a seguir ilustra o diagrama do LSFR e as funções auxiliares da Crypto-1:

Figura 4 – Imagem extraída da dissertação “Cartão MIFARE classic: ataques e contramedidas”, do autor Wellington Baltazar de Souza

Crypto-1 – Geração do Keystream

Conhecido como Keystream, trata-se da sequência de bits que será utilizada para criptografar a informação. O Keystream possui um tamanho fixo e cada bit da sua sequência é originado após uma quantidade de clocks (operações) provindas do gerador (neste caso, o LFSR e suas funções auxiliares)

Neste cenário da Crypto-1, é seguida a seguinte sequência de instruções:

  • A cada ciclo de clock, o filtro gerador não linear recebe 20 novos bits do LFSR e produz um exato bit do Keystream.
  • O LFSR então desloca-se um bit para esquerda e insere um novo bit à direita. Este bit inserido será processado utilizando a seguinte equação:
Figura 5 – Imagem extraída da dissertação “Cartão MIFARE classic: ataques e contramedidas”, do autor Wellington Baltazar de Souza
  • O filtro gerador que produz o bit resultante do Keystream é definido através da combinação de três funções lógicas, ilustradas a seguir:
Figura 6 – Imagem Imagem extraída da dissertação “Cartão MIFARE classic: ataques e contramedidas”, do autor Wellington Baltazar de Souza

Crypto-1: Gerador Pseudo-Aleatório (PRNG)

Este gerador é responsável pela criação dos desafios (nonces) utilizados durante o processo de autenticação entre cartão e leitora.

É utilizado um segundo LFSR, desta vez de 32 bits, que se inicia sempre com a mesma sequência de bits toda vez que o cartão é energizado (10101010101010101010101010101010).

Devido ao pequeno número de bits, de que cada shift do LFSR possuir um tempo exato de segundos e do fato de que o estado inicial do gerador é sempre o mesmo, torna-se possível estimar o valor de um desafio futuro. Será este pensamento que irá permitir a exploração de alguns ataques que serão demonstrados posteriormente. Isso faz com que o gerador de números pseudo-aleatórios da Crypto-1 não seja criptograficamente seguro.

A fórmula utilizada pelo LFSR deste gerador é ilustrada na seguinte imagem:

Figura 7 – Imagem extraída da dissertação “Cartão MIFARE classic: ataques e contramedidas”, do autor Wellington Baltazar de Souza

Observação: apesar de possuir um estado inicial de 32 bits, o gerador apenas trabalha com 16 bits. Este fato também facilitou a exploração de vulnerabilidades presentes no mesmo.

Ataques: Introdução

A partir deste momento, irei começar a explicar e detalhar a metodologia utilizada nos ataques mais comuns envolvendo os cartões MIFARE Classic, mas antes, algumas observações:

  • Os ataques aqui descritos são voltados exclusivamente para o cartão MIFARE Classic e são ataques em que o atacante manipula o cartão de maneira isolada, sem a necessidade de monitorar a comunicação entre uma leitora autêntica e o cartão.
  • Os ataques serão separados em duas categorias: Ataques com Arduino UNO junto ao módulo RC522 e Ataques utilizando o dispositivo Proxmark3 na versão RDV2.
  • Durante o processo de estudos, foi utilizado como “vítima” cartões tipicamente utilizados em aplicações de comerciais, como controle de consumo em restaurantes e em controle de acesso a prédios.

Ataques: Arduino – RC522

Para esta categoria de ataques, foi utilizada a biblioteca RFID  do autor miguelbalboa, que foi projetada para operar sobre o módulo RC522. Foi possível realizar dois tipos de ataques nesta categoria, sendo eles:

  • Clonar o UID do cartão vítima.
  • Descriptografar o cartão vítima e clonar o restante de suas informações.

As imagens a seguir ilustram a configuração final do Arduino e uma esquemática do protótipo:

Figura 8 – Imagem de autoria própria
Figura 9 – Imagem extraída de https://www.sta-eletronica.com.br/artigos/arduinos/utilizando-o-modulo-rfid-com-o-arduino-uno

Clone de UID

Como mencionado anteriormente na seção de engenharia do cartão, cada cartão MIFARE Classic possui um UID que o permite ser identificado

Para evitar que este UID seja alterado, os fabricantes deste cartão não permitem a operação escrita no setor de memória onde o mesmo reside, porém, existem outros fabricantes que vendem cartões MIFARE Classic com este setor de memória passivo de escrita. Como supracitado, estes cartões são conhecidos coloquialmente como “Chinese Magic Cards”.

Imagem extraída de https://pt.aliexpress.com/item/1005005782973903.html

Muitos sistemas utilizam apenas o UID para verificar se determinado cartão está autorizado a ter acesso ou não a determinado sistema, prédio, setor etc. A problemática envolvendo isso se dá principalmente pelo fato do UID não ser uma informação criptografada dentro do cartão. Portanto, é possível obter o UID do cartão através da leitura por proximidade como, por exemplo, utilizando celulares com tecnologia NFC.

Para realizar a clonagem do UID de um cartão vítima para o cartão do atacante, podemos utilizar o código disponível na biblioteca RFID, que gerencia todo o processo de interação com o módulo RC522 conectado ao nosso Arduino. A imagem a seguir ilustra um trecho do código que será executado para substituir o UID do cartão do atacante pelo UID do cartão da vítima.

Figura 11 – Imagem de autoria própria

Após o clone do UID realizado com sucesso, um atacante seria capaz de explorar sistemas que se baseiam exclusivamente na verificação da identidade do usuário pelo UID presente no cartão. A nossa experiência na Tempest mostra que este tipo de cenário de ataque é bastante comum (e efetivo) em sistemas de controle de acesso, como em edifícios corporativos e áreas restritas em fábricas, indústrias e escritórios corporativos.

Ataques: Proxmark 3 RDV2

Originalmente construído por Jonathan Westhues no ano de 2007, o Proxmark 3 é uma ferramenta versátil para realizar pesquisas e análises em dispositivos RFID. Ele foi projetado para ser capaz de ler, escrever e emular cartões RFID.

O código do Proxmark 3 é aberto e pode ser encontrado neste repositório. A imagem a seguir ilustra o Proxmark 3 em sua versão RDV2, que foi a versão utilizada para os testes durante esta pesquisa:

Figura 12 – Imagem de autoria própria

Antes de abordar os ataques desta seção, é importante compreender por que estamos discutindo sobre ele. Ao contrário do exemplo com o Arduino, certos sistemas podem utilizar recursos presentes no próprio cartão para garantir a autenticação completa do usuário. Frequentemente, estes sistemas armazenam dados sensíveis na memória do cartão, os quais serão usados pelo usuário após a autenticação no sistema. Por exemplo, nos bilhetes eletrônicos de transporte público, o saldo do usuário é armazenado na memória do cartão e verificado antes de autorizar ou negar o acesso do usuário ao veículo.

No entanto, para obtermos acesso às informações contidas no cartão, é necessário descobrir as chaves presentes em cada setor, a fim de descriptografar, modificar e escrever os dados. Devido às limitações do Arduino, executar todo esse processo pode ser bastante custoso e ineficiente, uma vez que o hardware do Arduino não foi projetado especificamente para essa finalidade. É nesse contexto que o Proxmark 3  surge para suprir essa necessidade de forma eficaz.

Tendo este contexto em mente, irei explicar como funcionam três ataques (Nested, Darkside e Hardnested) utilizados para se obter as chaves presentes nos setores do cartão e o raciocínio por trás dos mesmos.

Proxmark 3: Ataque do tipo Nested

Este tipo de ataque é utilizado no cenário em que o atacante possui pelo menos uma chave de algum setor do cartão. Este ataque abusa do mecanismo de nonce (desafio) descrito anteriormente, no qual o mesmo sempre é gerado a partir de uma mesma sequência e cada iteração subsequente possui um tempo médio determinado.

Podemos sumarizar este ataque nos seguintes passos:

  1. O atacante inicia uma autenticação (no setor que ele conhece a chave) e, por conta disso, o cartão gera um primeiro nonce.
  2. O atacante realiza outra autenticação em outro setor em sequência no qual ele não conhece a chave.
  3. O cartão então responde esta nova autenticação com um novo nonce criptografado e, calculando a “distância” entre os dois nonces através do monitoramento do tempo entre as duas autenticações consecutivas, o atacante é capaz de prever qual era o nonce descriptografado que foi gerado na segunda autenticação.
  4. Possuindo em mãos o nonce descriptografado e criptografado, o atacante então é capaz de realizar uma operação de “XOR” (Ou Exclusivo) e recuperar 32 bits do keystream que foi utilizado para cifrar o nonce.
  5. Após este processo, o atacante agora tem em mãos um espaço de domínio muito menor e pode partir para ataques de força bruta para descobrir os bits restantes do keystream e concluir qual é a respectiva chave do setor que está sendo atacado.
  6. Por fim, para descobrir as chaves restantes dos outros setores, basta repetir o processo com as chaves obtidas anteriormente.

Este processo pode ser combinado com outras análises que tenham como objetivo reduzir o número de possibilidades do keystream, desta forma o atacante conseguirá se aproximar cada vez mais da respectiva chave do setor.

A imagem a seguir ilustra este ataque sendo executado com o Proxmark3 RDV2 sobre um cartão vítima:

Figura 13 – Imagem de autoria própria

Proxmark 3: Ataque do tipo Darkside

Mas e caso de não possuirmos nenhuma chave do cartão? O que fazer? Pois bem, neste cenário, teremos que utilizar outro tipo de ataque, popularmente conhecido como Darkside.

O ataque Darkside foi inicialmente descrito no artigo intitulado “The Dark Side of Security by Obscurity: And Cloning MiFare Classic Rail and Building Passes, Anywhere, Anytime” de Nicolas T. Courtois. Nesse artigo, o autor explora diversos aspectos relacionados ao processo de autenticação e discute aspectos associados à segurança baseada em obscuridade.

O ataque Darkside visa aproveitar o código de resposta NACK (Negative Acknowledgment), que é gerado quando os bits de paridade enviados ao cartão estão corretos, mesmo que a chave selecionada não seja a correta. Nessa situação, o cartão responde com um código NACK (4 bits) criptografado com a keystream. Como o código NACK é pequeno, pode ser realizado um ataque de força bruta rapidamente até se descobrir o código do NACK antes de ser cifrado. Após isto, é possível realizar uma operação XOR entre o código descriptografado e o código criptografado, permitindo obter uma parte da keystream utilizada.

De forma simplificada, podemos sumarizar este ataque da seguinte maneira:

  1. Primeiro Contato: O atacante posiciona o Proxmark 3 próximo ao cartão. Após isto, é iniciado o processo de ataque.
  2. Criptograma Auxiliar: O atacante então começa a enviar um criptograma gerado pelo seu dispositivo que possua os bits de paridades corretos para que, quando o cartão realizar a checagem, seja emitido o código NACK.
  3. Código NACK: Devido à paridade correta dos bits, o cartão irá responder com o código NACK (4 bits) cifrado com a keystream.
  4. Força Bruta: O atacante agora deve realizar a força bruta para descobrir quais são os respectivos 4 bits de texto plano do NACK. Como 4 bits permitem apenas 2⁴ possibilidades, o código em texto plano pode ser obtido rapidamente.
  5. Bits do Keystream: Após descoberto o código em texto plano, o atacante realiza o processo de XOR com o código cifrado e terá em mãos 4 bits do keystream.
  6. Repetição: Basta agora, junto às outras análises de predição, o atacante repetir o processo até que se aproxime completamente da chave do setor atacado.

Após descoberta uma chave, basta ao atacante utilizá-la para realizar o ataque do tipo Nested, já descrito, para obter as chaves correspondentes dos outros setores.

A imagem a seguir ilustra este ataque sendo executado com o Proxmark3 RDV2 sobre um cartão vítima:

Figura 14 – Imagem de autoria própria

Proxmark 3: Ataque do tipo Hardnested

Após a repercussão dos dois tipos de ataques mencionados, principalmente do ataque do tipo Nested, a fabricante dos cartões MIFARE (NXP) percebeu que deveria mitigar de alguma maneira o que estava acontecendo com seu produto.

Mediante a isto, a solução adotada na época foi aplicar mudanças no algoritmo de geração de números pseudo aleatórios responsável por gerar os nonces que são utilizados durante o processo de autenticação. A mudança aplicada visava principalmente dificultar ao máximo com que o processo de predição do valor do nonce em texto plano, elemento chave para o ataque do tipo Nested, fosse executado.

Porém, em 2015, foi demonstrado no artigo intitulado “Ciphertext-only Cryptanalysis on Hardened Mifare Classic Cards” por Carlo Meijer e Roel Verdult que através da coleta de diversos valores de nonces criptografados, aliado a algumas técnicas de análises criptográficas, é possível, em tempo hábil, obter a chave de um setor arbitrário.

Esse processo é consideravelmente mais complexo do que os ataques mencionados anteriormente, dificultando sua descrição detalhada neste texto. No entanto, irei fornecer uma breve síntese dos passos envolvidos neste tipo de ataque:

  1. O atacante coleta entre 2000 e 4000 nonces gerados pelo cartão por meio de consecutivas tentativas de autenticação.
  2. É realizada uma série de análises bit-a-bit a respeito da natureza desses nonces para que o escopo da chave original (2⁴⁸) seja reduzido ao máximo.
  3. Após reduzido o escopo, é realizado um ataque força bruta para obter-se a chave original.

Devo ressaltar que este ataque foi o único no qual não foi possível obter informações suficientes para realizá-lo na prática. Durante o processo de pesquisa, não consegui obter um cartão que possuísse o novo mecanismo de PRNG mencionado. Portanto, minha compreensão se baseia apenas no estudo de casos e experiências relatadas por outros pesquisadores e entusiastas da área.

Conclusões

Após apresentada a engenharia dos cartões MIFARE Classic e seus ataques mais famosos, a pergunta que fica é: o que podemos fazer para nos proteger?

Presentemente, os cartões MIFARE Classic ainda são muito populares devido a seu baixo custo, porém a própria fabricante recomenda que seja utilizado algum de seus modelos mais novos de cartões, como, por exemplo, o MIFARE Desfire que utiliza a criptografia AES ao invés da Crypto-1.

Embora não haja uma solução definitiva para evitar os ataques aos cartões MIFARE Classic, é possível adotar algumas medidas que dificultam o sucesso dos ataques por parte do invasor:

  1. Configurar todos os setores para que cada uma de suas respectivas chaves não permaneça com o valor padrão de fábrica;
  2. Evitar deixar informações sensíveis no cartão e, se possível, realizar uma segunda validação por meio de outra via de comunicação;
  3. Caso seja feita a troca ou despejo de uma leitora, certificar-se de deletar as chaves presentes na memória da mesma para evitar que atacantes capturem e realizem engenharia reversa em busca das chaves;
  4. Monitorar pontos onde estão instaladas as leitoras e observar sinais de atacantes que estão interceptando a comunicação entre cartões das vítimas e a leitora. Este tipo de ataque é possível ser realizado através do Proxmark 3;
  5. Para finalizar, caso você use um cartão deste tipo, é indicado a utilização de carteiras especiais (popularmente conhecidas como anti-roubo) que inibem a leitura dos cartões de rádio frequência, quando aproximadas de alguma leitora. Este bloqueio de comunicação entre o cartão e a leitora é possível graças a um conceito físico conhecido como Gaiola de Faraday.

Referências

CHANTZIS, F.; STAIS, I.; CALDERON, P.; DEIRMENTZOGLOU, E.; WOODS, B. Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things. 1. ed. [S.l.]: No Starch Press, 2021.

COURTOIS, Nicolas. The Dark Side of Security by Obscurity – and Cloning MiFare Classic Rail and Building Passes, Anywhere, Anytime. In: SECRYPT 2009, PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON SECURITY AND CRYPTOGRAPHY, Milan, Italy, July 7-10, 2009. [S.l.]: ResearchGate, 2009. Disponível em: https://www.researchgate.net/publication/221436521_The_Dark_Side_of_Security_by_Obscurity_-_and_Cloning_MiFare_Classic_Rail_and_Building_Passes_Anywhere_Anytime. Acesso em: 29 de junho de 2023.

FINKENZELLER, Klaus; MÜLLER, Dörte (Tradutor). RFID Handbook: Fundamentals and Applications in Contactless Smart Cards, Radio Frequency Identification and Near-Field Communication. 3rd Ed. [S.l.]: Wiley, 2011.

MEIJER, Carlo; VERDULT, Roel. Ciphertext-only Cryptanalysis on Hardened Mifare Classic Cards. 2015. Disponível em: http://cs.ru.nl/~rverdult/Ciphertext-only_Cryptanalysis_on_Hardened_Mifare_Classic_Cards-CCS_2015.pdf. Acesso em: 29 de junho de 2023.

OLIVEIRA, L. de S.; SOUSA, J. P. C. de; MACIEL, O. A. P. da S. Revisiting RFID Mifare Classic security in the context of investigations that account millionaire losses a case study based on the ticketing system implemented in Brazil/ Revisitando a segurança do RFID Mifare Classic no contexto de investigações que contabilizam perdas milionárias um estudo de caso baseado no sistema de bilhética implementado no Brasil. Brazilian Journal of Development, [S. l.], v. 8, n. 3, p. 20117–20133, 2022. DOI: 10.34117/bjdv8n3-287. Disponível em: https://ojs.brazilianjournals.com.br/ojs/index.php/BRJD/article/view/45438. Acesso em: 29 jun. 2023.

PATERIYA, R.K.; SHARMA, Sangeeta. The Evolution of RFID Security and Privacy: A Research Survey. In: 2011 INTERNATIONAL CONFERENCE ON COMMUNICATION SYSTEMS AND NETWORK TECHNOLOGIES. [S.l.]: IEEE, 2011. Disponível em: https://ieeexplore.ieee.org/document/5966417?arnumber=5966417. Acesso em: 29 de junho de 2023.

SOUZA, W. B. Cartão MIFARE classic ataques e medidas de contorno. 2011. Dissertação (Mestrado em Ciências) – Universidade de São Paulo, [S. l.], 2011. Disponível em: https://silo.tips/queue/cartao-mifare-classic-ataques-e-medidas-de-contorno-wellington-baltazar-de-souza. Acesso em: 29 jun. 2023.