UID untuk kontrol akses

Saya menggunakan Mifare Ultralight C untuk membuat sistem kontrol akses. Metode yang saya gunakan didasarkan pada UID kartu. Saya dapat membaca UID dengan NFC Reader (SeeedStudio shield di Arduino UNO) Namun, UID tidak dapat diandalkan karena ada kartu UID yang dapat ditulis di pasaran. Jadi saya pikir saya harus mengamankan koneksi dengan otentikasi 3DES dan kemudian memblokir pembacaan dari 0x00 yang berasal dari byte nomor seri pertama. Apakah ini cara yang benar untuk menerapkan kontrol akses?


person Bao Doan    schedule 06.01.2014    source sumber


Jawaban (1)


Anda tidak dapat memblokir akses baca ke UID. UID adalah bagian tetap dari fase anti-tabrakan/pencacahan tag ISO 14443 sehingga tag akan selalu mengungkapkan informasi tersebut. Selain itu, Ultralight C mengizinkan perlindungan baca/tulis hanya dari halaman 3 hingga akhir memori.

Yang dapat Anda lakukan adalah sebagai berikut:

  1. Gunakan UID untuk mengidentifikasi tag.
  2. Dapatkan kunci khusus tag berdasarkan kunci master dan UID tag.

    Ktag = fkey_derivation(UIDtag, Kmaster)

  3. Gunakan kuncitag tersebut sebagai kunci 3DES untuk autentikasi Ultralight C.

  4. Lindungi (baca dan tulis) seluruh memori data tag.
  5. Mungkin menyimpan beberapa informasi autentikasi tambahan pada tag (misalnya tanda tangan pada UID). Namun, Anda harus ingat bahwa setelah autentikasi, operasi baca tidak dienkripsi atau dilindungi integritas. Ini berarti bahwa penyerang berpotensi mengambil data yang disimpan pada sebuah tag dengan mendengarkan komunikasi antara tag yang sah dan pembaca yang sah. Selain itu, penyerang mungkin dapat mengautentikasi dengan tag yang sah dan kemudian mencegat perintah baca lebih lanjut untuk mengembalikan data yang dimanipulasi. Pada dasarnya ini berarti Anda harus menahan diri untuk tidak menyimpan informasi izin apa pun yang tidak dilindungi integritas pada tag tersebut.

Dan terakhir: MIFARE Ultralight C tentu saja tidak dimaksudkan untuk digunakan sebagai kontrol akses!

person Michael Roland    schedule 07.01.2014
comment
Jadi saya harus melakukan seperti ini: Pembaca: membaca UID, lalu menghitung dengan Kmaster yang dikenal untuk menyediakan Ktag, setelah itu, menggunakan Ktag tersebut untuk mengautentikasi dengan Ultralight C. Jika diautentikasi =› berikan akses. Ultralight C: tulis Kmaster saya sendiri (dibagikan dengan pembaca) ke dalam tag, lalu lindungi semua info agar tidak dibaca oleh pembaca lain. Apakah saya memahaminya dengan benar? Pertanyaan tentang 3DES: jadi apa fungsi 3DES di tag? Apakah itu hanya memberi kita slot untuk menyimpan cukup 3 Kunci seperti yang saya mengerti? Dan 1 hal lagi, di datasheet, kita memiliki 16 byte untuk menyimpan 2 kunci (8 byte/masing-masing). Saya bingung tentang ini sekarang - person Bao Doan; 09.01.2014
comment
Oh, sekarang saya ajukan pertanyaan lain: Jadi bagaimana tag bisa diautentikasi dengan Ktag yang kita hitung, apakah berfungsi untuk menemukan Ktag itu secara otomatis? - person Bao Doan; 09.01.2014
comment
Terima kasih sebelumnya, Anda adalah penyelamat saya karena saya tersesat untuk sementara waktu :) - person Bao Doan; 09.01.2014
comment
K_tag vs. K_master: Tidak, Anda perlu melakukan penurunan kunci yang sama saat mempersonalisasi tag (yaitu saat pertama kali menulis kunci ke tag). Jadi setiap tag Anda sebenarnya berisi kunci turunan dan bukan kunci master. - person Michael Roland; 09.01.2014
comment
3DES pada dasarnya adalah gabungan dari tiga operasi DES tunggal: ENC_3DES(x) = ENC_DES(DEC_DES(ENC_DES(x, K_1), K_2), K_3). (Untuk dekripsi 3DES, operasi enkripsi dan dekripsi DES adalah sebaliknya.) Ada dua versi (satu kurang aman dan satu lagi lebih aman): 3DES 2 kunci dan 3DES 3 kunci. Dalam 3DES 3-kunci, K_1 != K_2 != K_3. Dalam 2-kunci 3DES K_1 != K_2 dan K_3 = K_1. Ultralight C menggunakan 2 kunci 3DES, jadi dua kunci 64 bit (sebenarnya hanya 56 bit dengan beberapa bit paritas) adalah K_1 dan K_2, dimana K_1 digunakan untuk dua operasi enkripsi DES dan K_2 digunakan untuk operasi dekripsi DES. - person Michael Roland; 09.01.2014
comment
Hai, terima kasih atas balasan cepat Anda :) Selain itu, penyerang mungkin dapat mengautentikasi dengan tag yang sah dan kemudian mencegat perintah baca lebih lanjut untuk mengembalikan data yang dimanipulasi. Maksud Anda tentang metode seperti brute-force untuk mencoba banyak kunci Ktag yang berbeda untuk autentikasi dengan tag kami? - person Bao Doan; 10.01.2014
comment
Karena ini adalah NFC, saya bermaksud menerapkan hal yang sama untuk ponsel berkemampuan NFC, namun ponsel tersebut tidak memiliki UID uniknya, dapatkah Anda memberi saya beberapa saran? - person Bao Doan; 10.01.2014
comment
Maksud Anda ponsel menggantikan tag atau ponsel digunakan untuk memverifikasi tag? - person Michael Roland; 10.01.2014
comment
Tidak, dengan pernyataan itu yang saya maksud adalah Anda tidak boleh mempercayai data apa pun yang Anda baca dari tag yang dianggap asli bahkan setelah otentikasi. - person Michael Roland; 10.01.2014
comment
Saya masih belum paham sepenuhnya apa yang Anda sebutkan :) Dan menurut saya jangkauan NFC-nya sangat kecil (sekitar 4 hingga 10cm) sehingga peluang intersepsinya juga kecil kan? Apakah Anda punya saran tentang cara menerapkan kontrol akses? - person Bao Doan; 10.01.2014
comment
Ya, telepon menggantikan tag. Maksud saya, kita dapat menggunakan telepon untuk mengakses :) - person Bao Doan; 10.01.2014
comment
Uhm, itu tidak semudah itu. Tergantung pada model ponsel dan sistem operasi, saya sarankan Anda melihat emulasi kartu host (emulasi cand perangkat lunak), penerapan tumpukan protokol peer-to-peer (+ LLCP + SNEP) atau penerapan mode pembaca terbalik (jika Anda Pelindung pembaca NFC menggunakan PN532, menurut saya itu opsi termudah). Namun, pembahasan tersebut jauh melampaui pertanyaan awal sekarang. - person Michael Roland; 10.01.2014
comment
Dengan seorang penyerang, saya lebih memikirkan penyerang yang memiliki token akses yang sah. Sekarang jika token (dalam memori datanya) mengkodekan izin (misalnya Anda memiliki dua pintu dan keduanya menggunakan kunci master yang sama untuk mendapatkan kunci tag, dan memori data berisi tanda yang menunjukkan kepada pembaca yang mana dari dua pintu tersebut yang seharusnya untuk membuka kunci), maka penyerang dapat melakukan langkah autentikasi dengan tag asli dan mengalihkan semua komunikasi lebih lanjut ke tag yang berisi tanda yang tepat untuk membuka kunci pintu apa pun yang mereka inginkan (bahkan jika tag asli tidak berisi tanda izin tersebut). - person Michael Roland; 10.01.2014
comment
Niatnya saya terapkan pada sistem immobilizer (untuk menggerakkan satu sepeda motor), sehingga kita bisa menggunakan banyak tag asli, namun membuka atau menggerakkan satu sistem saja (satu sepeda motor). Kalau begitu, menurut saya akses lebih lanjut untuk mengemudikan banyak orang lainnya (misalnya 2 pintu sebagai contoh Anda) tidak akan menjadi masalah. - person Bao Doan; 10.01.2014
comment
Tentang implementasi telepon: ya, perisai saya menggunakan PN532, jadi bagaimana cara menerapkannya? karena ini akan menjadi langkah selanjutnya dalam kemajuan saya setelah menyelesaikan tag. - person Bao Doan; 10.01.2014
comment
Seperti yang saya tulis sebelumnya, menggunakan telepon jauh melampaui pertanyaan awal Anda. Saya sudah memberi Anda beberapa istilah pencarian yang berguna untuk memulainya. - person Michael Roland; 10.01.2014
comment
jadi tentang penerapan saya mengendarai satu sepeda motor seperti yang saya sebutkan, apakah menurut Anda keamanannya oke? Bisakah seseorang mengakses sistem? Bisakah kita mengimplementasikan sesuatu yang akan dihasilkan setiap kali ada komunikasi antara card reader dan tag sehingga informasinya hanya pada saat itu saja? Misalnya, buat beberapa tantangan acak dan terima respons yang sesuai - person Bao Doan; 11.01.2014
comment
Hai, mengenai ponsel, bisakah Anda memberi saya tanggapan cepat tentang metode meniru kartu ketika saya menggunakan ponsel seperti Nexus 5 dengan Android Kitkat 4.4, atau menggunakan tablet Nexus 7 dengan Android Kitkat 4.4 - person Bao Doan; 15.01.2014
comment
dan untuk ponsel yang mendukung elemen aman, metode mana yang akan saya gunakan? - person Bao Doan; 15.01.2014
comment
hai, saya tidak begitu jelas tentang otentikasi 3DES, seperti yang Anda katakan bahwa saya perlu mendapatkan Ktag, jadi Ktag ini diturunkan menggunakan 3DES atau tidak? Dan jika ini diturunkan menggunakan 3DES, dimana saya menyimpan Ktag di Ultralight C, dari 0x2C hingga 0x2F dimana penyimpanan kuncinya? dan apa dukungan 3DES pada Ultralight C, apakah mampu menyimpan Ktag atau memiliki hardware/mesin untuk mengenkripsi/mendekripsi Ktag atau Kmaster. Saya sedikit membingungkan - person Bao Doan; 15.01.2014
comment
Android 4.4: Pencarian Emulasi Kartu Host akan membantu Anda memulai. - person Michael Roland; 15.01.2014
comment
Elemen Aman: Kecuali jika elemen aman itu milik Anda (yang biasanya tidak berlaku untuk elemen aman tertanam dan -- kecuali Anda adalah operator jaringan seluler -- juga tidak untuk kartu SIM/UICC) Anda tidak dapat menggunakannya karena kurangnya kemampuan untuk menginstal aplikasi Anda ke dalamnya. - person Michael Roland; 15.01.2014
comment
Mendapatkan Ktag: Baca artikel ini sebagai permulaan. Anda biasanya menggunakan KDF berdasarkan beberapa fungsi hash kriptografi saat ini. - person Michael Roland; 15.01.2014
comment
Otentikasi 3DES ke Ultralight C: Dapatkan lembar data Ultralight C lengkap dari vendor (NXP). Perhatikan bahwa ini mungkin memerlukan NDA. - person Michael Roland; 15.01.2014
comment
Apakah 3DES adalah KDF? dan setiap Ktag tertentu akan ditulis ke dalam setiap tag yang sesuai, bukan? - person Bao Doan; 15.01.2014
comment
3DES saja tidak cocok dengan KDF (Google untuk KDF dan Anda harus menemukan beberapa yang cocok!) Bagian kedua benar, setiap Ktag harus ditulis ke area kunci dari tag yang sesuai selama langkah personalisasi. - person Michael Roland; 15.01.2014
comment
Hai, Untuk implementasi ini saya masih bingung satu hal yaitu kita menggunakan 3des pada reader untuk membuat Ktag dan kemudian menggunakan kunci itu untuk mengautentikasi, jadi di mana dekripsi 3des akan diterapkan? - person Bao Doan; 25.03.2014
comment
Dan jika seseorang mencoba mengkloning tag tersebut, mereka dapat mengkloning UID kemudian mendengarkan komunikasi untuk mendapatkan Ktag dan menuliskannya ke dalam tag yang dikloning, kemudian mereka memiliki tag yang sama persis dengan tag sebenarnya, bagaimana kita dapat mencegah hal itu terjadi? - person Bao Doan; 25.03.2014
comment
Jika Anda menggunakan 3DES untuk menghasilkan Ktag, maka Anda jelas tidak menggunakan Google untuk KDF seperti yang saya sarankan (jika tidak, Anda jelas akan memilih beberapa bentuk fungsi hash satu arah). Karena Anda tidak benar-benar mengirim Ktag ke tag selama autentikasi, penyerang tidak dapat dengan mudah mengekstrak kunci tersebut dari komunikasi tersebut. - person Michael Roland; 25.03.2014
comment
Saya sudah mencari KDF, tapi masih bingung. Menurut saya, KDF atau 3DES keduanya digunakan untuk membuat kunci kompleks dari kunci yang lebih sederhana. Apa pun pilihannya, kita akan mendapatkan Ktag yang kompleks, dan kita menggunakan Ktag tersebut untuk menulis ke dalam kunci autentikasi tag tersebut. Jadi, betapapun rumitnya Ktag, ketika kita berkomunikasi untuk mengautentikasi, itu adalah Ktag yang asli, dan jika seseorang mencoba memalsukan UID dari tag tersebut, maka ia dapat mendengarkan Ktag yang sesuai dari pembaca, dan mereka bisa mendapatkannya. Ktag bahkan tidak tahu cara menghasilkannya. Akhirnya, mereka memalsukan tag tersebut sepenuhnya. Apakah saya melewatkan sesuatu di sini? - person Bao Doan; 30.03.2014
comment
@BaoDoan Ya, Anda kehilangan prinsip perjanjian kunci yang diautentikasi kata sandi. - person Michael Roland; 30.03.2014
comment
Bisa dijelaskan lebih lanjut, karena dokumentasi lengkap Mifare Ultralight C memerlukan NDA, tidak mudah mendapatkannya jadi saya salah paham beberapa poin - person Bao Doan; 30.03.2014
comment
Hai, bisakah Anda menjelaskan secara singkat komunikasi antara dua perangkat? Saya telah mencari-cari untuk sementara waktu tetapi tidak dapat memahami apa yang saya lewatkan :( - person Bao Doan; 06.04.2014