Aktualizacja oprogramowani przez bootloader - kilka aspektów

W tym miejscu zadajemy pytania na temat języka C, dzielimy się swoją wiedzą, udzielamy wsparcia, rozwiązujemy problemy programistyczne.
Awatar użytkownika
StaryAnoda_NEW
User
User
Posty: 103
Rejestracja: środa 04 kwie 2018, 16:48

Aktualizacja oprogramowani przez bootloader - kilka aspektów

Postautor: StaryAnoda_NEW » sobota 07 mar 2020, 12:52

Dzień dobry,

Mam pytanie, napisałem bootloader pod mikrokontroler STM32F051, całość będzie aktualizowana po karcie microSD.
Przed skokiem do aplikacji użytkownika jakie kroki powinienem wykonać oprócz ustawienia wszystkich peryferiów na takie wartości jak po resecie?
Czy remapowanie adresów przerwań powinno być w aplikacji bootloadera czy aplikacji użytkownika?
W jaki sposób zabezpieczyć kod aplikacji na karcie microSD, aby ktoś np nie włożył karty do urządzenia, będzie tam znajdował się plik o takiej nazwie jaką bootloader będzie poszukiwał i zaktualizuję oprogramowanie, softem który nie ma nic wspólnego z urządzeniem?

Na co powinienem zwrócić uwagę podczas wypuszczania urządzenia które będzie miało możliwość aktualizacji przez kartę?

Pozdrawiam
StaryAnoda_NEW

Awatar użytkownika
dambo
Expert
Expert
Posty: 635
Rejestracja: czwartek 17 mar 2016, 17:12

Re: Aktualizacja oprogramowani przez bootloader - kilka aspektów

Postautor: dambo » sobota 07 mar 2020, 14:26

To z mojej strony:
- co do remapowania - zawsze się spotykałem, że to potem aplikacja ustawiała to sobie - ale ot - tak to już było zrobione - muszę sobie to kiedyś przemyśleć
- co do zabezpieczania - to ja to dzielę na 2 aspekty:
-> szyfrowanie - i to zabezpiecza przed tym, że twój wsad na karcie nie będzie w jawnej postaci - tutaj jakiś AES i klucze wpisane też w urządzenie, o krok dalej - można zrobić derywację klucza i wtedy każda paczka będzie szyfrowana innym kluczem, a gdzieś w polu "header" paczki trzeba umieścić "ziarenko" do jego wygenerowania
-> podpisywanie - i to zabezpiecza przed tym, że na twoje urządzenie nie będzie można wgrać firmware z niezaufanego źródła

i te 2 kwestie się wzajemnie uzupełniają i zazwyczaj są stosowane razem.
Inaczej mówiąc:
- szyfrowanie zabezpiecza bardziej twoją firmę przed wyciekiem "kodu"
- podpisywanie - zabezpiecza klienta, że nikt inny nie uruchomi jakiegoś innego kodu na tym urządzeniu

Tematy do przemyślenia:
- format paczki z update -> dodanie tam jakiś nagłówków, informacji o numerze wersji/hardware/projektu, czy dopuszczamy "downgrade" itp
- klucze! jak/gdzie je przechowywać, zabezpieczenia, żeby potem mailami nie fruwały między pracownikami itp. Pewnie jakaś norma ISO do tego jest - to jak ktoś będzie wiedział to uzupełni
Zapraszam na mojego pseudobloga z projektami itp: http://projektydmb.blogspot.com/


Wróć do „Pisanie programów w C”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości