Bezpečnostní standardy ve vývoji vestavěných systémů: ochrana před hardwarovými a softwarovými útoky

Bezpečnostní standardy v embedded vývoji: Ochrana pred hardvérovým a softvérovým narušením

Proč jsou bezpečnostní standardy ve vývoji vestavěných systémů klíčové

Vestavěná zařízení dnes řídí automobily, zdravotnické přístroje, průmyslové linky, chytré elektroměry i domácí IoT. Selhání nebo kompromitace takových systémů může ohrozit lidské zdraví, kontinuitu provozu i důvěrnost dat. Bezpečnostní standardy poskytují společný jazyk, ověřené postupy a měřitelné požadavky, které umožňují navrhovat, testovat a provozovat vestavěná zařízení systematicky a s možností auditu. Tento článek shrnuje klíčové rámce, metody a konkrétní techniky, které by měl znát každý vývojář firmwaru a systémový architekt.

Terminologie: bezpečnost (safety) vs. zabezpečení (security)

  • Safety – ochrana před neúmyslným poškozením způsobeným chybou systému (např. zkratem, poruchou senzoru nebo softwarovou chybou vedoucí k nebezpečnému stavu).
  • Security – ochrana před úmyslným útokem (např. podvržením firmwaru, manipulací s komunikací nebo exfiltrací dat).

Oblasti se prolínají: opatření v oblasti zabezpečení (security) chrání také bezpečnost provozu (safety). Moderní standardy proto vyžadují jejich společné řízení a „společné inženýrství“.

Přehled klíčových standardů podle domén

  • Průmysl a automatizace: IEC 62443 (zabezpečení průmyslových řídicích systémů), ISO/IEC 27001 (ISMS) a 27002 (kontrolní opatření).
  • Automobilový průmysl: ISO 26262 (funkční bezpečnost), ISO/SAE 21434 (kybernetická bezpečnost vozidel), AUTOSAR (Classic/Adaptive) a pokyny MISRA C/C++.
  • Letecká technika: DO-178C (software) a DO-254 (hardware), s důrazem na důkazní artefakty a pokrytí testy (MC/DC).
  • Zdravotnictví: IEC 62304 (životní cyklus softwaru ve zdravotnických prostředcích), ISO 14971 (řízení rizik), IEC 60601-1 (elektrická bezpečnost).
  • IoT a spotřební elektronika: ETSI EN 303 645 (základní požadavky pro IoT), NISTIR 8259x (profil zabezpečení IoT), doporučení OWASP IoT Top 10.
  • Obecná funkční bezpečnost: IEC 61508 (základní norma pro bezpečnost), na kterou navazují oborové standardy.
  • Kryptografie a moduly: FIPS 140-3 (validace kryptografických modulů), ISO/IEC 19790, SP 800-56/57 (správa klíčů).
  • Dodavatelský řetězec a software: SLSA (úrovně integrity dodavatelského řetězce), SBOM (SPDX/CycloneDX), ISO/IEC 5230 (OpenChain).

Integrované řízení rizik: od hrozeb k požadavkům

  1. Klasifikace aktiv a rozhraní: MCU/SoC, senzory, bootloader, komunikace (UART, CAN, Ethernet), kanál pro aktualizace, cloud.
  2. Modelování hrozeb: STRIDE (podvržení identity, manipulace, popření, zpřístupnění informací, DoS, eskalace oprávnění) pro technické hrozby; LINDDUN pro rizika v oblasti soukromí.
  3. Bezpečnostní analýzy: TARA (Threat Analysis and Risk Assessment), FMEA/FMEDA, HAZOP, útočné stromy.
  4. Odvození požadavků: bezpečnostní cíle → systémové požadavky → hardwarové/softwarové požadavky → testy a ověřování.

Životní cyklus bezpečného vývoje (SDL) pro vestavěné systémy

Standardy jako IEC 62443-4-1 nebo ISO/SAE 21434 vyžadují formální životní cyklus. V praxi jde o následující:

  • Plánování: bezpečnostní plán, rozdělení odpovědností, klasifikace softwarových komponent (kritičnost).
  • Architektura: oddělení důvěryhodných oblastí (TrustZone/MPU), princip nejmenších privilegií, jasně vymezená TCB (Trusted Computing Base).
  • Implementace: pravidla bezpečného programování (MISRA, AUTOSAR C++14, CERT C/C++), povinné revize kódu, statická/dynamická analýza.
  • Verifikace: jednotkové testy, integrační testy na HIL, fuzzing protokolů, penetrační testy, měření pokrytí.
  • Uvedení do provozu: bezpečná výroba, párování klíčů, testy na výrobní lince, kontrola šarží a evidence sériových čísel.
  • Provoz a údržba: bezpečné OTA aktualizace, monitorování telemetrie, proces reakce na zranitelnosti (PSIRT), politika EOL.
  • Artefakty a sledovatelnost: požadavky ↔ rizika ↔ implementace ↔ testy ↔ vydání (auditní stopa).

Architektonické principy: obrana do hloubky a zmenšování TCB

  • Oddělení: oddělení řídicí části (safety) a komunikační části (konektivita), fyzicky nebo alespoň logicky (MMU/MPU, TrustZone, hypervizor).
  • Princip nejmenších privilegií: ovladač nemá vyšší oprávnění, než je nezbytné; úlohy RTOS mají pouze nezbytná oprávnění (oprávnění, přístupy založené na schopnostech).
  • Minimalismus: odstraňte nepoužívané knihovny, rozhraní a ladicí porty; ve výrobních zařízeních vypněte JTAG/SWD (nebo použijte bezpečné ladění s autentizací).
  • Bezpečná konfigurace od návrhu: firewall s výchozím zákazem, povinné šifrování, explicitní seznam povolených protokolů a portů.

Řetězec důvěry: secure boot, měření a podepisování

  1. Kořen důvěry (RoT): klíče uložené v OTP/eFuse/PUF, HSM/SE nebo v chráněné oblasti SoC.
  2. Secure Boot: bootloader ověřuje podpis firmwaru (RSA/ECC/Ed25519) a jeho integritu (SHA-2/3); nepodepsané obrazy se nespustí.
  3. Měřené spouštění: ukládání hashů firmwaru pro atestaci (TPM/Device Identity Composition Engine/certifikáty DTLS).
  4. Ochrana proti opakování a verzování: monotónní čítač, ochrana proti návratu k předchozí verzi, sloty A/B pro bezpečné OTA.

Bezpečné OTA aktualizace a správa verzí

  • Podpis od konce ke konci: výrobní pipeline podepisuje sestavení; zařízení před instalací ověřuje jeho podpis.
  • Bezpečný přenos: TLS 1.3/DTLS 1.3 s ověřením serveru a případně také klientskými certifikáty.
  • Transakční aktualizace: duální banky (A/B), atomický přechod a automatický návrat k předchozí verzi při selhání.
  • Zásady: postupné nasazování, vydávání v jednotlivých vlnách, možnost okamžitého nouzového vypnutí při kritické zranitelnosti.

Standardy pro kód: MISRA, AUTOSAR C++14, CERT a bezpečné C

Vestavěné systémy využívající jazyky C/C++ těží z pravidel pro tvorbu kódu, která snižují pravděpodobnost chyb a zneužitelných konstrukcí.

  • MISRA C/C++: omezují nejednoznačné a nebezpečné konstrukce; vyžadují přesné typování a determinismus.
  • AUTOSAR C++14: zaměřuje se na moderní C++ v automobilovém průmyslu s ohledem na bezpečnost a testovatelnost.
  • CERT C/C++: prevence zranitelností (přetečení, UAF, závody, nesprávná správa paměti), pravidla pro rozhraní a chybové stavy.

Součástí je povinná statická analýza (např. kontrola pravidel MISRA), analýza taint vstupů a „brána“ v CI, která blokuje sestavení porušující kritická pravidla.

Hardwarové bezpečnostní prvky a izolace

  • MPU/MMU a domény: mapujte paměť podle principu nezbytného přístupu. Omezte spouštění kódu z RAM, oddělte oblasti RX a RW.
  • TrustZone-M / TrustZone-A: oddělení zabezpečeného a nezabezpečeného světa s řízením přechodů prostřednictvím bran SG.
  • TPM/SE/HSM: bezpečná identita zařízení, uchovávání klíčů, kryptografické operace mimo hlavní procesor.
  • Fyzická ochrana: detekce neoprávněné manipulace, ochrana proti glitchingu, DPA/SPA (útoky postranními kanály), stínění a zalití epoxidem podle míry rizika.

Komunikační protokoly a kryptografie v praxi

  • TLS/DTLS 1.3: moderní křivky (X25519, P-256), AEAD (AES-GCM, ChaCha20-Poly1305), důsledné ověřování certifikátů, pinning tam, kde dává smysl.
  • Protokoly IoT: MQTT přes TLS, CoAP přes DTLS, OPC UA s integrovaným bezpečnostním modelem, zabezpečený CAN (CAN-FD s autentizací na aplikační vrstvě).
  • Správa klíčů: rotace, expirace, zásady síly klíčů, bezpečné úložiště, ochrana před extrakcí klíčů.
  • Náhodná čísla: TRNG/DRBG validovaný podle NIST SP 800-90A/B/C, zdravotní testy entropie.

Dodavatelský řetězec, SBOM a integrita sestavení

  • SBOM: vytvářejte pro každé vydání ve formátu SPDX nebo CycloneDX; udržujte mapování CVE → komponenty → dotčená zařízení.
  • SLSA: podepisujte původ sestavení (provenance), izolujte běhy CI, používejte reprodukovatelná sestavení a hermetické závislosti.
  • OpenChain: procesy pro používání softwaru s otevřeným zdrojovým kódem (licence, zranitelnosti, strategie aktualizací).

Testování a ověřování zabezpečení

  • Statická analýza: pravidla MISRA/AUTOSAR/CERT, detekce přetečení celého čísla, dereferencování nulového ukazatele, datových závodů.
  • Fuzzing: protokoly (BLE, brána CAN, zásobník TCP/IP), mutační a generativní přístup; sanitizéry v emulaci.
  • Penetrační testy: black-box/grey-box/white-box, testy odolnosti proti glitchingu, vkládání poruch a analýza postranních kanálů podle míry kritičnosti.
  • Ověřování časových parametrů: WCET, latence ISR, determinismus v RTOS, testy scénářů poklesu napětí a vypnutí a opětovného zapnutí napájení.
  • Pokrytí: příkazů/větví a v bezpečnostně kritických doménách MC/DC; sledovatelnost testů k požadavkům.

Zabezpečení RTOS a plánování úloh

  • Izolace vláken: využití oblastí MPU na úrovni úloh; kontrola přístupu k periferiím prostřednictvím systémových volání.
  • Ochrany běhového prostředí: ochranné hodnoty zásobníku (stack canaries), W^X, watchdog, ASLR tam, kde je podporováno (na MCU často s omezeními).
  • Bezpečné IPC: fronty se značkami integrity, ověřování identity komunikujících úloh.

Provozní zabezpečení: protokolování, telemetrie a reakce na incidenty

  • Bezpečné protokoly: neobsahují tajné klíče, minimalizují osobní údaje (PII); jejich integrita je kryptograficky chráněna.
  • Detekce anomálií: limity chyb, selhání navázání spojení, neobvyklá latence; při podezření přechod do místního „bezpečného režimu“.
  • Proces PSIRT: příjem hlášení, hodnocení CVSS, náprava, servisní bulletiny, koordinované zveřejňování informací.

Ochrana soukromí a regulace

Zařízení pracující s osobními údaji musí dodržovat zásady ochrany soukromí již od návrhu: minimalizaci sběru, pseudonymizaci/anonimizaci, dobu uchovávání dat a práva subjektů údajů (GDPR). Soulad dokládejte pomocí DPIA, mapujte datové toky a uplatňujte ISO/IEC 27701 pro PIMS.

Bezpečná výroba a personalizace zařízení

  • Zavádění klíčů: zabezpečená výrobní linka, HSM, oddělení rolí; jedinečné identity zařízení (certifikáty X.509, klíče ECDSA).
  • Testování a kalibrace: bez úniku tajných údajů, ladicí rozhraní je chráněno a po výrobě uzamčeno.
  • Evidence a dohledatelnost: spárování SBOM/verze firmwaru se sériovým číslem, auditovatelné záznamy.

Metriky vyspělosti a připravenost na audit

  • Model vyspělosti: definujte úrovně (ad hoc → řízené → měřené → optimalizované) podle procesů SDL, testování a reakce na zranitelnosti.
  • KPI: MTTR při řešení zranitelností, podíl pokrytí pravidel MISRA/CERT, procento komponent s aktuálními závislostmi, počet zjištěných chyb na KLOC.
  • Interní audity: pravidelné kontroly shody artefaktů (plány, rizika, testy, SBOM, podpisy sestavení) a připravenosti na certifikace.

Kontrolní seznam pro projekt vestavěného systému

  1. Vybrány relevantní standardy (IEC 62443, ISO/SAE 21434 atd.) a definován rozsah shody.
  2. Provedena analýza hrozeb (STRIDE/TARA) a jejich mapování na požadavky.
  3. Navržena architektura s izolací, minimálními oprávněními a definovaným TCB.
  4. Zaveden SDL: pravidla pro kód (MISRA/AUTOSAR/CERT), povinné revize a statická analýza.
  5. Implementován secure boot, správa klíčů a bezpečné OTA (A/B, ochrana proti návratu k předchozí verzi).
  6. Vytvořen SBOM, zaveden SLSA a podepisování sestavení.
  7. Testy: fuzzing, penetrační testy, WCET, pokrytí, HIL; doloženy výsledky.
  8. Provozní zabezpečení: protokolování, telemetrie, PSIRT, politika EOL.
  9. Soulad s požadavky na ochranu soukromí (GDPR, ISO/IEC 27701) a s oborovými předpisy.
  10. Příprava na audit: úplná sledovatelnost požadavků a důkazních artefaktů.

Závěr

Bezpečnostní standardy ve vývoji vestavěných systémů nejsou překážkou kreativity, ale násobitelem kvality. Přinášejí jednotný rámec pro řízení rizik, zvyšují odolnost vůči útokům i chybám a zjednodušují audit i certifikaci. Klíčová je důslednost: začít analýzou hrozeb, promítnout požadavky do architektury a kódu, ověřit je testy a udržovat zabezpečení po celou dobu životního cyklu zařízení.