System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种防止设备固件版本回滚的方法技术_技高网

一种防止设备固件版本回滚的方法技术

技术编号:40954091 阅读:2 留言:0更新日期:2024-04-18 20:30
本发明专利技术公开了一种防止设备固件版本回滚的方法,包括步骤1.在SOC生产时,生成至少两个公私钥对,将公钥或者公钥哈希保存到Boot ROM中;步骤2.定义一个公钥位图,并且为每个公钥分配一个bit,用于指示其是否有效,公钥的有效性等效于公私钥对的有效性;步骤3.初始状态下所有公钥都默认有效,选取一个公钥对BL1进行验签,当BL1存在漏洞或者风险时,将所用公钥在公钥位图对应位置的bit写为无效,重新选择一个有效的公钥,BL1的验签使用该有效的公钥。本发明专利技术基于公私钥加密体系,只运行使用有效公私钥对并且经过正确签名的代码,通过改变EFUSE/OTP模块的公钥位图来配置公钥的合法性,进而实现无效某个旧版本签名认证的功能,达到防止设备固件版本回滚的效果。

【技术实现步骤摘要】

本专利技术涉及防止设备固件版本回滚的方法,主要应用于安全启动(secure boot)。


技术介绍

1、随着社会的发展和产品的迭代,包括电脑、手机、手环等设备中,包含越来越多的个人数据,如支付密码,隐私等;需要对这些数据和信息做好安全防护,避免被未授权的第三方访问,为此业界引入了如下两种针对性的防护方案。

2、第一种:安全启动,只启动经过授权的软件方案,不能启动和运行非授权或恶意软件。

3、通过使用散列函数(如sha256)和非对称加密算法(如rsa2048),实现一个安全的启动链;只启动运行经过认证的代码,避免运行恶意代码,进而保护产品和数据。root oftrust,如图1所示,作为整个系统的信任根,一般使用boot rom实现,boot rom是只读不可更改的,一次性生成写入芯片内部。bl1(boot loader stage1,第一级引导),如图2所示,位于外部存储器上,可以去做更新。bl1中包含的签名数据,通过私钥(private key,需要做好保护,不能泄露)生成,boot rom中使用公钥(public key,由private key生成,而通过public key不能反向得到private key)去验证签名。公钥可以公开发布,一般是一次性烧写到芯片内部efuse或otp(one time program,只能一次编程)模块中,不可更改。其存在的不足是1.对于已在客户端使用的产品,无法抹除旧公钥,仍然可以运行旧版本,只能破坏旧公钥,导致soc安全启动机制不可用;2.对于已在客户端使用的产品,无法更新到新公钥,无法运行新版本;3.烧录数据长度比较大,烧录失效风险与数据长度成正比,任何1bit烧录失效,都会导致整个公钥不可用;4.烧录数据长度比较大,烧录时间与数据长度成正比,烧录成本高。

4、第二种:防回滚,进行版本管理,通过更新软件版本号,避免启动和运行旧版本。

5、软件方案开发中,不可避免的会有bug,产品中就需要避免运行该版本,强制更新到新版本;为此需要有防回滚机制,一般设计如图3所示,模块c可以正常加载运行,模块b版本号小于指定版本,可能包含存在风险的代码,就不会被加载运行。其存在的不足是被加载模块的数据存放在soc外部,有可能被篡改或丢失,导致版本比较失效,进而回滚到旧版本。


技术实现思路

1、为了解决上述技术问题,本专利技术提供一种防止设备固件版本回滚的方法,基于公私钥加密体系,只运行使用有效公私钥对并且经过正确签名的代码,其采用如下技术方案:

2、一种防止设备固件版本回滚的方法,包括以下步骤:

3、步骤1.在soc生产时,生成至少两个公私钥对,将公钥或者公钥哈希保存到bootrom中;

4、步骤2.定义一个公钥位图,并且为每个公钥分配一个bit,用于指示其是否有效,公钥的有效性等效于公私钥对的有效性;

5、步骤3.初始状态下所有公钥都默认有效,选取一个公钥对bl1进行验签,当bl1存在漏洞或者风险时,将所用公钥在公钥位图对应位置的bit写为无效,重新选择一个有效的公钥,bl1的验签使用该有效的公钥。

6、本专利技术具有以下有益技术效果:

7、1.efuse/otp需求比较小,只需为每个公私钥对分配一个bit,efuse/otp的烧录出错风险和烧录成本降低。

8、2.boot rom保存公钥或者公钥哈希,boot rom的成本相比efuse/otp更低。

9、3.公钥位图存储于efuse/otp中,通过烧写efuse/otp中的公钥位图,来无效之前使用的公私钥对,即可防止回滚到旧版本。

10、公钥默认都是有效的,使用efuse/otp保存位图时,二者默认初始值是不同的,如使用efuse,默认值为0,烧写为1使之无效;如使用otp,默认值为1,烧写为0使之无效。

11、4.只需烧写1bit,即可防止旧版本的启动,烧录成本和烧录失效风险都比较低。

12、5.对于已发布的产品,更新ic内部efuse/otp上公钥位图,也可以防止回滚到旧版本。

13、6.有多个公私钥对,当遭遇入侵、管理不善、人员变动等原因,导致其中的一个或多个私钥泄露时,重新启用一组有效的公私钥对,将已泄露的公私钥对无效掉即可。

14、7.不同的公私钥生成策略,对应不同的公私钥分配策略,当授权给多个合作方开发或运营时,使用不同的公私钥对。如果某一合作终止,将公钥位图对应位置的bit写为无效即可。

15、8.烧录出错概率低,即使操作出错多烧录了几个bit,也可以通过更新软件使用新的仍有效的公私钥对,避免芯片报废。

本文档来自技高网...

【技术保护点】

1.一种防止设备固件版本回滚的方法,包括如下步骤:

2.根据权利要求1所述防止设备固件版本回滚的方法,其中,步骤1中公私钥对生成策略为客户生成公私钥对,私钥客户管理,客户自行对BL1做签名。

3.根据权利要求1所述防止设备固件版本回滚的方法,其中,步骤1中公私钥对生成策略为由可信的第三方生成公私钥对,客户将BL1交由第三方做签名。

4.根据权利要求1所述防止设备固件版本回滚的方法,其中,步骤1中公私钥对生成策略为由SOC设计方生成公私钥对,客户将BL1交由SOC设计方做签名。

5.根据权利要求1所述防止设备固件版本回滚的方法,其中,步骤1中对生成的公钥进行分组。

6.根据权利要求5所述防止设备固件版本回滚的方法,其中,公钥分组的方式为根据不同客户群或者根据不同的签名算法来分组。

7.根据权利要求1所述防止设备固件版本回滚的方法,其中,步骤2中公钥位图写入芯片内部EFUSE或者OTP模块中,在其上定义公钥有效性标记。

【技术特征摘要】

1.一种防止设备固件版本回滚的方法,包括如下步骤:

2.根据权利要求1所述防止设备固件版本回滚的方法,其中,步骤1中公私钥对生成策略为客户生成公私钥对,私钥客户管理,客户自行对bl1做签名。

3.根据权利要求1所述防止设备固件版本回滚的方法,其中,步骤1中公私钥对生成策略为由可信的第三方生成公私钥对,客户将bl1交由第三方做签名。

4.根据权利要求1所述防止设备固件版本回滚的方法,其中,步骤1中公私钥对生成策略...

【专利技术属性】
技术研发人员:张猛
申请(专利权)人:进迭时空珠海科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1