Skip to content
Encyklopedia protokołów | | 6 min czytania

CANbus - protokół magistrali CAN i bezpieczeństwo sieci przemysłowych

CANbus/CANopen (ISO 11898) - architektura magistrali różnicowej, broadcast bez uwierzytelniania, bramki CAN jako punkty segmentacji. Encyklopedia protokołów OT.

CANbusISO 11898fieldbusautomotive
CANbus - protokół magistrali CAN i bezpieczeństwo sieci przemysłowych

CAN (Controller Area Network) to protokół komunikacyjny opracowany w 1986 roku przez firmę Bosch do komunikacji wewnątrz pojazdów samochodowych. Pierwotnie zaprojektowany do zastąpienia rozbudowanych wiązek kablowych w samochodach, CAN szybko znalazł zastosowanie daleko poza motoryzacją - w automatyce przemysłowej (CANopen), maszynach mobilnych (SAE J1939), urządzeniach medycznych, systemach kolei i automatyce budynkowej. Standard jest zdefiniowany w ISO 11898 i obejmuje zarówno warstwę fizyczną (magistrala różnicowa), jak i warstwę łącza danych (arbitraż CSMA/CR).

CANopen, oparty na CAN, jest profilem aplikacji zdefiniowanym przez CiA (CAN in Automation) i szeroko stosowanym w maszynach CNC, robotach, systemach pakujących i windach.

Architektura protokołu

CAN działa na magistrali różnicowej (differential bus) z niedestrukcyjnym arbitrażem bitowym - unikalna cecha, dzięki której wiele węzłów może nadawać jednocześnie, a priorytet wiadomości jest rozstrzygany na poziomie sprzętowym bez kolizji.

ParametrCAN 2.0A / 2.0BCAN FD
Warstwa fizycznaMagistrala różnicowa (CAN_H, CAN_L), ISO 11898-2Jak CAN 2.0
PrędkośćDo 1 Mbps (CAN 2.0), typowo 125-500 kbpsDo 8 Mbps (faza danych)
TopologiaMagistrala z terminatorami 120 ohmJak CAN 2.0
UwierzytelnianieBrakBrak
SzyfrowanieBrakBrak
IntegralnośćCRC-15 (2.0) / CRC-17/21 (FD)Jak obok
Identyfikator11-bit (2.0A) lub 29-bit (2.0B)11/29-bit
Payload0-8 bajtów0-64 bajtów
ZasięgDo 1000 m (przy 50 kbps), 40 m (przy 1 Mbps)Jak CAN 2.0

Kluczowe cechy CAN z perspektywy bezpieczeństwa:

  • Broadcast - każda ramka wysłana na magistralę jest widoczna dla wszystkich węzłów. Nie ma adresowania - ramki są identyfikowane przez identyfikator (CAN ID), a każdy węzeł decyduje, które identyfikatory akceptuje
  • Brak adresu nadawcy - ramka CAN nie zawiera informacji o tym, kto ją wysłał. Odbiorca nie ma żadnej możliwości weryfikacji źródła
  • Arbitraż priorytetowy - niższy CAN ID = wyższy priorytet. Atakujący z węzłem o niskim CAN ID może dominować na magistrali

Zastosowania poza motoryzacją

W kontekście OT i automatyki przemysłowej CAN/CANopen jest stosowany w:

  • Maszyny CNC i roboty - komunikacja między kontrolerem a napędami serwo, enkoderami, modułami I/O
  • Maszyny pakujące i drukarskie - synchronizacja osi, sterowanie siłownikami
  • Windy i schody ruchome - komunikacja między kontrolerem kabiny, drzwi, napędem
  • Pojazdy specjalne - maszyny budowlane, rolnicze, pojazdy militarne (SAE J1939)
  • Systemy medyczne - urządzenia diagnostyczne, roboty chirurgiczne

TIP

W środowiskach przemysłowych CANbus jest często “ukryty” wewnątrz maszyn - nie widoczny na schematach sieci OT, ale dostępny przez porty diagnostyczne (złącza OBD-II w pojazdach, porty serwisowe w maszynach). Każdy port diagnostyczny CAN to potencjalny punkt wejścia do magistrali wewnętrznej maszyny.

Ocena bezpieczeństwa

CAN został zaprojektowany z myślą o niezawodności i determinizmie w zamkniętych systemach embedded, nie o bezpieczeństwie komunikacji. Brak jakichkolwiek mechanizmów bezpieczeństwa jest konsekwencją założenia, że magistrala jest fizycznie zamknięta wewnątrz obudowy maszyny lub pojazdu.

Fundamentalne podatności:

  • Brak uwierzytelniania - każdy węzeł na magistrali może wysyłać ramki z dowolnym CAN ID. Nie ma sposobu na weryfikację, czy ramka pochodzi z uprawnionego źródła
  • Brak szyfrowania - dane przesyłane jawnie. Podłączenie analizatora CAN (np. PCAN-USB, koszt ok. 200 EUR) pozwala na pełny podsłuch
  • Broadcast bez filtrowania - każdy węzeł widzi wszystkie ramki na magistrali
  • Brak identyfikacji nadawcy - protokół nie przewiduje pola source address. Atakujący może podszywać się pod dowolny węzeł
  • Bus-off attack - celowe generowanie błędów może wymusić przejście węzła w stan bus-off (odłączenie od magistrali), skutecznie eliminując go z komunikacji

Scenariusze ataków na CAN w środowisku przemysłowym:

  1. Spoofing - wstrzyknięcie ramek z CAN ID kontrolera - napędy serwo wykonują polecenia atakującego
  2. Fuzzing - wysyłanie losowych ramek CAN w celu wywołania nieprzewidywalnego zachowania maszyny
  3. Replay - nagranie sekwencji ramek CAN podczas normalnej pracy i odtworzenie ich w innym kontekście
  4. DoS przez dominowanie magistrali - ciągłe nadawanie ramek o najwyższym priorytecie (CAN ID 0x000) blokuje komunikację wszystkich innych węzłów

Segmentacja i ochrona

Ochrona sieci CAN opiera się na izolacji fizycznej, bramkach CAN jako punktach kontrolnych i monitoringu anomalii.

Bramki CAN (CAN gateways) jako punkty segmentacji:

  1. Separacja domen CAN - bramka CAN łączy dwa lub więcej segmentów magistrali, selektywnie przepuszczając ramki na podstawie CAN ID. To najważniejszy mechanizm segmentacji
  2. Filtrowanie na bramce - whitelist dozwolonych CAN ID w każdym kierunku. Bramka blokuje ramki o identyfikatorach nieoczekiwanych w danym segmencie
  3. Rate limiting - bramka może ograniczać częstotliwość ramek o danym CAN ID, wykrywając próby floodingu
  4. Galwaniczna izolacja - bramki CAN powinny zapewniać izolację galwaniczną między segmentami

Ochrona fizyczna:

  1. Porty diagnostyczne - złącza serwisowe CAN (OBD-II, porty na szafie maszyny) powinny być fizycznie zabezpieczone i dostępne wyłącznie dla autoryzowanego personelu
  2. Obudowy maszyn - w maszynach CNC i robotach magistrala CAN jest wewnątrz obudowy. Kontrola integralności obudowy (zamki, czujniki tamper) chroni przed fizycznym dostępem
  3. Kable - trasy kablowe CAN w zamkniętych kanałach, szczególnie odcinki między szafami sterowniczymi

Monitoring i detekcja:

  1. CAN IDS - systemy wykrywania intruzji dedykowane dla CAN (np. Argus, Upstream) analizują ruch na magistrali i wykrywają anomalie - nowe CAN ID, nietypowe częstotliwości, ramki poza harmonogramem
  2. Logging - rejestracja ruchu CAN na bramce w celu analizy post-incydent
  3. Porównanie z baseline - normalna komunikacja CAN jest wysoce powtarzalna (cykliczne ramki o stałych identyfikatorach) - odchylenia od wzorca łatwo wykryć

Szczegółowe wytyczne dotyczące stref i korytarzy w sieciach OT opisujemy w artykule o segmentacji sieci OT.

TIP

CAN XL (nowy standard CiA) i CAN FD z rozszerzeniami SecOC (Secure Onboard Communication, AUTOSAR) wprowadzają uwierzytelnianie ramek za pomocą CMAC (Cipher-based MAC). Jeśli projektujesz nową maszynę, SecOC to kierunek zapewniający kryptograficzną integralność komunikacji CAN.

Narzędzia open source

NarzędzieJęzykOpisLink
can-utilsC (Linux)Zestaw narzędzi CLI dla SocketCAN - przechwytywanie, wysyłanie i analiza ramek CANGitHub
python-canPythonBiblioteka do komunikacji z magistralami CAN - obsługa wielu interfejsów sprzętowychGitHub
SavvyCANC++ (GUI)Graficzny analizator ruchu CAN - wizualizacja, filtrowanie i reverse engineering ramekGitHub

TIP

can-utils: candump can0 przechwytuje wszystkie ramki na interfejsie, cansend can0 123#DEADBEEF wysyła ramkę - podstawowe narzędzia do audytu magistrali CAN w środowisku Linux.

Źródła

Omówimy zakres, metodykę i harmonogram.