Bezpečnost ovládání mikropočítačem

Yarda

Bezpečnost ovládání mikropočítačem
« kdy: 30. 07. 2015, 07:58:31 »
Tady
http://list.hw.cz/pipermail/hw-list/2015-July/478719.html
se naťukl zajímavý problém - jak je to s bezpečností zařízení řízených mikropočítačem (teď prosím nechme stranou Arduino, já ho neznám a myslím, že z tohoto hlediska je jedno co se jako řídicí element použije). Jak se ta diskuse vyvíjí, nikdo zúčastněný neví nic konkrétního.
Tak se zeptám tady:
Existuje (nejlépe u nás) nějaká zkušební autorita co by byla schopna prozkoumat a vyzkoušet předložený vzorek a vydat dokument že vyhovuje nebo nevyhovuje z hlediska použitého HW a SW pro použití ke kterému je dané zařízení určeno?
Malý příklad: Kdysi jsme zkoušeli řídicí elektroniku (od jiného výrobce) pro jeden pohon. Všechno chodilo jak mělo, já jsem se při zkoušce nudil, tak jsem navodil situaci co se při normálním stavu nestane ale stát by se mohla. A elektronika se kousla a dokud se nevypnulo a nezapnulo napájení, dělala mrtvého brouka - vývojář tuhle situaci zapomněl ošetřit. Výrobce z konkurenčních důvodů tajil, jaký SW a jaký HW použil.
« Poslední změna: 30. 07. 2015, 20:31:01 od Petr Krčmář »


onvav

Re:Zařízení ovládaná mikropočítačem z hlediska bezpečnosti.
« Odpověď #1 kdy: 30. 07. 2015, 08:50:05 »
Vlákno na hw.cz jsem nepročetl celé. Když jsem se dostal k diskuzi o "správnosti" Arduina, přestal jsem raději číst.
Ale pokud se jedná o bezpečnost z hlediska ochrany zdraví a majetku, a ne o bezpečnost ve smyslu utajení dat, pak lze nechat zařízení otestovat a certifikovat u Elektrotechnický zkušební ústav: http://ezu.cz
Autoritou, která kontroluje dodržování předpisů stanovených zákonem, je stát. Některá zařízení musí mít konkrétní certifikát pro konkrétní použití (např. automotive), jinak je jejich provoz nelegální a hrozí za to pokuty.
Mikropočítač je široký pojem. Každopádně při nasazení počítače v kritických oblastech je třeba při psaní softwaru dodržovat zvláštní pravidla, např. https://en.wikipedia.org/wiki/MISRA_C
Používají se jen RTOS, nebo to běží na čistém křemíku. Nepoužívá se dynamické alokování paměti protože je nespolehlivé, pouze statické proměnné, apod...
I když software projde testem třeba dle MISRA, stejně musí být celý HW ověřen řadou drahých testů.

Kolemjdoucí

Re:Zařízení ovládaná mikropočítačem z hlediska bezpečnosti.
« Odpověď #2 kdy: 30. 07. 2015, 09:23:40 »
Ale pokud se jedná o bezpečnost z hlediska ochrany zdraví a majetku, a ne o bezpečnost ve smyslu utajení dat, pak lze nechat zařízení otestovat a certifikovat u Elektrotechnický zkušební ústav: http://ezu.cz

EZÚ kontroluje jenom ochranu před úrazem elektrickým proudem a elektromagnetickou kompatibilitu a podobně. Rozhodně nezkoumá řádky v C. Jsou jiné firmy, které dělají audit kódu v C.

hu

Re:Zařízení ovládaná mikropočítačem z hlediska bezpečnosti.
« Odpověď #3 kdy: 30. 07. 2015, 10:04:18 »
Nepoužívá se dynamické alokování paměti protože je nespolehlivé, pouze statické proměnné, apod...

No to je fakt divný, že se nepoužívá dynamická alokace, když má člověk všechny zdroje pod kontrolou.

Kolemjdoucí

Re:Zařízení ovládaná mikropočítačem z hlediska bezpečnosti.
« Odpověď #4 kdy: 30. 07. 2015, 10:22:29 »
No to je fakt divný, že se nepoužívá dynamická alokace, když má člověk všechny zdroje pod kontrolou.

Je to proto že při dynamické alokaci je víc věcí které se mohou pokazit, případná chyba v paměti nebo algoritmu na přidělování paměti způsobí velkou škodu.
V těchto zařízeních se paměť alokuje při kompilaci napevno a rovnou se při kompilaci určí pevné adresy dat, takže riziko chyby je menší.


onvav

Re:Zařízení ovládaná mikropočítačem z hlediska bezpečnosti.
« Odpověď #5 kdy: 30. 07. 2015, 10:26:22 »
EZÚ kontroluje jenom ochranu před úrazem elektrickým proudem a elektromagnetickou kompatibilitu a podobně. Rozhodně nezkoumá řádky v C. Jsou jiné firmy, které dělají audit kódu v C.

Přesně tak to bylo myšleno. EZÚ skutečně nezkoumá řádky. Certifikační společnost pustí do počítače takové věci (přepětí, rušení na různých frekvencích, všechny možné kombinace vstupů), které dané řádky řádně prověří :) On to program ustát nemusí, to není nutností, ale měl by umřít alespoň definovaným a bezpečným způsobem.
Např. poškodí se data v ram, zásobník, program zabloudí => procesor by měl pak při detekci neplatné instrukce zavolat nemaskovatelné přerušení a v této rutině např. nahodit piny na CAN sběrnici do vysoké impedance, aby ji nezarušil další nedefinovanou činností a celý systém ideálně restartovat.
Při testování se nebude společnost dívat na kód zda to tak dělá, ale zkusí poškodit systém a bude koukat na sběrnici zda tam nepouští nesmysli.

Kolemctouci

Re:Zařízení ovládaná mikropočítačem z hlediska bezpečnosti.
« Odpověď #6 kdy: 30. 07. 2015, 10:28:54 »
Dobre rano, ano, EZU dela zkousky ochrany proti urazu elektrickym proudem. To, co Vas zaujalo je "functional safety" (asi funkcni bezpecnost cesky). Na rozdil od urazu el. proudem, tohle ze zameruje na to, ze jednotka dela/ridi veci tak, jak ma a tak, aby svou aktivitou neublizila svemu okoli.

Je to pokryto radou norem, pro ruzna odvetvi se normy ruzne lisi, nicmene alespon co je mi znamo (automotive), certifikacni autorita jako takova neexistuje. Relevantni normy popisuji postupy, jak danou vec vyvijet, "best practices", jake analyzy behem koncepce, navrhu, vyroby, testovani, atd. delat, jak je vyhodnocovat a jak pouzit vysledky pro pripadne upravy v navrhu. Zohlednuje se jake riziko muze nespravna funkce zarizeni predstavovat a kriteria se podle toho meni. Z hlavy pro dalsi googleni: IEC61508 je starsi a obecnejsi pristup (klicova slova SIL-1 az SIL-4), ISO26262 je novejsi, ale uz specificka pro vozidla (QM, ASIL-A az ASIL-D). Drazni systemy maji neco, medicinske pristroje maji neco, atd.

Spolecny pristup ale je vlastne samocertifikace, kdy se de-fakto ohlidate porozumenim a dodrzenim postupu. Aby bylo prakticky mozne projekt udelat podle dane normy (napr. to ISO26262), potrebujete tym lidi, v jednom cloveku se cela problematika obsahnout neda. Tym lidi znamena vic oci a vic vzajemne kontroly, ze byly postupy dodrzeny, vyhodnoceny spravne a tak.

Soucasti takoveho vyvoje je i testovaci predpis (functional testing), tedy vektory, ktere vznikaji jednak podle zadavaci dokumentace (aby se overilo, ze zarizeni dodava funkce, ktere byly pozadovany) a podle vystupu z ruznych analyz (FMEA, FMEDA, a pod) udelanych behem vyvoje. Pokryti takoveho testovani je velmi dobre, neni 100%-ni, ale pravdepodobnost maleru je pod obecne prijatelny limit. (Co je obecne prijatelny limit se take soucasti tech norem a lisi se podle nebezpeci, ktere muze dane zarizeni predstavovat).

Existuji firmy, ktere vam s aplikaci takove normy pomuzou, pripadne zkontroluji, ze jste podle ni postupoval spravne. Level 2 je posouzeni navrhu hardware, mechaniky, termalni analyza, strukturalni analyza SW, pokryti stavu, integrace do okolniho sveta apod. To je ale dost slozite a pracne a podle toho take dost nakladne. Na rozdil otestovani bezpecnosti proti urazu el. proudem, tohle neni otazka nekolika hodin ve standardni laboratori. Tohle je spis nekolik mesicu prace pro skupinu odborniku.