发明内容
本发明要解决的技术问题在于针对现有技术中针对硬件资源受限、支持二次开发的嵌入式设备还没有较好的加密方案解决嵌入式设备中二次开发嵌入式软件的安全性问题的缺陷,提供一种可以有效解决嵌入式设备中二次开发嵌入式软件的安全性问题的二次开发嵌入式软件的加密和认证保护方法及系统。
本发明解决其技术问题所采用的技术方案是:
提供一种二次开发的嵌入式应用程序的加密和认证保护的方法,其特征在于,包括以下步骤:
主设备向嵌入式设备发送请求下载数据的请求信息;
嵌入式设备接收请求信息并向主设备反馈应答信息;
主设备向嵌入式设备下载数据,数据包括认证码、密钥及加密的应用程序;
嵌入式设备接收和存储请求数据至存储模块中,并用接收的密钥进行解密以固化应用程序;
嵌入式设备启动应用程序,并接收用户输入的待校验的认证码;
嵌入式设备获取存储模块中存储的认证码,并验证待校验的认证码,若验证通过,则运行应用程序,否则终止运行应用程序。
本发明所述的方法中,还包括步骤:
当嵌入式设备的存储模块被外部工具非法访问时,则清除存储模块中的全部数据。
本发明所述的方法中,步骤嵌入式设备存储请求数据至存储模块中具体包括:将密钥散列地存储在存储模块的空余空间上;
本发明所述的方法中,步骤嵌入式设备存储请求数据至存储模块中具体包括:将认证码散列地存储在存储模块的空余空间上。
本发明所述的方法中,主设备通过数据加密标准DES、国际数据加密算法IDEA、MD5算法或者高级加密标准AES对应用程序进行加密。
本发明所述的方法中,嵌入式设备在运行应用程序时,至少进行一次认证码校验。
本发明所述的方法中,若用户输入错误的验证码次数超过预设次数,则在预先设定的时间内禁止再次运行应用程序。
本发明解决其技术问题所采用的另一技术方案是:
提供一种二次开发的嵌入式应用程序的加密和认证保护的系统,其特征在于,包括嵌入式设备和主设备,嵌入式设备与主设备通信连接,其中,
主设备包括:
请求模块,用于向嵌入式设备发送请求信息;
加密模块,用于对嵌入式的应用程序进行加密;
下载模块,用于下载数据至嵌入式设备中,数据包括认证码、密钥及加密的应用程序;
嵌入式设备包括:
接收应答模块,用于接收主设备发送请求信息并反馈应答信息;
解密模块,用于根据接收的数据中的密钥进行解密;
存储模块,用于存储认证码、密钥以及固化应用程序;
认证码校验模块,用于在启动应用程序时,接收用户输入的待校验的认证码,并获取存储模块中存储的认证码,验证待校验的认证码,若验证通过,则运行应用程序,否则终止运行应用程序。
本发明所述的系统中,嵌入式设备还包括:
控制模块,用于当嵌入式设备的存储模块被外部工具非法访问时,则清除存储模块中的全部数据。
本发明所述的系统中,存储模块还用于将密钥和认证码和散列地存储在存储模块的空余空间上。
本发明产生的有益效果是:本发明中嵌入式设备通过请求接收主设备发送的包括认证码、密钥及加密的应用程序的请求数据,并利用密钥对应用程序进行解密并固化应用程序,在嵌入式设备启动应用程序后接收用户输入的待校验的认证码;嵌入式设备利用存储模块中存储的认证码对待校验的认证码进行验证,若验证通过,则运行应用程序,否则终止运行应用程序。本发明适用于在硬件资源受限的嵌入式系统中,不用增加额外的硬件,就提高了嵌入式设备二次开发软件的安全性。
进一步地,本发明在嵌入式设备的存储模块被外部工具非法访问时,则清除存储模块中的全部数据,实现了对存储模块的安全访问。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明实施例嵌入式系统中二次开发的嵌入式应用程序的加密和认证保护的方法,如图1所示,包括以下步骤:
S101、主设备向嵌入式设备发送请求下载数据的信息;
S102、嵌入式设备接收请求信息并向主设备反馈应答信息;
S103、主设备向嵌入式设备下载数据,数据包括认证码、密钥及加密的应用程序;
S104、嵌入式设备接收认证码和密钥并保存到存储模块中,并用接收的密钥进行解密以固化应用程序;
在本发明的一个实施例中,步骤S104中嵌入式设备存储请求数据至存储模块中具体包括:将密钥散列地存储在存储模块的空余空间上;
也可以将认证码散列地存储在存储模块的空余空间上。
S105、嵌入式设备启动应用程序,并接收用户输入的待校验的认证码;
S106、嵌入式设备获取存储模块中存储的认证码;若认证码被散列地存储在存储模块的空余空间上,则此时嵌入式设备需要将散列的认证码进行整合。
S107、嵌入式设备验证待校验的认证码;即用获取的存储模块中的认证码来验证用户输入的待校验的认证码。
S108、若验证通过,则运行应用程序;
S109、若验证未通过,则终止运行应用程序。
本发明的方法不用增加额外的硬件成本,就可以提高二次开发嵌入式程序的保密性,尤其适用于在硬件资源受限的嵌入式系统中。
本发明的一个实施例中,为了防止外部工具非法访问嵌入式设备的存储模块的数据,上述方法还包括步骤:
当嵌入式设备的存储模块被外部工具非法访问时,则清除存储模块中的全部数据。
嵌入式系统选用可置读写保护的微处理器,存储模块为微处理器中的Flash ROM,当外部工具企图清除读写保护功能时,微处理器将擦除Flash ROM的全部数据,实现了Flash ROM的安全访问。
在本发明的一个实施例中,主设备可优先选用公共算法,包括数据加密标准DES、国际数据加密算法IDEA、MD5算法或者高级加密标准AES等对应用程序进行加密。
进一步地,在本发明的一个实施例中,嵌入式设备在运行应用程序时,至少进行一次认证码校验。
进一步地,在上述实施例的基础上,若用户输入错误的验证码次数超过预设次数,则在预先设定的时间内禁止再次运行应用程序。如对待校验的认证码校验次数限制为3次或者5次,如果超过设定的次数,则24小时(或者其他设定时间)之内禁止用户再次运行应用程序,以防止恶意地进行无限次试探,盗取应用程序的认证码。
本发明的另一实施例中,嵌入式系统选用可置读写保护Flash ROM的微处理器。如图2所示,基于嵌入式系统的二次开发软件结构包含Bootloader、系统程序和应用程序,并固化存储到Flash Rom中。Bootloader固化在Flash ROM存储器中的地址前端部分,是嵌入式设备上电启动的程序,当系统上电时会首先运行,起到初始化基本硬件(包括完成微处理器的读写保护的置位的操作)和引导系统程序的双重作用。Bootloader、系统程序与应用程序是相互分离的,Bootloader和系统程序由专业的开发工具开发,并预先下载在嵌入式设备上。系统程序根据外部指令进入下载状态,接收密钥Key、认证码Code和密文文件(即加密的应用程序)解密和存储。应用程序为基于已有的系统程序提供的二次开发系统接口开发的程序,在本实施例中,可为软件升级程序。
如图3所示,微处理器的Flash ROM存储结构包含:Bootloader、系统程序,应用程序以及密钥Key和认证码Code。
进一步的,微处理器选用可置读写保护Flash ROM的,Flash ROM的内容只能通过内部程序进行访问。当恶意清除读写保护功能时,微处理器将擦除Flash ROM的全部内容;
进一步的,密钥Key和认证码Code散列存储在Flash ROM的空余空间上;系统程序通过散列规则获取散列存放的密钥和认证码,并组合成整体。
如图4所示,该实施例中,主设备的加密流程是:
1、在主设备上运行二次开发平台进行代码的编写,最后编译生成可执行程序。
2、在主设备上运行加密工具软件,输入密钥Key,对可执行程序进行加密,生成密文文件;在本发明实施例中,可执行程序为可给嵌入式设备升级的可执行程序。加密工具可选用DES算法,密钥Key长度最长为8Bytes。
3、主设备上输出密文文件。
如图5所示,该实施例中,嵌入式设备的解密流程是:
嵌入式设备通过接口模块建立与主设备的连接,嵌入式设备执行系统程序,进入下载状态;
主设备运行下载工具,嵌入式设备预先下载认证码Code,密钥Key;
主设备运行下载工具,发送密文文件到嵌入式设备,嵌入式设备接收数据解密并存储,完成嵌入式设备应用程序的升级。
该实施例中,主设备与嵌入式设备之间通信的握手协议如图6所示:
步骤601:嵌入式设备等待接收询问信号ASK;
步骤602:主设备发送询问信号ASK;
步骤603:主设备进入等待嵌入式设备的应答信号ACK1;
步骤604:嵌入式设备接收到询问信号ASK,立即回复应答信号ACK1;
步骤605:嵌入式设备进入等待接收数据类型TYPE;
步骤606:主设备接收到应答信号ACK1,立即发送数据类型TYPE;
步骤607:主设备进入等待嵌入式设备的应答信号ACK2;
步骤608:嵌入式设备接收到数据类型TYPE,立即回复应答信号ACK2;其中,数据类型TYPE=0x01,发送的数据类型是认证码Code。
步骤609:主设备接收到应答信号ACK2,立即发送认证码Code;
步骤610:嵌入式设备接收认证码Code;
步骤611:嵌入式设备散列认证码Code`、认证码Code``并存储;
其中,数据类型TYPE=0x02,发送的数据类型是密钥Key。
步骤612:主设备接收到应答信号ACK2,立即发送密钥Key;
步骤613:嵌入式设备接收密钥Key;
步骤614:嵌入式设备散列密钥Key`、密钥Key``和密钥Key```并存储;
其中,数据类型TYPE=0x03,发送的数据类型是密文文件。
步骤615:嵌入式设备获取散列存储的密钥Key`、密钥Key``和密钥Key``组合成整体密钥Key;
步骤616:主设备发送密文数据包;
步骤617:主设备判断是否完成密文数据包的发送,未完成则跳转到步骤616,完成则发送结束符;
步骤619:嵌入式设备接收密文数据包;
步骤620:嵌入式设备判断是否接收到结束符,不是结束符则跳转到步骤621,是结束符则跳转到步骤622;
步骤621:解密密文数据包并存储到Flash ROM,跳转到步骤619;
步骤622:嵌入式设备完成接收数据;
步骤623:主设备完成发送数据,退出下载工具。
如图7所示,该实施例中,应用程序认证码Code校验示意图是:
步骤701:应用程序开始执行;
步骤702:如果调用系统认证码校验接口进行认证码的校验,则跳转到步骤703,没有进行调用系统认证码校验接口,则继续运行程序,跳转到步骤704;
进一步的系统认证码校验接口完成调用系统认证码校验函数,系统认证码校验函数将获取散列的认证码Code`和认证码Code``组合成整体,与待校验的认证码进行比较,返回比较结果(正确或错误)。同时,本发明实施例中,系统认证码校验函数对待校验的认证码校验次数限制为5次,以防止恶意地进行无限次试探,盗取应用程序的认证码。
步骤703:根据返回校验结果决定是否继续运行程序,输入的认证码校验正确则跳转到步骤704,输入的认证码校验错误则跳转到步骤705;
步骤704:继续运行应用程序;
步骤705:中止运行应用程序;
进一步的,在本发明的实施例中应用程序可多处进行认证码的校验。
本发明实施例嵌入式设备中二次开发的嵌入式应用程序的加密和认证保护的系统用于实现上述方法,如图8所示,包括嵌入式设备200和主设备100,嵌入式设备200与主设备100通信连接,如可通过接口处理模块连接,其中,
主设备100包括:
请求模块110,用于向嵌入式设备发送请求信息;
加密模块120,用于对嵌入式的应用程序进行加密;
下载模块130,用于下载数据至嵌入式设备中,数据包括认证码、密钥及加密的应用程序;
嵌入式设备200包括:
接收应答模块210,用于接收主设备发送请求信息并反馈应答信息;
解密模块220,用于根据接收的数据中的密钥进行解密;
存储模块230,用于存储认证码、密钥以及固化应用程序;
认证码校验模块240,用于在启动应用程序时,接收用户输入的待校验的认证码,并获取存储模块中存储的认证码,验证待校验的认证码,若验证通过,则运行应用程序,否则终止运行应用程序。
进一步地,本发明实施例嵌入式设备还包括:
控制模块250,用于当嵌入式设备的存储模块230被外部工具非法访问时,则清除存储模块230中的全部数据。
进一步地,本发明实施例中,存储模块230还用于将密钥和认证码和散列地存储在存储模块的空余空间上。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。