This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Secure DFU rescue

I've implemented secure DFU which works fine. However, if a user was to do something like quit the App or disable Bluetooth during DFU, or another fault occurred, because the DFU is single bank then the device will be stuck in the bootloader. So I added a capability in the App to discover devices stuck in the bootloader and perform DFU again, this works fine. However, what if the user removed the bonding from iOS/Android? The bootloader will be stuck with the old bonding and the device cannot be recovered. So I'm attempting to modify the bootloader to allow new bondings, but It's not very easy. Has this situation been considered by Nordic? What is the suggested way to solve this problem?

Parents
  • Do you need the bootloader to verify bonds? A simple solution would be to only allow bonded devices to enter the device into DFU mode, but not have the bootloader check for bonds. The firmware should be signed anyways so there isn't a way that somebody could flash rogue software on your device.

    Do you have any buttons on your device which you could use to communicate with the bootloader? Another option in that case would be to edit the bootloader so that a long button-press would disable bond checking in the bootloader.

Reply
  • Do you need the bootloader to verify bonds? A simple solution would be to only allow bonded devices to enter the device into DFU mode, but not have the bootloader check for bonds. The firmware should be signed anyways so there isn't a way that somebody could flash rogue software on your device.

    Do you have any buttons on your device which you could use to communicate with the bootloader? Another option in that case would be to edit the bootloader so that a long button-press would disable bond checking in the bootloader.

Children
Related