delphi_study 2024-06-15 22:58 采纳率: 83.3%
浏览 13
已结题

用microphyth开发的esp32程序,写入芯片,怎么防止被读出

用microphyth开发的esp32程序,写入芯片,怎么防止被读出

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-15 22:58
    关注

    引自免费微信小程序:皆我百晓生

    要防止使用MicroPython开发的ESP32程序被读取,主要可以采取以下几种策略:

    1. 使用加密存储:ESP32支持多种类型的闪存加密。你可以利用ESP-IDF框架中的安全特性来对固件进行加密。在编译时,使用ESP-IDF的secure_boot功能,这会要求在启动时验证签名,防止未授权的固件运行。

    2. 代码混淆:虽然MicroPython源码易于阅读,但通过混淆代码可以增加逆向工程的难度。这可能包括重命名变量、函数和类,以及使用一些复杂的编码技术使代码难以理解。

    3. 禁用串口下载:默认情况下,ESP32可以通过串口进行编程。确保在生产环境中禁用这一功能,防止未经授权的用户通过串口读取或修改代码。

    4. 使用硬件保护:ESP32的某些型号提供了硬件安全特性,如Flash Crypto Co-Processor (EFUSE)。你可以使用这些特性来保护敏感信息,如密钥和算法。

    5. 软件防护机制:在代码中实现一些检测和防御机制,比如检测是否有调试器连接,一旦检测到调试器立即执行自我擦除或进入安全模式。

    下面是一个使用ESP-IDF进行安全引导的例子配置:

    # 在你的项目目录下的 menuconfig 中启用安全引导
    menuconfig
    
    # 选择 "Security Features" -> "Secure Boot"
    # 然后启用 "Enable secure boot v2"
    
    # 配置签名密钥
    # 你需要一个签名密钥文件,例如 my_secure_key.pem
    # 运行以下命令生成签名密钥(如果你还没有)
    openssl genpkey -algorithm RSA -out my_secure_key.pem
    
    # 编译并签名固件
    make secure_boot_sign_key=my_secure_key.pem
    

    然后,你将需要使用ESP-IDF工具将这个签名密钥烧录到ESP32的EFUSE中:

    esptool.py --chip esp32 write_efuse secure_boot_signing_key_hash my_secure_key.pem
    

    记住,这些步骤需要在ESP32的开发环境中进行,确保你已经安装了ESP-IDF,并且设置了正确的环境变量。

    最后,即使采取了上述措施,也应意识到没有绝对的安全方案。物理访问设备通常意味着攻击者可以找到绕过软件安全措施的方法。因此,设计系统时应考虑多层安全策略,包括物理安全和软件安全。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月25日
  • 已采纳回答 6月17日
  • 创建了问题 6月15日

悬赏问题

  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算
  • ¥50 AI大模型精调(百度千帆、飞浆)