单片机闪存程序的安全性保护方法及保护装置及单片机
技术领域
本发明涉及单片机领域,尤其是涉及一种单片机闪存程序的安全性保护方法及一种保护装置及一种单片机。
背景技术
单片机领域发展迅速,其中各种电子类控制应用层出不穷,相应的单片机系统的控制程序和软件算法也越来越复杂,各个嵌入式产品的生产开发商都趋于用于自己独立完善的一套控制程序和软件算法。生产开发商为在单片机市场中拥有更专业更独立的地位,其对自己的产品均实施了严格的保密措施。
目前,对于单片机闪存中的程序代码和软件算法代码,有很多种安全性的保护方法。这些保护方法实现上各有不同,同时也存在着如下主要且明显的问题和不足之处:如普遍使用硬件逻辑或软件算法实现程序加密保护的方式,加密算法太简单则容易被破解,太复杂则又导致开发实现成本较高,而且会影响单片机的工作效率;又如屏蔽单片机的安全性风险功能,虽然在一般情况下能够实现较为严格的安全性防护,但是使得单片机产品同时也失去了相应的功能,在实际单片机应用和产品后期维护中出现明显的困难和劣势。目前逐渐趋向的密钥口令授权方式,其体现了实际市场应用和实际维护的便利性、统一性,但其具体设计实现的成本和复杂度仍旧有较大的改善空间。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明需要提出一种利用闪存编程特性来实现单片机闪存程序的安全性保护方法及一种保护装置及一种单片机。
一种单片机内存程序的安全性保护方法,该单片机包括闪存、访问限制门及安全口令信息区,该访问限制门与该闪存连接,该闪存包括存储需要保护的单片机程序的程序区域及用于收集外部输入的访问口令的口令区域,该口令区域具有原始值且仅支持写入操作并连同该单片机程序一同实施全部擦除操作,该安全口令信息区具有该单片机内部固化的口令数值,该保护方法包括步骤:
S11:根据该访问口令改写该原始值以得到输入口令;
S12:判断该输入口令与该口令数值是否相等,若是则进入步骤S13,若否则进入步骤S14;
S13:解除该外部访问的该访问限制门的限制并将该口令区域的数据变化次数清零;
S14:保持该外部访问的该访问限制门的限制并在该口令区域的数据变化次数增加一次;及
S15:当该口令区域的数据变化次数达到设定值时,清除该闪存存储的所有数据信息。
上述保护方法,利用单片机闪存的独有编程特性来实现程序的安全性保护,且仅通过单片机内部极少的数字逻辑实现,无需通过软件控制,设计简单,相比密钥口令方式,在该口令区域的数据变化次数达到预定数值时,清除该单片机程序的所有数据信息,导致单片机无法工作,进而达到保护程序的目的。
在一些实施方式中,该原始值为该口令区域的初始值,或根据另一访问口令改写该初始值得到的改写值。
在一些实施方式中,该初始值全部为1,该单片机处于安全保护状态。
步骤S11包括:
保持该原始值的非1值数据不变,并根据该访问口令或该另一访问口令,改写该原始值的1值数据以得到该输入口令。
一种单片机内存程序的安全性保护装置,该单片机包括闪存、访问限制门及安全口令信息区,该访问限制门与该闪存连接,该闪存包括存储需要保护的单片机程序的程序区域及用于收集外部输入的访问口令的口令区域,该口令区域具有原始值且仅支持写入操作并连同该单片机程序一同实施全部擦除操作,该安全口令信息区具有该单片机内部固化的口令数值,该保护装置用于根据该访问口令改写该原始值以得到输入口令,及包括:
口令匹配验证模块,其用于接收该输入口令,及用于判断该输入口令与该口令数值是否相等,及用于,若该输入口令与该口令数值相等,解除该外部访问的该访问限制门的限制,及用于,若该输入口令与该口令数值不相等,保持该外部访问的该访问限制门的限制;
计数模块,其用于,若该输入口令与该口令数值不相等,在该口令区域的数据变化次数增加一,及用于,若该输入口令与该口令数值相等,将该口令区域的数据变化次数清零;及
闪存清除控制模块,其用于,当该口令区域的数据变化次数达到设定值时,发出闪存整体全部擦除命令以清除该闪存存储的所有数据信息。
在一些实施方式中,该原始值为该口令区域的初始值,或根据另一访问口令改写该初始值得到的改写值。
在一些实施方式中,该初始值全部为1,该单片机处于安全保护状态。
在一些实施方式中,该保护装置还用于保持该原始值的非1值数据不变,并根据该访问口令或该另一访问口令,改写该原始值的1值数据以得到该输入口令。
一种单片机,包括闪存、访问限制门及安全口令信息区及单片机闪存程序的安全性保护装置,该访问限制门与该闪存连接,该闪存包括存储需要保护的单片机程序的程序区域及用于收集外部输入的访问口令的口令区域,该口令区域仅支持写入操作并连同该单片机程序一同实施全部擦除操作,该安全口令信息区具有该单片机内部固化的口令数值,该保护装置用于根据该访问口令改写该原始值以得到输入口令,及包括:
口令匹配验证模块,其用于接收该输入口令,及用于判断该输入口令与该口令数值是否相等,及用于,若该输入口令与该口令数值相等,解除该外部访问的该访问限制门的限制,及用于,若该输入口令与该口令数值不相等,保持该外部访问的该访问限制门的限制;
计数模块,其用于,若该输入口令与该口令数值不相等,在该口令区域的数据变化次数增加一次,及用于,若该输入口令与该口令数值相等,将该口令区域的数据变化次数清零;及
闪存清除控制模块,其用于,当该口令区域的数据变化次数达到设定值时,发出闪存整体全部擦除命令以清除该闪存存储的所有数据信息。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施方式的描述中将变得明显和容易理解,其中:
图1是本发明较佳实施方式的单片机的模块示意图。
图2是本发明较佳实施方式的单片机内存程序的安全性保护方法的流程示意图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语″第一″、″第二″仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有″第一″、″第二″的特征可以明示或者隐含 地包括一个或者更多个所述特征。在本发明的描述中,″多个″的含义是两个或两个以上,除非另有明确具体的限定。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语″安装″、″相连″、″连接″应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接或可以相互通信;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
下文的公开提供了许多不同的实施方式或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明可以在不同例子中重复参考数字和/或参考字母,这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施方式和/或设置之间的关系。此外,本发明提供了的各种特定的工艺和材料的例子,但是本领域普通技术人员可以意识到其他工艺的应用和/或其他材料的使用。
请参阅图1,本发明一个较佳实施方式的一种单片机10,包括闪存102、访问限制门104、安全口令信息区106及单片机闪存程序的安全性保护装置。该访问限制门104 与该闪存102连接,在单片机10处于保护状态时,访问限制门104禁止外部对存取单片机闪存程序数据进行交换和查看。
该闪存102包括存储需要保护的单片机程序的程序区域108及用于收集外部输入的访问口令的口令区域110。该口令区域110定义命名为KPR区域,KPR区域仅支持写入操作,无法进行单独擦除操作,若想清除KPR内部数据则必须连同整体闪存102 内的需要保护的单片机程序一同实施全部擦除操作,致使整片闪存数据被清除。
该安全口令信息区106的本质为单片机10内部硬件固化数值逻辑。每一批不同的单片机产品该固化数值各不相同,且该固化数值(命名为KPO)仅由单片机生产商和授权的用户所知。该固化数值可为口令数值。
该保护装置用于根据该访问口令改写该原始值以得到输入口令,及包括口令匹配验证模块112、计数模块114及闪存清除控制模块116。
口令匹配验证模块112用于接收该输入口令,及用于判断该输入口令与该口令数值是否相等,及用于,若该输入口令与该口令数值相等,解除该外部访问的该访问限制门104的限制,及用于,若该输入口令与该口令数值不相等,保持该外部访问的该访问限制门104的限制。
计数模块114用于,若该输入口令与该口令数值不相等,在该口令区域110的数据变化次数(下称KPR变化次数)增加一次,及用于,若该输入口令与该口令数值相等,将KPR变化次数清零。
闪存清除控制模块116用于,当KPR变化次数达到设定值时,发出闪存102整体全部擦除命令以清除该单片机程序的所有数据信息。
口令匹配验证模块112用于比较根据外部访问的输入口令和单片机10内部固化的口令数值,得出的比较结果来控制访问限制门104,从而控制外部的访问权限。闪存清除控制模块116在KPR变化次数计数达到设定值后便会发出闪存整体全部擦除命令,致使闪存内部存储的所有数据信息全部被清除。
该保护装置还用于保持该原始值的非1值数据不变,并根据该访问口令或该另一访问口令,改写该原始值的1值数据以得到该输入口令。
具体地,单片机10在完成程序烧写并固定其功能后,KPR区域110的初始值全部为1,此时单片机10处于安全保护状态,外部访问只能写数据到KPR区域。
当已授权的外部访问需要解除安全保护状态时,仅需写入正确的口令数值到KPR区域110,此时口令匹配验证模块112验证外部访问的输入口令和安全口令信息区106 的KPO相吻合,发出访问限制门104逻辑控制信号,解除外部访问的限制门104的限制,外部访问可以进行单片机闪存102的程序数据的交换和查看。
当未授权的外部访问尝试要破解单片机10的安全保护状态时,外部访问需要尝试写入数据到KPR区域110来解除安全保护状态。当写入到KPR区域110的数据(记为数据A)经过口令匹配验证模块112验证输入口令和安全口令信息区的KPO不相等时,此时单片机10受访问限制门104的限制仍旧处于安全保护状态;同时,计数模块114 记录KPR变化次数+1。
外部访问需要再次尝试另一组访问口令时,只能再次写入另一组数据(记为数据B) 到KPR区域,但关键点为,此时写入的数据B并不能随意写入,原因是受到闪存特性的限制,起初KPR区域110数据初始值全部为1,当第一次写入KPR区域110的数据 A中某一位或者某几位是0时,第二次写入的数据B的这几位将不能再变成1(即保持非1值的数据不变,闪存102中数据单元值由0变成1要进行擦除操作,而KPR区域 110设计为只有闪存102的全部擦除才能使得KPR区域110擦除,KPR区域的数据是值全部为1的初始值数据。
因此,若外部访问尝试破解该单片机10安全保护时,第一次将KPR区域数据中不该写入0的某几位写成0,那将意味着破解再无法继续进行。除非继续连续写入能够写入到KPR区域的数据,使得KPR变化次数到达设定值,认为当前单片机10外部拥有恶意破解行为存在,触发闪存清除控制模块112发出整个闪存擦除命令,使内部闪存中存储的程序信息数据全部清除,致使对该单片机10的破解毫无意义。
以下结合具体的数据示例说明本较佳实施方式的保护装置。
在该数据示例中,单片机10中闪存存储位宽为8位,KPR区域110的数据初始值为8′b1111_1111,KPR变化次数的设定值为8次,安全口令信息区106的固化的口令数值KPO为8′b1110_1001。
示例1:
1)单片机10初始时:KPR=8′b1111_1111,KPO=8′b1110_1001,KPR≠KPO,单片机10处于保护状态,KPR变化次数=0;
2)单片机10受到第一次外部访问请求,KPR区域110收集到第一访问口令K1=8′b1111_1101后,根据第一访问口令K1改写KPR=8′b1111_1101(作为输入口令),判断KPR≠KPO,访问请求拒绝,单片机10仍旧处于保护状态,KPR变化次数=0+1=1;
3)单片机10受到第二次外部访问请求,KPR区域110收集到第二访问口令K2=8′b1110_1001后,根据第二访问口令K2改写KPR=8′b1110_1001,判断KPR=KPO,访问请求允许,单片机10解除保护状态,KPR变化次数清0。
示例2:
1)单片机10初始时:KPR=8′b1111_1111,KPO=8′b1110_1001,KPR≠KPO,单片机10处于保护状态,KPR变化次数=0;
2)单片机10受到第一次外部访问请求,KPR区域110收集到第一访问口令K1=8′b1111_1101后,根据第一访问口令K1改写KPR=8′b1111_1101,判断KPR≠KPO,访问请求拒绝,单片机10仍旧处于保护状态,KPR变化次数=0+1=1;
3)单片机10受到第二次外部访问请求,KPR区域110收集到第二访问口令K2=8′b1111_1001后,根据第二访问口令K2改写KPR=8′b1111_1001,判断KPR≠KPO,访问请求拒绝,单片机10仍旧处于保护状态,KPR变化次数=1+1=2;
4)单片机10受到第三次外部访问请求,KPR区域110收集到第三访问口令K3=8′b1111_0000后,根据第三访问口令K3改写KPR=8′b1111_0000,判断KPR≠KPO,访问请求拒绝,单片机10仍旧处于保护状态,KPR变化次数=2+1=3;
5)单片机10受到第四次外部访问请求,KPR区域110收集到第四访问口令K4=8′b1110_1001后,根据第四访问口令K4改写KPR=b1110_0000(写入数据只能由1 变为0,不能由0变为1),判断KPR≠KPO,访问请求拒绝,单片机10仍旧处于保护状态,KPR变化次数=3+1=4,此时已经无法通过外部输入口令(即使是固化的口令数值)解除单片机10的保护状态了;
6)如上述2)至5)任一操作类似,直至KPR变化次数=8,达到设定值的次数,此时闪存的数据信息全部被清除,所有单元数据包括KPR区域110的数据初始值全部为 1,KPR变化次数清0,单片机已无法使用。
示例3:
1)单片机10初始时:KPR=8′b1111_1111,KPO=8′b1110_1001,KPR≠KPO,单片机10处于保护状态,KPR变化次数=0;
2)单片机10受到第一次外部访问请求,KPR区域110收集到第一访问口令K1=8′b0000_1101后,根据第一访问口令K1改写KPR=8′b0000_1101,判断KPR≠KPO,访问请求拒绝,单片机10仍旧处于保护状态,KPR变化次数=0+1=1;
3)单片机10受到第二次外部访问请求,KPR区域110收集到第二访问口令K2=8′b0000_0000后,根据第二访问口令K2改写KPR=8′b0000_0000,判断KPR≠KPO,访问请求拒绝,单片机10仍旧处于保护状态,KPR变化次数=1+1=2;
4)从3)操作之后,由于闪存的擦写特性限制,单片机10已无法通过外部输入口令(即使是固化的口令数值)解除保护状态,破解至此无法进行,只能通过发出闪存整体擦除命令恢复,但之后闪存数据信息全部被清除,所有单元数据包括KPR区域110 的数据初始值全部为1,KPR变化次数清0,单片机已无法使用。
请参图2,本发明较佳实施方式提供的一种单片机内存程序的安全性保护方法,该安全性保护方法可使用在上述单片机10。该保护方法包括步骤:
S11:根据该访问口令改写该原始值以得到输入口令;
S12:判断该输入口令与该口令数值是否相等,若是则进入步骤S13,若否则进入步骤S14;
S13:解除该外部访问的该访问限制门的限制并将该口令区域的数据变化次数清零;
S14:保持该外部访问的该访问限制门的限制并在该口令区域的数据变化次数增加一次;及
S15:当该口令区域的数据变化次数达到设定值时,清除该闪存存储的所有数据信息。
可以理解,上述步骤S11~S15可由上述单片机及保护装置实施。该原始值为该口令区域的初始值,或根据另一访问口令改写该初始值得到的改写值。例如,该初始值数据全部为1,该单片机处于安全保护状态。
具体地,步骤S11包括:保持该原始值的非1值数据不变,并根据该访问口令或该另一访问口令,改写该原始值的1值数据以得到该输入口令。通过访问口令,使KPR 区域的口令数据变更,且数据位为0值的数据不能被写入(被改写),只能通过内存整体擦除整体擦除命令使数据位为0值变更为1值,但此时,对该单片机的破解已毫无意义了。
上述保护装置及保护方法,利用单片机闪存的独有编程特性来实现程序的安全性保护,且仅通过单片机10内部极少的数字逻辑实现,无需通过软件控制,设计简单,相比密钥口令方式,在该口令区域110的数据变化次数达到预定数值时,清除该单片机程序的所有数据信息,导致单片机10无法工作,进而达到保护程序的目的。
在本说明书的描述中,参考术语″一个实施方式″、″一些实施方式″、″示意性实施方式″、″示例″、″具体示例″、或″一些示例″等的描述意指结合所述实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施方式,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。