Penjelasan Kode Bergulir

13

Bisakah seseorang menjelaskan bagaimana protokol kode bergulir seperti KeeLoq bekerja? Saya mengerti premis dasar bahwa mereka menggunakan kode yang berbeda setiap kali sehingga Anda tidak bisa hanya menggunakan serangan replay, tapi saya tidak mengerti bagaimana satu pihak memverifikasi kode yang benar dll.

Selanjutnya, bagaimana mereka melakukan sinkronisasi awal jika indeks ke dalam kode bergulir tidak diketahui / dibagikan sebelumnya?

Jika Anda harus menggunakan Keeloq sebagai contoh untuk menjelaskan itu baik-baik saja, tapi saya lebih suka penjelasan umum tentang kode bergulir.

NickHalden
sumber

Jawaban:

10

Kode bergulir memerlukan beberapa bagian agar berfungsi dengan benar. Di sini saya akan menjelaskan implementasi generik yang menggunakan semua bagian dengan cara tertentu. Sistem lain adalah variasi pada tema ini, tetapi umumnya menggunakan banyak teknik yang sama dengan cara yang sama. Daripada mencoba menggambarkan implementasi lengkap dan cara kerjanya sekaligus, saya akan menggambarkan sistem sederhana, dan menambah kompleksitas saat kita sampai kita mencapai sistem yang aman secara kriptografis.

Kode bergulir non kriptografi hanyalah sebuah pemancar dan penerima yang keduanya menggunakan generator nomor acak pseudo (PRNG) yang sama. Generator ini memiliki dua informasi penting: perhitungan, dan nomor yang dihasilkan sebelumnya. Perhitungan umumnya merupakan persamaan umpan balik linier yang dapat diwakili oleh satu angka. Dengan memberi makan PRNG dengan nomor sebelumnya, dan menjaga nomor umpan balik sama urutan nomor tertentu dihasilkan. Urutan tidak memiliki urutan berulang sampai melewati setiap angka yang bisa dihasilkan, dan kemudian mulai lagi dengan urutan yang sama.

Jika remote dan transmitter mengetahui nomor umpan balik, dan nomor saat ini, maka ketika remote mentransmisikan nomor berikutnya, penerima dapat mengujinya terhadap generatornya sendiri. Jika cocok, itu aktif. Jika tidak, ia akan menggulung melalui urutan sampai menemukan nomor yang dikirim jauh. Jika Anda menekan lagi remote, maka itu harus cocok, dan itu akan aktif karena transmisi sebelumnya sudah menyinkronkan generator nomor. Inilah sebabnya mengapa Anda terkadang harus menekan tombol buka kunci dua kali - penerima atau pemancar Anda tidak sinkron.

Itulah bagian bergulir dari kode. Jika PRNG cukup panjang, sangat sulit untuk menemukan nomor umpan balik tanpa banyak angka dalam urutan berturut-turut, yang sulit diperoleh dalam penggunaan normal. Tapi itu tidak aman secara kriptografis.

Selain itu, Anda menambahkan enkripsi khas. Pabrikan kendaraan menggunakan kunci rahasia khusus untuk pemancar dan penerima. Tergantung pada pabrikannya, Anda mungkin menemukan bahwa setiap model dan tahun memiliki kode yang berbeda, atau mereka mungkin membagikan kode tersebut di antara beberapa model kendaraan dan selama beberapa tahun. Yang menarik adalah bahwa masing-masing memerlukan remote yang berbeda untuk diisi, tetapi masalah dengan berbagi kode pada banyak model adalah bahwa jika rusak maka lebih banyak mobil yang rentan.

Di belakang enkripsi Anda memiliki info tombol, nomor yang dihasilkan PRNG, dan sedikit informasi tentang nomor umpan balik. Tidak cukup untuk membuat PRNG dari awal, tetapi cukup bahwa setelah sejumlah tombol ditekan, dan dengan beberapa informasi orang dalam tentang ruang terbatas, sejumlah umpan balik dapat melibatkan (sekali lagi, pabrikan, jalur khusus) kemudian penerima dapat, setelah beberapa pelatihan transmisi, tentukan nomor umpan balik, dan mulailah melacak PRNG untuk kendali jarak jauh itu.

Kode bergulir hanya dimaksudkan untuk menghentikan serangan replay. Enkripsi dimaksudkan untuk mengamankan kode bergulir agar tidak rusak. Dengan hanya satu atau yang lain sistem akan terlalu mudah rusak. Karena pabrikan mengontrol pemancar dan penerima, pelatihan tidak melibatkan kriptografi kunci publik atau apa pun yang terlibat secara khusus. Ini juga mencegah fob aftermarket bekerja di mobil dengan sistem jenis ini.

Kode bergulir tidak kebal. Sistem keeloq lama berhasil diserang hanya beberapa tahun yang lalu (setelah satu dekade digunakan) sehingga kode enkripsi pabrikan dapat ditemukan, dan kode bergulir dapat ditemukan dengan lebih mudah. Lebih awal dari itu telah diserang dengan cara yang memungkinkan orang untuk mengambil kendaraan tanpa benar-benar melanggar kode. Sebagai tanggapan, kunci enkripsi baru adalah 60 bit. Tidak seaman banyak sistem enkripsi modern, tetapi cukup aman sehingga mungkin akan bertahan bertahun-tahun sebelum rusak.

Adam Davis
sumber
Ah, saya pasti lupa bagian "tanpa urutan yang diulang" dari PRNG, itu sangat penting. Apa keuntungan mentransmisikan informasi yang memungkinkan penerima menentukan kode umpan balik? Itu tampaknya kurang aman daripada hanya memilih kode umpan balik dan membuat pemancar dan penerima yang dikenal ...
NickHalden
@NickHalden kode umpan balik berbeda untuk setiap jarak jauh, dan pelanggan akan ingin menambahkan lebih banyak remote lagi, atau mengganti remote yang hilang. Itu hanya diperlukan untuk pelatihan. Beberapa versi yang sedikit lebih aman memerlukan urutan tertentu dari penekanan tombol pada remote sebelum itu akan memancarkan info umpan balik tambahan, tetapi secara umum sistem keseluruhan cukup aman sehingga bahkan jika Anda memecahkan enkripsi Anda masih memerlukan lebih banyak informasi sebelum itu sedikit sedikit info sudah cukup bagi Anda untuk mendapatkan seluruh kode umpan balik.
Adam Davis
8

Saya pertama kali bertemu KeeLoq ketika meneliti chip di pembuka pintu garasi. The Microchip datasheet melakukan pekerjaan yang baik menjelaskan cara kerjanya.

Pendeknya:

  • penerima memelihara basis data semua pemancar, yang dikunci pada nomor seri mereka.
  • setiap pemancar dikaitkan dengan kunci enkripsi simetris (64 bit), yang ada di chip, dan juga di basis data penerima.
  • setiap pemancar dikaitkan dengan nomor urut siklik 16 bit, juga disimpan pada chip dan dalam basis data.
  • ketika pemancar diaktifkan, ia menambah nomor urut modulo 65536 (membungkus 16 bit), dan mengirimkan paket yang terdiri dari bitmask yang mewakili tombol apa yang ditekan, ID seri, dan versi terenkripsi dari nomor seri.
  • penerima cocok dengan nomor seri dalam database, mengeluarkan kunci dan mendekripsi nomor seri.
  • nomor seri harus baru; itu tidak bisa menjadi nomor seri yang baru saja digunakan, yang menjaga terhadap serangan replay. (Lihat Gambar 7.3 di lembar data).
  • jika nomor seri memverifikasi, maka penerima dapat mengaktifkan fungsionalitas berdasarkan topeng bit dari tombol apa yang ditekan.
  • jika nomor seri baru lebih dari 16 nilai (pengguna menekan tombol berkali-kali secara tidak sengaja saat jauh dari penerima) maka goyangan tambahan harus dilakukan untuk menyinkronkan kembali, yang memerlukan tombol tekan ekstra. (Pengguna akan melakukan tekan tombol ekstra, percaya ada penerimaan yang buruk).

Menambahkan pemancar baru ke basis data penerima agak analog, pada tingkat tinggi, dengan metode konfigurasi tombol-tekan untuk menambahkan klien ke titik akses Wi-Fi. Penerima entah bagaimana dikatakan dimasukkan ke dalam mode di mana ia menerima pemancar baru.

Pemancar baru dapat diterima dari informasi yang dikirimkan dalam pesan aktivasi biasa, jika penerima dan pemancar berbagi ID pabrikan rahasia yang sama. Ini karena kunci enkripsi 64 bit berasal dari ID pabrikan dan informasi serial penerima. (Lihat Bagian 7.1).

Ada alternatif yang lebih aman untuk ini: "Secure Learn". Ini dimulai dengan cara khusus pada pemancar (tiga tombol ditekan sekaligus). Pemancar mengirimkan paket khusus: nilai seed 60 bit dari mana kunci enkripsi diturunkan, mungkin tidak tergantung pada ID pabrikan atau nomor seri.

Ketika penerima tidak dalam mode belajar, tentu saja ia menolak transmisi dari pemancar yang tidak diketahuinya.

Kaz
sumber