Skocz do zawartości

Czy jest możliwość zabezpieczenia kodu w Arduino lub esp32 przed odczytaniem z mikrokontrolera?


Tom28

Pomocna odpowiedź

Witam ciekawi mnie taka myśl czy w arduino mega i esp32 można jakość się zabezpieczyć by nikt nie mógł skopiować kodu i wgrać na inną płytkę tego samego? 

Czy wogule ktoś może ściągnąć kod z płytki i go edytować? 

Jakie są metody do obrony? I jak można to zrobić? 

Kompiluje arduino ide. 

Pozdrawiam i dziękuję za każdą odpowedz 😊

  • Lubię! 1
Link do komentarza
Share on other sites

Nie wiem jak w Arduino, ale dla ESP32 robisz to programem esptool. Tylko trzeba uważać, bo jak się pomylisz to możesz zostać z gustowną dekoracją na ścianę.

Link do komentarza
Share on other sites

Ok poczytam. A łatwo jest odczytać dany program? Czy jak się odczyta to jest możliwość edycji czy to tylko ciąg znaków? Dla arduino i dla esp32 tak samo jest? 

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

2 godziny temu, Tom28 napisał:

Czy wogule ktoś może ściągnąć kod z płytki i go edytować? 

W ogóle to zależy od mikrokontrolera. Jeśli twój program nie został zabezpieczony to taki ściągnięty plik można poddać deasemblacji  kodu, w ten sposób otrzymasz program w assemblerze będzie on daleki od tego co wpisałeś w kodzie źródłowym lecz dla wprawnego programisty jest to punkt wyjścia dla wprowadzenia zmian w oprogramowaniu urządzenia. AVR mają fuse i lock bit za ich pomocą możesz zablokować możliwość odczytu programu, tj: flash nadal daje się odczytać ale jest to zbiór przypadkowych wartości nie mających nic wspólnego z rzeczywistym programem który siedzi w mikrokontrolerze.

Link do komentarza
Share on other sites

@_LM_ Taka ciekawostka - kod można też dekompilować i czasem efekty są zaskakująco dobre. Brakuje oczywiście nazw funkcji i zmiennych, ale kod bywa całkiem czytelny 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

3 godziny temu, Santiago napisał:

Istnieje  musisz pozmieniać w samym uC  Lock bity. Poczytaj

Kiedyś znalazłem jakieś dalekowschodnie strony oferujące za niewygórowaną cenę odczyt kodu z tak zabezpieczonego kontrolera.

Jak się robi sterownik do akwarium, to można sobie ustawiać lockbity. Ale jak się robi międzygalaktyczny nadprzestrzenny komunikator z obcą cywilizacją, to warto mieć świadomość, że skopiowanie to tylko kwestia pliku $$$ i paru dni.

W esp32 jest secureboot i flash encryption. Wystarczy żeby żaden amator nie skopiował kodu.

  • Lubię! 1
Link do komentarza
Share on other sites

Dziękuję za zainteresowanie. 

Tu chodzi tylko o to że jak stworze sobie jakiś program na płytce arduino (bo narazie na niej się bawię a przyszłościowo esp32) i pożyczę koledze płytkę arduino mega z tym programem do testów to by on sobie nie mógł skopiować programu. 

Zaczynam czytać o tych lock bitach. Czy jak zablokuje na tych bitach to ja będę mógł później odblokować by dograć inny program? 

Najfajniej było by jakieś hasło ustawić czy coś w tym stylu ale takich opcji raczej niema hehe

Dzięki za każdy komentarz i liczę na zrozumienie laika 😊

Link do komentarza
Share on other sites

Na płytce Arduino MEGA jest to banalne, bo flash jest wbudowany w uC, nie da się odczytać, ale skasować można. W ESP jest flash zewnętrzny i zabezpieczenie polega na zaszyfrowaniu jego zawartości, a klucze ustawia się tylko raz w rdzeniu ESP32. Wszystkie zabezpieczenia są do obejścia, ale nie dla zwykłych zjadaczy chleba. Po ustawieniu szyfrowania w ESP32 możesz wgrać nowy firmware  przez OTA https://circuitdigest.com/article/how-to-secure-esp32-firmware-and-flash-memory-using-esp-idf-framework .

Link do komentarza
Share on other sites

4 minuty temu, kaczakat napisał:

Wszystkie zabezpieczenia są do obejścia, ale nie dla zwykłych zjadaczy chleba.

Popieram, starsze modele STM32 chyba wystarczyło resetować do skutku, aż wreszcie uda się wstrzelić programatorem w trakcie boot'a (zanim bootloader zablokuje odczyt). Potem chyba to naprawili, ale wiele sprzętu nadal ma tę podatność (chyba tak włamali się do taga NFC od Apple).

Link do komentarza
Share on other sites

(edytowany)
18 godzin temu, kaczakat napisał:

Na płytce Arduino MEGA jest to banalne, bo flash jest wbudowany w uC, nie da się odczytać, ale skasować można.

Witaj poczytałem trochę i chciałbym by ktoś rozwiał moje wątpliwości. 

W programie atmelstudio wchodzę w zakladke lock bits i mam 3 podpunkty. 

Lb i tam mam (programming and veryficjation disabled) i to mnie dotyczy po włączeniu tego nikt nie odczyta i nie skopiuje. A jak będę chciał wgrać nowy kod to wpierw muszę użyć erase i wgrać nowy i znowu zablokować. Dobrze rozumiem? 

Jeszcze jest opcja blb0 i blb1 czytam trochę o tym ale dla laika to za dużo hehe. Czy ktoś prostym językiem wyjaśni mi co one blokują? 

Dziękuję za pomoc i wyjaśnienie 

Pozdrawiam 

Edytowano przez Tom28
Douczenie
  • Lubię! 1
Link do komentarza
Share on other sites

@kaczakat czy może jak zablokuje bit lb to bity blb0 i blb1 też są zablokowane i mnie nie interesują?

Do arduino 2560 program atmelstudio będzie ok czy może jakimś inny użyć? 

Przepraszam za laickie pytanie 😊 

Pozdrawiam 

Link do komentarza
Share on other sites

Witajcie. Nadal mam problem z tymi lock bitami. Wgrałem program na win 10 "mkAVR Calculator" to jest nakładka graficzna avrdude. Mam programator usbasp v2. 0 i po podłączeniu do icsp w arduino uno (na uno robię testy) wszystko ok dałem zakładkę w loock bitach "further programming and veryfication disabled" wszystko fajnie odczytałem pamięć flash i w pliku hex otrzymałem pare znaków (:00000001FF) super zablokowane ale naszło mnie by sprawdzić co pokaże programator wewnętrzny arduino i zaskoczenie bo on odczytał pamięć flash jak by nie była zabezpieczona. Kompletny plik hex z programem. 

Czy ja coś źle zrobiłem? Szukam na necie rozwiązania problemu ale nigdzie nie mogę znaleźć. 

Dziękuję i pozdrawiam 

Link do komentarza
Share on other sites

12 minut temu, Tom28 napisał:

Kompletny plik hex z programem

to teraz jak masz możliwość porównaj ten HEX z tym co był wgrany do mikrokontrolera

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.