一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种支持状态回退的工控系统软件安全升级方法与流程

2022-11-12 22:55:35 来源:中国专利 TAG:
1.本发明属于工控系统软件保护
技术领域
:,涉及一种支持状态回退的工控系统软件安全升级方法。
背景技术
::2.工控系统的软件升级,是修复系统漏洞、实现系统功能更新的重要手段,也关系到工业生产能否正常进行,所以工控系统软件升级的安全问题是一个广泛受到关注的问题。3.由于工控系统运行的软硬件环境比较复杂,在升级过程中,往往会遇到不同原因导致升级失败,进而导致软件崩溃、工控系统无法正常运行的现象,在面对大量工控系统的升级维护时,排查不同的原因并修复是一项费时费力的工作,往往会影响到用户的生产时效。为了保障以较短时间恢复正常生产,工控系统在软件升级之后出现各类异常时,需要提供可回退到升级之前正常工作状态的功能。技术实现要素:4.本发明的目的就是提供一种支持状态回退的工控系统软件安全升级方法,采用双系统分区的方式避免了因升级造成的系统无法工作问题,同时通过对升级文件包中的消息摘要、消息摘要的数字签名进行验证,以保证升级文件传输过程中的完整性、升级文件的来源可靠性。将工控系统工作分区的设备端配置数据、设备端缓存数据、待处理数据等相关业务数据同步至备份区的对应目录,再将工控系统切换到备份分区,以保证工控系统业务的连续性。用于解决工控系统在软件升级过程中可能产生的升级不成功、或者因升级带来的各类异常问题,使得工控系统能在较短时间内恢复正常工作。5.本发明具体包括如下步骤:6.步骤1、工控系统设置两个系统分区,选取其中一个作为工作分区,另一个为备份分区;每个系统分区包括一套系统内核和根文件系统,由启动参数决定bootloader启动之后加载哪个系统分区。系统出厂时,两个系统分区的系统内核和根文件系统相同,选取其中一个作为正常运行的工作分区,则另一个为备份分区。7.步骤2、工控系统接受到来自升级服务器推送的升级指令,到指定位置下载对应的升级文件;8.步骤3、对下载到的升级文件进行安全验证,若升级文件通过安全验证,则使用该升级文件在备份分区升级;9.步骤4、将工作分区的相关业务数据同步至备份区;10.步骤5、修改启动参数,设置备份分区为活动分区;11.步骤6、重启工控系统,若新系统成功启动,则下次启动加载备份分区;若不能启动且重启次数未超过规定值,则再次重启工控系统,重启次数加1;若重启次数超过规定值,则升级失败,系统重启加载工作分区,回退到升级前系统状态。12.所述的步骤2工控系统接受到来自升级服务器推送的升级指令,根据升级策略,升级服务器向工控系统定期(常规升级)或者不定期(紧急升级)地推送升级指令。根据升级指令工控系统到升级服务器下载指定的升级文件。将下载到的升级文件,写入备份分区,并完成升级工作。13.所述步骤3对下载到的升级文件包进行安全验证,对升级文件包中的消息摘要、消息摘要的数字签名进行验证。对消息摘要验证保证升级文件传输过程中的完整性,对数字签名验证保证升级文件来源的可靠性。如果通过安全验证,在备份分区安装该升级文件。14.所述步骤4将工作分区的相关业务数据同步至备份区,在备份分区安装该升级文件之后,将工控系统工作分区的设备端配置数据、设备端缓存数据、待处理数据等相关业务数据同步至备份区的对应目录,并停止工作分区当前业务的运行。15.所述步骤5设置工控系统在不同工作场景下的启动参数设置,active、bootable、successful参数分别代表当前是否为活动分区、是否可启动、是否可成功启动。此时工作场景进入升级重启,将备份分区的active、bootable、successful参数设置为“是、是、否”,工作分区的active、bootable、successful参数设置为“否、是、是”。16.根据参数设置重新启动,bootloader将加载备份分区的系统内核和根文件系统。17.若新系统成功启动,则下次启动加载备份分区。工控系统成功启动,将备份分区的active、bootable、successful参数设置为“是、是、是”,工作分区的active、bootable、successful参数设置为“否、是、是”。系统启动参数中还包括标记系统启动次数的rebootcount和当前启动次数rebootno两个参数,系统启动成功后将rebootno置为0,并将原备份分区作为工作分区,原工作分区作为备份分区,后续系统再启动,将从新的工作分区加载系统内核和根文件系统。18.若不能启动且重启次数未超过规定值,则返回步骤6。系统加载备份分区启动时,设置若干次(记为n,如3次)重启的机会,系统启动不成功但重启次数不超过n时,重启备份分区。19.若重启次数超过规定值,则升级失败,系统重启加载工作分区,回退到升级前系统状态。系统加载备份分区启动时,若系统启动不成功并且重启次数已超过n时,此次系统升级失败,将备份分区的active、bootable、successful参数设置为“否、否、否”,工作分区的active、bootable、successful参数设置为“是、是、是”,重启加载工作分区,工控系统回退到升级前的正常工作状态。20.本发明通过上述基于linux的工控系统双系统保护升级方法,在升级失败时支持系统回退到升级前的正常工作状态。能够在系统升级出现各种异常情况时,做到快速恢复,无需等待维修人员到现场排查解决、或者设备返厂维修的时间,降低工控系统因软件升级失败对生产时效带来的不利影响。附图说明21.图1为本发明双系统分区结构图;22.图2为本发明整体流程图;23.图3为本发明升级包结构图;24.图4为本发明工控系统在不同工作场景下的关键启动参数设置。具体实施方式25.下面根据附图举例对本发明做进一步解释,本发明基于linux系统实现。26.如图1所示,linux系统包括bootloader、linux内核(linuxkernel)、根文件系统(rootfile)、,为了支持状态回退,在工控系统增加了一个系统分区。27.支持状态回退的工控系统设置有系统分区1和系统分区2两个系统分区,两个系统分区均包括一套系统内核和根文件系统,由启动参数决定bootloader启动之后加载哪个系统分区。系统出厂时,两个系统分区的系统内核和根文件系统相同。28.如图2所示,一种支持状态回退的工控系统软件安全升级方法,具体包括如下步骤:29.步骤1、设置两个系统分区,选取其中一个作为工作分区,另一个为备份分区;本实施例中,以系统分区1作为工作分区为例,另一个系统分区2为备份分区,正常工作时系统在工作分区运行。30.步骤2、系统接受到来自升级服务器推送的升级指令;工控系统的升级服务器出于方便可直接部署在公网上,出于安全考虑,也可以将升级服务器部署在隔离网络的内部,为便于描述,这里不加区分,统称为升级服务器。根据升级策略,升级服务器向工控系统定期(如常规例行升级)或者不定期(如紧急升级)地推送升级指令。31.到指定位置下载对应的升级文件;工控系统按照收到的升级指令的紧急程度和升级策略,如立即下载、或者空闲时下载,下载部分补丁文件、还是下载全部更新文件,到升级服务器指定的位置下载相应的升级文件。32.步骤3、对下载到的升级文件包进行安全验证。如图3所示,升级文件包由升级文件f、对升级文件f的国密算法sm3消息摘要h(256位)、利用升级服务端国密sm2私钥对h生成的数字签名s(512位)组成。对升级文件包中的消息摘要h、消息摘要的数字签名s进行验证,对消息摘要验证保证升级文件传输过程中的完整性,对数字签名验证保证升级文件来源的可靠性。如果通过安全验证,在备份分区安装该升级文件。本实施例中,当前活动分区为系统分区1,作为工作分区,那么系统分区2作为备份分区。并完成相应的安装配置等升级工作。33.步骤4、将工作分区的相关业务数据同步至备份区,在备份分区安装该升级文件之后,将工控系统工作分区的设备端配置数据、设备端缓存数据、待处理数据等相关业务数据同步至备份区的对应目录,并停止工作分区当前业务的运行。34.步骤5、修改启动参数,设置备份分区为活动分区;如图4所示,工控系统在不同工作场景下的关键启动参数设置,active、bootable、successful参数分别代表当前分区是否为活动分区、是否可启动、是否可成功启动。此时对应图4中的工作场景为“升级重启”,将备份分区的active、bootable、successful参数分别设置为“是、是、否”,工作分区的active、bootable、successful参数分别设置为“否、是、是”。35.步骤6、重启工控系统;工控系统根据“升级重启”工作场景的参数设置重新启动,此时备份分区为活动分区(active参数设置为“是”),bootloader启动后将加载备份分区的系统内核和根文件系统。36.若新系统成功启动,则修改系统启动参数(下次启动原备份分区,将原备份分区2作为下次启动的“工作分区”);工控系统成功启动,根据图4中的参数设置,将当前活动分区(原为备份分区,系统分区2)标记为工作分区,并将其active、bootable、successful参数设置为“是、是、是”,当前非活动分区(原为工作分区,系统分区1)标记为备份分区,并将其active、bootable、successful参数设置为“否、是、是”。后续系统启动将从设置为活动分区的系统分区2(已标记为新的工作分区),加载系统内核和根文件系统。系统启动参数中还包括标记系统启动失败后允许尝试重启次数的rebootcount,和标记当前为启动失败后第几次重启的rebootno两个参数,参数rebootcount的值n代表加载备份分区启动失败后,允许尝试重启的最大次数(如n=3,代表重启失败后允许最多3次尝试重启),rebootno代表当前为第几次重启。系统启动失败一次,则rebootno的值加1,系统启动成功后将rebootno置为0。37.若不能启动且重启次数未超过规定值,则继续尝试重启升级系统,重启次数加1;系统加载备份分区(系统分区2)启动时,如果当前重启次数rebootno的值,小于参数rebootcount设置的启动失败后允许尝试重启的最大次数值n,那么尝试重启备份分区(系统分区2)。38.若重启次数超过规定值,则升级失败,系统重启加载工作分区,回退到升级前系统状态。39.系统加载备份分区(系统分区2)启动时,若系统启动不成功并且重启次数rebootno的值已超过参数rebootcount设置的启动失败后允许尝试重启的最大次数值n,将不再允许重启尝试,代表此次系统升级失败,将备份分区(系统分区2)的active、bootable、successful参数设置为“否、否、否”,工作分区(系统分区1)的active、bootable、successful参数设置为“是、是、是”,系统重启将加载工作分区(系统分区1),工控系统回退到升级前的正常工作状态。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献