I'm working on a product - a custom PCB containing an ESP32 that needs to accept OTA updates, but that I'd like to protect against people copying the flash onto other boards. The situations I'd like to protect against are:
- A user reading the flash and flashing it to another ESP32 to clone the product.
- A user intercepting an OTA update binary and flashing it to another ESP32
But I'm worried that someone with the knowledge could intercept the OTA binary, and learn enough through debugging/decompiling to bypass the key check entirely.
This seems like a problem that would be common to most products using an ESP32, but I am honestly confused with all of the information out there about securing these chips. I would think that pre-encrypting the OTA binary is the solution, but it seems that almost no-one is doing this, and it's not a supported workflow by espressif.
How do I make sure a product can be secured while being updated OTA?
Thanks
P.S. I am using esp32-arduino right now, but I will happily move to IDF if it's required.