一种安全启动方法和装置、终端与流程

文档序号:14836204发布日期:2018-06-30 12:31阅读:226来源:国知局
一种安全启动方法和装置、终端与流程

本发明涉及信息安全技术领域,具体涉及一种安全启动方法和装置、终端。



背景技术:

如图1所示,在传统的可编程逻辑控制器(Programmable Logic Controller,PLC)处理器上电启动过程中,复位芯片将处理器解复位后,处理器直接从非易失存储器(一般为闪存(Flash)芯片)加载启动程序和应用程序执行,并不验证这些程序的合法性,这是信息安全完整性的一个薄弱点,如果Flash中的程序代码被未授权的方式篡改,PLC处理器在不加验证的情况下加载运行则会出现非预期行为,严重情况下会使现场的生产设备处于危险运行状态。

在公开号为“CN104866343A”,发明名称为“一种嵌入式设备的安全启动方法及启动安全的嵌入式设备”的申请中,提出了一种安全启动方法,包括:建立安全启动认证环境和执行安全启动认证模块;复位后,处理器先执行外置启动ROM中的安全启动认证模块,根据安全启动认证模块的执行结果判断启动程序是否安全;如果安全,设备正常启动,否则,设备不能启动。但是该方案中的安全启动验证功能由嵌入式处理器执行外置启动ROM中的代码来实现,即外置启动ROM里面代码是默认合法的,离线创建,上电后直接运行,不会再验证。如果这片ROM中的内容被篡改或者该ROM硬件被非法更换为含非法代码的ROM硬件,处理器上电后仍然会执行ROM中的代码,该ROM是安全验证的盲区。

在公开号为“CN102819706B”,发明名称为“在现有嵌入式设备上实现可信嵌入式系统的装置和方法”的申请中,提到了一种基于安全模块的可信嵌入式系统,该可信嵌入式系统包括嵌入式设备和安全模块,嵌入式设备和安全模块通过串行总线物理连接;其中:嵌入式设备是为实现特定功能的嵌入式系统平台;安全模块以FPGA片上系统为核心,为嵌入式设备提供数据的加解密运算和完整性度量等功能,提高嵌入式设备从启动到运行过程的安全性。然而,该申请中的FPGA相当于一片“协处理器”,它只提供运算功能并不判断代码是否合法,最终代码是否合法是由嵌入式处理器自己来判断的。嵌入式处理器在使用FPGA这片“协处理器”进行完整性度量时已经处于运行状态,此时运行的代码是否合法并没有事先判定,如果此时运行的是遭到篡改的未授权代码(例如代码中屏蔽掉合法性验证部分),则处理器会出现非预期行为。



技术实现要素:

为了解决上述技术问题,本发明提供了一种安全启动方法和装置、终端,能够保证终端启动过程中的数据完整性和安全性。

为了达到本发明目的,本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种安全启动方法,包括:

处理器上电后,可编程器件控制处理器进入复位状态;

可编程器件读取待加载的启动程序和应用程序,验证启动程序和应用程序是否合法;

如果启动程序和应用程序合法,可编程器件控制处理器进入解复位状态,处理器加载启动程序和应用程序开始执行;

如果启动程序和应用程序中的至少之一不合法,可编程器件控制处理器保持复位状态。

进一步地,所述验证启动程序和应用程序是否合法,具体包括:

分别计算所述启动程序和所述应用程序的摘要值;

如果计算出的所述启动程序和所述应用程序的摘要值与预先存储的所述启动程序和所述应用程序的摘要值一致,则判断所述启动程序和所述应用程序合法;

如果计算出的所述启动程序和所述应用程序的摘要值中的至少之一,与预先存储的所述启动程序和所述应用程序的摘要值中的至少之一不一致,则判断所述启动程序和所述应用程序中的至少之一不合法。

进一步地,所述可编程器件为:现场可编程门阵列FPGA。

本发明实施例还提供了一种安全启动装置,包括处理器单元和可编程器件单元,其中:

处理器单元,用于接收可编程器件单元的第一控制信号和/或第二控制信号,根据第一控制信号或第二控制信号进入复位或解复位状态,并在解复位状态下,加载启动程序和应用程序开始执行;

可编程器件单元,用于在处理器单元上电后发送第一控制信号,所述第一控制信号用于控制处理器单元进入复位状态;读取待加载的启动程序和应用程序,验证启动程序和应用程序是否合法;如果启动程序和应用程序合法,发送第二控制信号,所述第二控制信号用于控制处理器单元进入解复位状态。

进一步地,所述可编程器件单元的验证启动程序和应用程序是否合法,包括:

分别计算所述启动程序和所述应用程序的摘要值;

如果计算出的所述启动程序和所述应用程序的摘要值与预先存储的所述启动程序和所述应用程序的摘要值一致,则判断所述启动程序和所述应用程序合法;

如果计算出的所述启动程序和所述应用程序的摘要值中的至少之一,与预先存储的所述启动程序和所述应用程序的摘要值中的至少之一不一致,则判断所述启动程序和所述应用程序中的至少之一不合法。

进一步地,所述可编程器件单元为:现场可编程门阵列FPGA。

本发明实施例还提供了一种终端,其特征在于,包括如以上以上任一所述的安全启动装置。

本发明的技术方案,具有如下有益效果:

本发明提供的安全启动方法和装置、终端,通过使用独立的可编程器件验证处理器待加载的启动程序和应用程序是否合法,使得处理器代码的验证和执行完全隔离,构建了独立的数据验证通道,保证了终端启动过程中的数据完整性和安全性。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为一种传统的PLC处理器的结构示意图;

图2为本发明实施例的一种安全启动方法的流程示意图;

图3为本发明实施例的一种PLC处理器的结构示意图;

图4为本发明实施例的一种安全启动装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

如图2所示,根据本发明的一种安全启动方法,包括如下步骤:

步骤201:处理器上电后,可编程器件控制处理器进入复位状态;

进一步地,可编程器件可以为现场可编程门阵列(Field Programmable Gate Array,FPGA),也可以为其它的可编程逻辑器件,如复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)。

具体地,可编程器件控制处理器进入复位状态,具体包括:

可编程器件控制处理器的复位芯片的复位引脚,使复位芯片输出复位信号,所述复位信号用于控制处理器进入复位状态。

步骤202:可编程器件读取待加载的启动程序和应用程序,验证启动程序和应用程序是否合法;

需要说明的是,本发明所述待加载的启动程序和应用程序可以存储在与处理器直接相连的非易失存储器中,也可以存储在其它通过网络与处理器相连的文件存储服务器中。

步骤203:如果启动程序和应用程序合法,可编程器件控制处理器进入解复位状态,处理器加载启动程序和应用程序开始执行;

具体地,可编程器件控制处理器进入解复位状态,具体包括:

可编程器件释放处理器的复位芯片的复位引脚,使处理器进入解复位状态。

步骤204:如果启动程序和应用程序中的至少之一不合法,可编程器件控制处理器保持复位状态。

进一步地,所述验证启动程序和应用程序是否合法,具体包括:

分别计算启动程序和应用程序的摘要值,如果计算出的启动程序和应用程序的摘要值与预先存储的启动程序和应用程序的摘要值一致,则判断启动程序和应用程序合法;如果计算出的启动程序和应用程序的摘要值中的至少之一,与预先存储的启动程序和应用程序的摘要值中的至少之一不一致,则判断启动程序和应用程序中的至少之一不合法。

需要说明的是,本发明强调的是由独立的可编程器件来验证处理器待加载的启动程序和应用程序的合法性,至于如何验证启动程序和应用程序是否合法,属于本领域技术人员所熟知的技术,此处不再赘述,并不用来限制本申请。

如图3所示,根据本发明的一种安全启动装置,包括处理器单元301和可编程器件单元302,其中:

处理器单元301,用于接收可编程器件单元302的第一控制信号和/或第二控制信号,根据第一控制信号或第二控制信号进入复位或解复位状态,并在解复位状态下,加载启动程序和应用程序开始执行;

可编程器件单元302,用于在处理器单元301上电后发送第一控制信号,所述第一控制信号用于控制处理器单元301进入复位状态;读取待加载的启动程序和应用程序,验证启动程序和应用程序是否合法;如果启动程序和应用程序合法,发送第二控制信号,所述第二控制信号用于控制处理器单元301进入解复位状态。

进一步地,可编程器件单元302为:现场可编程门阵列FPGA。

进一步地,可编程器件单元302的验证启动程序和应用程序是否合法,包括:

分别计算启动程序和应用程序的摘要值,如果计算出的启动程序和应用程序的摘要值与预先存储的启动程序和应用程序的摘要值一致,则判断启动程序和应用程序合法;如果计算出的启动程序和应用程序的摘要值中的至少之一,与预先存储的启动程序和应用程序的摘要值中的至少之一不一致,则判断启动程序和应用程序中的至少之一不合法。

本发明实施例还提供了一种终端,包括如以上任一项所述的安全启动装置。

本发明实施例还提供了一个优选的实施例对本发明进行进一步解释,但是值得注意的是,该优选实施例只是为了更好的描述本发明,并不构成对本发明不当的限定。

本发明优选实施例提出了一种采用独立验证的可信PLC启动方案,设计了独立的FPGA来验证PLC处理器程序的合法性和完整性,通过采用独立的FPGA芯片,在系统上电时利用加解密算法对PLC处理器的启动程序和应用程序进行验证,有效地提升了PLC处理器启动方案的信息安全完整性,确保了程序数据流从上电到被PLC处理器使用这个时间区间内的完整性。

如图4所示,可信PLC启动程序和应用程序的摘要值采用离线工具计算并与程序一起存到从非易失存储器(一般为Flash芯片)中,上电后FPGA控制复位芯片的复位引脚,使复位芯片输出0信号,从而使PLC处理器处于复位状态,然后FPGA通过切换开关获得对Flash的读权限。读权限获取完毕后,FPGA将Flash的启动程序和应用程序内容按照字节依次读取出来并用SM3算法(或其它的算法,如安全哈希算法SHA256、消息摘要算法第五版MD5等)计算其摘要值,如果计算的摘要值与Flash中存储的摘要值一致,则说明程序合法可以启动,验证通过;如果不一致,则说明程序被篡改,验证失败,不允许启动。验证过程中FPGA控制复位芯片使PLC处理器处于复位状态,防止出现误动等行为。

验证通过后,FPGA通过切换开关将Flash的访问权限交予PLC处理器,释放复位芯片的复位引脚,从而使PLC处理器正常启动,此时PLC处理器加载的数据已经是经过验证的合法数据。本发明通过增加独立验证的FPGA和切换开关等元器件,构建了独立的数据验证通道,保证了PLC启动过程的数据完整性。

可信PLC的启动方案可以有多种实现方式,CN104866343A和CN102819706B提供的安全启动方法都不能保证嵌入式处理器从上电后执行第一条指令,到代码完整性度量判定完成期间的代码的安全性,即从上电后执行第一条指令,到代码完整性度量判定完成期间这段执行区间是安全盲区。之所以强调这段执行区间的安全性是因为PLC要提供在线升级固件功能,即嵌入式处理器存储代码的空间(Flash)是会多次更改的。PLC如果提供更改程序的功能,则处理器上电后执行的每一条指令理论上都是不可信的,都需要经过验证才能执行。CN104866343A和CN102819706B提供的安全启动方法无法保证这一点,因为CN104866343A中的外围启动ROM可能遭到篡改绕过验证,CN102819706B中的嵌入式处理器程序可能遭到篡改绕过验证。

本发明的技术方案的优点在于:严格区分代码验证和代码执行,验证过程由FPGA独立完成,在嵌入式处理器运行前完成验证,构建高度安全的可信启动环境,保证嵌入式处理器上电后从外部存储器(Flash)获取的每一条指令都是安全的。本发明所提供的独立FPGA验证方案是验证速度最快的方案。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

本发明主要用于工业控制器(如PLC、分布式控制系统(Distributed Control System,DCS)等)和其它所有存在信息安全应用的芯片,以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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