芯片编程加密保护方法及其系统的制作方法

文档序号:8259437阅读:518来源:国知局
芯片编程加密保护方法及其系统的制作方法
【技术领域】
[0001]本发明涉及可编程芯片,特别涉及芯片编程加密保护方法。
【背景技术】
[0002]目前,大部分现有的可编程芯片解决方案,可编程芯片按照内部只读启动程序(Bootrom)代码驱动USB (通用串行总线,Universal Serial Bus)或者UART (通用非同步收发传输器,Universal Asynchronous Receiver and Transmitter)等硬件接口与编程器(PC loader)交互,将编译后的代码以二进制文件格式或者其他兼容机器码格式下载到系统非易失性存储器中,系统正常运行时,再由内部引导装载程序(Bootloader)。将编程代码由系统非易失性存储器中载入到内存运行实现各种产品功能及指标。
[0003]可编程芯片编程下载一般工作流程如图1所示。
[0004]步骤说明:
[0005]1、芯片内核启动Bootrom初始化外部USB或UART接口。
[0006]2、PC loader响应Bootrom将Bootloader载入系统随机存取存储器RAM中。
[0007]3、Bootrom 完成载入后执行 RAM 中的 Bootloader。
[0008]行业内同一公司在设计同类型芯片内部Bootrom程序时,为标准化PC loader接口函数,往往采用某种固定Bootloader的数据格式,从而保证交互机制统一。
[0009]以一种通用的形式为例进行说明,Bootrom和Bootloader交互数据格式如图2所
/Jn ο
[0010]PC loader和Bootrom交互信息中,以字段HS作为编程下载握手信号,Bootrom通过UART或USB接收到握手信号后,通过字段CODE LENGTH获取用户要下载的CODE的长度信息,然后接收这一长度的Bootloader代码存放在内部RAM特定区域中。Bootrom程序把CODE数据接收完后,执行跳转指令,程序PC指针跳转执行Bootloader程序。
[0011]芯片设计完成发布后内核Bootrom载入用户Bootloader的过程及数据格式统一,且Bootrom在芯片生产封装时固化,导致同一芯片方案应用于多个终端用户之间时无差异。通常芯片解决方案在应用时,都需要对终端客户公开这些信息,这样同一芯片解决方案的下载过程和细节对所有厂商都是透明的,容易造成安全隐患。
[0012]假如A厂商已经设计好一款产品并已经在市面发售,B厂商可以通过如下手段轻松获得A厂商的发售产品的内部固件数据:B厂商通过公开渠道获得A厂商的产品,利用其获得的芯片公开资料,设计一个独特的Bootloader(以B00T_S命名),B00T_S的作用不是搬移正式固件数据到RAM执行,而是读取A厂商产品NAND(Not And,与非门)或eMMC(EmbeddedMultiMediaCard,嵌入式存储器)中的固件内容发回给PC ;只要B厂商按照芯片Bootrom规定的方法将B00T_S下载到A厂商产品中,就能够轻易获取A厂商的正式固件数据,实现产品复制。

【发明内容】

[0013]本发明的目的在于提供一种芯片编程加密保护方法,使得芯片可灵活配置为鉴权模式和正常模式,芯片编程下载通过鉴权进行识别控制,鉴权控制信息完全受控于终端用户,有效提高产品的安全性。
[0014]为解决上述技术问题,本发明提供了一种芯片编程加密保护方法,包含以下步骤:
[0015]将引导装载程序和作为客户端密码的用户鉴权数据输入编程器中;
[0016]将所述弓I导装载程序和所述用户鉴权数据传输给芯片内部的只读启动程序;
[0017]所述只读启动程序通过所述引导装载程序接收系统存储器中的产品鉴权数据;
[0018]所述只读启动程序对比所述用户鉴权数据和所述产品鉴权数据;
[0019]若所述用户鉴权数据和所述产品鉴权数据相同,则进行所述弓I导装载程序的载入与执行动作;
[0020]若所述用户鉴权数据与所述产品鉴权数据不同,则禁止执行所述引导装载程序的载入与执行动作。
[0021]本发明还提供了一种芯片编程加密保护系统,包含输入模块,传输模块,控制接收模块,控制对比模块和执行模块;
[0022]所述输入模块用于将引导装载程序和作为客户端密码的用户鉴权数据输入编程器中;
[0023]所述传输模块用于将所述用户鉴权数据和所述引导装载程序传输给芯片内部的只读启动程序;
[0024]所述控制接收模块用于控制所述只读启动程序通过所述引导装载程序接收系统存储器中的产品鉴权数据;
[0025]所述控制对比模块用于控制所述只读启动程序对比所述用户鉴权数据和所述产品鉴权数据;
[0026]所述执行模块用于在所述用户鉴权数据和所述产品鉴权数据相同时,执行所述弓I导装载程序的载入与执行动作,并在所述用户鉴权数据和所述产品鉴权数据不同时,禁止执行所述引导装载程序的载入与执行动作。
[0027]相对于现有技术而言,本发明中可编程芯片中增加了用户鉴权数据,和产品鉴权数据,通过用户鉴权数据和产品鉴权数据的加密对比过程,芯片内核在执行引导装载程序之前需要经过芯片内部的只读启动程序对用户鉴权数据和产品鉴权数据进行比较,如果两者相同,才会执行引导装载程序,如果两者不同,则不执行引导装载程序,这个比较的过程即是加密的过程,芯片编程下载通过鉴权进行识别控制,鉴权控制信息完全受控于终端用户,有效提高产品的安全性,而且本发明中的芯片灵活配置鉴权模式与一般模式,能兼顾以往的设计需要。另外,仅需调整芯片内部的只读启动程序即可实现该加密机制,整体修改成本低且易于实现。
[0028]另外,所述编程器通过编程专用接口接收所述引导装载程序和所述用户鉴权数据,所述编程专用接口再将所述引导装载程序和所述用户鉴权数据传输给所述只读启动程序。
[0029]引导装载程序和用户鉴权数据通过编程专用接口接收并传输,便于编程器与只读启动程序实现交互。
[0030]另外,在将所述用户鉴权数据和所述编程器中的弓I导装载程序传输给芯片内部的只读启动程序的步骤之前,还包含以下步骤:
[0031]所述芯片内核启动所述只读启动程序;
[0032]所述只读启动程序将所述编程专用接口初始化,准备接收所述引导装载程序和所述用户鉴权数据;
[0033]所述只读启动程序判断所述芯片的特定通用输入输出接口硬件管脚的电平状态,并在判定所述电平状态为高电平时,再进入所述编程器将引导装载程序和用户鉴权数据传输给芯片内部的只读启动程序的步骤。
[0034]在进入鉴权流程之前,芯片内核首先要启动只读启动程序,这个只读启动程序被启动后才能对编程专用接口进行初始化,为之后接收用户鉴权数据和与产品鉴权数据相关的引导装载程序做好准备,另外,只读启动程序能够通过判断芯片的特定通用输入输出接口硬件管脚的电平状况决定系统是进入鉴权流程还是进入一般流程,准确,安全可靠。
[0035]另外,如果所述只读启动程序判定所述芯片的特定通用输入输出接口硬件管脚的电平状态为低电平,则执行以下步骤:
[0036]通过所述编程专用接口将所述引导装载程序传输给所述只读启动程序;
[0037]所述芯片内核判断所述只读启动程序是否已经接收到所述引导装载程序;
[0038]若所述引导装载程序已经被所述只读启动程序接收,则进行所述引导装载程序的载入与执行动作;
[0039]若所述引导装载程序尚未被所述只读启动程序接收,则禁止执行所述引导装载程序的载入与执行动作。
[0040]上述过程即不进行加密比较的过程,本发明灵活配置鉴权模式与一般模式,能兼顾以往的设计需要。
[0041]另外,所述系统存储器为非易失性存储器。
[0042]另外,所述非易失性存储器可以为电可擦可编程只读存储器、储存型快闪存储器或片内只读存储器中的一种。
[0043]另外,所述只读启动程序与所述编程器通过包含六个字段的交互数据格式进行数据传输;
[0044]其中,所述六个字段分别为握手信号字段,存储器地址字段,引导装载程序长度字段,用户要下载的代码长度信息字段,鉴权数据字段以及用户代码字段。
[0045]与现有技术相比,增加了存储器地址字段,与产品鉴权数据相关的引导装载程序长度字段以及鉴权数据字段,仅通过调整芯片内部的只读启动程序即可实现本发明的加密机制,整体修改成本低且易于实现。
[0046]另外,所述鉴权数据字段包含用于存储用户鉴权数据的用户鉴权数据字段和用于存储产品鉴权数据的产品鉴权数据字段。
[0047]另外,使用所述编程器直接编程所述存储器地址字段、所述引导装载程序长度字段以及所述鉴权数据字段。
[0048]由于鉴权控制信息完全受控于终端用户,有效提高产品的安全性。
【附图说明】
[0049]图1是根据现有技术中可编程芯片编程下载一般工作流程图;
[0050]图2是根据现有技术中编程下载交互数据格式示意图;
[0051]图3是根据本发明中第一实施方式中
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1