一种安全的固件更新方法与流程

文档序号:15557453发布日期:2018-09-29 01:27阅读:270来源:国知局

本发明属于程序控制装置技术领域,涉及用于执行专门程序的装载和更新,具体涉及一种安全的固件更新方法。



背景技术:

固件(firmware)是一种存储于设备中的eeprom或flash芯片中,可由用户通过特定的刷新程序进行升级的程序,固件通常担任着一个数码产品最基础、最底层工作。一般来说,这些硬件内所保存的程序是无法被用户直接读出或修改的。因为通常情况下是没有必要对固件进行升级操作,即使在固件内发现了严重的bug,也必须由专业人员进行更换。早期的固件芯片一般采用了rom设计,firmware代码是在生产过程中固化的,用任何手段都无法修改。随着技术的不断发展,为适应用户对于不断更新的硬件环境的需求,开始出现利用eeprom和flash的可以重复刷写特点让固件得以修改和升级的技术,使得更多的厂商把升级固件提供更多更新的功能做为附加值来提供给用户。

固件的更新或升级是指把新的固件写入芯片中,以代替原有的固件的过程。一些嵌入式设备一旦部署后,若要进行固件的更新,只能进行现场更新,而不是将设备回收到生产厂商处再更新,所以厂商就需要将新版本的固件发送到客户处,由客户来进行更新。即一般的固件更新流程为:厂商生成固件image文件,然后将此image文件发送给客户,客户再利用更新工具将固件image文件烧录到设备中,在这个过程中,image文件一般是明文传输,也不存在对image文件的验证过程。这个过程中,就会存在很多安全问题,比如固件被逆向、被篡改,或将固件运行于未经授权的设备中等风险。

针对这些安全问题,现有技术中已经披露了一些应对的方法,比如申请号为cn201610554448.7、名称为“一种安全的固件验证更新方法”的专利文献。通过对此专利文献的详细解读发现其虽然应用了签名算法,能够规避固件被篡改的风险,但是其固件依然为明文状态,无法规避被逆向和被被烧录到未经授权设备中的风险,而且其只通过id来进行固件与主板的匹配,并未进行版本控制,也存在固件版本回退的风险。



技术实现要素:

本发明目的在于针对传统的固件的更新或升级过程中存在的固件image文件被逆向、被篡改,或运行于未经授权的设备中等风险,利用对称密码算法对固件image进行加密,再利用非对称密码算法对加密过的固件image进行签名,随后经过验签和解密,实现有效防止固件image被逆向分析,防止固件image被篡改,防止设备受到攻击的危险。

为实现上述目的,本发明采用的技术方案为一种安全的固件更新方法,具体包含以下步骤:

s1:利用对称密码算法对固件image文件进行加密;

s2:利用非对称密码算法对加密过的固件image文件进行签名;

s3:发送给客户;

s4:利用固件更新工具对加密、签名后的固件image文件进行验签,以防止固件image文件被篡改;

s5:客户将验签后的固件image文件下载到设备中;

s6:通过设备端bootrom对加密后的固件image文件进行解密,得到固件image文件;

s7:通过设备端bootrom完成固件更新。

步骤1中,所述对称密码算法生成对称加密key,固件生成工具利用此key对固件进行加密,在设备出厂前,将此key烧录到设备中。

步骤6中,所述解密是利用上述key完成的。

步骤2中,在签名时会生成非对称密钥对,固件生成工具利用privatekey对固件进行签名。

步骤4中,在验签时固件更新工具会利用publickey对固件进行验签。

步骤7中,通过设备端bootrom完成固件更新的具体流程如下:

s11:bootrom利用对称密码算法生成的对称加密key对固件image进行解密;

s12:检查固件image的版本号,若版本号非法,则终止更新;若合法则继续步骤s13;

s13:若版本比当前固件image的版本新,则将其烧录到设备中,否则终止更新。

与现有技术相比,本发明具有以下有益效果:

1.本发明利用对称密码算法对固件image进行加密,烧录到设备后,再由bootrom对image进行解密,这样就能保证固件image是密文传输的,无法被逆向,有效防止固件image被逆向分析;

2.本发明利用非对称密码算法对加密过的固件image进行签名,由固件更新工具来验签,以此来防止固件image被篡改,防止设备受到攻击;

3.由于未经授权的设备没有解密秘钥,从而可以防止固件image被烧录到未经授权的设备中;

4.由于固件image注入了版本信息,这样可以保证设备一旦烧录了新版本固件,就无法再烧录旧版本的固件,进而能防止攻击者利用利用旧版本固件的漏洞来对设备进行攻击,防止固件版本回退。

附图说明

图1是本发明的整体流程图;

图2是本发明中bootrom过程的流程图。

具体实施方式

下面结合附图对本发明作进一步详细的说明。

本发明提出的利用加密算法和在固件image中注入版本信息,来保证整个固件更新过程的安全性的整体流程图如图1所示。本发明的实现,需要pc端固件生成工具(在厂商处)、固件更新工具(在客户处)和设备端bootrom的配合。在供应商或厂商处,利用对称密码算法,比如aes/sm4对固件image(即图中的fwimage)进行加密,得到encfwimage(encryptedfirmwareimage的简称)。再利用非对称密码算法,比如rsa/sm2对加密过的固件image进行签名,得到encfwimage∣signature。然后发送到客户处,由固件更新工具来验签,以此来防止固件image被篡改。厂商处保存有非对称算法的私钥,用来签名;客户处只有非对称算法的公钥,用来验签;也不存在私钥的传输问题。

验签之后将encfwimage下载到设备,将解密秘钥烧录到设备中。具体而言,烧录到设备后是由bootrom对image进行解密。这样就能保证固件image是密文传输的,无法被逆向;同时由于未经授权的设备没有解密秘钥,从而可以防止设备运行于未经授权的设备中。设备出厂前,会在安全的生产环境中,将解密秘钥烧录到设备中,后期不存在解密秘钥的传输问题。

由于固件image注入了版本信息,这样可以保证设备一旦烧录了新版本固件,就无法再烧录旧版本的固件,进而能防止攻击者利用利用旧版本固件的漏洞来对设备进行攻击。

再对密钥生成的过程进行说明,首先生成对称加密key,固件生成工具利用此key对固件进行加密;在设备出厂前,将此key烧录到设备中,bootrom将来会利用此key对固件进行解密。

为实现签名,本发明需要生成非对称密钥对,固件生成工具利用privatekey对固件进行签名,固件更新工具会利用publickey对固件进行验签。

作为最佳实施例,本发明的固件image更新的流程如下:

1.厂商生成新版本固件后,利用key对固件image进行加密,然后利用privatekey对固件进行签名,生成签名值;

2.厂商将加密过的固件image与其签名值发送给客户;

3.客户利用publickey对固件image进行验签,来确实image在传输过程中是否被篡改过。若被篡改过,终止更新,否则继续更新;

4.客户将固件image下载到设备中;

5.设备bootrom利用key对固件image进行解密,然后判断固件版本号是否非法,若固件版本号合法,且比当前固件版本新,则将其烧录到设备中,否则终止更新,如图2所示。

以上具体实施方式的描述并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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