CODESYS - zabezpieczanie aplikacji na sterownikach PLC

W dzisiejszym dynamicznie rozwijającym się świecie przemysłowej automatyki, oprogramowanie wbudowane oraz sterowniki PLC (Programmable Logic Controllers) stanowią fundament wielu krytycznych systemów.
Oprogramowanie wbudowane to specjalistyczne oprogramowanie zaprojektowane do wykonywania określonych funkcji w dedykowanym urządzeniu, takim jak sterownik PLC. Sterowniki PLC z kolei są cyfrowymi urządzeniami elektronicznymi, które wykorzystują programowalną pamięć do przechowywania instrukcji i realizacji specyficznych funkcji, takich jak sterowanie procesami przemysłowymi, maszynami czy liniami produkcyjnymi.
Równie istotne staje się zabezpieczenie oprogramowania działającego na tych sterownikach przed nieautoryzowanym dostępem, kopiowaniem czy modyfikacją. W tym artykule przyjrzymy się bliżej środowisku CODESYS oraz technologiom, które pozwalają na ochronę i licencjonowanie aplikacji działających na sterownikach PLC.
Czym są sterowniki PLC?
Sterowniki PLC to specjalizowane komputery przemysłowe, zaprojektowane do sterowania procesami produkcyjnymi, maszynami i instalacjami. Wykorzystują programowalną pamięć do przechowywania instrukcji i wykonywania funkcji takich jak logika sekwencyjna, sterowanie czasowe, zliczanie i arytmetyka, w celu sterowania różnego rodzaju maszynami i procesami. CODESYS jest wiodącym, niezależnym od producenta sprzętu środowiskiem programistycznym, zgodnym z normą IEC 61131-3, używanym do tworzenia aplikacji sterujących w automatyce.
Przykłady zastosowań
Sterowniki PLC znajdują zastosowanie w niemal każdej gałęzi przemysłu. Można je spotkać w:
- Automatyce przemysłowej - sterowanie liniami produkcyjnymi, robotami przemysłowymi.
- Energetyce - sterowanie turbinami wiatrowymi, panelami słonecznymi.
- Budynkach inteligentnych - zarządzanie oświetleniem, klimatyzacją, systemami bezpieczeństwa.
- Maszynach pakujących - precyzyjne sterowanie procesem pakowania.
- Obrabiarkach CNC - sterowanie ruchami narzędzi z dużą dokładnością.
Brak zabezpieczeń kodu na PLC w tak różnorodnych zastosowaniach niesie ze sobą poważne ryzyko.
Dlaczego ochrona oprogramowania wbudowanego PLC jest kluczowa?
Wraz z postępującą cyfryzacją i rosnącą złożonością systemów sterowania, ochrona oprogramowania wbudowanego w sterownikach PLC staje się absolutnym priorytetem. W branżach takich jak przemysł motoryzacyjny, medyczny czy energetyczny, gdzie sterowniki PLC odgrywają kluczową rolę w bezpieczeństwie i wydajności, kompromitacja kodu może prowadzić do poważnych konsekwencji. Mogą to być straty finansowe wynikające z przestojów produkcji, uszkodzenia sprzętu, naruszenia własności intelektualnej poprzez kradzież know-how, szkody wizerunkowe w wyniku awarii systemów, a co najgorsze, zagrożenia dla bezpieczeństwa publicznego i zdrowia.
Co więcej, w dobie Internetu Rzeczy (IoT) i Przemysłu 4.0, systemy sterowania stają się coraz bardziej połączone i narażone na ataki z zewnątrz. Wymiana informacji między różnymi systemami i możliwość zdalnego dostępu, choć zwiększają efektywność, otwierają również nowe wektory ataków. Dlatego też, tradycyjne metody ochrony fizycznej, takie jak zamknięcie sterownika w szafie sterowniczej, są już niewystarczające.
Obok aspektów bezpieczeństwa, ochrona oprogramowania wbudowanego PLC ma kluczowe znaczenie dla monetyzacji innowacji i ochrony własności intelektualnej. Unikalne algorytmy sterowania, specjalistyczne funkcje i know-how wbudowane w oprogramowanie stanowią często kluczową przewagę konkurencyjną przedsiębiorstw. Niezabezpieczone oprogramowanie jest narażone na kopiowanie, nieautoryzowane użycie i reverse engineering, co prowadzi do strat finansowych i osłabienia pozycji rynkowej.
Skuteczne metody ochrony kodu oprogramowania wbudowanego PLC
Aby skutecznie chronić oprogramowanie wbudowane w sterownikach PLC, konieczne jest zastosowanie wielowarstwowego podejścia, obejmującego zarówno techniczne mechanizmy ochrony kodu, jak i odpowiednie procedury zarządzania bezpieczeństwem. Wśród kluczowych metod ochrony znajdują się:
- Szyfrowanie kodu. Jedną z fundamentalnych technik ochrony jest szyfrowanie kodu źródłowego oraz skompilowanej aplikacji. Szyfrowanie utrudnia lub wręcz uniemożliwia nieautoryzowany dostęp do kodu, jego analizę (reverse engineering) oraz modyfikację. CODESYS, jako wiodące niezależne od sprzętu środowisko programistyczne IEC 61131-3, integruje technologie ochrony takie jak CodeMeter Protection Suite, umożliwiając szyfrowanie projektów i aplikacji już na etapie rozwoju. Szyfrowanie może być oparte na hasłach, certyfikatach, ale najbezpieczniejszą metodą jest powiązanie szyfrowania z kluczem sprzętowym (donglem).
- Uwierzytelnianie i Autoryzacja. Kontrola dostępu do sterowników PLC oraz wgrywanego na nie oprogramowania jest kluczowa. Należy implementować silne mechanizmy uwierzytelniania, aby upewnić się, że tylko uprawnione osoby i systemy mogą łączyć się z urządzeniem i manipulować jego oprogramowaniem. Wykorzystanie kluczy sprzętowych (dongli CodeMeter Key) może służyć nie tylko do deszyfrowania oprogramowania, ale również jako forma uwierzytelnienia. Dodatkowo, systemy zarządzania licencjami pozwalają na precyzyjne określenie, jakie funkcje oprogramowania są dostępne dla danego użytkownika lub urządzenia na podstawie posiadanej licencji.
- Ochrona przed manipulacją (integralność kodu). Ważne jest, aby zapewnić, że oprogramowanie wbudowane nie zostało zmodyfikowane przez nieautoryzowane osoby. Mechanizmy takie jak cyfrowe podpisywanie aplikacji pozwalają na weryfikację integralności kodu przed jego uruchomieniem, wykrywając wszelkie nieautoryzowane zmiany.
- Zarządzanie licencjami. Zaawansowane systemy zarządzania licencjami, takie jak CodeMeter License Central firmy Wibu-Systems, umożliwiają bezpieczne dystrybuowanie, aktywowanie i monitorowanie licencji na oprogramowanie wbudowane. Pozwala to na implementację różnych modeli biznesowych, takich jak feature-on-demand, pay-per-use czy subskrypcje. Dzięki temu producenci mogą oferować klientom elastyczne opcje dostępu do funkcjonalności oprogramowania, jednocześnie chroniąc swoje prawa i generując przychody.
- Wykorzystanie bezpiecznych elementów sprzętowych. Klucze sprzętowe (dongle) z wbudowanymi bezpiecznymi chipami zapewniają wysoki poziom ochrony kluczy kryptograficznych i licencji. Technologie takie jak CodeMeter Key wykorzystują czipy Infineon Smartcard, oferując jeden z najwyższych standardów ochrony dostępnych na rynku.
How its made – czyli jak zabezpieczać kod w środowisku Codesys?

Środowisko programistyczne CODESYS oferuje zaawansowane narzędzia do ochrony i licencjonowania aplikacji PLC dzięki integracji z technologią CodeMeter. Integracja ta pozwala na zabezpieczenie kodu na różnych etapach jego życia:
- Ochrona projektu (kodu źródłowego). CODESYS umożliwia szyfrowanie całego projektu. Dostęp do projektu jest możliwy tylko po podaniu hasła, wgraniu certyfikatu lub po podłączeniu zarejestrowanego klucza sprzętowego (CmDongle lub Codesys Key). Projekt zabezpieczony kluczem CmDongle jest nieczytelny dla narzędzi firm trzecich.
- Ochrona aplikacji (kodu binarnego). Aplikację działającą na sterowniku PLC można zabezpieczyć przed nieautoryzowanym uruchomieniem i kopiowaniem. Codesys oferuje dwa rodzaje szyfrowania aplikacji:
- Proste szyfrowanie (Simple Encryption). Wykorzystuje preprogramowany klucz Codesys Security Key (CmDongle). Aplikacja jest powiązana z konkretnym kluczem, a jej uruchomienie jest możliwe tylko po jego podłączeniu.
- Szyfrowanie z zarządzaniem licencjami (Encryption with License Management). Oferuje większą elastyczność i wymaga instalacji CodeMeter SDK od Wibu-Systems. Pozwala na tworzenie i zarządzanie własnymi licencjami, programowanie kluczy CmDongle z unikalnymi kodami Firm Code i Product Code. Umożliwia generowanie identycznych aplikacji, które są aktywowane dopiero po wgraniu odpowiedniej licencji.
- Podpisywanie aplikacji (Signing of applications). Dodatkowo, aplikacje mogą być podpisywane cyfrowo, co gwarantuje ich integralność i chroni przed nieautoryzowanymi modyfikacjami,
- EX Protector. Umożliwia on zabezpieczenie aplikacji przeznaczonych dla urządzeń przemysłowych, które często mają ograniczone zasoby, takie jak mała ilość pamięci i niższa wydajność. Proces ten działa w ten sposób, że w oprogramowaniu inżynierskim CODESYS aplikacja jest szyfrowana za pomocą EX Protectora. Następnie, na urządzeniu docelowym, w środowisku uruchomieniowym CODESYS Runtime, znajduje się EX Engine, który odpowiada za odszyfrowanie aplikacji podczas jej używania. Dzięki temu aplikacja jest chroniona przed nieautoryzowanym dostępem i może być uruchomiona tylko wtedy, gdy na urządzeniu jest obecna odpowiednia licencja w postaci klucza sprzętowego (dongle) lub licencji programowej.
Gdzie zapisać klucz? Porównanie CmDongle, CmActLicense, CmCloud
Technologia CodeMeter oferuje różne kontenery licencji (license containers), w których przechowywane są klucze i licencje. Wybór odpowiedniego kontenera zależy od wymagań dotyczących bezpieczeństwa, wygody i modelu licencjonowania:
- CmDongle (Codesys Key / Klucz sprzętowy Wibu). Jest to fizyczny klucz USB, zawierający bezpieczny układ scalony (np. Infineon Smartcard Chip) do przechowywania kluczy i licencji. Uważany jest za najbezpieczniejszą formę ochrony, ponieważ klucze są chronione przed odczytem i manipulacją. Umożliwia łatwe przenoszenie licencji między urządzeniami.
- CmActLicense (Kontener programowy / Software Container). Jest to licencja programowa, powiązana z unikalnymi cechami danego urządzenia (np. numer seryjny). Nie wymaga fizycznego klucza, co jest wygodniejsze, ale oferuje niższy poziom bezpieczeństwa w porównaniu z CmDongle.
- CmCloud (Kontener chmurowy / Cloud Container). Jest to licencja przechowywana w chmurze. Wymaga stałego połączenia z Internetem w celu weryfikacji licencji. Oferuje elastyczność w zarządzaniu licencjami i potencjalnie umożliwia nowe modele biznesowe.
Możliwe jest także łączenie różnych typów kontenerów licencji w jednym systemie, co zapewnia dużą elastyczność w dostosowaniu do konkretnych potrzeb.

Zadania specjalne – ochrona własnych bibliotek
CODESYS umożliwia ochronę i licencjonowanie własnych bibliotek. Tworząc bibliotekę, deweloper może powiązać jej użycie z konkretnym kluczem CmDongle (lub innym kontenerem licencji) poprzez wprowadzenie Firm Code i Product Code. Biblioteki zabezpieczone w ten sposób działają tylko w skompilowanej formie.
Licencje na własne biblioteki można dystrybuować na różne sposoby:
- Poprzez Codesys Store. W najprostszym przypadku, gdy zabezpieczona ma być tylko jedna aplikacja, licencje mogą być sprzedawane za pośrednictwem sklepu z aplikacjami CODESYS (Codesys Store). Wówczas wykorzystywany jest Firm Code firmy CODESYS.
- Poprzez własne platformy. Deweloperzy, posiadający CodeMeter SDK i własny Firm Code, mogą zarządzać licencjami i dystrybuować je za pomocą własnych kanałów sprzedaży. W ten sposób można zabezpieczać wiele aplikacji na jednym kontenerze.
Codesys Store to platforma (sklep) online, gdzie użytkownicy CODESYS mogą nabywać i sprzedawać różnego rodzaju oprogramowanie i biblioteki, w tym również te zabezpieczone technologią CodeMeter. Zakupione licencje są zazwyczaj dostarczane w formie aktywacji (tickets), które można aktywować w środowisku CODESYS za pomocą License Managera lub specjalnej strony internetowej. Nowością jest możliwość importowania wielu ticketów licencyjnych jednocześnie za pomocą Codesys Automation Server, co ułatwia licencjonowanie większej liczby urządzeń.
W środowisku CODESYS dostęna jest również biblioteka CMP CodeMeter, która pozwala na programowe sprawdzanie obecności i statusu licencji na podłączonych kluczach CmDongle. W ten sposób można zarządzać dodatkowymi funkcjonalnościami w zależności od wygenerowanej licencji. Możliwe jest także szyfrowanie i deszyfrowanie konkretnych parametrów i danych w kodzie źródłowym za pomocą funkcji biblioteki CMP CodeMeter, co dodatkowo zabezpiecza wrażliwe informacje.
Przykład użycia
Wyobraźmy sobie firmę produkującą inteligentne liczniki energii. Ze względu na wrażliwość danych pomiarowych i potencjalne ryzyko manipulacji odczytami, ochrona oprogramowania wbudowanego w ich liczniki jest absolutnie kluczowa. Firma ta może zaimplementować następujące rozwiązania:
- Wykorzystanie CodeMeter embedded do ochrony firmware’u liczników przed nieautoryzowanym dostępem, kopiowaniem i modyfikacjami. Firmware jest szyfrowany, a klucze kryptograficzne są bezpiecznie przechowywane w dedykowanym module bezpieczeństwa (często koncepcyjnie powiązanym z CodeMeter Vault).
- Zastosowanie CmActLicense. Każdy licznik jest unikalnie identyfikowany, a licencja na oprogramowanie jest powiązana z jego unikalnymi cechami. To uniemożliwia uruchomienie oprogramowania na nieautoryzowanych urządzeniach.
- Podpisywanie firmware’u. Każda aktualizacja oprogramowania jest cyfrowo podpisywana. Liczniki weryfikują podpis przed instalacją, co gwarantuje, że oprogramowanie pochodzi od zaufanego źródła i nie zostało naruszone.
- Możliwość zdalnego licencjonowania i aktualizacji. Dzięki integracji z systemem zarządzania licencjami opartym na CodeMeter License Central, firma może zdalnie aktywować dodatkowe funkcje liczników (np. zaawansowaną analizę danych) po zakupie przez klienta. Aktualizacje oprogramowania są dostarczane w sposób bezpieczny i uwierzytelniony.
Dzięki takiemu wdrożeniu, firma produkująca inteligentne liczniki energii zyskuje pewność, że ich firmware jest autentyczny, niemożliwy do modyfikacji przez osoby trzecie i działa tylko na autoryzowanych urządzeniach. To buduje zaufanie klientów i chroni przed potencjalnymi zagrożeniami.
Wykorzystanie narzędzi CODESYS i Wibu w pracach rozwojowych
CODESYS, jako wiodące środowisko programistyczne dla sterowników PLC, oferuje głęboką integrację z technologiami ochrony i licencjonowania Wibu-Systems. Przyjrzyjmy się konkretnym przykładom wykorzystania tych narzędzi:
- Ochrona kodu źródłowego projektu. Deweloperzy CODESYS mogą zabezpieczyć swoje projekty za pomocą kluczy CmDongle (Codesys Key). Po aktywowaniu ochrony, otwarcie projektu jest możliwe tylko po podłączeniu zarejestrowanego klucza. Jest to ważne z punktu widzenia ochrony własności intelektualnej i know-how. Możliwość przypisania wielu kluczy do jednego projektu ułatwia pracę zespołową i zapewnia ciągłość w przypadku utraty jednego z kluczy.
- Ochrona aplikacji działającej na sterowniku PLC. Wykorzystując Simple Encryption lub Encryption with License Management w CODESYS, producenci sterowników mogą powiązać swoje aplikacje z konkretnymi kluczami CmDongle. Uruchomienie aplikacji na sterowniku jest możliwe tylko po wykryciu odpowiedniego klucza. To skutecznie zapobiega nieautoryzowanemu kopiowaniu i uruchamianiu oprogramowania na nieuprawnionych urządzeniach. Podpisywanie aplikacji dodatkowo gwarantuje, że oprogramowanie nie zostało zmodyfikowane.
- Licencjonowanie i ochrona bibliotek. Twórcy bibliotek CODESYS mogą zabezpieczyć swoje komponenty programowe i oferować je komercyjnie. Poprzez powiązanie biblioteki z kodem Firm Code i Product Code (należącym do CODESYS lub własnym, po zakupie CodeMeter SDK), użycie biblioteki jest możliwe tylko wtedy, gdy dostępna jest odpowiednia licencja. Licencje mogą być dystrybuowane poprzez CODESYS Store lub własne kanały sprzedaży, wykorzystując CodeMeter License Central do zarządzania licencjami. Biblioteka CMP CodeMeter umożliwia programowe sprawdzanie obecności licencji i odblokowywanie funkcji w zależności od jej statusu.
Value Add dla developera
Integracja technologii CodeMeter z CODESYS oferuje deweloperom sterowników PLC znaczące korzyści:
- Ochrona własności intelektualnej. Zabezpieczenie kodu źródłowego i binarnego przed nieautoryzowanym dostępem, kopiowaniem i reverse engineeringiem
- Możliwość monetyzacji oprogramowania. Wprowadzenie elastycznych modeli licencjonowania, takich jak feature-on-demand, pay-per-use i subskrypcje, co otwiera nowe możliwości biznesowe
- Zwiększenie bezpieczeństwa aplikacji przemysłowych. Ochrona przed manipulacją kodu i zapewnienie integralności oprogramowania działającego na sterownikach PLC
- Elastyczne opcje licencjonowania. Wybór spośród różnych kontenerów licencji (CmDongle, CmActLicense, CmCloud) oraz możliwość ich łączenia
- Łatwa integracja i obsługa. Technologia CodeMeter jest bezproblemowo zintegrowana ze środowiskiem CODESYS, co ułatwia jej wdrożenie i użytkowanie
Dzięki CODESYS i technologii CodeMeter, deweloperzy mają do dyspozycji kompleksowe narzędzia, które pozwalają nie tylko zabezpieczyć ich ciężko wypracowaną wiedzę i oprogramowanie, ale także efektywnie je monetyzować, tworząc wartość dodaną dla swojego biznesu i klientów.
