O padrão de cartão sem contato MIFARE Classic foi criado há mais de 20 anos e, apesar de várias vulnerabilidades encontradas desde então, ainda é amplamente utilizado (principalmente em Moscou e São Petersburgo). Neste artigo, lembraremos quais vulnerabilidades foram encontradas e descreveremos como corrigi-las.
Fonte: Instagram @ pro.ticketingTradicionalmente, para esses artigos, lembramos que a falsificação e a venda de ingressos na Rússia são processadas sob a lei (artigos 327 e 165 do Código Penal da Federação Russa) e incentivamos os leitores a permanecer no lado positivo da força.
Estrutura MIFARE Classic
O padrão MIFARE Classic da NXP é uma família de cartões. Inclui MIFARE Classic 1K, 4K, EV1 1K, EV1 4K, ID MIFARE, MIFARE Mini. Além disso, esse padrão pode ser emulado por outras placas NXP mais recentes (MIFARE Plus, JCOP e outras).
A operação do cartão com leitores é baseada no padrão ISO 14443A, frequência 13,56 MHz.
Os cartões MIFARE Classic 1K fornecem uma área de memória organizada em setores de 64 bytes. Cada setor é dividido em 4 blocos de 16 bytes de tamanho:

Para cartões 4K, os primeiros 2048 bytes são organizados em 32 setores de 64 bytes e o restante em 8 setores de 256 bytes (ou 16 blocos). O último bloco de cada setor é chamado de trailer do setor, contém chaves e parâmetros de acesso ao setor. O bloco zero do setor zero é um bloco especial, bloqueado para escrita, contém o identificador e as informações do fabricante do cartão. Para que um cartão tenha várias aplicações diferentes - por exemplo, um cartão social com informações sobre benefícios, passagens de metrô e trem - os blocos restantes do setor zero registram como cada setor é usado - o
Diretório de aplicativos MIFARE (MAD) .
Antes de acessar o setor para leitura ou gravação, é necessário autorizar usando uma chave de 6 bytes. A autorização ocorre de acordo com um protocolo de três etapas semelhante ao descrito no capítulo 5.2.2. norma ISO / IEC 9798-2: 1999. O algoritmo de criptografia de streaming proprietário CRYPTO1 é usado:

- O leitor envia uma solicitação de autorização, indicando o número do setor ao qual a autorização ocorre.
- O cartão lê a chave de acesso da memória interna, gera uma sequência aleatória e a devolve ao leitor.
- O leitor calcula a resposta usando a chave de acesso ao setor e o algoritmo de criptografia CRYPTO1 e a envia com uma nova sequência aleatória gerada.
- O cartão verifica a resposta calculada pelo leitor. Em seguida, calcula a resposta à chamada do leitor e a retorna.
- O leitor verifica a resposta do cartão.
A transmissão adicional do conteúdo dos setores é realizada de forma criptografada. Se você precisar fazer login em outro setor (a chamada autorização secundária), a re-autorização será executada. A principal diferença é que toda a troca é criptografada primeiro com a antiga e depois com a nova chave.
Vulnerabilidades conhecidas do MIFARE Classic
A criptografia de mapa é bem pesquisada. A vulnerabilidade da implementação do cartão gerador de números pseudo-aleatórios (PRNG) e a vulnerabilidade do algoritmo CRYPTO1 são encontradas. Na prática, essas vulnerabilidades são usadas nos seguintes ataques:
- Lado negro - o ataque explora a vulnerabilidade do PRCH. Funciona em placas MIFARE Classic até a geração EV1 (no EV1, a vulnerabilidade PRNG já foi removida). Para um ataque, você só precisa de um mapa, não precisa conhecer as chaves.
- Aninhado - o ataque explora a vulnerabilidade do CRYPTO1. O ataque é feito em autorizações secundárias; portanto, para um ataque, você precisa conhecer uma chave de cartão válida. Na prática, para o setor zero, eles costumam usar chaves padrão para trabalhar com o MAD - começam a partir dele. Funciona para todos os cartões do CRYPTO1 (MIFARE Classic e sua emulação). O ataque foi demonstrado na vulnerabilidade do artigo “Vulnerabilidade do mapa do Psyllium: vulnerabilidade no cartão de transporte terrestre de São Petersburgo”.
- Ataque pela troca de escuta - o ataque usa a vulnerabilidade CRYPTO1. Para atacar, você precisa espionar a autorização principal entre o leitor e o cartão. Isso requer equipamento especial. Funciona para todos os cartões do CRYPTO1 (MIFARE Classic e sua emulação). O ataque foi demonstrado no artigo "Hacking Citycard transport cards (Nizhny Novgorod)".
Tudo isso na prática permite obter chaves de acesso para todos os setores do cartão, tendo apenas um cartão em mãos, inicializado com as teclas de acesso. Além disso, pode ser realizado um ataque de repetição no conteúdo do cartão ou um clone do cartão em espaços em branco especiais com um identificador de cartão regravável.
Além disso, há uma vulnerabilidade na infraestrutura da chave de acesso. Como a criptografia no CRYPTO1 é implementada no lado de um leitor de cartão (o CRYPTO1 é implementado apenas no hardware), segue-se que as chaves de acesso:
- transferido para um leitor antes de trabalhar com o cartão,
- armazenados no próprio leitor em um armazenamento seguro de hardware (por exemplo, MIFARE SAM ),
- armazenado na memória somente leitura do leitor.
E se em equipamentos especiais, como terminais de informações ou catracas, você pode usar um armazenamento seguro de chaves de hardware, no caso de aplicativos Android, existe apenas a opção de transferir chaves e armazenar na memória do dispositivo. Isso torna possível interceptar essas chaves invadindo o aplicativo ou analisando o tráfego do aplicativo. O que foi demonstrado no artigo "Estudo da segurança do cartão da Troika".
Métodos de gerenciamento de vulnerabilidades MIFARE Classic
Diversificação da chave de acesso
Diversificação é o processo de obter chaves de acesso por uma chave mestra, usando alguns dados de entrada exclusivos do cartão. O processo de obtenção de chaves pode ser implementado em um aplicativo que funciona com leitores ou por meio de um módulo SAM.
Por exemplo, isso pode funcionar assim:
- Como entrada para a diversificação, são utilizados o identificador do cartão e o número do setor, a chave à qual queremos receber;
- Esses dados são criptografados (no módulo SAM ou no software de aplicativo) com uma chave mestra, o resultado é truncado para 6 bytes e usado como chave de acesso ao setor correspondente.

Como resultado, cada cartão recebe suas chaves de acesso de setor exclusivas. Mesmo que as chaves de qualquer cartão em particular sejam comprometidas, isso não levará ao uso massivo dessas chaves. Mas você precisa entender que a diversificação é uma meia medida e não protege os cartões únicos de quebrar e a possibilidade de modificar um aplicativo Android para interceptar e usar chaves diversificadas.
Transição para o nível de segurança MIFARE Plus e SL3
Para solucionar vulnerabilidades no CRYPTO1, a família de cartões MIFARE Plus foi desenvolvida. Os mapas na estrutura são semelhantes ao MIFARE Classic, apenas a criptografia de mapas é atualizada. Eles podem funcionar de dois modos:
- Modo de emulação MIFARE Classic (esse modo de operação é chamado de nível de segurança 1 ou SL1), que permite usá-los na infraestrutura existente de leitores de cartão e não requer modificações no software que funciona com cartões;
- Modo de nível de segurança 3 (SL3), que requer autorização para setores e criptografia da troca de dados usando o algoritmo AES com a adição opcional de uma inserção de segurança.
A vulnerabilidade do PRNG foi eliminada nessas placas e, portanto, no modo SL1, essas placas ainda são vulneráveis a ataques ao CRYPTO1 e, no modo SL3, atualmente não há ataques conhecidos.
Ao contrário do SL1, a autorização e criptografia no SL3 podem ser implementadas em software. Graças a isso, você pode se proteger de chaves de interceptação através do cliente Android. Para fazer isso, o servidor deve executar autorização e criptografia. Em seguida, as chaves não saem do servidor e o cliente Android simplesmente envia proxies de solicitações e respostas do cartão. Isso exigirá que o aplicativo se conecte à Internet, o que pode ser inconveniente, para que você possa configurar o cartão para que o setor seja lido com uma chave e o registro com outra chave. Em seguida, o usuário poderá visualizar informações sobre o cartão enquanto estiver offline e poderá repor o saldo ou comprar bilhetes somente on-line.
Não se esqueça que para a AES, a diversificação de chaves pode ser feita modificando o algoritmo para chaves de 16 bytes.
As placas de transporte existentes baseadas nas placas MIFARE Plus SL1 podem ser alteradas para o modo SL3 em dois estágios:
- A infraestrutura de dispositivos que trabalham com cartões (catracas, caixas de dinheiro, máquinas de venda automática, terminais) está sendo preparada para o trabalho com o MIFARE Plus. O software para leitores está sendo finalizado em termos de trabalho com cartões.
- Os cartões de transporte já emitidos com base no MIFARE Plus são transferidos para o modo SL3 - isso pode ocorrer durante o uso normal do cartão, por exemplo, passando por uma catraca ou conectando um cartão ao terminal de informações. O processo de transferência do cartão é invisível para o passageiro e leva cerca de 100 ms.
Mudar para MIFARE DESFire
A criptografia do cartão MIFARE DESFire é semelhante ao MIFARE Plus - antes de trabalhar com o aplicativo, a autorização em três etapas é realizada de acordo com um dos algoritmos para a escolha do emissor do cartão: DES, 3DES, AES. Outras trocas com o cartão ocorrem de forma criptografada com inserções de imitação opcionais.
O cartão é funcionalmente diferente do MIFARE Classic. A memória do cartão é organizada em um sistema de arquivos. Pode haver vários aplicativos em um mapa; cada aplicativo pode ter vários arquivos.

O trabalho com o cartão começa com a seleção do aplicativo pelo seu identificador e autorização para ele. A seguir, o trabalho com arquivos - crie, exclua, leia, escreva. Os arquivos podem ser de vários tipos, por exemplo, uma área plana de memória, saldo da carteira, um arquivo regravável ciclicamente.
A principal dificuldade da transição é que você precisa atualizar o software que funciona com cartões. É necessário passar do uso da memória dividida em setores para aplicativos e arquivos e, consequentemente, alterar a ordem de autorização de setores para autorização para o aplicativo e / ou arquivos. Em termos de hardware, os cartões impõem a mesma restrição à infraestrutura dos leitores que o MIFARE Plus.
A vantagem comparada ao MIFARE Plus é que é mais fácil implementar cartões de várias marcas com base no MIFARE DESFire - combinações diferentes de cartões em um meio: Troika-Strelka, Troika-Podorozhnik, cartões sociais com a capacidade de registrar bilhetes para transporte). No MIFARE Plus, isso é alcançado através da alocação administrativa de setores no mapa para várias aplicações. Aqui, cada sistema pode trabalhar com o aplicativo que ele precisa e pode não saber que existem outros aplicativos no mapa. A segunda vantagem é que tipos de arquivos adicionais permitem implementar alguns cenários especiais - por exemplo, reabastecer o saldo da carteira com uma chave de acesso e gastar dinheiro com o saldo na outra, ou reembolsar o valor gasto.
Atualmente, os fabricantes de cartões SIM (STM, Gemalto, G&D, Oberthur) têm cartões SIM disponíveis comercialmente e recursos de segurança integrados com emulação MIFARE DESFire.
O cartão Oyster (cartão de transporte público de Londres) foi transferido para o MIFARE DESFire em 2009. Desde 2010, os cartões MIFARE Classic não são mais utilizados. O cartão de transporte SUBE (Argentina) está em processo de transição para o MIFARE Plus SL3. No transporte público de Dublin, três tipos de cartões: Luas (bondes), Dublin Bus e DART (trem suburbano) - foram construídos com base no MIFARE Classic e substituídos por um cartão Leap já com base no MIFARE DESFire. As soluções de transporte modernas geralmente são criadas inicialmente em mídia segura.
Mudar para outros cartões de transporte (CALYPSO, CIPURSE, FeliCa)
Do ponto de vista da segurança, esses cartões são semelhantes aos cartões MIFARE Plus e DESFire - criptografia baseada em AES, autorização em três etapas, trabalho com simulações, armazenamento seguro de hardware -
Secure Access Module (SAM) , vários cartões podem emular o MIFARE Classic. Eles também funcionam com base na norma ISO / IEC 14443A.
MIFARE - campeão
Pesquisa ABI Q1 2017A participação dos cartões MIFARE nos transportes no mundo em 2017 foi de 75% e, segundo as previsões, até 2021 não cairá abaixo de 70%.
A participação do MIFARE no mundo é reduzida principalmente devido ao crescimento de Outros cartões, que incluem principalmente cartões bancários (EMV) e virtualização de cartões (alternando para smartphones) para substituir a função de operadora de bilhetes. Os cartões bancários são mais protegidos do que os cartões de transporte - mas você precisa pagar por isso. O atendimento de cartões bancários exige on-line, os leitores são mais caros devido aos requisitos de certificação bancária, o operador de transporte perde o fluxo de caixa ao repor seus cartões de transporte. Tudo isso cria um certo equilíbrio de forças, graças ao qual os dois padrões (MIFARE e EMV) encontram seus nichos e os ocupam.
Hoje, o volume de cartões de transporte em outros padrões que não o NXP (Calypso, CIPURSE) é inferior a 5%. Basicamente, essas tecnologias estão concentradas em países onde os mapas se desenvolveram historicamente - Japão e França - e até agora não foram além deles. Isso é compreensível - a criação de um ecossistema local para a produção e o suporte de cartões nem sempre é economicamente justificada e deve ser apoiada pelo mercado. É possível que a Rússia se junte a vários países que apoiaram esses padrões. Para isso, em primeiro lugar, é necessária uma solução política.
Clique nos links abaixo para obter mais informações sobre o Mifare Classic:
Conclusão
Teremos o maior prazer em responder às perguntas nos comentários do artigo e no instagram
@ pro.ticketing . Em janeiro de 2019, nossa empresa abriu várias
vagas para um novo projeto no campo de transporte em Moscou, incluindo a possibilidade de atrair
equipes de 3 a 4 pessoas . Foi aberto um
acelerador de startups no campo de novas tecnologias para pagamento e validação de viagens em transporte público.