Arduino kódvédelem

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
atilla
Biztosítékgyilkos
Hozzászólások: 65
Csatlakozott: 2016. május 10. kedd, 18:35

Arduino kódvédelem

Hozzászólás Szerző: atilla »

Sziasztok!

Lenne egy kérdésem.
Adott egy Arduino Nano, amin fut egy program. Egy olyan program, amit adott esetben nem kellene másnak használni. Ez miatt egy biztonsági megoldás került a programba. Ez a következő elven működik:
Először föltöltök egy programot a csippre, ami az EEPROM területén felülírja bizonyos módon a tárhelyet. Ezután föltöltésre kerül a rendes program, ami bekapcsoláskor ennek a meglétét ellenőrzi. Ha rendben, akkor a rendes program kezd futni. Ha nincsen rendben, akkor egy akármilyen tesztprogram. Ha probléma van, akkor a rendes program futása közben egy nyomógombbal kiváltható az EEPROM törlése. A következő bekapcsoláskor már nem fog indulni a program.
Mennyire biztonságos ez, illetve milyen nehéz ezt visszaállítani úgy, hogy a próbálkozó kezében csak a Nano van, de forráskód, program semmi?

Köszi.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino HW,SW segitség

Hozzászólás Szerző: Robert »

Nem biztonságos. Mert:
1, programfeltöltés mivel történik?
Nano bootloader vagy külső programozó?
- Nano bootloadere segítségével a HEX vissza is olvasható! Azaz elloptama programot a chipről. És az EEPROM is leszedhető - szinténa bootloaderen keresztül.
- Külső programozóval szintén minden leszedek a chipről.

2, EEPROM kezelés hogy történik?
Programból vagy programozóval?
EEPROM védelem nem megoldott alapesetben. Csak a biztosítékbitek módosításával van rá mód.

3, A szoftverfrissítés a HEX újratöltése amit a felhasználó megcsinálhat?

4, Biztosítékbitek lettek e átállítva vagy ahogy a nano kijött úgy van?
Ahogy van? a Chip külső programozóval illetve a bootloaderrel is írható/olvasható. Chiptörléskor az EEPROM tartalom törlődik.



Én járulékos védelemeket építenék be:
- üzemóra számláló, mert "időnként" kalibrálni kell a chipet
- ha hibás az EEPROM tartalom/kód, akkor a program, töltse fel, mintha működne. Hibás működés meg véletlenszerű, hardwerhiba szerű legyen.
- külső hőmérő legyen (DS18x20), ami a áramkör és környrezetének hőfokát nézi. És ennek a sorozatszáma a hardwarekulcs :)
- ha lopott/tört a program, akkor _véletlen_ hibák legyenek benne. Amik a bekapcsolás után 2...10...120 percenként egy egy hibás működést végez, de a köv. bekapcsolás esetén pl. mintha lefagyna és ki/bekapcsolással billenthető ki az állapotból (HW hiba jellegű, ill kontkathiba szerű hiba).
- külső eeprom illetve hasonló lehet. De akár jelszó/hozzáférési kódkulcs is.


De mi az eszköz?
atilla
Biztosítékgyilkos
Hozzászólások: 65
Csatlakozott: 2016. május 10. kedd, 18:35

Re: Arduino kódvédelem

Hozzászólás Szerző: atilla »

Az eszköz egy fémdetektor lenne. A használata tiltott. De ha a program nem működik, akkor az már nem is fémdetektor. Tovább nem akarom ragozni ezt a részét.
Az EEPROM tartalmat egy külön program írja be. Ez után jön a fémdetektor program feltöltése. A fémdetektor programja csak akkor indul el, ha az EEPROM tartalom helyes. Ha nem az, akkor egészen más program indul el. A fémdetektor programja nem írja az EEPROM tartalmat, csak olvassa, illetőleg szükség esetén törli a tartalmát. Újraírni a helyes tartalmat nem képes.
A feltöltést a Nano bootloaderével csinálom.
Ha kitörlöm a tartalmát az EEPROMNAK, akkor föltöltöm a Nanora az EEPROM író programot. Ezután rátöltöm a fémdetektor programját, és újra működik.
A lényeg az, hogy a kitörölt EEPROM tartalommal másként működő készüléket a programok nélkül egy hozzáértő helyre tudná-e állítani?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino kódvédelem

Hozzászólás Szerző: Robert »

Egyszerű a válasz: Igen.
Ugyanis az EEPROM kód és a főprogramod kódja egyszerű összehasonlítás valószínűleg. Ez meg nagyon jellegzetes a kódban.

Rutinosan úgy csinálnám meg, hogy a EEPROM adatokkal _számolok_. Több helyen a kódban, hiszen kalibrációs adat is. És ha egy tartományon kívülre esik a kalibrációs adat/szám, akkor épp az a tiltó üzemmód.
Ezt sokkal nehezebb visszafejteni az ötlet nélkül.

De másképp fognálak meg:
- szabályzat nem engedi az eszközt. És valami csak van hogy mit vihetsz/nem vihetsz be. És ebbe fognak kapaszkodni - akár egy olyan szabály is amit TE nem ismersz és tudattalanul megszeged.
atilla
Biztosítékgyilkos
Hozzászólások: 65
Csatlakozott: 2016. május 10. kedd, 18:35

Re: Arduino kódvédelem

Hozzászólás Szerző: atilla »

Az EEPROM kód nincsen a kezedben, csak a Nano-ban lévő program. Az EEPROM már törölve lett.

Igazából már úgy csinálom, ahogyan leírtad. Az EEPROM-ban lévő helyes adatokkal indul a főprogram, illetve a főprogram több helyen használja is az EEPROM tartalmát.

A fémdetektort "tegnap " még lehetett használni. Majd egy fölső döntés ezt felülírta. "Ma" már nem lehet. Nekem ez hobbim. Próbálom bevédeni magamat, ha egyszer még van egy csomó helyem a kontrollerben.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino kódvédelem

Hozzászólás Szerző: Robert »

És a fémkereső helyett az pl. balesetvédelmi eszköz?
Vagy nem fémkereső, hanem mindenféle elvek kombinációjával működő talajradar?

Az a baj ezzel, hogy az eszköz működése vagy nem működése általában nem áll meg. Nagyon szép jogi katyvasz tud lenni....
De azt hiszem ez innentől inkább jogászkodás mint elektronika:(

Én amivel védeném:
- Ujjlenyomatolvasó/titkosítás
- Kódkulcs (nyiltkulcsú titkosítás)
- vízkereső készüllék (pl. vízér figyelő és kereső. Amit a fémek zavarnak, így ezek kiszűrésével szükséges a korrekciót megvalósítani.)
atilla
Biztosítékgyilkos
Hozzászólások: 65
Csatlakozott: 2016. május 10. kedd, 18:35

Re: Arduino kódvédelem

Hozzászólás Szerző: atilla »

Köszi a segítséget.
A készülék már készen van, így a HW-en nem tudok, akarok módosítani. Csak az SW-es lehetőségekkel próbálkozom.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino kódvédelem

Hozzászólás Szerző: Robert »

A kód működésképtelenné tétele humán beavatkozást igényel:(
Amúgy meg nem vacakolnak jogilag: "....-ra hasonlító, vélhetően azzal egyező működésű szerkezet". Innentől nagyon jó ügyvéd és szakértő kell a védelemhez. Erőforrásilag a túloldal általában jobban el van eresztve:(
atilla
Biztosítékgyilkos
Hozzászólások: 65
Csatlakozott: 2016. május 10. kedd, 18:35

Re: Arduino kódvédelem

Hozzászólás Szerző: atilla »

A kódot egy nyomógombbal tudom működésképtelenné tenni. Ha esetleg olyan helyzetbe kerülök.
Nekem sincsen nagy bizodalmam a dolog életképességében, de ha módomban áll, akkor megpróbálok mindent, ami esetleg segíthet, ha már a nyúlcipő sem ment meg.
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Arduino kódvédelem

Hozzászólás Szerző: csabeszq »

Én mondjuk megpróbálnám minimálisra venni a fémdetektor rész méretét és elhelyezni mondjuk a flash 0x6000 címétől (kiterjesztés).
Ha jönnek a rosszfiúk, akkor megnyomod a gombot, a flash-nek az extra része kitörlődik.

Ha meg érdeklődnek, akkor arra tartod fönn azt a helyet, hogy extra feature-öket rakj bele.
atilla
Biztosítékgyilkos
Hozzászólások: 65
Csatlakozott: 2016. május 10. kedd, 18:35

Re: Arduino kódvédelem

Hozzászólás Szerző: atilla »

Már elkészült a gép. De a gombnyomás utáni részén még van mit faragni, azzal nem sokat törődtem.
De most nagy divatja van a pikáccsu keresésnek. Azt a részt arra kellene kihegyeznem.
Válasz küldése