一种控制器的动态加密方法及加密系统的制作方法

文档序号:7988645阅读:251来源:国知局
一种控制器的动态加密方法及加密系统的制作方法
【专利摘要】本发明公开了一种控制器的动态加密方法,控制器开始工作且开始计数;控制器接收请求装置发送的外部访问请求;控制器存储当前计数值并将当前计数值发送至请求装置,同时控制器继续计数;请求装置根据请求装置自身存储的加密算法和当前计数值生成输入密钥;控制器根据控制器自身存储的加密算法和当前计数值对输入密钥进行验证;如果控制器通过对输入密钥的验证,则控制器解除其自身的保护。本发明通过计数值实现密钥动态的随计数时间的变化而变化,使得外部匹配密钥随时间变化,具有保护力度强,可有效保证控制器安全,避免被破解的优点。本发明还提出了一种控制器的动态加密系统。
【专利说明】一种控制器的动态加密方法及加密系统
【技术领域】
[0001]本发明涉及控制器加密保护【技术领域】,特别涉及一种控制器的动态加密方法及加S系统。
【背景技术】
[0002]在当前MCU (Micro Controller Unit,微控制单元)系列产品存储体加密或存储体保护领域中,利用密钥机制进行保护的形式被广泛使用。其实现方式有:MCU硬件逻辑设计固定密钥值,或者MCU中存储体里的固化程序包含密钥值,在外部输入匹配密钥与内部密钥经过硬件逻辑或软件算法程序相匹配后,解除MCU加密状态或保护状态。该方法可实现对于每款MCU芯片或不同的应用场合,都有唯一外部密钥提供。外部密钥仅能该MCU合法授权方获得,第三方不予提供,预防程序被破解,有效阻止盗版行为,达到产品保护的目的。上述密钥实现方式,其MCU内部密钥是通过硬件设计中固化的内部密钥值,或存在只读存储体中的程序值决定的,其在MCU整体设计完成后已固定,具有唯一性。为满足与内部密钥的匹配,现有技术利用密钥机制实现MCU保护时,外部输入的匹配密钥不随时间和MCU工作变化而变化,具有固定性,唯一性。
[0003]现有方案中这种唯一性不随时间或MCU的运行而变化,即无论何时或者MCU是否处于工作,外部密钥的值总是固定不变。这导致MCU密钥保护单一化,极有可能在时间上利用逐次尝试或穷举方法,将固有密钥破解,从而导致程序泄漏,对产品开发者造成极大损失。

【发明内容】

[0004]本发明的目的旨在至少解决所述技术缺陷之一。
[0005]为此,本发明的一个目的在于提出在一种控制器的动态加密方法,该方法克服了传统密钥保护固定性和唯一性的不足,将时间观念映射到硬件计数器上,从而实现动态的改变密钥。
[0006]本发明的另一目的在于提出一种控制器的动态加密系统。
[0007]为达上述目的,本发明的第一方面的实施例提出了一种控制器的动态加密方法,包括以下步骤:控制器开始工作且开始计数;控制器接收请求装置发送的外部访问请求;所述控制器存储当前计数值并将所述当前计数值发送至所述请求装置,同时所述控制器继续计数;所述请求装置根据所述请求装置自身存储的加密算法和所述当前计数值生成输入密钥;所述控制器根据所述控制器自身存储的加密算法和所述当前计数值对所述输入密钥进行验证;以及如果所述控制器通过对所述输入密钥通过的验证,则所述控制器解除其自身的的保护。
[0008]根据本发明实施例的控制器的动态加密方法,通过计数值实现密钥动态的随计数时间的变化而变化,使得外部匹配密钥随时间变化,具有可变性,并且硬件设计的加密运算逻辑的处理顺序同时随计数值的变化而变化,具有可变性,从而提高加密的安全性。此外,该方法成本低、保护力度呈指数级增强。
[0009]本发明第二方面的实施例提出了一种控制器的动态加密系统,包括:控制器和请求装置,其中,所述控制器在启动之后开始计数,并在接收到外部访问请求以后,存储当前计数值并将所述当前计数值发送至所述请求装置,并继续计数,并根据所述控制器自身存储的加密算法和所述当前计数值对输入密钥进行验证,并在所述控制器通过对所述输入密钥的验证以后,解除其自身的保护,所述请求装置用于向所述控制器发送外部访问请求,并在接收到来自所述控制器发送的所述当前计数值以后,根据所述请求装置自身存储的加密算法和所述当前计数值生成所述输入密钥。
[0010]根据本发明实施例的控制器的动态加密系统,通过计数值实现密钥动态的随计数时间的变化而变化,使得外部匹配密钥随时间变化,具有可变性,并且硬件设计的加密运算逻辑的处理顺序同时随计数值的变化而变化,具有可变性,从而提高加密的安全性,保护力度强。
[0011]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
【专利附图】

【附图说明】
[0012]本发明所述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0013]图1为根据本发明实施例的控制器的动态加密方法的流程图;
[0014]图2为根据本发明实施例的控制器的动态密钥逻辑的接口示意图;
[0015]图3为根据本发明实施例的控制器的动态加密方法的原理图;
[0016]图4为根据本发明实施例的控制器的动态加密方法的具体处理流程图;以及
[0017]图5为根据本发明一个实施例的控制器的动态加密系统的示意图。
【具体实施方式】
[0018]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0019]下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。此夕卜,本发明提供了的各种特定的工艺和材料的例子,但是本领域普通技术人员可以意识到其他工艺的可应用于性和/或其他材料的使用。另外,以下描述的第一特征在第二特征之“上”的结构可以包括第一和第二特征形成为直接接触的实施例,也可以包括另外的特征形成在第一和第二特征之间的实施例,这样第一和第二特征可能不是直接接触。
[0020]在本发明的描述中,需要说明的是,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
[0021]参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
[0022]下面参考附图对根据本发明实施例提出的控制器的加密方法及加密系统进行描述。
[0023]图1示出了本发明实施例提出的控制器的加密方法的流程,其中控制器中具有计数功能,计数功能可由软件实现,也可由集成在控制器中的硬件计数器实现,在本发明的一个示例中,选择为32位硬件计数器进行计数。可以理解的是,所述计数器的位数仅出于示例目的,本发明实施例不限于此。位数越多,密钥越复杂。本发明实施例提出的控制器的加密方法的流程通过图2所示的动态密钥逻辑的多个执行主体共同协作完成。
[0024]具体地,多个执行主体包括:保护计数器、锁存器、运算逻辑单元。上述各个模块与控制器和外部访问请求装置进行信息交互,以将外部访问请求装置输入的密钥与锁存值进行匹配验证,从而完成控制器的加密过程。
[0025]步骤SlOl:控制器开始工作且开始计数。
[0026]步骤S102:控制器接收请求装置发送的外部访问请求。
[0027]其中,控制器可以为MCU,MCU正常启动工作时,计数器与控制器同步启动,即计数值与控制器同步启动,也就是说,在控制器启动时,计数器开始计数,并且计数值的计数时钟与所述控制器同步启动,具体地,硬件保护计数器根据MCU的主时钟MCLK开始从初始加载值INIT_NUM计数,主时钟MCLK不能进行门控,MCU正常启动一段时间后才能允许外部请求。当MCU正常启动一段时间后,外部访问请求装置发出访问请求时,MCU接收到访问请求标志,此时MCU接收请求装置发送的外部访问请求EXT_REQ。
[0028]步骤S103:控制器存储当前计数值,并将当前计数值发送至请求装置,同时控制器继续计数。
[0029]具体地,当外部对MCU发出内部访问请求EXT_REQ时,32位保护计数器取当前值,并将该值CUR_VALUE1锁存到32位寄存器LATCH_REG中,如果CUR_VALUE1计算后为33位,那么舍弃最高位来实现计数循环。硬件算法逻辑根据LATCH_REG中32位不同的O或1,实现不同的硬件运算逻辑。其中,32位数中每一位的O或I均表示关闭或开启一种基于CTR_VALUEl的运算逻辑。具体而言,MCU将计数器的当前计数值CUR_VALUE1存储至锁存器之中,并将当前计数值CUR_VALUE1发送至请求装置。此外,控制器将当前该硬件计数器的值送入锁存器的过程中,该硬件计数器同时仍保持继续计数。
[0030]步骤S104:请求装置根据请求装置自身存储的加密算法和当前计数值生成输入密钥。
[0031]具体地,在执行完步骤S103之后,请求装置根据请求装置自身存储的加密算法和计数值CTR_VALUE1生成输入密钥,并输入到运算逻辑单元中。
[0032]步骤S105:控制器根据控制器自身存储的加密算法和当前计数值对输入密钥进行验证。
[0033]具体地,MCU根据自身存储的加密算法和当前计数值⑶R_VALUE1对输入密钥进行验证。
[0034]步骤S106:如果控制器通过对输入密钥的验证,则控制器解除其自身的保护。
[0035]具体地,在执行完步骤S105之后,当MCU判断外部输入32位匹配密钥MATCH_KEY与之前锁存的计数值CUR_VALUE1相匹配后,MCU系统将解除保护,MCU内部存储体可被正常访问。
[0036]在本发明的一个实施例中,还包括:如果控制器判断输入密钥未通过验证,则控制器对计数器的当前计数值进行重置。
[0037]具体地,如果MCU判断外部输入32位匹配密钥MATCH_KEY与之前锁存的计数值CTR_VALUE1不匹配时,保护系统将继续阻止外部对MCU的访问。由于计数器始终在计数,直到下一次访问请求发出,保护逻辑继续将当前计数值锁存,并告知MCU外部,需外部提供另一匹配密钥。为此,在每次错误请求后,控制器需要对计数器的当前计数值进行重置。
[0038]在本发明的进一步实施例中,控制器对当前计数值进行重置包括:将当前计数值与预设的质数相加之后,作为重置之后的当前计数值。其中,预设质数可以为除2之外的其余所有质数,且该质数为外部用户不可知的。具体地,例如该质数为7,计数器在每次错误请求后重载REL0AD_VALUE为当前锁存值+7,并清除上一次相关访问请求的请求信息,等待下一次的访问请求,并不继续在上次计数值的基础上继续计数,从而有效防止外部以固定周期循环形式对某一个或某几个固定的锁存值进行破解。
[0039]由于质数具有不能被任何除I和本身的数整除的特性,所以当在计数值的基础上加一个质数时,在该32位计数器记满一轮后(2的32次幂次)会打乱外部原先的破解顺序,有效避免对每一轮计数中固定几个计数值进行破解或某值的倍数值进行破解(例如:4、8、12,16....这样的破解顺序在内部加了 7之后就无法正常进行了)。以此方式,在每次告知外部具体值时,每次需要的匹配密钥将随MCU的上电启动后不断改变,对于32位的计数器,理论上总密钥达2的32次幂个,相应匹配密钥也为2的32次幂个,随时间改变,考虑理论上对于每个正确密钥的破解,则该动态密钥的破解难度呈指数级增强;计数器计数值不同,硬件加密运算逻辑的处理顺序也会随之改变,保证密钥的动态特性。
[0040]当外部再次对MCU发出内部访问请求EXT_REQ时,32位保护计数器取当前值,并将该值CUR_VALUE2锁存到32位寄存器LATCH_REG中,如果CUR_VALUE2计算后为33位,那么舍弃最高位来实现计数循环。
[0041]硬件算法逻辑根据LATCH_REG中32位不同的O或1,实现不同的硬件运算逻辑。32位数,每一位的O或I均表示关闭或开启一种基于⑶R_VALUE2的运算逻辑。
[0042]当外部输入32位匹配密钥MATCH_KEY正确后,MCU系统将解除保护;当外部输入32位匹配密钥MATCH_KEY错误后,MCU系统将继续处于保护状态;重载当前计数值REL0AD_VALU2,并且清除上一次相关访问请求的请求信息,等待下一次访问请求。
[0043]如此反复,利用计数器和相关保护运算逻辑实现MCU可变的动态密钥,无需软件程序操作,有效加大密钥防护力度。
[0044]下面结合图3和图4以具体示例对根据本发明的控制器的加密方法的实现过程进行描述。
[0045]图3示出了本发明实施例提出的控制器的加密方法的原理,其中,以MCLK作为计数器计数时钟,INIT_NUM为计数器初始计数值,锁存器LATCH_REG用于锁存当前计数值并输出给MCU外部,运算逻辑单元将锁存值和输入密钥值进行匹配判断,匹配失败后,计数器将自动重载RELOAD_VALUE后继续计数,REL0AD_VALUE=CUR_VALUE+7,用于避免外部以固定计数间隔和满计数循环来针对固定的几个CUR_VALUE进行破解。
[0046]图4示出了本发明实施例的控制器的加密方法的具体操作处理的流程。其中,本发明的发明实施环境及工具为:设计型计算机、EDA及FPGA实现工具、verilog语言,Windows XP及Linux操作系统。具体操作处理的流程结合图3给出的原理进行控制器的加密方法的实施。具体步骤为:
[0047]步骤S201,MCU 启动。
[0048]步骤S202,计数器加载初始值INIT_NUM。
[0049]在执行完步骤S201之后,即MCU正常启动后,保护计数器加载初始计数值,其中,加载初始计数值INIT_NUM,计数值INIT_NUM为但不限于:32'h2080_f0f0。
[0050]步骤S203,计数器计数。
[0051]具体地,保护计数器加载初始计数值之后,计数器开始计数,计数时钟为MCLK。
[0052]步骤S204,判断EXT_REQ是否置1,即当EXT_REQ置I时,请求装置向控制器发送外部访问请求。如果是执行步骤S205,否则返回步骤S203。
[0053]步骤S205,锁存当前计数值。
[0054]具体地,当输入外部访问请求,即EXT_REQ=1,当前计数值为32'h3713_dbl4,MCU将当前计数值锁存到锁存器LATCH_REG中,即CUR_VALUE的值为32'h3713_dbl4。
[0055]步骤S206,锁存值输出。
[0056]具体地,在执行完步骤S205之后,MCU将当前锁存值⑶R_VALUE发送给请求装置。
[0057]步骤S207,根据锁存值输入密钥。
[0058]具体地,请求装置根据请求装置自身存储的加密算法和当前锁存值⑶R_VALUE生成输入密钥MATCH_KEY,并输入到运算逻辑单元中。
[0059]步骤S208,密钥运算。
[0060]具体地,运算逻辑单元将当前锁存值CUR_VALUE和输入密钥值MATCH_KEY进行匹配运算。其中,控制器自身的加密算法可以通过如图5所示的加密运算单元实现,其示例运算逻辑为CUR_VALUE的对应位与INIT_NUM的对应位根据CUR_VALUE的对应位的O或I进行相应的位运算,例如:此时的CUR_VALUE=32'h3713_dbl4,并且CUR_VALUE[31] = 0,INIT_NUM=32'h2080_f0f0,那么经查表可得CTR_VALUE[31]对应位为O时的运算逻辑,即MATCH_KEY[31]=CUR_VALUE[31]~INIT_NUM[31],CUR_VALUE[30] =0,那么经查表可得 CUR_VALUE[30]对应位为 O 时的运算逻辑,即 MATCH_KEY[30]=CUR_VALUE[30]~INIT_NUM[30];CUR_VALUE[29]=1,那么经查表可得CUR_VALUE[30]对应位为I时的运算逻辑,即MATCH_KEY[29]=CUR_VALUE[29]~INIT_NUM[29],对于取反运算,MATCH_KEY[x]=~CUR_VALUE[x]。依次根据如表1运算得出:MATCH_KEY=32'hl49133e0。
[0061]
【权利要求】
1.一种控制器的动态加密方法,其特征在于,包括以下步骤: 控制器开始工作且开始计数; 控制器接收请求装置发送的外部访问请求; 所述控制器存储当前计数值并将所述当前计数值发送至所述请求装置,同时所述控制器继续计数; 所述请求装置根据所述请求装置自身存储的加密算法和所述当前计数值生成输入密钥; 所述控制器根据所述控制器自身存储的加密算法和所述当前计数值对所述输入密钥进行验证;以及 如果所述控制器通过对所述输入密钥的验证,则所述控制器解除其自身的保护。
2.如权利要求1所述的控制器的动态加密方法,其特征在于,所述计数值与所述控制器冋步启动。
3.如权利要求2所述的控制器的动态加密方法,其特征在于,所述计数值的计数时钟与所述控制器同步启动。
4.如权利要求1所述的控制器的动态加密方法,其特征在于,还包括: 如果所述控制器判断所述输入密钥未通过验证,则所述控制器对当前计数值进行重置。
5.如权利要求4所述的控制器的动态加密方法,其特征在于,所述对当前计数值进行重置的步骤,具体包括: 将所述当前计数值与预设的质数相加之后,作为重置之后的当前计数值。
6.一种控制器的动态加密系统,其特征在于,包括:控制器和请求装置,其中, 所述控制器在启动之后开始计数,并在接收到外部访问请求以后,存储当前计数值并将所述当前计数值发送至所述请求装置,并继续计数,并根据所述控制器自身存储的加密算法和所述当前计数值对输入密钥进行验证,并在所述控制器通过对所述输入密钥的验证以后,解除其自身的保护, 所述请求装置用于向所述控制器发送外部访问请求,并在接收到来自所述控制器发送的所述当前计数值以后,根据所述请求装置自身存储的加密算法和所述当前计数值生成所述输入密钥。
7.如权利要求6所述的控制器的动态加密系统,其特征在于,所述计数值与所述控制器冋步启动。
8.如权利要求7所述的控制器的动态加密系统,其特征在于,所述计数值的计数时钟与所述控制器同步启动。
9.如权利要求6所述的控制器的动态加密系统,其特征在于,所述控制器还用于在判断所述输入密钥未通过验证以后,对当前计数值进行重置。
10.如权利要求9所述的控制器的动态加密系统,其特征在于,所述控制器对当前计数值进行重置的方式为: 将所述当前计数值与预设的质数相加之后,作为重置之后的当前计数值。
【文档编号】H04L9/32GK103916243SQ201210591224
【公开日】2014年7月9日 申请日期:2012年12月30日 优先权日:2012年12月30日
【发明者】周博, 陆青, 郭平日, 杨云 申请人:比亚迪股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1