打开或者关闭加密
1 | examples/usb/usb_mic/CMakeLists.txt |
打开加密时的依赖项
烧入efuse key
BouffaloLabDevCube -> View-> MCU -> Efuse Key
三个需要改的地方, AES MODE 选 None
!!!
ef_key_slot2(hex) ce043c3e22ad711d4033c548970b0a7b Write Lock Read Lock 打勾
ef_key_slot3(hex) 0710340a96e1f0d3bbc355b2261b4c2b Write Lock Read Lock 打勾
改完后, 点击软件上的Create
按钮, 生成efuse数据文件
板子和pc 使用typec 连接, 先按boot 按键0.5s, boot
按键不要松开, 再接着另一个手指按reset
按键, 两个按键一起按3s后, 两个按键同时松开, 此时按软件上的Refresh按钮, COM Port 中出现COM3, 选择COM3.
此处COM3 端口和烧bin的端口是同一个
点击软件上Program
按钮, 烧入生成的efuse数据文件.
注意事项
!!! efuse key只能烧写一次, 千万不能写错
key信息 ce043c3e22ad711d4033c548970b0a7b 0710340a96e1f0d3bbc355b2261b4c2b !!! 一定要保密, 不能泄露
为不同的客户定制不同key
产品可能会卖给多家客户,最好是为每一家客户定制一个key.
在代码根目录下:
1 | cd tools/bflb_flash_tool/packing |
最终生成产物名字不叫usb_mic.elf, 如为$target_name.elf, 则命令变为
python2 tools/bflb_flash_tool/packing/pack.py out/examples/usb/usb_mic/$target_name.elf out/examples/usb/usb_mic/$target_name.bin out/examples/usb/usb_mic/$target_name.pack.bin
最终生成的aes_priv_key和$target_name.pack.bin就是为该客户定制的.
其中产线需要为该家客户烧录新生成的aes_priv_key和使用这个key重新加壳的$target_name.pack.bin
产出
make 生成的文件,在打开加密时, 需要使用
1 | out/examples/usb/usb_mic |
关闭加密时, 使用usb_mic.bin
如果需要发布给客户, 请加密并提供
usb_mic.pack.bin
, 最好在给到客户前把usb_mic.pack.bin
改下名字, 不要带pack字样不要给客户elf文件, elf文件没有保护关键的算法代码, 会造成泄露
加密后如何判断烧入板子后解密是否正常
打开加密后make生成的log, 最后有crc的信息
1 | [ 97%] Building C object examples/usb/usb_mic/CMakeFiles/usb_mic.elf.dir/__/__/__/bsp/bsp_common/platform/syscalls.c.obj |
bin烧入板子后, 运行的log有
1 | ____ __ __ _ _ _ |
两处的crc result 值相等, 证明解密正常