程序运行方法、计算机设备及可读存储介质与流程

文档序号:22468959发布日期:2020-10-09 21:56阅读:191来源:国知局
程序运行方法、计算机设备及可读存储介质与流程

本发明涉及芯片技术领域,特别是涉及一种程序运行方法、计算机设备及可读存储介质。



背景技术:

随着单片机技术日益成熟与发展,由于其在使用中的智能性及方便性的突出作用,单片机得到工程师们的青睐,广泛应用于现在各种产品设计场合。随着各领域对信息安全的要求越来越高,单片机加密技术的要求也越来越强烈,特别是涉及到商业机密,国家安全的领域,如何防止黑客或敌对人员破译单片机程序,是本领域技术人员必须关心的一个问题。

在现有技术中,单片机加密通常是使用各系列mcu自带的代码上锁加密功能,这种上锁加密的方式往往密钥长度较短,算法简单,黑客或其他的技术人员不需要特别的手段即可破解,这种加密方式虽然对产品有加密,但是远远达不到保密的效果,黑客和其他的技术人员只要得到一枚或几枚样品mcu,就可将mcu机器代码全盘复制出来,然后将代码再写入相同款mcu,则大量产品就被复制出来了,这让源代码编写者编写的程序毫无保密性可言。



技术实现要素:

基于此,有必要针对程序易被抄袭的问题,提供一种程序运行方法、计算机设备及可读存储介质。

一种程序运行方法,所述程序运行于芯片上,所述方法包括:

在所述程序的初始化阶段判断片上flash区是否存在已加密标志位;

当所述片上flash区存在已加密标志位时,从所述片上flash区内读取加密信息,所述加密信息包括对预设芯片的身份标识加密后得到的信息;

对所述加密信息进行解密,得到所述预设芯片的身份标识;

读取当前芯片的身份标识;

比对所述预设芯片的身份标识与所述当前芯片的身份标识,当不一致时,执行预设防御步骤。

在其中一个实施例中,所述方法还包括:

控制所述程序运行于所述预设芯片上;

在所述程序的初始化阶段,读取所述预设芯片的身份标识;

对所述预设芯片的身份标识加密得到加密信息,并将所述加密信息写入所述片上flash区;

在所述片上flash区的固定地址写入已加密标志位。

在其中一个实施例中,所述在所述程序的初始化阶段判断片上flash区是否存在已加密标志位的步骤包括:

在所述程序的初始化阶段访问片上flash区的固定地址;

判断所述片上flash区固定地址处是否存在已加密标志位。

在其中一个实施例中,所述比对所述预设芯片的身份标识与所述当前芯片的身份标识的步骤包括:

当初次比对结果为所述预设芯片的身份标识与所述当前芯片的身份标识不同时,记录比对失败次数,并重新比对,当所述比对失败次数大于等于预设阈值时,确定所述预设芯片的身份标识与所述当前芯片的身份标识不一致。

在其中一个实施例中,所述预设防御步骤包括:

控制所述当前芯片所在设备进入宕机状态。

在其中一个实施例中,所述预设防御步骤包括:

开启计时器,并控制所述当前芯片所在设备在正常工作预设时长后进入异常工作状态。

在其中一个实施例中,所述预设防御步骤包括:

清除所述程序。

在其中一个实施例中,所述加密信息是通过tea安全加密算法和/或aes安全加密算法对所述预设芯片的身份标识进行加密后得到的信息。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。

上述程序运行方法,在程序运行的初始化阶段判断片上flash区是否存在已加密标志位,若存在已加密标志位,则从片上flash区读取加密信息,并对加密信息进行解密,将解密后的信息与读取到的当前芯片的身份标识进行比对,由于加密信息为对预设芯片的身份标识加密后得到的信息,若当前芯片不是预设芯片,则两者身份标识必然不同,此时比对失败,执行预设防御步骤,即可阻止程序在当前芯片上正常运行。由此可防止黑客或其他技术人员将程序复制到预设芯片以外的芯片上运行,起到程序防抄袭的作用。

附图说明

图1为本申请实施例提供的程序运行方法的流程框图;

图2为本申请实施例提供的程序运行方法的流程框图;

图3为本申请实施例提供的计算机设备的结构示意图。

附图标记说明:

10、加密模块;20、通信模块;30、解密模块;40、更新模块。

具体实施方式

为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的优选实施方式。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施方式。相反的,提供这些实施方式的目的是为了对本发明的公开内容理解得更加透彻全面。

在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

现有技术中,对程序的加密一般为通过芯片自带的代码上锁加密功能来实现,但是这种上锁加密的方法,密钥长度较短,算法较为简单,被他人破解的难度较低。他人只要得到一枚或几枚同样的芯片,便可将整个包含有程序的flash区全部复制出来,然后将代码写入相同款芯片中,造成程度被抄袭的现象。

为解决上述程序被抄袭的问题,本申请实施例提供了一种程序运行方法,程序运行于芯片上,该程序可以为app程序等。如图1所示,该程序运行方法包括以下步骤:

步骤s20、在程序的初始化阶段判断片上flash区是否存在已加密标志位。

在程序正式运行之前会首先进行初始化,现有的程序运行过程一般是初始化完之后继续运行,本实施例中,在程序初始化阶段时,首先判断片上flash区是否存在已加密标志位。具体地,已加密标志位表示该程序已经加密过,继续运行之前需要先进行解密操作,已加密标志位可以在芯片正式投入使用之前便设置于片上flash的固定地址处,在程序的初始化阶段时,则直接读取片上flash的固定地址即可判断是否存在已加密标志位;已加密标志位也可以随机设置于片上flash区的任意位置,在程序的初始化阶段时,则逐个读取片上flash区的各地址,判断是否存在已加密标志位。当然,已加密标志位的设置位置还可以以其他方式设置,在此不做绝对限制。

这里需要说明的是,若他人试图复制程序,一般是将整个flash区的固件全部复制到另一个芯片中,由于已加密标志位是存在flash区的,因此也会将已加密标志位随程序一并复制过去。当他人试图在另一个芯片上运行该程序时,应当是能够读取到片上flash区内的已加密标志位的。

步骤s30、当片上flash区存在已加密标志位时,从片上flash区内读取加密信息,加密信息包括对预设芯片的身份标识加密后得到的信息。

当判断出片上flash区存在已加密标志位时,则需要先获取到加密信息再解密后,才能正常运行程序。此时,需要从片上flash区内读取加密信息,其中,加密信息可以是预先存储于片上flash区的固定地址处,在步骤s30中,可直接去读取该固定地址处的加密信息;加密信息也可以存储于片上flash区的任意位置,只要预先设置有加密信息即可,具体位置在此不做绝对限制。需要说明的是,加密信息和已加密标志位一样,均设置于片上flash区,他人将整个flash区复制到另一个芯片上时,同时也会将其中的加密信息一并复制过去。

每个芯片均具有其唯一的身份标识,例如id值或物理地址等形式的身份标识。当芯片投入使用之前,可以获取其身份标识,并对其身份标识进行加密生成加密信息,并将身份标识的加密信息预存在片上flash区中。即,每个预设芯片的片上flash区中均具有与该芯片对应的唯一的加密信息。

步骤s40、对加密信息进行解密,得到预设芯片的身份标识。当获取到加密信息后,则对加密信息进行解密,进而获得预设芯片的身份标识。

步骤s50、读取当前芯片的身份标识。如前文所述,每个芯片均具有唯一的身份标识,可以使id值,也可以为物理地址,还可以为其他形式的身份标识,即可获取到程序运行所在的当前芯片的身份标识。

需要说明的是,获取当前芯片的身份标识的步骤可以在获取加密信息并解密得到预设芯片的身份标识的步骤之后进行,也可以在之前进行,或者两者同时进行,均不影响实施本申请的方案,涵盖于本申请的保护范围之内。

步骤s60、比对预设芯片的身份标识与当前芯片的身份标识,当不一致时,执行预设防御步骤。

当获取到预设芯片的身份标识和当前芯片的身份标识,即可对两者进行比对。如果该程序未被复制抄袭,那么当前芯片应当就是预设芯片,两者的身份标识一致,此时可控制程序继续运行。如果该程序正在被他人复制到另一个芯片上运行,那么当前芯片的身份标识与预设芯片的身份标识必然不同,此时采取预设的防御步骤,以防止程序在当前芯片上正常运行。

其中,预设的防御步骤并不唯一,可以根据实际需求来设定,旨在混淆窃取者的问题查找方向,以达到尽可能拉长窃取者的抄袭周期,为寻找市场上出现的抄袭产品争取时间,也可以直接阻止程序的正常运行等。

上述程序运行方法,在程序运行的初始化阶段判断片上flash区是否存在已加密标志位,若存在已加密标志位,则从片上flash区读取加密信息,并对加密信息进行解密,将解密后的信息与读取到的当前芯片的身份标识进行比对,由于加密信息为对预设芯片的身份标识加密后得到的信息,若当前芯片不是预设芯片,则两者身份标识必然不同,此时比对失败,执行预设防御步骤,即可阻止程序在当前芯片上正常运行。由此可防止黑客或其他技术人员将程序复制到预设芯片以外的芯片上运行,起到程序防抄袭的作用。

在其中一个实施例中,如图2所示,本实施例提供的程序运行方法还包括以下步骤:

步骤s10、控制程序运行于预设芯片上。在程序投入使用之前,首先控制程序在预设芯片上运行。预设芯片为指定的需要实施加密的芯片。

步骤s11、在程序的初始化阶段,读取预设芯片的身份标识。

步骤s12、对预设芯片的身份标识加密得到加密信息,并将加密信息写入片上flash区。具体地,可以将加密信息写入片上flash区的固定地址,也可以写入片上flash区的任意位置。本实施例中,优选地将加密信息写入片上flash区的固定地址,以便后续每次执行程序时均直接从固定地址处读取加密信息,提高运算速度。

步骤s13、在片上flash区的固定地址写入已加密标志位。

当写入了加密信息后,则在片上flash区的固定地址写入已加密标志位,以标识已经加密过。

上述步骤在步骤s20之前执行。

作为一种优选的实施方式,在步骤s11之前,还包括判断片上flash区的固定地址是否存在已加密标志位的步骤,当不存在已加密标志位时,则说明还未加密,此时执行步骤s11,最终写入已加密标志位。当已经存在已加密标志位时,则说明已经加密过,此时无需再执行步骤s11-步骤s13。由此,一方面可避免重复加密的现象,另一方面可确保对每个芯片均进行加密,确保每个芯片均具有唯一的加密信息和加密标志位。

在其中一个实施例中,步骤s20,即在程序的初始化阶段判断片上flash区是否存在已加密标志位的步骤包括以下步骤:

步骤s201、在程序的初始化阶段访问片上flash区的固定地址;

步骤s202、判断片上flash区固定地址处是否存在已加密标志位。

即,已加密标志位设置于片上flash区的固定地址,在程序的初始化阶段可直接访问该固定地址,判断该固定地址处是否存在已加密标志位即可,节省运算时间。

在其中一个实施例中,步骤s60,即比对预设芯片的身份标识与当前芯片的身份标识的步骤包括以下步骤:

当初次比对结果为预设芯片的身份标识与当前芯片的身份标识不同时,记录比对失败次数,并重新比对,当比对失败次数大于等于预设阈值时,确定预设芯片的身份标识与当前芯片的身份标识不一致。

具体地,初次比对结果若是不一致,不直接执行预设的防御步骤,而是保留一定的容错数,重新读取加密信息、解密后再次进行比对,若连续比对失败的次数大于等于预设阈值时,此时可确定预设芯片的身份标识与当前芯片的身份标识不一致,即确定程序被复制抄袭,执行预设的防御步骤。预设阈值不唯一,根据实际需求设定,例如5次或6次或7次等,在此不做绝对限制。

由此,可以避免因误判而影响程序在预设芯片上的正常运行。

在其中一个实施例中,预设防御步骤包括:控制当前芯片所在设备进入宕机状态。

作为一种可替换实施方式,预设防御步骤包括;开启计时器,并控制当前芯片所在设备在正常工作预设时长后进入异常工作状态。

作为另一种可替换实施方式,预设防御步骤包括:清除程序。

宕机状态是指初始化失败,设备无法正常启动的状态;控制设备在正常工作预设时长后进入异常工作状态具体可以是,设备正常工作预设时长后,程序自动修改某些关键系统参数促使系统相应的功能受限或失灵,其目的是混淆窃取者的问题查找方向,以达到尽可能拉长窃取者的抄袭周期,为发现市场上的抄袭产品争取时间。清除程序则是程序自毁程序,将flash区的程序全部擦除,使系统无法运行。

以上仅是列举了几种防御步骤,在实际应用中,可以根据实际需求设置其余防御步骤。

在其中一个实施例中,加密信息是通过tea安全加密算法和/或aes安全加密算法对预设芯片的身份标识进行加密后得到的信息。tea安全加密算法和aes安全加密算法安全性高、高效且占用存储空间少,较为适合本实施例中对预设芯片的身份标识进行加密。

本申请实施例提供了一种计算机设备,如图3所示,包括存储器200和处理器300,存储器200和处理器300之间互相通信连接,可以通过总线或者其他方式连接,图3中以通过总线连接为例。

处理器300可以为中央处理器(centralprocessingunit,cpu)。处理器300还可以为其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。

存储器200作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的程序运行方法对应的程序指令。处理器300通过运行存储在存储器200中的非暂态软件程序、指令以及模块,从而执行处理器300的各种功能应用以及数据处理,即程序运行方法。

存储器200可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器300所创建的数据等。此外,存储器200可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器200可选包括相对于处理器300远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flashmemory)、硬盘(harddiskdrive,缩写:hdd)或固态硬盘(solid-statedrive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1