Re: Access control for IoT

Bill Frantz <[email protected]> Mon, 18 Jan 2016 22:57:23 -0800
Newsgroups gmane.comp.capabilities.general
Message-ID <r470Ps-10112i-FF07765E82324D21AC671B1199A05862@Williams-MacBook-Pro.local>
I have been playing with Arduinos for a while now, and their 
update process might be a model.

An Arduino is standard microcontroller chip with a boot loader 
in its program memory which works over a serial data connection. 
The ones with USB interfaces convert the USB data to serial data 
internally. The boot loader means you don't have to have a micro 
controller programmer to load new code into the machine.

While it is possible to brick the Arduino -- it has no memory 
protection -- doing so is quite rare. I have never done it and I 
don't know anyone else who has either. I also have never heard 
of or experienced wearing out the flash memory, and it gets 
written much more frequently during the software development 
cycle than it would be updating deployed devices.


If I were to change this architecture to make a secure update 
scheme, I would make the following changes:

(1) Have enough program memory to be able to store two versions 
of the application software. The current program memory is 32K, 
so this won't be a serious budget breaker. We'll call them the 
current software and the new software candidate.

(2) Have the boot loader verify the signature of the new 
software candidate against a public key installed with the boot 
loader. EC may be a win for the signature algorithm. After 
successfully verifying the signature, the new software candidate 
is copied over the current software completing the update.

Cheers - Bill

-----------------------------------------------------------------------
Bill Frantz        |The nice thing about standards| Periwinkle
(408)356-8506      |is there are so many to choose| 16345 
Englewood Ave
www.pwpconsult.com |from.   - Andrew Tanenbaum    | Los Gatos, 
CA 95032