防止代码被恶意篡改的方法和装置制造方法

文档序号:7824294阅读:471来源:国知局
防止代码被恶意篡改的方法和装置制造方法
【专利摘要】本发明涉及一种防止代码被恶意篡改的方法和装置。包括:嵌入式系统上电后,执行闪存中的引导程序,判断应用程序是否需要升级;当应用程序不需要升级时,直接跳转到应用程序中执行,当应用程序需要升级时,下载服务器上存储的加密后的升级的应用程序,进行应用程序升级,其中,所述加密后的应用程序是利用与所述引导程序的解密算法对应的非对称算法公钥加密算法加密升级所获得的,所述嵌入式系统保存非对称算法公钥加密算法的公钥,所述嵌入式系统的开发者保存非对称算法公钥加密算法的私钥。可以杜绝防止代码被恶意篡改。
【专利说明】防止代码被恶意篡改的方法和装置

【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种防止代码被恶意篡改的方法和装置。

【背景技术】
[0002]很多嵌入式系统开发投入商用后都会面临在线升级的问题,从而实现对开发的嵌入式系统中的完善或对系统bug的修改,而在线升级过程是将一些可执行文件,通过原系统留有的接口,下载并烧写到主控芯片的flash中,由于下载的可执行文件直接在主控芯片中运行,所以会存在一定的风险,如果有人恶意修改这些可执行文件,则会导致出现问题,如何保证自己的下载的代码不被恶意篡改是一个广泛存在的问题。
[0003]目前的系统中对防止代码被恶意篡改的方法主要依靠简单的加密的措施,因为由于下载的代码是加密的,所以可以在一定程度上保证代码的保密性。
[0004]例如,一个嵌入式系统预留有接口,通过串口和主控模块通信进行系统的升级,升级时首先编译生成可执行文件,之后采用AES算法加密下载代码(即上述生成的可执行文件),然后通过串口就可以将下载代码传输到主控芯片中,主控芯片中的程序将下载代码解密,并且烧写到主控芯片的flash中。由于AES算法的key是16个字节,这样就决定了不可能进行暴力破解,可以在一定程度上保护自己的代码。
[0005]但是如果有人分析了主控芯片中的程序,就可以得到解密下载代码的过程,由于AES算法属于对称算法,即是会解密就会加密。那么得到解密下载代码的过程之后就相当于同时得到了加密的过程,此时就可以随意的编写代码,加密,通过我们预留的串口接口下载代码,这样系统就存在很大的安全隐患。


【发明内容】

[0006]为解决上述技术问题,本发明的目的是提供一种防止代码被恶意篡改的方法和装置。
[0007]本发明提供的防止代码被恶意篡改的方法,包括:
[0008]嵌入式系统上电后,执行闪存中的引导程序,判断应用程序是否需要升级;
[0009]当应用程序不需要升级时,直接跳转到应用程序中执行,当应用程序需要升级时,下载服务器上存储的加密后的升级的应用程序,进行应用程序升级,其中,所述加密后的应用程序是利用与所述引导程序的解密算法对应的非对称算法公钥加密算法加密升级所获得的,所述嵌入式系统保存非对称算法公钥加密算法的公钥,所述嵌入式系统的开发者保存非对称算法公钥加密算法的私钥。
[0010]进一步的,还包括:将嵌入式系统的程序划分为引导程序和应用程序,所述应用程序用于完成所述嵌入式系统的功能,所述引导程序用于判断所述应用程序是否需要升级。
[0011]进一步的,还包括:所述引导程序设置在闪存的开头,以便于嵌入式系统上电后,首先启动引导程序。
[0012]本发明提供的一种防止代码被恶意篡改的装置,包括:
[0013]判断单元,用于嵌入式系统上电后,执行闪存中的引导程序,判断应用程序是否需要升级;
[0014]执行单元,用于当应用程序不需要升级时,直接跳转到应用程序中执行,当应用程序需要升级时,下载服务器上存储的加密后的升级的应用程序,进行应用程序升级,其中,所述加密后的应用程序是利用与所述引导程序的解密算法对应的非对称算法公钥加密算法加密升级所获得的,所述嵌入式系统保存非对称算法公钥加密算法的公钥,所述嵌入式系统的开发者保存非对称算法公钥加密算法的私钥。
[0015]进一步的,还包括:划分单元,用于将嵌入式系统的程序划分为引导程序和应用程序,所述应用程序用于完成所述嵌入式系统的功能,所述引导程序用于判断所述应用程序是否需要升级。
[0016]进一步的,还包括:设置单元,用于所述引导程序设置在闪存的开头,以便于嵌入式系统上电后,首先启动引导程序。
[0017]借由上述方案,本发明至少具有以下优点:
[0018]本发明升级的应用程序是被非对称算法RSA公钥加密算法来加密,由于此算法的秘钥分为公钥和私钥,即公钥用来解密,存于嵌入式系统中,私钥用来加密,只保存在开发者手中,可以保证不会有人能够复制加密应用程序的过程。
[0019]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。

【专利附图】

【附图说明】
[0020]图1是本发明的EEPROM芯片编程器的结构示意图
[0021]图2是本发明防止代码被恶意篡改的方法的流程示意图;
[0022]图3是本发明的应用程序升级的流程的示意图;
[0023]图4是本发明防止代码被恶意篡改的装置结构示意图。

【具体实施方式】
[0024]下面结合附图和实施例,对本发明的【具体实施方式】作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0025]在本发明实施例的例子中,EEPROM芯片编程器,本实施例中使用STM32系列芯片作为主控芯片,STM32芯片是一种在嵌入式系统中使用非常广泛的单片机系列,并且此芯片支持在线编程。假设系统设计为可以进行在线升级,以便支持更多的EEPROM芯片种类。
[0026]RSA公钥加密算法是一种非对称算法,RSA是一种公开密钥密码体制,所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知解密密钥推导出加密密钥在计算上是不可行”的密码体制。
[0027]请参阅图1,图1揭示了本发明实施例采用的是EEPROM芯片编程器系统的结构图,此系统包含以下几个模块:模块1:EEPR0M芯片转接插座,这个模块主要是作为EEPROM芯片与系统接口之间的转换;模块2:显示模块,这个模块主要作用是提供一个用户接口,使得用户在使用该系统时可以自主选择EEPROM芯片型号;模块3:网络模块,这个模块的作用是在编程EEPROM芯片时直接通过网络连接开发者的网站,在线判断连接的主机是否有编程此款EEPROM芯片的授权;模块4:主控模块,这个模块是整个系统的核心,主要控制用户接口,授权的判断,对EEPROM芯片的编程等。
[0028]参见图2所示,一种防止代码被恶意篡改的方法,此方法包含如下步骤:包括:
[0029]步骤201:将嵌入式系统划分为引导(boot)程序及应用程序两部分,应用程序主要用于完成整个嵌入式系统的功能,如编程EEPROM芯片,验证授权和显示芯片列表等。嵌入式系统上电时首先执行boot程序,boot程序判断是否需要升级系统软件,如果不需要升级系统软件,则直接跳转到应用程序执行,如果需要升级系统软件,则进入升级程序。
[0030]步骤202:编译原始嵌入式系统,得到可执行的二进制代码,将boot程序和应用程序分别烧写入主控芯片的flash中,此时系统可以正常运行,可以完成所有功能。具体的:将引导程序设置在闪存(flash)的开头处,而应用程序设置在闪存的其他位置处,该位置与boot程序的位置不同,这样嵌入式系统上电后,将首先执行boot程序。
[0031]步骤203:如果嵌入式系统的维护者发现一种原嵌入式系统不能编程的EEPROM芯片,并且只通过修改嵌入式系统就可以增加对这种EEPROM芯片的支持,则需要进行一次软件升级,以支持更多的EEPROM芯片类型,增加嵌入式系统的市场竞争力。请参阅图3,嵌入式系统升级具体过程如下:
[0032]步骤2031、对嵌入式系统进行升级,修改原应用程序,增加对目前不能编程的EEPROM芯片的读写操作支持,并测试新的应用程序的健壮性。
[0033]步骤2032、利用与boot程序的解密算法相对应的非对称算法公钥加密算法的加密应用程序对上述升级的应用程序进行加密。该所述嵌入式系统保存非对称算法公钥加密算法的公钥,所述嵌入式系统的开发者保存非对称算法公钥加密算法的私钥。由于加密应用程序的私钥只有系统的开发者才能掌握,嵌入式系统中并没有这个私钥,所以即使有人通过一定的技术手段完全分析了整个嵌入式系统,也只能得到我们的应用程序原始代码,但是无法获得上述加密算法,因此无法修改我们的代码。
[0034]步骤2033、将加密后的升级后的应用程序放在网络服务器,以便于嵌入式系统进行下载。
[0035]步骤2034、嵌入式系统上电检测到有可以升级的应用程序新版本后进入boot程序的升级流程,下载上述存储在网络服务器上的加密后的升级的应用程序。
[0036]步骤2035、boot程序解密上述下载的加密的升级后的应用程序,将解密的应用程序代码放入RAM中,boot程序将RAM中的解密的应用程序代码烧写入主控芯片的flash中。
[0037]这样就完成了应用程序的升级,并且该升级的应用程序是被非对称算法RSA公钥加密算法来加密,由于此算法的秘钥分为公钥和私钥,即公钥用来解密,存于嵌入式系统中,私钥用来加密,只保存在开发者手中,可以保证不会有人能够复制加密应用程序的过程。
[0038]如图4所示,本发明提供了一种防止嵌入式系统被恶意在线调试的装置,包括:
[0039]判断单元41,用于嵌入式系统上电后,执行闪存中的引导程序,判断应用程序是否需要升级;
[0040]执行单元42,用于当应用程序不需要升级时,直接跳转到应用程序中执行,当应用程序需要升级时,下载服务器上存储的加密后的升级的应用程序,进行应用程序升级,其中,所述加密后的应用程序是利用与所述引导程序的解密算法对应的非对称算法公钥加密算法加密升级所获得的,所述嵌入式系统保存非对称算法公钥加密算法的公钥,所述嵌入式系统的开发者保存非对称算法公钥加密算法的私钥。
[0041]进一步的,如图4所示,还包括:划分单元43,用于将嵌入式系统的程序划分为引导程序和应用程序,所述应用程序用于完成所述嵌入式系统的功能,所述引导程序用于判断所述应用程序是否需要升级。
[0042]进一步的,如图4所示,还包括:设置单元44,用于所述引导程序设置在闪存的开头,以便于嵌入式系统上电后,首先启动引导程序。
[0043]本发明通过RSA算法对代码的加密保护,可以有效的避免代码被恶意篡改,从而实现保护自身系统的功能。使用本发明保护的系统,即使有人获取到我们系统的代码及处理方法,也无法修改,无法跳过我们设置的验证过程。所述保护软件的方法包括升级时从网络到嵌入式系统传输的应用程序的代码是加密的,并且加密使用的算法是非对称算法,使得应用程序的完整性不会被破坏。
[0044]以上所述仅是本发明的优选实施方式,并不用于限制本发明,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。
【权利要求】
1.一种防止代码被恶意篡改的方法,其特征在于,包括: 嵌入式系统上电后,执行闪存中的引导程序,判断应用程序是否需要升级; 当应用程序不需要升级时,直接跳转到应用程序中执行,当应用程序需要升级时,下载服务器上存储的加密后的升级的应用程序,进行应用程序升级,其中,所述加密后的应用程序是利用与所述引导程序的解密算法对应的非对称算法公钥加密算法加密升级所获得的,所述嵌入式系统保存非对称算法公钥加密算法的公钥,所述嵌入式系统的开发者保存非对称算法公钥加密算法的私钥。
2.如权利要求1的一种防止代码被恶意篡改的方法,其特征在于,还包括: 将嵌入式系统的程序划分为引导程序和应用程序,所述应用程序用于完成所述嵌入式系统的功能,所述引导程序用于判断所述应用程序是否需要升级。
3.如权利要求2的一种防止代码被恶意篡改的方法,其特征在于,还包括: 所述引导程序设置在闪存的开头,以便于嵌入式系统上电后,首先启动引导程序。
4.一种防止代码被恶意篡改的装置,其特征在于,包括: 判断单元,用于嵌入式系统上电后,执行闪存中的引导程序,判断应用程序是否需要升级; 执行单元,用于当应用程序不需要升级时,直接跳转到应用程序中执行,当应用程序需要升级时,下载服务器上存储的加密后的升级的应用程序,进行应用程序升级,其中,所述加密后的应用程序是利用与所述引导程序的解密算法对应的非对称算法公钥加密算法加密升级所获得的,所述嵌入式系统保存非对称算法公钥加密算法的公钥,所述嵌入式系统的开发者保存非对称算法公钥加密算法的私钥。
5.如权利要求4的一种防止代码被恶意篡改的装置,其特征在于,还包括: 划分单元,用于将嵌入式系统的程序划分为引导程序和应用程序,所述应用程序用于完成所述嵌入式系统的功能,所述引导程序用于判断所述应用程序是否需要升级。
6.如权利要求4的一种防止代码被恶意篡改的装置,其特征在于,还包括: 设置单元,用于所述引导程序设置在闪存的开头,以便于嵌入式系统上电后,首先启动引导程序。
【文档编号】H04L29/06GK104486355SQ201410842072
【公开日】2015年4月1日 申请日期:2014年12月30日 优先权日:2014年12月30日
【发明者】田雨农, 刘欣, 苍柏 申请人:大连楼兰科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1