本帖最后由 钟山风雨起苍黄 于 2023-6-3 21:22 编辑
程序加密后传输 + 发布项目程序 + USB直接下载
5.3.2 程序加密后传输(防烧录时串口被监控被分析出程序)目前,所有的普通串口下载烧录编程或升级程序都是采用明码通信的(电脑和目标芯片通信时,或脱机下载板和目标芯片通信时), 问题:如果烧录环节烧录人员/或买通烧录人员的第三方通过分析下载烧录编程时串口通信的数据,高手是可以在烧录时在串口 上引2根线出来,通过分析串口通信的数据分析出实际的用户程序原始的目标代码的。 当然用STC的脱机下载板烧程序总比用电脑烧录程序强 !防止烧录人员将程序轻易从电脑盗走,如通过网络发走,如通过U盘烤走, 防不胜防,当然盗走你的电脑那就没办法那 !所以STC的脱机下载工具比电脑烧录安全,让前台文员烧录,让司机保安烧录都可以。
即使是STC全球首创的脱机下载工具,要防止【不法分子在脱机烧录的过程中,通过分析串口通信数据获得实际的用户程序目标代码】, 也是没有办法达到要求的,这就需要用到最新的 STC8/STC32 系列单片机所提供的程序加密后传输下载功能。
程序加密后传输下载是:用户先通过新版STC-ISP V6.91Q或以上的STC-ISP软件帮你自己自动生成一套你的专用加密密钥对你的程序 进行加密,然后将加密后的代码再通过串口下载,此时下载传输的是加密文件,通过串口分析出来的是加密后的乱码,如不通过派人潜 入你公司盗窃你电脑里面的加密密钥,就无任何价值,便可起到防止在烧录程序时被烧录人员或你要防范的第三方买通你的烧录人员, 在烧录时通过 监测 [P3.0,P3.1] 串口分析出目标代码的途径。
程序加密后传输功能的使用需要如下的几个步骤: 1、生成并保存新的密钥 如下图,进入到“程序加密后传输”页面,点击“生成新密钥”按钮,即可在缓冲区显示新生成的256字节的密钥。然后点击 “保存密钥”按钮,即可将生成的新密钥保存为以“.K”为扩展名的的密钥文件(注意:这个密钥文件一定要保存好,以后 发布的代码文件都需要使用这个密钥加密,而且这个密钥的生成是非重复的,即任何时候都不可能生成两个完全相同的密钥, 所以一旦密钥文件丢失将无法重新获得)。例如我们将密钥保存为“New.k”。
2、对代码文件加密 加密文件前,需要先打开我们自己的密钥。若缓冲区中存放的已经是我们的密钥,则不要再打开。如下图,在“程序加密后传输” 页面中点击“打开密钥”按钮,打开我们之前保存的密钥文件,例如“New.k”,然后返回到“程序加密后传输”页面中点击“加密代码” 按钮,如下图所示,首先会弹出“打开源文件(未加密)”的对话框,此时选择的是原始的未加密的代码文件 点击打开按钮后,马上有会弹出一个类似的对话框,但此时是对加密后的文件进行保存的对话框。 如下图所示,点击保存按钮即可保存加密后的文件。
3、将用户密钥更新到目标芯片中 更新密钥前,需要先打开我们自己的密钥。若缓冲区中存放的已经是我们的密钥,则不要再打开。如下图, 在“自定义加密下载”页面中点击“打开密钥”按钮,打开我们之前保存的密钥文件,例如“New.k”。密钥打 开后,如下图所示,勾选上“下载用户代码前先更新用户密钥”选项和“本次下载的代码为加密代码”的选项, 然后打开我们之前加密过后的文件,打开后点击界面左下角的“下载/编程”按钮,按正常方式对目标芯片 下载完成即可更新用户密钥。
4、加密更新用户代码 密钥更新成功后,目标芯片便具有接收加密代码并还原的功能。此时若需要再次升级/更新代码,则只需要 参考第二步的方法,将目标代码进行加密,然后如下图
对于一片新的STC单片机,可将步骤3和步骤4合并完成,即将密钥更新到目标单片机的同时也可将加密后的代码 一并下载到单片机中,若已经执行过步骤3(即已经将密钥更新到目标芯片中了),则后续的代码更新就只需要 按照步骤4,只需要在“程序加密后传输”页面中选择“本次下载的代码为加密代码”的选项(“下载用户代码前先更新 用户密钥”选项不需要选了),然后打开我们之前加过密后的文件,打开后点击界面左下角的“下载/编程”按钮, 按正常方式对目标芯片下载即可完成用用户自己专用的加密文件更新用户代码的目的 (防止在烧录程序时被烧录人员通过监测串口分析出代码的目的)。
|