A tecnologia RFID é muito bem conhecida e amplamente utilizada. Estamos em contato com ela nos sistemas de transporte público, identificação e controle de acesso, controle de cargas, controle de animais, cartões de pagamento, e muitas outras formas mais. Mas nem sempre conhecemos como o RFID funciona, até pela ampla gama de possibilidades. Para isso podemos seguir a fantástica sequência de artigos do Alessandro Cunha e do Henrique Puhlmann aqui no Embarcados (RFID, Etiquetas RFID e NFC). Hoje iremos conhecer um pedaço desse universo, falaremos sobre os chips Mifare desenvolvidos pela NXP.
Chips Mifare
A linha de chips Mifare foi desenvolvida para atender a demandas por sistemas RFID na faixa de 13,56 MHz. Essa linha cresceu muito e hoje é uma das mais usadas para cartões e tags. Os chips foram criados atendendo a ISO-14443, norma que padroniza a tecnologia de cartões de identificação por proximidade.
Os chips Mifare são utilizados na faixa HF (High Frequency) da tecnologia RFID, mais precisamente na frequência de 13,56 MHz. Funcionam para distâncias de até 10 cm, necessitando apenas de uma antena. Eles podem estar contidos em cartões, tags, pulseiras, e mais uma infinidade de dispositivos, inclusive implantados em animais.
Internamente, os chips são compostos por uma série de blocos, onde cada um tem sua função para o seu perfeito funcionamento. Os principais blocos são:
- Bloco de RF: Composto por sistemas de modulação e demodulação do sinal, regulador de tensão, Power On Reset (POR) e gerador de clock.
- Anticolisão: Atendendo a ISO-14443, esse sistema permite fazer a seleção de um único cartão, mesmo que vários estejam dentro do campo do leitor.
- Unidade Lógica: Responsável por controlar os processos lógicos dentro do chip, como solicitar autenticação, leitura e escrita na memória, controlar acesso aos dados, gerenciar os comandos, etc.
- Unidade de criptografia: Responsável pela autenticação da comunicação através do sistema CRYPTO1, desenvolvido pela NXP para utilização nos chips Mifare.
- EEPROM: Memória interna do chip onde os dados são gravados e lidos.
Estrutura de memória
O chips comtemplam uma memória EEPROM interna, as capacidades mais comuns são de 1KB, 2KB e 4KB. Internamente as memórias são divididas em setores, os setores divididos em blocos, e cada bloco tem 16 bytes. As memórias de 4KB são divididas em 40 setores, alguns com 4 blocos e outros com 16 blocos. Os chips de 2KB são compostos por 32 setores, onde cada setor é composto por 4 blocos. As memórias de 1KB contêm 16 setores onde cada setor comporta 4 blocos. Abaixo vemos a estrutura interna de uma memória de 1KB.
Alguns slots de memória no cartão são para uso específico de funcionalidades do chip, vamos nos aprofundar um pouco mais nesses espaços de memória.
Manufacturer block
O primeiro bloco do primeiro setor é chamado manufacturer block, reservado para armazenar algumas informações do fabricante. Cada chip tem um número de série próprio, podendo ser de 4 ou 7 bytes, indicado pelos primeiros bytes no manufacturer block.
Data Blocks
Os 3 primeiros blocos de cada setor (0 a 2) são para armazenamento de dados (exceto o bloco 0 do setor 0), podendo ser configurados como value blocks ou read/write blocks. Os read/write blocks, como o nome sugere, são blocos para leitura e escrita de dados. Já os value blocks foram pensados para serem utilizados em sistemas que envolvem contagem de crédito, pois também oferecem as funções de incremento e decremento de valores, além de restauração e transferência.
Tanto o modo de funcionamento quanto as funções disponíveis para os data blocks, são configurados no campo access condition, que veremos em detalhes mais à frente.
Sector Trailer
O último bloco de cada setor é chamado sector trailer, muito importante para o funcionamento do chip. Esse bloco armazena as chaves de acesso aos demais blocos daquele setor e também as condições de acesso de cada bloco daquele setor.
Para acesso aos blocos dos setores é necessário fazer a autenticação. O setor trailer armazena duas chaves, KEY A e KEY B, onde a chave B é opcional. Uma dessas chaves deve ser usada para fazer a autenticação, após isso, os dados dos blocos daquele setor podem ser acessados de acordo com o que está gravado no campo Access Condition.
O campo Access Condition é composto 4 bytes, armazenando as condições de acesso e o modo de funcionamento de cada bloco do seu setor. De acordo com a configuração deste campo saberemos, por exemplo, qual chave devemos usar para autenticação, qual o modo de funcionamento dos blocos de dados, se os dados poderão ser acessados. Abaixo vemos uma imagem do sector trailer.
A estrutura do access condition utiliza 3 bits para definir o funcionamento de cada bloco do seu setor (C1, C2 e C3), esses bits são armazenados em dois locais por segurança, em um de forma normal e outro de forma invertida. Além da identificação do bit (1, 2 ou 3) existe um outro índice que identifica o bloco.
As funções possíveis para cada data block são configuradas no access condition (C1, C2 e C3 de 0 a 2), assim como se ele será um value block ou read/write block.
Os bits C1, C2 e C3 índice 3 do access condition determinam o acesso ao bloco 3 daquele setor (sector trailer), assim configuramos as funções disponíveis e qual a chave que iremos usar para cada função.
Estrutura de comunicação
A comunicação entre o leitor e os dispositivos Mifare é realizada seguindo uma sequência lógica. De início o leitor gera o campo que alimenta os chips (POR), e envia um request. Todos os chips que estiverem no alcance do campo do leitor irão tentar responder, o sistema de anticolisão impede que mais de um dispositivo responda simultaneamente. Os dispositivos respondem com seu número identificador.
Então o leitor seleciona o chip com quem quer trocar informações. Nesse momento os demais dispositivos entram em modo stand by aguardando por um novo request. Com o módulo selecionado o leitor especifica o local que quer acessar na memória e usa a chave configurada para fazer a autenticação do bloco de memória. Depois da autenticação, todas as informações trocadas são encriptadas pela CRYPTO1, uma criptografia criada pela NXP para os dispositivos Mifare. Vale citar que essa criptografia já foi quebrada há alguns anos, e não é recomendável a utilização apenas deste meio de segurança para as informações trocadas.
Após a autenticação, o leitor deve enviar o comando referente à ação desejada, este poder ser leitura, escrita, incremento, decremento, restaurar e parar. Abaixo segue o fluxograma que corresponde ao processo de comunicação.
Troca de dados e integridade da comunicação
Para garantir a confiabilidade dos dados trocados, a comunicação Mifare adota uma série de medidas de segurança, são elas:
- Start bit;
- Bit de paridade para cada byte;
- CRC de 16 bits;
- Codificação dos bits na memória de forma normal e invertida;
- Cópias de valor em outras posições de memória.
O tamanho máximo do frame de comunicação é de 163 bits, que é a quantidade exata para escrita ou leitura de um bloco completo. São 1 start bit + 16 bytes + 16 bits de paridade + 2 bytes do CRC + 2 bits de paridade (1 + 16×9 + 2×9 = 163 bits).
Conclusão
Procurei abranger uma grande quantidade de aspectos dos cartões Mifare, mas existem outros detalhes que podem ser encontrados no site do fabricante. Temos um exemplo prático em um artigo escrito pelo Cleiton Bueno aqui no Embarcados, vale apena conferir. Com o que foi descrito podemos ter um conhecimento maior da tecnologia e avaliar alguns casos onde ela pode ser empregada, e assim se aprofundar mais no tema.
Caso tenha alguma dúvida ou queira saber mais sobre algum detalhe, deixe seu comentário abaixo que faremos o possível para ajudar.
Saiba mais sobre RFID
Introdução à tecnologia de identificação RFID
RFID – Etiquetas com eletrônica de ponta











ola preciso de sua ajuda email wellingtonsantosfelipe1@gmail.com
ola
Gostaria de obter mas informação sobre esse cartão mifare e também uma possivel consultoria de como codificar esse catão
se possivel passar o seu e-mail ou contato
Agradeço a atenção e estou no aguardo
Bom dia Helio.
Entre em contato que conversamos: josemar.bool@gmail.com
Tem como vc passar seu contato , estou estudando um pouco sobre essa tecnologia e gostaria de tirar algumas dúvidas
tem como me enviar o seu contato?
O que é transporte configuration?
Boa tarde meu caro
Poderia deixar seu email? estamos implementando um sistema que ira utilizar a tecnologia mifare e estamos precisando de uma consultoria
Bom dia.
Na imagem 1, a figura inferior central, não seria um chip da tecnologia por contato “iButton”?
Ola Cássio.
Realmente você está certo, é uma tag iButton e não uma tag Mifare. Diferente do Mifare, o iButton precisa de contato para troca de informações.
Muito obrigado pelo seu comentário.