假设一个这样的情况:
程序需要烧录在外部的FLASH上,MCU内部没有FLASH。
MCU本身并不支持直接读取FLASH的密文进行执行程序,只能读取明文的FLASH进行执行。MCU可以通过程序将FLASH的数据拷贝到SRAM在从SRAM上执行程序。
在这些条件下如何防止别人通过读取外部FLASH的内容反编译破解出FLASH的程序和数据内容呢?
外部加密芯片,这类芯片的基本验证流程是,单片机送一个数进去,就可以得到一个根据特定加密算法,结合芯片的KEY和ID运算,得到一个应答数据,单片机校验这个应答正确,就可认为是正版的,可以继续运行下去。这种加密芯片内部的密码和ID无法被拷贝,这是能实现加密的基本保证。
当然,单片机程序本身还需要一定的反跟踪措施,避免盗版者反汇编后,绕开认证过程,甚至直接破解出密码。