Strona 1 z 1

Aktualizacja oprogramowani przez bootloader - kilka aspektów

: sobota 07 mar 2020, 12:52
autor: StaryAnoda_NEW
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

Re: Aktualizacja oprogramowani przez bootloader - kilka aspektów

: sobota 07 mar 2020, 14:26
autor: dambo
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