一种预防系统启动后flash系统固件攻击方法及flash控制器转让专利

申请号 : CN202310892365.9

文献号 : CN116628767B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张伐

申请人 : 常州楠菲微电子有限公司

摘要 :

本发明提供一种预防系统启动后flash系统固件攻击方法及flash控制器,包括如下:固化在flash控制器的第二级安全固件配置有白名单列表和地址锁定保护程序;所述flash控制器中的第二级安全固件对接收到CPU下发需要操作flash颗粒的命令按照白名单列表进行过滤配置管理,然后下发到flash颗粒或者丢弃;所述的命令包括命令字和需要操作的flash地址范围;由flash颗粒中的非安全固件执行flash控制器下发的命令。本发明通过在固化在flash控制器的第二级安全固件中配置有白名单列表和地址锁定保护程序,CPU下发到flash控制器的命令字会按照flash控制器中白名单列表和地址锁定保护程序的过滤配置管理进行下发到flash颗粒或者丢弃,实现flash控制器下发到flash颗粒的操作命令字和地址空间进行灵活的配置管理。

权利要求 :

1.一种预防系统启动后flash系统固件攻击方法,其特征在于:所述的方法包括如下:固化在flash控制器的第二级安全固件配置有白名单列表和地址锁定保护程序;

所述flash控制器中的第二级安全固件对接收到CPU下发需要操作flash颗粒的命令按照白名单列表进行过滤配置管理,然后下发到 flash 颗粒或者丢弃;所述的命令包括命令字和需要操作的 flash地址范围;

由flash 颗粒中的非安全固件执行flash控制器下发的命令;

所述的白名单列表包括不校验地址cmd 白名单和校验地址cmd 白名单;

按照白名单列表进行过滤配置管理,具体如下:先判断CPU下发需要操作flash颗粒的命令是否存在于不校验地址cmd 白名单,对于存在于不校验地址cmd 白名单中的命令,则允许直接下发到flash颗粒;否则继续判断是否存在于校验地址cmd 白名单;

对存在于校验地址 cmd 白名单中的命令,继续检测该命令对应的操作地址是否被锁定;

若同时满足存在于校验地址 cmd 白名单中的命令,且操作地址未被锁定,则允许下发到flash颗粒;否则不允许下发。

2.根据权利要求1所述预防系统启动后flash系统固件攻击方法,其特征在于:所述的不校验地址cmd白名单包括读 flash 内容、读id、读flash状态几种命令字;

所述的校验地址cmd白名单包括有写、擦相关命令字;

所述的地址锁定保护组件程序配置有保护flash颗粒的地址空间的起始地址、结束地址;地址范围配置为第二级安全固件与 flash 颗粒中的非安全固件所在flash 中占用的空间。

3.根据权利要求1所述预防系统启动后flash系统固件攻击方法,其特征在于:所述CPU的内部ROM 中固化有BOOTROM 固件,用于校验加载第二级安全固件到 SRAM中,配置 SRAM 的安全属性,保证非安全固件无法访问第二级安全固件在SRAM 中的资源空间。

4.根据权利要求1所述预防系统启动后flash系统固件攻击方法,其特征在于:所述的第二级安全固件直接烧写在flash中,经过BOOTROM 固件加载到 SRAM 中执行,用于引导 flash 颗粒中的非安全固件。

5.根据权利要求1所述预防系统启动后flash系统固件攻击方法,其特征在于:根据不同厂家的 flash 颗粒的命令字,配置白名单列表和地址锁定保护程序。

6.一种flash控制器,其特征在于:所述flash控制器执行如权利要求1 5任一项所述的~方法。

说明书 :

一种预防系统启动后flash系统固件攻击方法及flash控制器

技术领域

[0001] 本发明涉及系统固件启动技术领域,更具体地,涉及一种预防系统启动后flash系统固件攻击方法及flash控制器。

背景技术

[0002] 在通用的 flash 控制器的设计中,对于 flash 颗粒进行读、写、擦除等操作时,一般处理流程为从 CPU 直接下发需要操作的 flash 颗粒的命令字和操作的地址来配置 flash 控制器,flash 控制器按照一定的时序下发到 flash 器件,从而完成操作 flash 颗粒的行为。
[0003] flash 控制器一般不会过滤 CPU 下发的地址和命令字,从而在整个 CPU 的系统启动过程中,flash 颗粒的全地址空间均能在任意组件的任何时刻被读、写、擦除。
[0004] 通用的 CPU 系统启动场景一般包含多级启动组件,最后一级组件为用户使用的非安全系统组件,而前级组件一般为安全态组件,用于引导最后一级的非安全操作系统组件,在进行固件烧录到 flash 的过程中,所有的组件都会存放于 flash 颗粒。系统启动后,若此时 CPU 处于最后一级的非安全的系统组件时,通用的 flash 控制器意味着攻击者可以改写 flash 中的软件,系统不再安全可信。

发明内容

[0005] 本发明为克服上述现有技术通用的 flash 控制器可能会被攻击者改写 flash 中的软件,存在安全隐患的问题,提供一种预防系统启动后flash系统固件攻击方法及flash控制器。
[0006] 为解决上述技术问题,本发明的技术方案如下:
[0007] 一种预防系统启动后flash系统固件攻击方法,所述的方法包括如下:
[0008] 固化在flash控制器的第二级安全固件配置有白名单列表和地址锁定保护程序;
[0009] 所述flash控制器中的第二级安全固件对接收到CPU下发需要操作flash颗粒的命令按照白名单列表进行过滤配置管理,然后下发到 flash 颗粒或者丢弃;所述的命令包括命令字和需要操作的 flash地址范围;
[0010] 由flash 颗粒中的非安全固件执行flash控制器下发的命令。
[0011] 优选地,所述的白名单列表包括不校验地址cmd 白名单和校验地址cmd 白名单。
[0012] 进一步地,按照白名单列表进行过滤配置管理,具体如下:
[0013] 先判断CPU下发需要操作flash颗粒的命令是否存在于不校验地址cmd 白名单,对于存在于不校验地址cmd 白名单中的命令,则允许直接下发到flash颗粒;否则继续判断是否存在于校验地址cmd 白名单;
[0014] 对存在于校验地址 cmd 白名单中的命令,继续检测该命令对应的操作地址是否被锁定;
[0015] 若同时满足存在于校验地址 cmd 白名单中的命令,且操作地址未被锁定,则允许下发到flash颗粒;否则不允许下发。
[0016] 再进一步地,所述的不校验地址cmd白名单包括读 flash 内容、读id、读flash状态几种命令字;
[0017] 所述的校验地址cmd白名单包括有写、擦相关命令字;
[0018] 所述的地址锁定保护组件程序配置有保护flash颗粒的地址空间的起始地址、结束地址;地址范围配置为第二级安全固件与 lash 颗粒中的非安全固件所在flash 中占用的空间。
[0019] 优选地,所述CPU内部ROM 中固化有BOOTROM 固件,用于校验加载第二级安全固件到 SRAM中,配置 SRAM 的安全属性,保证非安全固件无法访问第二级安全固件在SRAM 中的资源空间。
[0020] 优选地,所述的第二级安全固件直接烧写在flash中,经过BOOTROM 固件加载到 SRAM 中执行,用于引导 flash 颗粒中的非安全固件。
[0021] 优选地,根据不同厂家的 flash 颗粒的命令字,配置白名单列表和地址锁定保护程序。
[0022] 一种flash控制器,所述flash控制器执行如上所述的方法。
[0023] 与现有技术相比,本发明技术方案的有益效果是:
[0024] 本发明通过在固化在flash控制器的第二级安全固件中配置有白名单列表和地址锁定保护程序,CPU 下发到 flash 控制器的命令字会按照 flash 控制器中白名单列表和地址锁定保护程序的过滤配置管理进行下发到 flash 颗粒或者丢弃,实现 flash 控制器下发到 flash 颗粒的操作命令字和地址空间进行灵活的配置管理。
[0025] 本发明在固件执行的各个阶段选择性配置允许下发的命令字和可操作的地址,实现了各级启动阶段对flash 资源空间的利用隔离,防止用户在系统启动后纂改被保护的地址的内容。从而提高了固件的安全可靠性。降低了芯片被攻击的风险。

附图说明

[0026] 图1是本发明一种预防系统启动后flash系统固件攻击方法的框架原理图。
[0027] 图2是本发明flash 控制器按照白名单列表进行过滤配置管理的流程图。
[0028] 图3是本发明三级固件启动的框架图。

具体实施方式

[0029] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,仅用于示例性说明,不能理解为对本专利的限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030] 下面结合附图和实施例对本发明的技术方案做进一步的说明。
[0031] 实施例1
[0032] 如图1所述,一种预防系统启动后flash系统固件攻击方法,所述的方法包括如下:
[0033] 固化在flash控制器的第二级安全固件配置有白名单列表和地址锁定保护程序;
[0034] 所述flash控制器中的第二级安全固件对接收到CPU下发需要操作flash颗粒的命令按照白名单列表进行过滤配置管理,然后下发到 flash 颗粒或者丢弃;所述的命令包括命令字和需要操作的 flash地址范围;
[0035] 由flash 颗粒中的非安全固件执行flash控制器下发的命令。
[0036] 本实施例通过在固化在flash控制器的第二级安全固件中配置有白名单列表和地址锁定保护程序,CPU 下发到 flash 控制器的命令字会按照 flash 控制器中白名单列表和地址锁定保护程序的过滤配置管理进行下发到 flash 颗粒或者丢弃,实现 flash 控制器下发到 flash 颗粒的操作命令字和地址空间进行灵活的配置管理。
[0037] 本实施例在固件执行的各个阶段选择性配置允许下发的命令字和可操作的地址,实现了各级启动阶段对flash 资源空间的利用隔离,防止用户在系统启动后纂改被保护的地址的内容。从而提高了固件的安全可靠性。降低了芯片被攻击的风险。
[0038] 在一个具体的实施例中,所述的白名单列表包括不校验地址cmd 白名单和校验地址cmd 白名单。
[0039] 在本实施例中,CPU 下发需要操作flash颗粒的命令时,一般包含命令字和需要操作的 flash地址范围。
[0040] 在任何启动阶段,CPU只要通过 flash 控制器操作flash 颗粒都会根据flash控制器整体保护功能进行,具体按照白名单列表进行过滤配置管理,如图2所示,具体如下:
[0041] 根据接收到CPU下发需要操作flash颗粒的命令,先判断CPU下发需要操作flash颗粒的命令是否存在于不校验地址cmd 白名单,对于存在于不校验地址cmd 白名单中的命令,则允许直接下发到flash颗粒;否则继续判断是否存在于校验地址cmd 白名单;
[0042] 对存在于校验地址 cmd 白名单中的命令,继续检测该命令对应的操作地址是否被锁定;
[0043] 若同时满足存在于校验地址 cmd 白名单中的命令,且操作地址未被锁定,则允许下发到flash颗粒;否则不允许下发。
[0044] 在本实施例中,地址锁定保护程序的作用是:仅对校验地址cmd 白名单中的命令字生效,在地址锁定保护中的地址范围不允许下发。
[0045] 再进一步地,所述的不校验地址cmd白名单包括读 flash 内容、读id、读flash状态几种命令字;
[0046] 所述的校验地址cmd白名单包括有写、擦相关命令字;
[0047] 所述的地址锁定保护组件程序配置有保护flash颗粒的地址空间的起始地址、结束地址;地址范围配置为第二级安全固件与 lash 颗粒中的非安全固件所在flash 中占用的空间。
[0048] 本实施例在整个系统启动过程中,从 flash颗粒中读数据不受影响,当程序运行在OS 固件时,由于 OS 引导固件与 OS 固件所在 flash 颗粒中占用的空间配置了地址锁定保护,导致写或者擦该段地址空间不生效,从而防止用户在系统启动后纂改被保护的地址的内容。从而提高了固件的安全可靠性。
[0049] 本实施例,在多级启动的系统中,通过本方法可以实现每一级的安全固件可以根据本级固件和下一级固件使用到的 flash 资源进行 flash 控制器白名单规则配置,从而实现了每一级固件的 flash 资源隔离。
[0050] 本实施例中,作为最后一级的非安全固件接收到的命令,是无法修改 flash 控制器,命令所能用到的资源是在上一级安全组件中进行划分。从而预防了攻击者在系统处于非全组件时篡改系统固件代码。
[0051] 在一个具体的实施例中,所述CPU内部ROM 中固化有BOOTROM 固件,用于校验加载第二级安全固件到 SRAM中,配置 SRAM 的安全属性,保证非安全固件无法访问第二级安全固件在SRAM 中的资源空间。
[0052] 所述的第二级安全固件直接烧写在flash控制器中,经过BOOTROM 固件加载到 SRAM 中执行,用于引导 flash 颗粒中的非安全固件。
[0053] 在通常的系统启动的组件中一般有多级固件启动,为了简化流程采用三级启动的方式,如图3所示:
[0054] BOOTROM 固件:一般直接固化进 CPU 内部 ROM 中,主要用于校验加载第二级安全固件(OS 引导固件)到 SRAM中,配置 SRAM 的安全属性,保证非安全固件无法访问 OS 引导固件在SRAM 中的资源空间。
[0055] OS 引导固件:作为安全固件,其一般直接烧写在flash控制器中,经过BOOTROM 固件加载到 SRAM 中执行,主要用于引导 OS 固件;OS 引导固件中需要实现配置不校验地址 cmd 白名单列表和校验地址cmd 白名单列表。
[0056] OS 固件:作为非安全固件,直接在 flash 颗粒中执行。
[0057] 在一个具体的实施例中,由于不同厂家的 flash 颗粒的命令字存在差异,本实施例根据不同厂家的 flash 颗粒的命令字,配置白名单列表和地址锁定保护程序,由此修改过滤规则来匹配不同厂家颗粒的命令字,从而增加了 flash 控制器的灵活性和通用性。
[0058] 在另一个具体的实施例中,还提供了一种flash控制器,所述flash控制器执行如上所述的方法。
[0059] 显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。