利用非对称加密算法防止代码被恶意篡改的方法及系统与流程

文档序号:13890345阅读:2273来源:国知局

本发明涉及加密技术领域,特别是利用非对称加密算法防止代码被恶意篡改的方法及系统。



背景技术:

很多嵌入式系统开发投入商用后都会面临在线升级的问题,从而实现对开发的嵌入式系统中的完善或对系统bug的修改,而在线升级过程是将一些可执行文件,通过原系统留有的接口,下载并烧写到主控芯片的flash中,由于下载的可执行文件直接在主控芯片中运行,所以会存在一定的风险,如果有人恶意修改这些可执行文件,则会导致出现问题,如何保证自己的下载的代码不被恶意篡改是一个广泛存在的问题。

目前的系统中对防止代码被恶意篡改的方法主要依靠简单的加密的措施,因为由于下载的代码是加密的,所以可以在一定程度上保证代码的保密性。

如,一个嵌入式系统预留有接口,通过串口和主控模块通信进行系统的升级,升级时首先将编译生成可执行文件,之后采用aes算法加密下载代码(即生成的可执行文件),然后通过串口就可以将下载代码传输到主控芯片中,主控芯片中的程序将下载代码解密,并且烧写到主控芯片的flash中。由于aes算法的key是16个字节,这样就决定了不可能进行暴力破解,可以在一定程度上保护自己的代码。

但是如果有人分析了主控芯片中的程序,就可以得到解密下载代码的过程,由于aes算法属于对称算法,即是会解密就会加密。那么得到解密下载代码的过程之后就相当于同时得到了加密的过程,此时就可以随意的编写代码,加密,通过预留的串口接口下载代码,这样系统的安全性就会受到极大的挑战。



技术实现要素:

本发明的目的在于克服现有技术的不足,发明了利用非对称加密算法防止代码被恶意篡改的方法。本发明解决其技术问题是采取以下技术方案实现的:利用非对称加密算法防止代码被恶意篡改的方法,包含以下步骤:s1.将原系统软件分为boot程序及应用程序两部分;s2.将原始工程入口地址修改为flash中其他位置,将所述boot程序放在flash的开头;s3.编译原始工程,得到可执行的二进制代码,将所述boot程序和所述应用程序分别烧写入主控芯片的flash中;s4.所述boot程序判断是否需要升级系统,如果不需要升级系统,则执行应用程序,如果需要升级系统,则进入升级程序。

优选地,所述步骤s4包含下列步骤:s4.1修改所述应用程序,增加对不能编程的所述主控芯片的读写操作,测试新的应用程序的健壮性;s4.2利用与所述boot程序的解密算法相对应的加密算法加密所述应用程序;s4.3将加密后的所述应用程序放在网络服务器上,供嵌入式系统下载;s4.4所述嵌入式系统上电检测到有可以升级的新版本后进入所述boot程序的升级流程,下载放到所述网络服务器上的代码;s4.5所述boot程序解密下载的加密应用程序代码,首先将解密的应用程序代码放入ram中,以便于下一步烧写到flash中做准备;s4.6所述boot程序将解密了的应用程序的源码烧写入主控芯片的flash中。

本发明还保护利用非对称加密算法防止代码被恶意篡改的系统,包含:显示模块、网络模块、主控芯片转接插座以及主控模块;所述显示模块、所述网络模块以及所述主控芯片转接插座分别与所述主控模块相连;所述主控模块包含:加密模块,用于利用自身代码通过非对称算法rsa公钥加密算法来加密系统软件;升级模块,用于通过修改系统软件增加对主控芯片的支持。

优选地,所述加密模块包含:分类单元,用于将原系统软件分为boot程序及应用程序两部分;修改单元,用于将原始工程入口地址修改为flash中其他位置,将所述boot程序放在flash的开头;编译单元,用于编译原始工程,得到可执行的二进制代码,将所述boot程序和所述应用程序分别烧写入主控芯片的flash中。

优选地,所述升级模块包含:修改单元,用于修改原应用程序;加密单元,用于加密应用程序;下载单元,用于下载网络服务器上的代码;解密单元,用于解密下载的代码;烧写单元,用于将应用程序的源码烧写入主控芯片的flash中。

本发明的优点和积极效果是:本发明通过rsa算法对代码的加密保护,可以有效的避免代码被恶意篡改,从而实现保护自身系统的功能。使用本发明保护的系统,即使有人获取到系统的代码及处理方法,也无法修改,无法跳过设置的验证过程。

所述保护软件的方法包括升级时从网络到嵌入式系统传输的应用程序的代码是加密的,并且加密使用的算法是非对称算法,使得应用程序的完整性不会被破坏。

附图说明

图1为本发明使用实例的结构图;

图2为本发明加密方法实现的流程图;

图3为示例中进行软件升级的流程图。

具体实施方式

下面结合附图、通过具体实施例对本发明作进一步详述。以下实施例只是描述性的,不是限定性的,不能以此限定本发明的保护范围。

在本发明采用eeprom芯片编程器为描述实例。本实施例中使用stm32系列芯片作为主控芯片,stm32芯片是一种在嵌入式系统中使用非常广泛的单片机系列,并且此芯片支持在线编程。假设系统设计为可以进行在线升级,以便支持更多的eeprom芯片种类。

rsa公钥加密算法是一种非对称算法,rsa是一种公开密钥密码体制,所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知解密密钥推导出加密密钥在计算上是不可行”的密码体制。

如图1所示,图1揭示了本文采用的例子eeprom芯片编程器系统的结构图,此系统包含以下几个模块:模块1:eeprom芯片转接插座,这个模块主要是作为eeprom芯片与系统接口之间的转换;模块2:显示模块,这个模块主要作用是提供一个用户接口,使得用户在使用该系统时可以自主选择eeprom芯片型号;模块3:网络模块,这个模块的作用是在编程eeprom芯片时直接通过网络连接开发者的网站,在线判断连接的主机是否有编程此款eeprom芯片的授权;模块4:主控模块,这个模块是整个系统的核心,主要控制用户接口,授权的判断,对eeprom芯片的编程等。

如图2所示,本发明揭示了一种防止代码被恶意篡改的方法,此方法包含如下步骤:

步骤a、增加boot代码,将原系统软件分为boot及应用程序两部分,应用程序主要完成整个系统的需求,如编程eeprom芯片,验证授权,显示芯片列表等;boot的作用主要有,系统上电时首先执行boot代码,boot判断是否需要升级系统,如果不需要升级系统,则直接跳转到应用程序执行,如果需要升级系统,则进入升级程序。升级的过程包括解密下载的应用程序代码,并将解密后的应用程序代码烧写入主控芯片的flash中。

步骤b、将原始工程入口地址修改为flash中其他位置,由于增加了boot程序,boot程序需要上电之后首先执行,所以boot程序放在flash的开头,而应用程序则要在boot代码用不到的其他位置。

步骤c、编译原始工程,得到可执行的二进制代码,将boot和应用程序分别烧写入主控芯片的flash中,此时系统可以正常运行,可以完成所有功能。

步骤d、如果系统的维护者发现一种原系统不能编程的eeprom芯片,并且只通过修改软件就可以增加对这种eeprom芯片的支持,则需要进行一次软件升级,以支持更多的eeprom芯片类型,增加系统的市场竞争力。请参阅图3,软件升级具体如下:

步骤d1、修改原应用程序,增加对那种目前不能编程的eeprom芯片的读写操作,测试新的应用程序的健壮性。所谓健壮性是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。另外健壮性也和容错性,可移植性,正确性有交叉的地方。比如,一个软件可以从错误的输入推断出正确合理的输入,这属于容错性量度标准,但是也可以认为这个软件是健壮的。若软件可以正确地运行在不同环境下,则认为此软件可移植性高,也可以叫此软件在不同平台下是健壮的。若软件能够检测自己内部的设计或者编码错误,并得到正确的执行结果,这是软件的正确性标准,但是也可以说,软件有内部的保护机制,是模块级健壮的。

步骤d2、利用与boot程序的解密算法相对应的加密算法加密应用程序,由于加密应用程序的私钥只有系统的开发者才能掌握,嵌入式系统中并没有这个私钥。所以即使有人通过一定的技术手段完全分析了整个嵌入式系统,也只能得到我们的应用程序原始代码,而无法修改我们的代码。所谓的相对应是指所有可逆算法都是一对的,例如a通过加密算法计算得到b,b通过解密算法得到a,那么这对加密算法和解密算法就是相对应的。

步骤d3、加密应用程序之后将加密后的应用程序放在网络服务器,供我们的嵌入式系统下载。

步骤d4、嵌入式系统上电检测到有可以升级的新版本后进入boot代码的升级流程,下载我们放到网络服务器上的代码。

步骤d5、boot代码解密下载的加密的应用程序代码,首先将解密的应用程序代码放入ram中,以便于下一步烧写到flash中做准备。

步骤d6、boot代码将解密了的应用程序的源码烧写入主控芯片的flash中。

本发明利用将自身代码通过非对称算法rsa公钥加密算法来加密,由于此算法的秘钥分为公钥和私钥,即公钥用来解密,存于嵌入式系统中,私钥用来加密,只保存在开发者手中,可以保证不会有人能够复制加密应用程序的过程。

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