CN111026419A - 一种单片机的应用程序升级方法、装置及系统 - Google Patents

一种单片机的应用程序升级方法、装置及系统 Download PDF

Info

Publication number
CN111026419A
CN111026419A CN201911090388.8A CN201911090388A CN111026419A CN 111026419 A CN111026419 A CN 111026419A CN 201911090388 A CN201911090388 A CN 201911090388A CN 111026419 A CN111026419 A CN 111026419A
Authority
CN
China
Prior art keywords
application program
signature
signed
signature verification
package
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201911090388.8A
Other languages
English (en)
Inventor
林学春
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Neoway Technology Co Ltd
Original Assignee
Shenzhen Neoway Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Neoway Technology Co Ltd filed Critical Shenzhen Neoway Technology Co Ltd
Priority to CN201911090388.8A priority Critical patent/CN111026419A/zh
Publication of CN111026419A publication Critical patent/CN111026419A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种单片机的应用程序升级方法、装置及系统,该方法包括:从闪存Flash中获取已签名应用程序,该已签名应用程序包括应用程序包和应用程序包对应的签名文件,其中,签名文件是服务器对应用程序包进行哈希运算和非对称加密获得的,所述非对称加密包括基于RSA私钥的加密;对已签名应用程序进行验签,获得验签结果;在验签结果为验签成功的情况下,根据应用程序包进行应用程序升级。实施本申请实施例,可以实现单片机的应用程序的可靠签名升级,提高了单片机的应用程序升级的安全性。

Description

一种单片机的应用程序升级方法、装置及系统
技术领域
本申请涉及信息安全领域,尤其涉及一种单片机的应用程序升级方法、装置及系统。
背景技术
为满足用户需求,对应用程序的升级是非常有必要的,通过应用程序升级可以增加应用程序的新功能以提高用户体验感,还可以修复原有应用程序的漏洞。
单片机MCU(Micro Control Unit,微控制单元,或称为单片机)的程序包括引导程序Bootloader和应用程序两部分,目前,单片机MCU中应用程序的升级常通过引导程序Bootloader来完成,具体方法是单片机MCU中的应用程序只需要在编译时满足引导程序Bootloader的起始地址空间要求,则单片机MCU按照升级协议接收待升级的应用程序,就可更新单片机MCU中的应用程序实现对应用程序的升级,该方法的安全性低,待升级应用程序容易遭到恶意篡改,且单片机MCU也无法分辨应用程序是否被篡改。
发明内容
本申请实施例公开了一种单片机的应用程序升级方法、装置及系统,通过对新版本的应用程序进行签名以及进行升级前的验签,从而实现了单片机的应用程序的可靠签名升级,防止应用程序被恶意篡改,提高了单片机的应用程序升级的安全性。
第一方面,本申请实施例提供了一种单片机的应用程序升级方法,所述方法包括:从闪存Flash中获取已签名应用程序,所述已签名应用程序包括应用程序包和所述应用程序包对应的签名文件,所述签名文件是服务器对所述应用程序包进行哈希运算和非对称加密获得的;所述非对称加密包括基于RSA私钥的加密;对所述已签名应用程序进行验签,获得验签结果;在所述验签结果为验签成功的情况下,根据所述应用程序包进行应用程序升级。
可以看出,实施本申请实施例,通过对新版本的应用程序包进行签名操作,以及在单片机进行升级操作前对该应用程序包的验签操作,在验签成功时才进一步执行应用程序的升级,这样,能够提高单片机的应用程序升级的安全性,防止了应用程序被恶意篡改。
基于第一方面,在可能的实施例中,所述方法还包括:在所述验签结果为验签失败的情况下,擦除所述已签名应用程序。
基于第一方面,在可能的实施例中,所述对所述已签名应用程序进行验签,获得验签结果,包括:使用与所述RSA私钥匹配的RSA公钥对所述签名文件进行解密获得第一数字摘要;对所述应用程序包进行所述哈希运算获得第二数字摘要;当所述第一数字摘要与所述第二数字摘要相同,确定所述验签结果为验签成功;当所述第一数字摘要与所述第二数字摘要不同,确定所述验签结果为验签失败。
基于第一方面,在可能的实施例中,所述签名文件位于所述已签名应用程序的头部空间。
基于第一方面,在可能的实施例中,所述从闪存Flash中获取已签名应用程序之前,还包括:从所述服务器下载所述已签名应用程序至所述Flash。
第二方面,本申请实施例提供了一种用于单片机的应用程序升级的装置,所述装置包括:获取单元,用于从闪存Flash中获取已签名应用程序,所述已签名应用程序包括应用程序包和所述应用程序包对应的签名文件,所述签名文件是服务器对所述应用程序包进行哈希运算和非对称加密获得的;所述非对称加密包括基于RSA私钥的加密;验签单元,对所述已签名应用程序进行验签,获得验签结果;升级单元,用于在所述验签结果为验签成功的情况下,根据所述应用程序包进行应用程序升级。
可以看出,实施本申请实施例,通过对新版本的应用程序包进行签名操作,以使单片机在进行升级操作前需增加一步应用程序包的验签操作,在验签成功时才能实现应用程序的升级,提高了单片机的应用程序升级的安全性,防止了应用程序被恶意篡改。
基于第二方面,在可能的实施例中,所述装置还包括:擦除单元,用于在所述验签结果为验签失败的情况下,擦除所述已签名应用程序。
基于第二方面,在可能的实施例中,所述验签单元具体用于:使用与所述RSA私钥匹配的RSA公钥对所述签名文件进行解密获得第一数字摘要;对所述应用程序包进行所述哈希运算获得第二数字摘要;当所述第一数字摘要与所述第二数字摘要相同,确定所述验签结果为验签成功;当所述第一数字摘要与所述第二数字摘要不同,确定所述验签结果为验签失败。
基于第二方面,在可能的实施例中,所述签名文件位于所述已签名应用程序的头部空间。
基于第二方面,在可能的实施例中,所述从闪存Flash中获取已签名应用程序之前,所述装置还包括:下载单元,用于从所述服务器下载所述已签名应用程序至所述Flash。
第三方面,本申请实施例提供了一种用于单片机的应用程序升级的系统,所述系统包括服务器和单片机,其中,所述服务器,用于:对应用程序包进行哈希运算获得第一数字摘要;通过RSA私钥对所述第一数字摘要进行加密获得签名文件;将所述签名文件插入所述应用程序包的头部空间获得已签名应用程序;所述单片机,用于:从闪存Flash中获取已签名应用程序,所述已签名应用程序包括应用程序包和所述应用程序包对应的签名文件,所述签名文件是服务器对所述应用程序包进行哈希运算和非对称加密获得的;所述非对称加密包括基于RSA私钥的加密;对所述已签名应用程序进行验签,获得验签结果;在所述验签结果为验签成功的情况下,根据所述应用程序包进行应用程序升级。
可以看出,实施本申请实施例,通过在服务器侧生成包含应用程序包和其对应的签名文件的已签名应用程序,在单片机侧进行应用程序的升级前需要先进行已签名应用程序的验签操作,在验签成功的情况下单片机才可实现应用程序的升级,提高了单片机的应用程序升级的安全性,防止了应用程序被恶意篡改。
基于第三方面,在可能的实施例中,所述单片机,还用于在所述验签结果为验签失败的情况下,擦除所述已签名应用程序。
基于第三方面,在可能的实施例中,所述对所述已签名应用程序进行验签,获得验签结果,单片机具体用于:对所述应用程序包进行所述哈希运算获得第二数字摘要;当所述第一数字摘要与所述第二数字摘要相同,确定所述验签结果为验签成功;当所述第一数字摘要与所述第二数字摘要不同,确定所述验签结果为验签失败。
基于第三方面,在可能的实施例中,所述签名文件位于所述已签名应用程序的头部空间。
基于第三方面,在可能的实施例中,所述从闪存Flash中获取已签名应用程序之前,所述单片机还用于从所述服务器下载所述已签名应用程序至所述Flash。
第四方面,本申请实施例提供了一种计算机可读存储介质,用于存储程序指令,所述程序指令用于实现如权利要求1-5中任一项所述的方法。
第五方面,本申请实施例提供了一种计算机软件产品,该计算机程序软件产品包括程序指令,当该计算机软件产品被装置的控制器执行时,该装置的控制器执行前述第一方面所述方法。该计算机软件产品可以为一个软件安装包,在需要使用前述第一方面的任一种可能的设计提供的方法的情况下,可以下载该计算机软件产品并在装置的控制器上执行该计算机软件产品,以实现第一方面所述方法。
可以看到,实施本申请实施例,通过对新版本的应用程序包进行签名操作,以使单片机在进行升级操作前需增加一步应用程序包的验签操作,在验签成功时才能实现应用程序的升级,本申请提供的单片机的应用程序升级方法没有增加任何成本,仅在单片机中增加了一段占较少空间的验签代码,不仅提高了单片机的应用程序升级的安全性,还防止了应用程序被恶意篡改。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种单片机的应用程序升级系统示意图;
图2是本申请实施例提供的一种用于单片机的应用程序升级的装置结构示意图;
图3是本申请实施例提供的一种单片机的应用程序升级方法流程示意图;
图4是本申请实施例提供的一种单片机对已签名应用程序的验签方法流程示意图;
图5是本申请实施例提供的一种服务器生成已签名应用程序的方法流程示意图;
图6是本申请实施例提供的一种装置的控制器的功能结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
需要说明的是,在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
单片机MCU的应用程序的升级是常见且有必要的,通过应用程序的升级可增加应用程序的新功能或者修复了原有应用程序的漏洞。目前,单片机的应用程序的升级方法一般是:单片机与服务器(或称上位机)有线连接,当单片机收到服务器发出的更新应用程序的请求后,单片机的启动程序通过串口从服务器下载新的应用程序包,就可更新单片机中的原有应用程序实现单片机应用程序的升级,但此过程中若单片机在下载应用程序的过程中应用程序被恶意篡改或者上位机中待下载的应用程序已经被病毒感染了,单片机是无法分辨下载的应用程序是否被篡改的,导致单片机的应用程序的升级过程的安全性低。为了解决这个问题,本申请实施例提出在服务器侧完成应用程序的签名操作,在单片机升级应用程序前增加一个验签操作,在验签成功时才进行单片机的应用程序的升级,提升了单片机的应用程序升级的安全性。
参见图1,图1是本申请实施例提供的一种单片机的应用程序升级系统示意图,如图1所示,单片机的升级系统可包括:服务器和单片机,服务器和单片机之间通过有线或者无线的方式进行连接和通信,其中,服务器主要用于对新程序的应用程序包进行签名操作生成一个已签名应用程序,单片机用于将接收到的已签名应用程序进行验签操作,在确定验签成功时再实施单片机的应用程序的升级。
参见图2,图2是本申请实施例提供的一种用于单片机的应用程序升级的装置结构示意图,如图2所示,该装置200包括控制器211、时钟模块212、供电模块213、通信模块MODEM214、Flash215和存储器216。时钟模块212主要用于为控制器211产生数据传输和时序控制所需要的时钟,供电模块主要用于为控制器211以及装置内的其他部件提供稳定的、高精确度的电压,通信模块MODEM 214主要用于基于控制器211下发的指令从服务中下载已签名应用程序至Flash或存储器中,通信模块MODEM 214可以集成于装置200内,也可以独立存在于装置200外。控制器211被配置为执行程序指令(例如:引导程序Bootloader、应用程序等),其中,引导程序Bootloader存储于存储器216中,应用程序经下载后可临时存放于所述Flash215中,Flash具体可为串行接口Flash存储器(NorFlash),应用程序经MCU验签成功后可存储于存储器216中,存储器216可集成于控制器211内部,也可以独立存在,存储器包括但不限于随机存取存储器(Random Access Memory,RAM),只读存储器(Read-Only Memory,ROM),或高速缓存(Cache)等。本申请实施例中,控制器211具体被配置为调用所述程序指令以执行如图3和图4实施例所描述的方法。
参见图3,基于上文所描述单片机的应用程序升级系统及装置,下面描述本申请实施例提供的一种单片机的应用程序升级方法,该方法包括但不限于以下步骤:
步骤301、单片机从闪存Flash中获取已签名应用程序,其中,已签名应用程序包括应用程序包和其对应的签名文件。
在本申请实施例中,单片机上电后,单片机先启动引导程序Bootloader,Bootloader从闪存Flash中读取已签名应用程序,上述中的已签名应用程序包括应用程序包和该应用程序包对应的签名文件,且签名文件位于已签名应用程序的头部空间,换句话说,即在已签名应用程序占用的存储空间中,签名文件的结束地址要小于其对应的应用程序包的起始地址。
需要说明的是,单片机从闪存Flash中获取已签名应用程序之前,需要先接收到服务器发送的应用程序的升级指令,然后单片机通过基于有线连接通过串口或者无线通信MODEM模块从服务器上下载已经编译好的已签名应用程序并将其存储于闪存Flash,其中,已签名应用程序中的签名文件是服务器对已签名应用程序中的应用程序包依次进行哈希运算和基于RSA私钥的非对称加密算法进行加密获得的。
需要说明的是,RSA算法是非对称加密算法的一种,是由罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)三位一起提出的,RSA就是取三人姓氏开头字母组成的。利用RSA私钥进行加密即使用预先生成的私钥将待加密的信息变成密文,那么其对应的密文的解密只能通过与RSA私钥匹配的公钥进行解密。可以理解,本申请实施例中,所述密文也可称作签名文件。
可以理解,已签名应用程序的生成过程是在服务器中完成,具体地服务器生成已签名应用程序的方法在后文中进行详细描述。
步骤302、对所述已签名应用程序进行验签,获得验签结果。
在本申请实施例中,单片机的引导程序Bootloader对获取的已签名应用程序进行验签操作,从而获得验签结果。所谓验签操作,是指比较单片机对已签名应用程序中的签名文件进行解密获得的第一数字摘要与对已签名应用程序中的应用程序包使用哈希算法生成的第二数字摘要是否相同,从而获得验签结果。需要说明的是,上述验签操作所需的验签代码保存在引导程序Bootloader中,其中,验签代码包括上述中的哈希算法和对签名文件进行解密的算法,上述在单片机中生成第二数字摘要所使用的哈希算法与在服务器中生成第一数字摘要使用的哈希算法是相同的。
为了更清楚地说明单片机对上述已签名程序的验签方法,参见图4,步骤302进一步可以分解成以下步骤:
步骤3021、使用与RSA私钥匹配的RSA公钥对签名文件进行解密获得第一数字摘要。
在本申请实施例中,单片机的引导程序Bootloader获取到已签名应用程序后,读取已签名应用程序中的签名文件,使用RSA公钥对签名文件进行解密获得第一数字摘要。
需要说明的是,单片机进行验签操作使用的RSA公钥与服务器对第一数字摘要进行加密操作时使用的RSA私钥是一一匹配的,即公钥与私钥组成一组密钥对,通常情况下,在数字签名过程中,RSA私钥仅应用程序的编译者知晓,用于对应用程序包对应的数字摘要进行加密,而RSA公钥保存在Bootloader程序中,用于签名文件的解密还原出应用程序包对应的数字摘要。私钥和公钥保证了数字摘要的安全性。
RSA密钥对的生成方法具体为:随机选择两个不同大质数p和q,计算p和q的乘积为N,根据欧拉函数,计算(p-1)和(q-1)的乘积为r,然后选择一个比r小的整数e,使e和r互质,计算e关于r的模反元素d,即满足(ed-1)被r整除,因此,可获得RSA公钥为(N,e),RSA私钥为(N,d)。
可以理解,本申请实施例中采用RSA公钥对签名文件进行解密得到第一数字摘要的过程,即为使用RSA公钥(N,e),计算签名文件的e次方后再使其除以N求余数,得到的结果即为第一数字摘要。
一具体实施中,可以采用RSA2048算法中的公钥或者RSA1024算法中的公钥对签名文件进行解密,两者的区别在于生成的密钥长度不同,其中,RSA2048生成的公钥和私钥的长度分别为2048bit,而RSA1024生成的公钥和私钥的长度分别为1024bit。一般来说,密钥的长度越长,安全性越高,对应解密所需的时间也越长。
需要说明的是,单片机在对签名文件进行解密时使用的RSA公钥与服务器对应用程序包对应的第一数字摘要进行加密时使用的RSA私钥是一一对应的,即说明单片机对签名文件解密使用的RSA算法和服务器对第一数字摘要加密使用的RSA算法相同。
步骤3022、对应用程序包进行哈希运算获得第二数字摘要。
在本申请实施例中,单片机获取到已签名应用程序后,读取已签名应用程序中的应用程序包,使用哈希算法对应用程序包进行哈希运算获得第二数字摘要。
需要说明的是,哈希算法是一种将任意长度的消息或者数据压缩成具有固定长度的数字摘要,生成数字摘要的过程是不可逆的,即无法通过数字摘要解析出原来的消息或数据,且获得的数字摘要是将原数据打乱混合按照算法重新组成,数字摘要通常由随机字母和数字组成的固定长度的字符串来表示。可以理解,不同的原始数据生成的数字摘要是不同的,数字摘要唯一表征了原始数据的唯一性。
一具体实施中,采用的哈希算法可以是SHA 256,即对任意长度的应用程序包,SHA256都会生成一个256bit长的数字摘要,相当于一个长度为32个字节的数组,通常用一个长度为64的十六进制字符串来表示。SHA 256具体的算法原理为:将待处理的数据分解成n个大小为512bit大小的块,利用8个哈希初值和64个哈希常量对各个块循环进行映射函数的n次迭代,n次迭代的结果就是最终的哈希值,即为256bit的数字摘要。
需要说明的是,除了SHA 256算法,SHA-2(Secure Hash Algorithm 2,安全散列算法2)中还可以使用SHA224、SHA384、SHA512等算法,这些变体除了生成数字摘要的长度、循环运行的次数等一些微小差异外,算法的基本原理是一致的。可以理解,一般来说,哈希算法中,数字摘要的长度越长,安全性也就越高。当然,也可以使用MD5、SHA1系列等算法生成应用程序包对应的数字摘要,本申请不做具体限定。应理解,上述所述的生成数字摘要的算法在信息安全领域已经非常成熟并被广泛使用,本申请在此不再赘述。
需要说明的是,服务器在生成应用程序包对应的签名文件的过程中,使用了哈希算法对应用程序包进行哈希运算生成了第一数字摘要,因此,单片机对应用程序包生成第二数字摘要所采用的哈希算法需要与服务器生成第一数字摘要所采用的哈希算法保持一致。
步骤3023、比较第一数字摘要和第二数字摘要是否相同,获得验签结果。
本申请实施例中,单片机获取到根据已签名应用程序中的签名文件解密后的第一数字摘要和根据已签名应用程序中的应用程序包重新生成的第二数字摘要后,比较第一数字摘要和第二数字摘要是否相同,若第一数字摘要和第二数字摘要相同,则对应的验签结果为验签成功;若第一数字摘要和第二数字摘要不同,则对应的验签结果为验签失败。
需要说明的是,上述中涉及的第一数字摘要和第二数字摘要都是一串具有相同固定长度的数据串,通常用十六进制字符串表示,举例来说,第一数字摘要和第二数字摘要的固定长度都为256bit,可以表示为32Byte的十六进制数。
在一具体实施中,比较第一数字摘要和第二数字摘要是否相同,还可以从左向右(或者从右向左)分别循环遍历比较第一数字摘要和第二数字摘要每一位的字符,当某一位的字符不同时,则表示第一数字摘要和第二数字摘要不同;当所有位上的字符全部相同时,则表示第一数字摘要和第二数字摘要相同。
需要说明的是,本申请实施例对判断第一数字摘要和第二数字摘要是否相同的方式不做具体限定。
可以理解,针对同一应用程序包生成的数字摘要具有唯一性,即针对相同的应用程序包生成的数字摘要必定相同,但针对不同的应用程序包生成的数字摘要是不同的,因此,数字摘要是否相同可以作为判断应用程序包是否发生篡改的依据。
步骤303、在验签结果为验签成功的情况下,根据应用程序包进行应用程序升级。
在本申请实施例中,验签结果若为验签成功,即说明单片机对签名文件进行解密获得的第一数字摘要和针对应用程序包重新生成的第二数字摘要相同,进一步地说明了单片机获得的应用程序包和服务器中提供的应用程序包一模一样,没有经过任何形式的篡改(例如:增加、缺少或者替换)。因此,在验签结果为验签成功的情况下,单片机的引导程序Bootloader将擦除单片机中原有的应用程序,并将获得的应用程序包写入或者烧录入单片机中,即能实现单片机的应用程序的可靠签名升级。
可以理解,本申请的又一种实施例中,验签结果若为验签失败,即说明单片机对签名文件进行解密获得的第一数字摘要和针对应用程序包重新生成的第二数字摘要不同,进一步地说明了单片机获得的应用程序包在传输过程中发生了篡改(例如:增加、缺少或者替换),与服务器中提供的应用程序包不同。因此,在验签结果为验签失败的情况下,单片机的引导程序Bootloader将直接擦除获得的应用程序包,并直接跳转到单片机的原应用程序运行。
可以看出,实施本申请实施例,通过对新版本的应用程序包进行签名操作,以使单片机在进行升级操作前需增加一步应用程序包的验签操作,在验签成功时才能实现应用程序的升级,本申请提供的单片机的应用程序升级方法没有增加任何成本,仅在单片机中增加了一段占较少空间的验签代码,不仅提高了单片机的应用程序升级的安全性,还防止了应用程序被恶意篡改。
参见图5,图5是本申请实施例提供的一种服务器生成已签名应用程序的方法,该方法包括但不限于以下步骤:
步骤501、对应用程序包进行哈希运算获得第一数字摘要。
在本申请实施例中,服务器对应用程序包进行哈希运算获得第一数字摘要,第一数字摘要通常由随机字母和数字组成固定长度的字符串表示。
需要说明的是,相同的应用程序包使用相同的哈希运算得到的数字摘要必然是相同的,不同的应用程序包使用相同的哈希运算得到的数字摘要是不同的,因此,数字摘要可以作为判断应用程序包是否发生更改的依据。
示例性地,可以采用SHA256算法对应用程序包进行哈希运算获得第一数字摘要,即对任意大小长度的应用程序包,生成的第一数字摘要的长度都为256bit。SHA256算法原理可参考步骤3021中的叙述,本申请在此不再赘述。在一些可能的实施例中,还可以使用SHA-2(Secure Hash Algorithm 2,安全散列算法2)中还可以使用SHA224、SHA384、SHA512等算法,也可以使用MD5、SHA1系列等算法生成应用程序包对应的数字摘要,本申请不做具体限定。应理解,上述涉及的生成数字摘要的算法在信息安全领域已经非常成熟并被广泛使用,本申请再次不再赘述。
步骤502、通过RSA私钥对第一数字摘要进行加密获得签名文件。
具体地,服务器使用RSA私钥对步骤501中获得的第一数字摘要进行加密生成一个签名文件,其目的是为了防止第一数字摘要泄露后被伪造,故对第一数字摘要进行加密,保证第一数字摘要的安全性。可以理解,完成对第一数字摘要进行加密的过程即完成了对应用程序包的签名过程。
示例性地,本申请示例中可采用非对称加密算法RSA2048对第一数字摘要进行加密,假设服务器生成的密钥对中RSA公钥为(N,e),RSA私钥为(N,d),密钥对的生成方法可参考上述步骤3021中的相关叙述。因此,RSA2048对第一数字摘要进行加密的过程即为使用RSA私钥(N,d),计算第一数字摘要的d次方后再使其除以N以求余数,得到的结果即为签名文件,且签名文件的长度为2048bit,与密钥(公钥或私钥)的长度相同。
在一些可能的实施例中,还可以采用RSA1024算法对第一数字摘要进行加密,只是生成的对应的签名文件的长度为1024bit。需要说明的是,签名文件的长度与RSA算法的密钥的长度相同,密钥长度越长,安全性越高,对应加密所需的时间也越长。需要说明的是,本申请对采用的RSA算法不做具体限定。
需要说明的是,私钥是签名密钥,公钥是验证密钥,私钥和公钥组成一个密钥对,即在生成私钥和公钥时,两者是一一对应的,因此,用私钥加密所获得的结果只有用与之对应的公钥才能正确解密。其中,签名密钥只能由签名的人持有,即对应着本申请实施例中应用程序包的编译者,而验证密钥是任何需要验证签名的人都可以持有。
步骤503、将所述签名文件插入应用程序包的头部空间获得已签名应用程序。
本申请实施例中,服务器将针对应用程序包进行签名操作后生成的签名文件放置于该应用程序包的头部空间,签名文件和应用程序包一起组成已签名应用程序,即在已签名程序中,签名文件位于已签名应用程序的头部空间,这样做是为了使签名文件和应用程序包分隔开以方便后续单片机进行验签操作时容易分别读取已签名应用程序中的签名文件和应用程序包。
可以理解,签名文件和应用程序包都是具有大小的,但签名文件的大小是在某一阈值范围内的,而应用程序包在每次编译时的大小是不确定的,因此,在头部空间划分某一阈值的固定空间用于存储签名文件,将大小不确定的应用程序包放置于某一阈值后的存储空间中,即可将签名文件和应用程序包分隔开。举例来说,假设签名文件的大小是在2KB以内的,故给签名文件分配2KB的存储空间,假设存储地址为0x08010000~0x08010800,即0x800表示2KB的存储空间,则应用程序包存储时的起始地址在0x08010800后即可。
可以看出,实施本申请实施例,通过在服务器侧对新版本的应用程序包进行签名操作生成一个签名文件,并将签名文件插入应用程序包的头部空间将二者一起传输至单片机,以使单片机在进行应用程序的升级前增加一个验签操作,验签成功才可进行应用程序的升级,提升了单片机的应用程序升级的安全性,有效防止了应用程序被恶意篡改。
参见图6,本申请实施例提供的装置的控制器进一步包括:获取单元201、验签单元202、升级单元203、下载单元204和擦除单元205,控制器211被配置为执行存储于Flash 215和存储器216中的程序以实现控制器211中的上述功能模块中的功能。
其中,获取单元201,用于从闪存Flash中获取已签名应用程序;验签单元202,用于对已签名应用程序进行验签,获得验签结果;升级单元203,用于在所述验签结果为验签成功的情况下,根据已签名应用程序中的应用程序包进行应用程序升级;下载单元204,用于在获取单元201从闪存Flash中获取已签名应用程序之前,从服务器下载已签名应用程序至闪存Flash;擦除单元205,用于在验签结果为验签失败的情况下,擦除已签名应用程序。
控制器的各功能模块可用于实现如图3和图4所示的所示的方法。以图3中的实施例为例,获取单元201可用于执行步骤301,验签单元202可用于执行步骤302,升级单元203可用于执行步骤303,为了说明书的简洁,本申请在此不再赘述。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得单片机执行如上述方法实施例中记载的任一方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
需要说明的是,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random AccessMemory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
在上述的实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是个人计算机,服务器,或者网络设备、机器人、单片机、芯片、机器人等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本申请实施例公开的进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (11)

1.一种单片机的应用程序升级方法,其特征在于,所述方法包括:
从闪存Flash中获取已签名应用程序,所述已签名应用程序包括应用程序包和所述应用程序包对应的签名文件,所述签名文件是服务器对所述应用程序包进行哈希运算和非对称加密获得的;所述非对称加密包括基于RSA私钥的加密;
对所述已签名应用程序进行验签,获得验签结果;
在所述验签结果为验签成功的情况下,根据所述应用程序包进行应用程序升级。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述验签结果为验签失败的情况下,擦除所述已签名应用程序。
3.根据权利要求1所述的方法,其特征在于,所述对所述已签名应用程序进行验签,获得验签结果,包括:
使用与所述RSA私钥匹配的RSA公钥对所述签名文件进行解密获得第一数字摘要;
对所述应用程序包进行所述哈希运算获得第二数字摘要;
当所述第一数字摘要与所述第二数字摘要相同,确定所述验签结果为验签成功;
当所述第一数字摘要与所述第二数字摘要不同,确定所述验签结果为验签失败。
4.根据权利要求3所述的方法,其特征在于,所述签名文件位于所述已签名应用程序的头部空间。
5.根据权利要求1所述的方法,其特征在于,所述从闪存Flash中获取已签名应用程序之前,还包括:
从所述服务器下载所述已签名应用程序至所述Flash。
6.一种用于单片机的应用程序升级的装置,其特征在于,所述装置包括:
获取单元,用于从闪存Flash中获取已签名应用程序,所述已签名应用程序包括应用程序包和所述应用程序包对应的签名文件,所述签名文件是服务器对所述应用程序包进行哈希运算和非对称加密获得的;所述非对称加密包括基于RSA私钥的加密;
验签单元,对所述已签名应用程序进行验签,获得验签结果;
升级单元,用于在所述验签结果为验签成功的情况下,根据所述应用程序包进行应用程序升级。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
擦除单元,用于在所述验签结果为验签失败的情况下,擦除所述已签名应用程序。
8.根据权利要求6所述的装置,其特征在于,所述验签单元具体用于:
使用与所述RSA私钥匹配的RSA公钥对所述签名文件进行解密获得第一数字摘要;
对所述应用程序包进行所述哈希运算获得第二数字摘要;
当所述第一数字摘要与所述第二数字摘要相同,确定所述验签结果为验签成功;
当所述第一数字摘要与所述第二数字摘要不同,确定所述验签结果为验签失败。
9.根据权利要求8所述的装置,其特征在于,所述签名文件位于所述已签名应用程序的头部空间。
10.根据权利要求6所述的装置,其特征在于,所述从Flash中获取已签名应用程序之前,所述装置还包括:
下载单元,用于从所述服务器下载所述已签名应用程序至所述Flash。
11.一种用于单片机的应用程序升级的系统,其特征在于,所述系统包括服务器和单片机,其中,
所述服务器,用于对应用程序包进行哈希运算获得第一数字摘要;通过RSA私钥对所述第一数字摘要进行加密获得签名文件;将所述签名文件插入所述应用程序包的头部空间获得已签名应用程序;
所述单片机,用于执行如权利要求1-5任一项所述的方法。
CN201911090388.8A 2019-11-08 2019-11-08 一种单片机的应用程序升级方法、装置及系统 Pending CN111026419A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911090388.8A CN111026419A (zh) 2019-11-08 2019-11-08 一种单片机的应用程序升级方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911090388.8A CN111026419A (zh) 2019-11-08 2019-11-08 一种单片机的应用程序升级方法、装置及系统

Publications (1)

Publication Number Publication Date
CN111026419A true CN111026419A (zh) 2020-04-17

Family

ID=70205446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911090388.8A Pending CN111026419A (zh) 2019-11-08 2019-11-08 一种单片机的应用程序升级方法、装置及系统

Country Status (1)

Country Link
CN (1) CN111026419A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752200A (zh) * 2020-07-08 2020-10-09 深圳市有方科技股份有限公司 程序运行方法、计算机设备及可读存储介质
CN111857756A (zh) * 2020-07-23 2020-10-30 上海世麦智能科技有限公司 一种基于硬件加密的安全刷机方法及系统
CN112632514A (zh) * 2020-12-15 2021-04-09 北京握奇数据股份有限公司 一种基于USBKey的驱动组件防篡改的方法和装置
CN112784278A (zh) * 2020-12-31 2021-05-11 科东(广州)软件科技有限公司 一种计算机系统的可信启动方法、装置及设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101436141A (zh) * 2008-11-21 2009-05-20 深圳创维数字技术股份有限公司 基于数字签名的固件升级、固件封装方法与装置
CN103279372A (zh) * 2013-05-23 2013-09-04 青岛海信宽带多媒体技术有限公司 机顶盒软件升级方法及机顶盒
US20130318357A1 (en) * 2011-02-11 2013-11-28 Siemens Health Care Diagnostics Inc. System and Method for Secure Software Update
CN104486355A (zh) * 2014-12-30 2015-04-01 大连楼兰科技股份有限公司 防止代码被恶意篡改的方法和装置
CN107678763A (zh) * 2017-09-28 2018-02-09 杭州海兴电力科技股份有限公司 基于数字签名技术的电能表升级方法和系统
CN107704280A (zh) * 2016-11-15 2018-02-16 平安科技(深圳)有限公司 应用程序升级方法及系统
CN110378104A (zh) * 2018-04-16 2019-10-25 北京升鑫网络科技有限公司 一种升级防纂改的方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101436141A (zh) * 2008-11-21 2009-05-20 深圳创维数字技术股份有限公司 基于数字签名的固件升级、固件封装方法与装置
US20130318357A1 (en) * 2011-02-11 2013-11-28 Siemens Health Care Diagnostics Inc. System and Method for Secure Software Update
CN103279372A (zh) * 2013-05-23 2013-09-04 青岛海信宽带多媒体技术有限公司 机顶盒软件升级方法及机顶盒
CN104486355A (zh) * 2014-12-30 2015-04-01 大连楼兰科技股份有限公司 防止代码被恶意篡改的方法和装置
CN107704280A (zh) * 2016-11-15 2018-02-16 平安科技(深圳)有限公司 应用程序升级方法及系统
CN107678763A (zh) * 2017-09-28 2018-02-09 杭州海兴电力科技股份有限公司 基于数字签名技术的电能表升级方法和系统
CN110378104A (zh) * 2018-04-16 2019-10-25 北京升鑫网络科技有限公司 一种升级防纂改的方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752200A (zh) * 2020-07-08 2020-10-09 深圳市有方科技股份有限公司 程序运行方法、计算机设备及可读存储介质
CN111857756A (zh) * 2020-07-23 2020-10-30 上海世麦智能科技有限公司 一种基于硬件加密的安全刷机方法及系统
CN112632514A (zh) * 2020-12-15 2021-04-09 北京握奇数据股份有限公司 一种基于USBKey的驱动组件防篡改的方法和装置
CN112784278A (zh) * 2020-12-31 2021-05-11 科东(广州)软件科技有限公司 一种计算机系统的可信启动方法、装置及设备

Similar Documents

Publication Publication Date Title
CN111026419A (zh) 一种单片机的应用程序升级方法、装置及系统
CN107194242B (zh) 固件升级方法和装置
CN110968844B (zh) 离线状态下的软件授权方法、服务器及可读存储介质
US8250373B2 (en) Authenticating and verifying an authenticable and verifiable module
CN108241517B (zh) 一种软件升级方法、客户端及电子设备
US9311487B2 (en) Tampering monitoring system, management device, protection control module, and detection module
US11361087B2 (en) Security data processing device
EP2879327A1 (en) Encryption and decryption processing method, apparatus and device
CN108363580A (zh) 应用程序安装方法、装置、计算机设备和存储介质
US10630473B2 (en) Determination of a device-specific private key for an asymmetrical cryptographic method on a device
CN110688660B (zh) 一种终端安全启动的方法及装置、存储介质
CN105391717A (zh) 一种apk签名认证方法及其系统
CN107148010B (zh) 多运营商实现方法、装置、存储介质和计算机设备
CN106789075B (zh) Pos数字签名防切机系统
CN103269271A (zh) 一种备份电子签名令牌中私钥的方法和系统
CN111382397B (zh) 升级软件包配置方法、软件升级方法、设备及存储装置
CN111240709A (zh) 一种基于android系统的POS设备的固件升级方法及系统
CN105279441A (zh) 用于对数据进行加密和解密的方法和架构
CN110874467A (zh) 信息处理方法、装置、系统以及处理器、存储介质
CN111596938A (zh) 嵌入式设备固件安全升级方法、系统、终端及存储介质
CN112346759A (zh) 一种固件升级方法、装置及计算机可读存储介质
CN101808100B (zh) 一种解决信息安全设备远程升级重放性的方法和系统
CN111400771A (zh) 目标分区的校验方法及装置、存储介质、计算机设备
CN111949996A (zh) 安全私钥的生成方法、加密方法、系统、设备及介质
CN111368345A (zh) 加密程序的解密方法、装置、设备和计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination