Bagian 6.1 dari spesifikasi CAN :
BIT ERROR: Unit yang mengirim sedikit di bus juga memonitor bus. BIT ERROR harus dideteksi pada waktu bit itu, ketika nilai bit yang dipantau berbeda dari nilai bit yang dikirim. Pengecualian adalah pengiriman bit 'resesif' selama stream bit stuffed dari ARBITRATION FIELD atau selama ACK SLOT.
Jadi, simpul yang pertama mentransmisikan '1' ketika yang lain mentransmisikan '0' akan mencatat Kesalahan Bit dan kemudian sinyal kesalahan seperti biasa - dengan mengirimkan flag kesalahan (lihat Bagian 3.1.3), seperti yang dijelaskan secara formal dalam Bagian 6.2.
Secara informal, jika simpul itu aktif kesalahan (yang seharusnya merupakan kasus biasa) akan mengirimkan bendera kesalahan 6 bit dominan, yang juga akan dideteksi oleh semua simpul lain (sebagai kesalahan barang). Ini memiliki efek menghancurkan pesan itu sepenuhnya:
- tidak ada yang akan menerimanya
- tidak satu pun pemancar akan berpikir bahwa mereka telah berhasil mentransmisikan apa pun.
Setiap pemancar kemudian akan mencoba mentransmisikan ulang - tergantung pada waktu yang tepat dari transmisi ulang, yang satu mungkin mulai cukup sebelum yang lain mendapatkan kendali bus. Kalau tidak, urutan yang sama dapat terjadi lagi. (Atau pesan dengan prioritas lebih tinggi dapat membuat keduanya tidak aktif untuk sementara waktu!)
Jawaban yang diperluas terinspirasi oleh jawaban @ clabbacchio di bawah ini.
Anda menyebutkan "node jahat", dan clabbacchio membuat poin yang valid bahwa jika dua node mentransmisikan pada waktu yang berbeda, masing-masing penerima perlu memutuskan apa yang harus dilakukan dengan beberapa reseptinya.
Ini ditunjukkan oleh retas tahun lalu . Makalah ini membahas, di bagian "spesifik PSCM", bagaimana penyerang dapat menyinkronkan pesan biasa di bus dan memainkan pesan jahat mereka tepat sebelum pesan yang akan dikirim ECU "baik". ECU penerima menerima pesan sebelumnya, memperbarui penghitung pesannya dan kemudian membuang pesan "baik" sebagai kesalahan, karena penghitung pesannya tidak bertambah.