> What makes this so complicated?
Making sure all data access goes through an abstraction layer that transparently encrypts and decrypts data has some complex bits to it, especially the part about storing the encryption key safely and rotating it properly. It also complicates all the hardware programming because nothing gets direct access to storage anymore, which a lot of IOT devices assume they have.
> When you say expensive, do you mean computationally, dev time, or specialized hardware?
All three. Computationally it's not expensive per se, but it requires adding a few more chips and making the CPU a little more powerful to handle all of the encryption and decryption. In IOT devices, every chip and every KB of RAM counts, so adding that overhead to every device could be a deal breaker on its own. I've worked with IOT vendors and they push back on even small increases in RAM, because it hurts their profitability at scale.
Dev time of course is required to make all the software support the abstraction layer, and specialized hardware would be required to securely store the encryption key (maybe depending on how hard core you wanted to get).