- Jaki jest najlepszy sposób ochrony kodu flashowanego na dowolnym urządzeniu opartym na AVR przed inżynierią wsteczną?
- Jaki jest łatwy sposób dostarczania aktualizacji użytkownikom końcowym, którzy sami sami flashują bez ujawniania kodu? (Czy to z bootloaderem, który odszyfrowuje zaszyfrowany obraz?)
Nie puszczaj mnie za promowanie DRM, jestem zwolennikiem otwartych platform - jestem tylko ciekawy, jak to by działało.
Odpowiedzi:
Pierwszy:
Na chipie znajdują się bezpieczniki, które można ustawić, aby uniemożliwić zewnętrznym narzędziom odczytanie kodu z chipa. Poszukaj bezpieczników w karcie danych i / lub dokumentacji programisty.
Nie jest idealny, ale chroni przed prostymi atakami.
Druga:
Nie można bezpiecznie pobrać oprogramowania układowego. AVR nie może sam zaprogramować obszarów chronionych:
http://www.atmel.com/dyn/resources/prod_documents/doc1644.pdf
Najlepsze, co możesz zrobić, to użyć zaszyfrowanego języka tokenów (takiego jak podstawowy lub czwarty) i zabezpieczyć interpreter na chipie za pomocą programu ładującego, który może zaprogramować zaszyfrowane tokeny w otwartym obszarze. Podczas działania układ odszyfrowuje i wykonuje instrukcje w locie.
źródło
Jeśli jest to tak ważne i szczególnie martwisz się, że konkurenci wykradną Twój kod, zabierz ochronę IP w swoich segmentach kodu. Powinieneś się tym zastanowić, jeśli mimo to chcesz zarabiać na projekcie.
Niektóre elementy kodu mogą być opatentowane (dla określonych metod przetwarzania i nowatorskich algorytmów) lub zarejestrowane jako wzory przemysłowe (wygląd, układ i zastosowanie kodu na urządzeniu). W tej sprawie możesz skonsultować się z prawnikiem ds. Własności intelektualnej.
źródło
Jeśli napisałeś własny program ładujący, który akceptował zaszyfrowane dane przez port szeregowy, odszyfrował je i zapisał w obszarze przechowywania kodu, możesz mieć bezpieczną aktualizację oprogramowania układowego kodu. Każde urządzenie może nawet mieć swój unikalny klucz deszyfrujący w niestandardowym programie ładującym.
źródło