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.
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.
| Parametr | CAN 2.0A / 2.0B | CAN FD |
|---|---|---|
| Warstwa fizyczna | Magistrala różnicowa (CAN_H, CAN_L), ISO 11898-2 | Jak CAN 2.0 |
| Prędkość | Do 1 Mbps (CAN 2.0), typowo 125-500 kbps | Do 8 Mbps (faza danych) |
| Topologia | Magistrala z terminatorami 120 ohm | Jak CAN 2.0 |
| Uwierzytelnianie | Brak | Brak |
| Szyfrowanie | Brak | Brak |
| Integralność | CRC-15 (2.0) / CRC-17/21 (FD) | Jak obok |
| Identyfikator | 11-bit (2.0A) lub 29-bit (2.0B) | 11/29-bit |
| Payload | 0-8 bajtów | 0-64 bajtów |
| Zasięg | Do 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:
- Spoofing - wstrzyknięcie ramek z CAN ID kontrolera - napędy serwo wykonują polecenia atakującego
- Fuzzing - wysyłanie losowych ramek CAN w celu wywołania nieprzewidywalnego zachowania maszyny
- Replay - nagranie sekwencji ramek CAN podczas normalnej pracy i odtworzenie ich w innym kontekście
- 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:
- 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
- Filtrowanie na bramce - whitelist dozwolonych CAN ID w każdym kierunku. Bramka blokuje ramki o identyfikatorach nieoczekiwanych w danym segmencie
- Rate limiting - bramka może ograniczać częstotliwość ramek o danym CAN ID, wykrywając próby floodingu
- Galwaniczna izolacja - bramki CAN powinny zapewniać izolację galwaniczną między segmentami
Ochrona fizyczna:
- Porty diagnostyczne - złącza serwisowe CAN (OBD-II, porty na szafie maszyny) powinny być fizycznie zabezpieczone i dostępne wyłącznie dla autoryzowanego personelu
- 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
- Kable - trasy kablowe CAN w zamkniętych kanałach, szczególnie odcinki między szafami sterowniczymi
Monitoring i detekcja:
- 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
- Logging - rejestracja ruchu CAN na bramce w celu analizy post-incydent
- 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ędzie | Język | Opis | Link |
|---|---|---|---|
| can-utils | C (Linux) | Zestaw narzędzi CLI dla SocketCAN - przechwytywanie, wysyłanie i analiza ramek CAN | GitHub |
| python-can | Python | Biblioteka do komunikacji z magistralami CAN - obsługa wielu interfejsów sprzętowych | GitHub |
| SavvyCAN | C++ (GUI) | Graficzny analizator ruchu CAN - wizualizacja, filtrowanie i reverse engineering ramek | GitHub |
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
- ISO 11898-1:2015 - CAN data link layer and physical signalling
- CAN in Automation (CiA) - organizacja standaryzacyjna CANopen
- NIST SP 800-82 Rev. 3 - Guide to OT Security
- AUTOSAR SecOC - Secure Onboard Communication dla CAN
- SAE J1939 - protokół CAN dla pojazdów ciężkich i maszyn