Standar kartu contactless MIFARE Classic dibuat lebih dari 20 tahun yang lalu dan, meskipun terdapat sejumlah kelemahan sejak itu, kartu ini masih banyak digunakan (khususnya di Moskow dan St. Petersburg). Dalam artikel ini, kami akan mengingat kerentanan mana yang ditemukan dan menjelaskan cara memperbaikinya.
Sumber: Instagram @ pro.ticketingSecara tradisional, untuk artikel-artikel semacam itu, kami ingat bahwa pemalsuan dan penjualan tiket di Rusia dituntut berdasarkan hukum (Pasal 327 dan 165 KUHP Federasi Rusia), dan mendesak pembaca untuk tetap berada di sisi terang pasukan.
Struktur Klasik MIFARE
Standar MIFARE Classic NXP adalah sekumpulan kartu. Ini termasuk MIFARE Classic 1K, 4K, EV1 1K, EV1 4K, ID MIFARE, MIFARE Mini. Selain itu, standar ini dapat ditiru oleh kartu NXP lain yang lebih baru (MIFARE Plus, JCOP dan lainnya).
Operasi kartu dengan pembaca didasarkan pada standar ISO 14443A, frekuensi 13,56 MHz.
Kartu MIFARE Classic 1K menyediakan area memori yang diatur dalam sektor 64 byte. Setiap sektor dibagi menjadi 4 blok dengan ukuran 16 byte:

Untuk kartu 4K, 2048 byte pertama disusun menjadi 32 sektor dengan 64 byte, dan sisanya menjadi 8 sektor dengan 256 byte (atau 16 blok). Blok terakhir dari masing-masing sektor disebut trailer sektor, yang berisi kunci dan parameter akses ke sektor tersebut. Blok nol dari sektor nol adalah blok khusus, dikunci untuk penulisan, ini berisi pengidentifikasi dan informasi dari produsen kartu. Agar satu kartu memiliki beberapa kegunaan yang berbeda - misalnya, untuk kartu sosial dengan informasi tentang manfaat, metro dan tiket kereta api - blok yang tersisa dari catatan sektor nol bagaimana setiap sektor digunakan -
Direktori Aplikasi MIFARE (MAD) .
Sebelum mengakses sektor ini untuk membaca atau menulis, perlu otorisasi menggunakan kunci 6-byte. Otorisasi terjadi sesuai dengan protokol tiga langkah yang mirip dengan yang dijelaskan dalam bab 5.2.2. standar ISO / IEC 9798-2: 1999. Algoritme enkripsi streaming milik CRYPTO1 digunakan:

- Pembaca mengirimkan permintaan otorisasi, yang menunjukkan jumlah sektor di mana otorisasi terjadi.
- Kartu membaca kunci akses dari memori internal, menghasilkan urutan acak dan mengembalikannya ke pembaca.
- Pembaca menghitung respons menggunakan kunci akses sektor dan algoritma enkripsi CRYPTO1, kemudian mengirimkannya dengan urutan acak baru yang dihasilkan.
- Kartu memeriksa respons yang dihitung oleh pembaca. Kemudian menghitung respons terhadap panggilan pembaca dan mengembalikannya.
- Pembaca memeriksa respons dari kartu.
Transmisi lebih lanjut dari konten sektor dilakukan dalam bentuk terenkripsi. Jika Anda perlu masuk ke sektor lain (yang disebut otorisasi sekunder), maka otorisasi ulang dilakukan. Perbedaan utama adalah bahwa seluruh pertukaran dienkripsi terlebih dahulu dengan yang lama dan kemudian dengan kunci yang baru.
Kerentanan Dikenal MIFARE Klasik
Peta kriptografi diteliti dengan baik. Kerentanan implementasi kartu pseudo random number generator (PRNG) dan kerentanan algoritma CRYPTO1 ditemukan. Dalam praktiknya, kerentanan ini digunakan dalam serangan berikut:
- Sisi gelap - serangan mengeksploitasi kerentanan PRCH. Bekerja pada kartu MIFARE Classic hingga generasi EV1 (di EV1, kerentanan PRNG telah dihapus). Untuk serangan, Anda hanya perlu peta, Anda tidak perlu tahu kuncinya.
- Nested - attack mengeksploitasi kerentanan CRYPTO1. Serangan dilakukan pada otorisasi sekunder, jadi untuk serangan Anda perlu mengetahui satu kunci kartu yang valid. Dalam praktiknya, untuk sektor nol, mereka sering menggunakan kunci standar untuk bekerja dengan MAD - mereka memulainya. Berfungsi untuk semua kartu di CRYPTO1 (MIFARE Classic dan emulasi). Serangan itu ditunjukkan dalam artikel "Kerentanan Peta Psyllium: Kerentanan dalam Transportasi Darat St. Petersburg" kartu.
- Serangan dengan mendengarkan pertukaran - serangan menggunakan kerentanan CRYPTO1. Untuk menyerang, Anda perlu menguping otorisasi utama antara pembaca dan kartu. Ini membutuhkan peralatan khusus. Berfungsi untuk semua kartu di CRYPTO1 (MIFARE Classic dan emulasi). Serangan itu ditunjukkan dalam artikel "Hacking kartu transportasi Citycard (Nizhny Novgorod)".
Semua ini dalam praktiknya memungkinkan Anda untuk mendapatkan kunci akses ke semua sektor kartu, hanya memiliki kartu di tangan, diinisialisasi dengan kunci akses. Selanjutnya, serangan replay pada isi kartu dapat dilakukan atau klon kartu dapat dibuat pada blank khusus dengan pengenal kartu yang dapat ditulis ulang.
Selain itu, ada kerentanan dalam infrastruktur kunci akses. Karena kriptografi pada CRYPTO1 diimplementasikan pada sisi pembaca kartu (CRYPTO1 hanya diimplementasikan dalam perangkat keras), maka mengikuti kunci akses:
- baik ditransfer ke pembaca sebelum bekerja dengan kartu,
- baik disimpan pada pembaca itu sendiri dalam penyimpanan perangkat keras yang aman (misalnya, MIFARE SAM ),
- baik disimpan dalam memori read-only pembaca.
Dan jika dalam peralatan khusus seperti terminal informasi atau pintu putar Anda dapat menggunakan penyimpanan kunci perangkat keras yang aman, dalam kasus aplikasi Android hanya ada opsi untuk mentransfer kunci dan menyimpannya dalam memori perangkat. Ini memungkinkan untuk mencegat kunci-kunci ini dengan meretas aplikasi atau menganalisis lalu lintas aplikasi. Apa yang ditunjukkan dalam artikel "Studi keamanan kartu Troika".
Metode Manajemen Kerentanan MIFARE Classic
Diversifikasi Kunci Akses
Diversifikasi adalah proses mendapatkan kunci akses dengan kunci master menggunakan beberapa data input yang unik untuk kartu. Proses mendapatkan kunci dapat diimplementasikan dalam perangkat lunak aplikasi yang bekerja dengan pembaca, atau dengan menggunakan modul SAM.
Misalnya, ini bisa berfungsi seperti ini:
- Sebagai input untuk diversifikasi, pengidentifikasi kartu dan nomor sektor digunakan, kunci yang ingin kami terima;
- Data ini dienkripsi (dalam modul SAM atau perangkat lunak aplikasi) dengan kunci master, hasilnya dipotong hingga 6 byte dan digunakan sebagai kunci akses ke sektor terkait.

Akibatnya, setiap kartu menerima kunci akses sektor uniknya. Bahkan jika kunci untuk kartu tertentu dikompromikan, ini tidak akan mengarah pada penggunaan besar-besaran kunci ini. Tetapi Anda perlu memahami bahwa diversifikasi adalah ukuran setengah dan tidak melindungi kartu tunggal dari kerusakan dan kemungkinan memodifikasi aplikasi Android untuk mencegat dan menggunakan kunci yang beragam.
Transisi ke tingkat keamanan MIFARE Plus dan SL3
Untuk mengatasi kerentanan dalam CRYPTO1, keluarga kartu MIFARE Plus dikembangkan. Peta dalam struktur mirip dengan MIFARE Classic, hanya kriptografi peta yang diperbarui. Mereka dapat bekerja dalam dua mode:
- Mode emulasi Classic MIFARE (mode operasi ini disebut Keamanan level 1 atau SL1), yang memungkinkan Anda menggunakannya pada infrastruktur pembaca kartu yang ada dan tidak memerlukan modifikasi pada perangkat lunak yang bekerja dengan kartu;
- Mode keamanan level 3 (SL3), yang membutuhkan otorisasi untuk sektor dan enkripsi pertukaran data menggunakan algoritma AES dengan tambahan opsional dari insert keamanan.
Kerentanan PRNG dihilangkan pada kartu-kartu ini, dan dengan demikian, dalam mode SL1, kartu-kartu ini masih rentan terhadap serangan terhadap CRYPTO1, dan dalam mode SL3 saat ini tidak ada serangan yang diketahui.
Tidak seperti SL1, otorisasi dan enkripsi dalam SL3 dapat diimplementasikan dalam perangkat lunak. Berkat ini, Anda dapat melindungi diri dari mencegat kunci melalui klien Android. Untuk melakukan ini, server harus melakukan otorisasi dan enkripsi. Maka kunci tidak meninggalkan server, dan klien Android hanya proksi permintaan dan tanggapan dari kartu. Ini akan membutuhkan aplikasi untuk terhubung ke Internet, yang dapat merepotkan, sehingga Anda dapat mengonfigurasi kartu sehingga sektor tersebut dibaca dengan satu kunci dan catatan dengan kunci lain. Kemudian pengguna akan dapat melihat informasi tentang kartu saat offline, dan ia akan dapat mengisi saldo atau membeli tiket hanya secara online.
Jangan lupa bahwa untuk diversifikasi kunci AES dapat dilakukan dengan memodifikasi algoritma untuk kunci dengan panjang 16 byte.
Kartu transportasi yang ada berdasarkan kartu MIFARE Plus SL1 dapat dialihkan ke mode SL3 dalam dua tahap:
- Infrastruktur perangkat yang bekerja dengan kartu (pintu putar, meja kas, mesin penjual otomatis, terminal) sedang dipersiapkan untuk bekerja dengan MIFARE Plus. Perangkat lunak untuk pembaca sedang diselesaikan dalam hal bekerja dengan kartu.
- Kartu transport yang sudah dikeluarkan berdasarkan MIFARE Plus ditransfer ke mode SL3 - ini dapat terjadi selama penggunaan normal kartu, misalnya, melewati pintu putar atau memasang kartu ke terminal informasi. Proses transfer kartu tidak terlihat oleh penumpang dan membutuhkan waktu sekitar 100 ms.
Beralih ke MIFARE DESFire
Kriptografi kartu MIFARE DESFire mirip dengan MIFARE Plus - sebelum bekerja dengan aplikasi, otorisasi tiga langkah dilakukan sesuai dengan salah satu algoritma untuk memilih penerbit kartu: DES, 3DES, AES. Pertukaran lebih lanjut dengan kartu terjadi dalam bentuk terenkripsi dengan sisipan imitasi opsional.
Kartu ini secara fungsional berbeda dari MIFARE Classic. Memori kartu diatur dalam sistem file. Mungkin ada beberapa aplikasi di peta, setiap aplikasi mungkin memiliki beberapa file.

Bekerja dengan kartu dimulai dengan pemilihan aplikasi dengan pengidentifikasi dan otorisasi untuknya. Berikutnya adalah pekerjaan dengan file - buat, hapus, baca, tulis. File dapat terdiri dari berbagai jenis, misalnya, area memori yang datar, saldo dompet, file yang dapat ditulis ulang secara siklis.
Kesulitan utama dari transisi adalah Anda perlu memutakhirkan perangkat lunak yang berfungsi dengan kartu. Penting untuk beralih dari penggunaan memori yang dibagi menjadi beberapa sektor ke aplikasi dan file, dan, dengan demikian, mengubah urutan otorisasi dari sektor ke otorisasi ke aplikasi dan / atau file. Dalam hal perangkat keras, kartu memberlakukan batasan yang sama pada infrastruktur pembaca seperti MIFARE Plus.
Keuntungan dibandingkan dengan MIFARE Plus adalah lebih mudah untuk mengimplementasikan kartu multi-branding berdasarkan MIFARE DESFire - kombinasi kartu yang berbeda pada satu media: Troika-Strelka, Troika-Podorozhnik, kartu sosial dengan kemampuan untuk merekam tiket transportasi). Di MIFARE Plus, ini dicapai melalui alokasi administratif sektor-sektor pada peta untuk berbagai aplikasi. Di sini, setiap sistem dapat bekerja dengan aplikasi yang dibutuhkan, dan mungkin tidak tahu bahwa ada aplikasi lain di peta. Keuntungan kedua adalah bahwa jenis file tambahan memungkinkan Anda untuk menerapkan beberapa skenario khusus - misalnya, untuk mengisi kembali saldo dompet dengan satu kunci akses, dan membelanjakan uang dari saldo di sisi lain atau mengembalikan jumlah yang dihabiskan.
Saat ini, produsen kartu SIM (STM, Gemalto, G&D, Oberthur) memiliki kartu SIM yang tersedia secara komersial dan fitur keamanan bawaan dengan emulasi MIFARE DESFire.
Kartu Oyster (kartu transportasi umum London) ditransfer ke MIFARE DESFire pada tahun 2009, sejak 2010, kartu MIFARE Classic belum digunakan. Kartu transportasi SUBE (Argentina) sedang dalam proses transisi ke MIFARE Plus SL3. Di angkutan umum Dublin, 3 jenis kartu: Luas (trem), Dublin Bus dan DART (suburban rail) - dibangun berdasarkan MIFARE Classic dan digantikan oleh satu kartu Leap yang sudah berdasarkan MIFARE DESFire. Solusi transportasi modern paling sering awalnya dibangun di atas media yang aman.
Beralih ke kartu transportasi lain (CALYPSO, CIPURSE, FeliCa)
Dari sudut pandang keamanan, kartu ini mirip dengan kartu MIFARE Plus dan DESFire - Kriptografi berbasis AES, otorisasi tiga langkah, bekerja dengan simulasi, penyimpanan perangkat keras yang aman -
Modul Akses Aman (SAM) , sejumlah kartu dapat meniru MIFARE Classic. Mereka juga bekerja berdasarkan standar ISO / IEC 14443A.
MIFARE - juara
ABI Research Q1 2017Bagian kartu MIFARE dalam transportasi di dunia pada tahun 2017 adalah 75% dan, menurut perkiraan, pada tahun 2021 tidak akan jatuh di bawah 70%.
Pangsa MIFARE di dunia berkurang terutama karena pertumbuhan kartu lain, yang terutama mencakup kartu bank (EMV) dan virtualisasi kartu (beralih ke smartphone) untuk menggantikan fungsi pembawa tiket. Kartu bank lebih terlindungi daripada kartu transportasi - tetapi Anda harus membayarnya. Melayani kartu bank memerlukan online, pembaca lebih mahal karena persyaratan sertifikasi perbankan, operator transportasi kehilangan arus kas dari pengisian kartu transportnya. Semua ini menciptakan keseimbangan kekuatan tertentu, berkat kedua standar (MIFARE dan EMV) menemukan relung mereka dan menempati mereka.
Volume kartu transportasi pada standar selain NXP (Calypso, CIPURSE) hari ini kurang dari 5%. Pada dasarnya, teknologi ini terkonsentrasi di negara-negara di mana peta secara historis dikembangkan - Jepang dan Prancis - dan sejauh ini belum melampaui mereka. Ini bisa dimengerti - penciptaan ekosistem lokal untuk produksi dan dukungan kartu tidak selalu dibenarkan secara ekonomi dan harus didukung oleh pasar. Mungkin saja Rusia akan bergabung dengan sejumlah negara yang telah mendukung standar-standar ini. Untuk ini, pertama-tama, solusi politik diperlukan.
Klik tautan di bawah untuk informasi lebih lanjut tentang Mifare Classic:
Kesimpulan
Kami akan dengan senang hati menjawab pertanyaan di komentar untuk artikel dan di instagram
@ pro.ticketing . Pada Januari 2019, perusahaan kami membuka sejumlah
lowongan untuk proyek baru di bidang transportasi di Moskow, termasuk kemungkinan menarik
tim yang terdiri dari 3-4 orang .
Akselerator startup di bidang teknologi baru untuk pembayaran dan validasi perjalanan di angkutan umum telah dibuka.