Arduino kódvédelem
Arduino kódvédelem
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.
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.
Re: Arduino HW,SW segitség
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?
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?
Re: Arduino kódvédelem
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?
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?
Re: Arduino kódvédelem
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.
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.
Re: Arduino kódvédelem
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.
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.
Re: Arduino kódvédelem
É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.)
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.)
Re: Arduino kódvédelem
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.
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.
Re: Arduino kódvédelem
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:(
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:(
Re: Arduino kódvédelem
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.
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.
Re: Arduino kódvédelem
É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.
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.
Re: Arduino kódvédelem
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.
De most nagy divatja van a pikáccsu keresésnek. Azt a részt arra kellene kihegyeznem.