一种加密控制器应用程序开发框架及方法转让专利

申请号 : CN201710811957.8

文献号 : CN107545195B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李兴程鹏陈积明王文海

申请人 : 浙江大学

摘要 :

本发明公开了一种加密控制器应用程序开发框架及方法。该开发框架包括:基础类库层,处在硬件和操作系统之上,用于提供不同加密控制器应用共享的基础函数和与硬件固件相关的底层函数;功能组件层,处在基础类库层之上,调用基础类库层的函数来编写组件的功能代码,用于给出构成加密控制器的功能组件;运行管理层,处在功能组件层和用户应用之间,按照特定控制流组织功能组件整体运行,实现参数管理和用户界面服务,从而向上支持用户所需的加密控制器应用。本发明能够显著降低开发加密控制器应用程序的代码量和复杂度,提高开发效率和程序质量;通过分层设计和底层屏蔽使得该开发框架及方法可广泛适用于不同加密控制器方案和不同工业控制系统配置。

权利要求 :

1.一种加密控制器应用程序开发框架,其特征在于:该开发框架包括三个层次,基础类库层、功能组件层和运行管理层;

所述基础类库层处在硬件和操作系统之上,包括实时密码学库、同态运算指令库、量化恢复机制库、控制网络协议库和工业控制信号转换库;所述实时密码学库用于在广泛要求实时性的加密控制器应用程序中生成密钥、加密数据和解密数据;所述同态运算指令库用于提供与同态加密算法的同态性质相对应的同态运算指令以支持在加密数据上计算控制律;所述量化恢复机制库用于给出完成原文与明文相互转换的三种典型的量化恢复机制的实现,包括定增益机制、变增益机制和变规则机制;所述控制网络协议库用于承担不同控制系统厂商的多种控制网络协议的程序实现;所述工业控制信号转换库用于负责不同工业部门、不同被控过程的特有信号与上层组件可用的标准信号之间的相互转换;

所述功能组件层处在基础类库层之上,调用基础类库层的函数来编写组件的功能代码,包括五个组件:加密控制律计算组件、加密器/解密器组件、控制网络接口组件、被控过程接口组件和参数文件组件;所述加密控制律计算组件由三个子模块组成,即加密前明文计算、控制器密文计算和解密后明文计算,三个子模块相互配合共同实现各种加密控制律计算业务;所述加密器/解密器组件用于对控制器输入加密、对控制器输出解密、量化原文为明文和恢复明文为原文;所述控制网络接口组件包括现场单元侧接口和控制器侧接口,用于提供在现场单元和控制器之间传输数据所需的控制网络通信服务;所述被控过程接口组件包括物理过程接口和虚拟过程接口,用于将不同被控过程接入到使用加密控制器的闭环控制回路;所述参数文件组件用于存储从应用程序的算法实现中剥离出来的控制器参数、加解密参数,并向上给出参数管理服务的数据基础;

所述运行管理层处在功能组件层和用户应用之间,提供运行组织、参数管理和用户界面,向下按照特定控制流组织功能组件整体运行,向上支持用户所需的加密控制器应用;所述运行组织是指按照特定的控制流组织下层功能组件作为一个整体共同运行以实现加密控制器的整体功能集成,针对加密控制器应用程序是由多个软件实体组合而成的特点,设计控制流时序编码机制来将位于不同硬件设备和软件实体的功能组件按照控制流组织起来整体运行,并采用基于同步的运行时切换方法来提供关键执行分支和重要组件特性的在线切换;所述参数管理包括两个方面,其一是编程时的参数生成,即从原始的工程参数生成加密控制器应用程序所用的控制器参数、加解密参数,其二是运行时的参数设置,即在加密控制器应用程序运行时提供在线设置控制器参数、加解密参数的服务;所述用户界面是用户和加密控制器应用程序之间的交互窗口,用于提供用户对应用程序内数据的监视、记录和分析,并支持用户根据个性化需求来自定义界面。

2.根据权利要求1所述的一种加密控制器应用程序开发框架,其特征在于:所述功能组件层中的加密控制律计算组件,当计算常用工业控制律PID、状态反馈、LQG时,通过抽提基于矩阵向量相乘的标准形式和分解加密控制律计算的整体过程,将PID控制律、状态反馈控制律、LQG控制律的特性部分集中在对控制器输入做预处理的子模块,而把其余符合标准形式的共性部分作为三个子模块复合计算过程的可重用的主体内容,从而降低用户开发具体应用时的工作量并提高加密控制器计算组件的可重用性;而且,通过设计对参数矩阵中无效值的标记和对计算过程中无效分支的判定两种方法,能够在运行时减少由上述组件重用技术导致的冗余计算,降低资源开销并提高实时性能。

3.根据权利要求1所述的一种加密控制器应用程序开发框架,其特征在于:所述功能组件层中的控制网络接口组件,通过利用由下层控制网络协议库编程实现的通信方式或以OPC技术及OPC服务器为主组态实现的通信方式,能够使用不同控制系统厂商的多种控制网络和通信协议,并且屏蔽与通信硬件/固件相关的底层细节以向上给出标准通用的抽象通信接口。

4.根据权利要求1所述的一种加密控制器应用程序开发框架,其特征在于:所述功能组件层中的被控过程接口组件,向下通过硬件I/O和固件驱动连接物理过程,或通过进程通信和混合编程连接虚拟过程;向上屏蔽与I/O硬件及固件相关的底层细节并给出诸如测量信号、控制信号的标准接口,从而能将不同被控过程紧密接入到使用加密控制器的闭环控制回路。

5.一种基于权利要求1-4任一项所述开发框架的开发方法,其特征在于:该开发方法包括以下步骤:

步骤1:根据用户应用的具体需求确定加密控制器应用程序的业务逻辑和控制流程,业务逻辑的确定主要考虑所需计算的控制律和所用同态加密算法的同态性质类型,控制流程的确定主要考虑所在闭环控制回路的配置、所用控制网络和通信协议、所用同态加密算法和所用被控过程类型;

步骤2:根据业务逻辑,调用基础类库层的同态运算指令函数重写加密控制律计算组件的功能程序,配置开发框架给出的加密器/解密器组件、参数文件组件;同时重用开发框架提供的其余功能组件;

步骤3:根据控制流程,改造开发框架中的运行组织部分以满足新的控制流需求,设置开发框架提供的参数管理服务;同时重用开发框架给出的用户界面或选择重新自定义用户界面;

步骤4:在对应开发工具中编译加密控制器应用程序中的各个软件实体,并将它们分别部署到各自对应的硬件设备中,之后即可启动运行。

说明书 :

一种加密控制器应用程序开发框架及方法

技术领域

[0001] 本发明涉及工业控制系统安全领域,尤其涉及一种加密控制器应用程序开发框架及方法。

背景技术

[0002] 加密控制器是一种新近提出的用于增强工业控制系统信息安全的方法。该方法的核心思想是:在工业控制系统的闭环控制回路中,在继承传统的通信加密方法的基础上,加密控制器方法不再需要解密控制器输入,而是直接由加密的控制器输入和加密的控制器参数计算出加密的控制器输出,从而能够保护模型参数、控制参数、测量信号、控制信号等控制器内部数据的私密性。因为加密控制器方法可以同时加密防护通信链路数据和控制器内部数据,将该方法应用到实际工业控制系统,能够显著增强整个系统信息域的数据安全。特别是在工业控制系统信息安全威胁日益严峻、工业控制系统信息安全事件层出不穷的背景下,强烈需要加密控制器尽可能方便快捷的从理论方法转化为实际应用。
[0003] 在将加密控制器从理论方法转化为实际应用的进程中,以实验平台或实际系统为基础开发加密控制器应用程序是十分重要的和必不可少的。对此,存在两个方面的重要挑战。一方面,面对加密控制器方法要在大量实验设置或工业场景中实现的需求,每次都根据具体的加密控制器方案和工业控制系统配置从零开始开发应用程序是很不可取的,故如何大量重用代码和快速开发软件是实现加密控制器应用的重要挑战。另一方面,面对加密控制器方法密切关联复杂密码学知识和工业控制领域人员普遍缺乏密码学基础的矛盾,要求每个实验员或工程师都需掌握相关密码学知识后才能开发加密控制器应用程序是很不可取的,故如何减少必须由用户实现的应用程序内容和把与专用知识相关的内容交由专业人员开发共享也是实现加密控制器应用的重要挑战。
[0004] 然而,对于上述两个方面的重要挑战,现有的关于加密控制器的研究是无能为力的。在现有研究中,主要的加密控制器应用程序是用于理论研究的计算机仿真程序,缺乏在实际工业控制系统中可用的软件实现,尤其是还没有针对上述两大重要挑战的处理。有鉴于此,本发明提供一种加密控制器应用程序开发框架及方法。通过本发明,不仅能够显著降低开发加密控制器应用程序的代码量和复杂度,提高开发效率和程序质量;而且可以通过分层设计和底层屏蔽来划分加密控制器实现任务,使得实验员或工程师只需专注编写与工业控制应用相关的少量代码而直接重用其余的由专业人员开发共享的大量代码。事实上,本发明就是旨在提供解决上述挑战的开发框架及方法,可广泛应用于在不同加密控制器方案和不同工业控制系统配置下开发加密控制器应用程序。

发明内容

[0005] 本发明的目的在于针对基于实验平台或实际系统开发加密控制器应用程序所存在的重要挑战和现有的关于加密控制器的研究工作的重大欠缺,提供一种加密控制器应用程序开发框架及方法。
[0006] 本发明的目的是通过以下技术方案实现的:本发明提供的一种加密控制器应用程序开发框架包括三个层次,基础类库层、功能组件层和运行管理层。基础类库层处在硬件和操作系统之上,提供不同加密控制器应用共享的基础函数和与硬件固件相关的底层函数,用于封装大量的涉及专用知识的实现细节和给出编写上层组件功能所需要的可调用函数;功能组件层处在基础类库层之上,调用基础类库层的函数来编写组件的功能代码,包括从各种各样应用中抽取提炼的通用部分和与用户具体业务逻辑关联的专用部分,前者为开发框架代码,后者由用户自主编程,两部分共同构成加密控制器中的功能组件;运行管理层处在功能组件层和用户应用之间,用于按照特定控制流来组织下层功能组件作为一个整体共同运行和提供对加密控制器中参数的管理、用户与加密控制器内数据的交互界面,从而向上支持用户所需的加密控制器应用。
[0007] 该开发框架通过以下部分的设计实现来完成:
[0008] (1)基础类库层设计实现
[0009] 基础类库层处在硬件和操作系统之上,包括实时密码学库、同态运算指令库、量化恢复机制库、控制网络协议库和工业控制信号转换库,这些内容或是不同加密控制器应用共享的、或是与控制系统厂商的硬件固件相关的、或是需要诸如密码学等专用知识的,故设计为开发框架的最下层内容并实现出来以供用户或开发框架的上面两层直接调用。具体的,实时密码学库,以通用密码学库为基础,通过删减与工业控制场景无关的冗余处理、更换字符串数据结构为整数数组类型和利用诸如蒙哥马利算法的大数运算优化方法,在严格要求实时性的加密控制器应用程序中提供密钥生成和数据加解密;同态运算指令库,根据同态性质将主流同态加密算法分为加法同态、乘法同态和全同态三种类型,提供与主流同态加密算法的同态性质相对应的同态运算指令,并根据分类将每种类型的同态运算指令封装为该类型的调用接口;量化恢复机制库,给出完成原文与明文相互转换的各种量化恢复机制的实现,包括比较基础的定增益机制和有所优化的变增益机制、变规则机制;控制网络协议库,以搭建连接控制器和现场单元的控制网络为目标,面向主要控制系统厂商的各种需要编程实现的通信协议,编写连接建立/关闭、数据发送/接收等函数并根据功能封装为与功能对应的调用接口;工业控制信号转换库,设计开发框架中上下层一致的基于百分比的标准信号,并实现不同工业部门、不同被控过程的特有信号与标准信号之间的相互转换。
[0010] (2)功能组件层设计实现
[0011] 功能组件层处在基础类库层之上,调用基础类库层的函数来编写组件的功能代码,包括从各种各样应用中抽取提炼的通用功能和与用户具体业务逻辑关联的专用功能,前者设计为开发框架代码并实现出来以供用户直接复用,后者则留给用户根据应用需求自主编程,两部分共同构成加密控制器中的功能组件。功能组件层包括五个组件:加密控制律计算组件、加密器/解密器组件、控制网络接口组件、被控过程接口组件和参数文件组件,每个组件的设计实现如下。
[0012] 加密控制律计算组件。该组件采用三个子模块相互配合共同完成计算任务的设计,即加密前明文计算+控制器密文计算+解密后明文计算。通过设计三个子模块相互配合共同计算的方案,将整个加密控制律计算任务分解为数据加密之前的预处理、控制器内的密文空间计算和数据解密之后的后处理,从而使能用户灵活利用不同位置的上下文资源和计算特性以实现在加密数据上计算各种各样的控制律。特别地,当计算常用工业控制律(PID、状态反馈、LQG)时,通过抽提基于矩阵向量相乘的标准形式和分解加密控制律计算的整体过程,将PID控制律、状态反馈控制律、LQG控制律的特性部分集中在对控制器输入做预处理的子模块,而把其余符合标准形式的共性部分作为三个子模块复合计算过程的可重用的主体内容,从而降低用户开发具体应用时的工作量和提高加密控制律计算组件的可重用性;而且,对于上述可重用的主体内容中与具体应用无关的无效矩阵参数和无效计算分支,采用特殊值标记和条件式判定的方法,能够在运行时大量减少由上述组件重用技术导致的冗余计算,降低计算资源开销并提高计算实时性。
[0013] 加密器/解密器组件。该组件是与加密控制器方法中的加密/解密单元相对应的功能组件,用于对控制器数据做加密、对控制器输出作解密、量化原文数据到明文和从明文数据恢复为原文。具体的,该组件基于下层的实时密码学库和量化恢复机制库实现核心功能;而且根据功能接口和实现类分离的思想设计有关类的继承层次结构,从而对外提供简单一致的组件功能接口。
[0014] 控制网络接口组件。该组件由现场单元侧接口和控制器侧接口组成,用于提供在现场单元和控制器之间传输数据所需的控制网络通信服务。针对现场单元和控制器所用的硬件、操作系统和软件实体异构的问题,以及不同控制系统厂商的多种控制网络和通信协议并存的现象,通过利用由下层控制网络协议库编程实现的通信方式或以OPC技术及OPC服务器为主组态实现的通信方式,能够满足各种各样控制网络和通信协议的应用需求,并对用户屏蔽与通信硬件/固件相关的底层细节。而且,根据策略模式思想将不同的通信服务实现封装起来,使它们可以相互替换,并向上给出标准通用的抽象通信接口。
[0015] 被控过程接口组件。该组件包括物理过程接口和虚拟过程接口,用于将不同被控过程平滑接入到使用加密控制器的闭环控制回路。具体的,向下,可以通过硬件I/O和固件驱动连接物理过程,也可以通过进程通信和混合编程连接虚拟过程;向上,以下层的工业控制信号转换库为基础,屏蔽与I/O硬件及固件相关的底层细节并给出诸如测量信号、控制信号的标准数据接口,从而能将不同被控过程紧密接入到使用加密控制器的闭环控制回路。
[0016] 参数文件组件。该组件用于存储从加密控制器应用程序的算法实现中剥离出来的控制器参数、加解密参数,并向上给出参数管理服务的数据基础。具体的,将不同加密控制器方案和不同工业控制系统配置下应用程序对参数的使用归纳分类,并定义与类别对应的参数文件存储格式以灵活适应各种各样的需求。
[0017] (3)运行管理层设计实现
[0018] 运行管理层处在功能组件层和用户应用之间,提供运行组织、参数管理和用户界面,向下按照特定控制流组织功能组件整体运行,向上支持用户所需的加密控制器应用。运行管理层的内容包括诸如运行组织结构、参数管理功能和用户界面的通用部分和需要根据用户应用的业务逻辑、控制流程来确定的专用部分,前者设计为开发框架代码并实现出来以供用户复用,后者则留给用户根据应用需求编程、设置。运行组织是指按照特定控制流组织下层功能组件作为一个整体共同运行以实现加密控制器的整体功能集成,针对加密控制器应用程序是由处于不同硬件和操作系统之上的多个软件实体组合而成的问题,设计控制流时序编码机制和基于同步的运行时切换方法加以解决,所谓控制流时序编码机制是把整个加密控制器应用程序的控制流的事件时序和分支选择编码为一条可通信传输的十六进制整数序列,从而将位于不同硬件设备和软件实体的功能组件按照控制流组织起来整体运行,而基于同步的运行时切换方法是在运行时通过现场单元和控制器中软件实体的同步协商保证切换事务的一致性,从而提供关键执行分支和重要组件特性的在线切换。参数管理包括两个方面,其一是编程时的参数生成,即从原始的工程参数生成加密控制器应用程序所用的控制器参数、加解密参数,对此编写有对原始参数加密、转换和写入文件的自动化工具,其二是运行时的参数设置,即在加密控制器应用程序运行时提供在线设置控制器参数、加解密参数的服务,对此通过结合上述自动化工具和控制网络接口组件来实现。用户界面是用户和加密控制器应用程序之间的交互窗口,用于提供用户对加密控制器应用内数据的监视、记录和分析,并支持用户根据个性化需求来自定义界面。
[0019] 本发明提供的一种基于所述加密控制器应用程序开发框架的开发方法包括以下步骤:
[0020] 步骤1:根据用户应用的具体需求确定加密控制器应用程序的业务逻辑和控制流程,业务逻辑的确定主要考虑所需计算的控制律和所用同态加密算法的同态性质类型,控制流程的确定主要考虑所在闭环控制回路的配置、所用控制网络和通信协议、所用同态加密算法和所用被控过程类型。
[0021] 步骤2:根据业务逻辑,调用基础类库层的同态运算指令函数重写加密控制律计算组件的功能程序,配置开发框架给出的加密器/解密器组件、参数文件组件;同时重用开发框架提供的其余功能组件。
[0022] 步骤3:根据控制流程,改造开发框架中的运行组织部分(主要是生成编码控制流时序的十六进制整数序列)以满足新的控制流需求,设置开发框架提供的参数管理服务;同时重用开发框架给出的用户界面或选择重新自定义用户界面。
[0023] 步骤4:在对应开发工具中编译加密控制器应用程序中的各个软件实体,并将它们分别部署到各自对应的硬件设备中,之后即可启动运行。
[0024] 本发明的有益效果是:通过提供一种加密控制器应用程序开发框架及方法,使得诸如实验员、工程师的普通用户在开发加密控制器应用程序时,只要在大量可重用的开发框架代码中填补与具体加密控制器应用相关的少量业务代码,就能快速实现适应具体应用需求的加密控制器应用程序。如此,本发明能够显著降低开发加密控制器应用程序的代码量和复杂度,提高开发效率和程序质量。而且,本发明通过分层设计和底层屏蔽,将与诸如密码学的专用知识相关的实现内容交由专业人员开发共享,使得用户只需专注编写在工业控制范畴的业务逻辑代码而无需掌握诸如密码学的专用知识,从而去除了对用户在背景知识方面的特殊要求并促进加密控制器应用程序的便捷开发。本发明可广泛适用于不同加密控制器方案和不同工业控制系统配置。

附图说明

[0025] 图1是本发明的开发框架示意图;
[0026] 图2是本发明的开发方法流程图。

具体实施方式

[0027] 下面结合附图和实施例对本发明作进一步说明:
[0028] 图1为本发明一个实施例的加密控制器应用程序开发框架的示意图,该开发框架包括三个层次:基础类库层、功能组件层和运行管理层,在该开发框架之下是以由一台计算机、一台PLC和控制网络构成的闭环控制回路作为开发基础,在该开发框架之上是面向PLC工业控制系统中常用工业控制律计算的用户应用。特别地,在本实施例中,使用的计算机是普通的笔记本电脑,使用的PLC是西门子S7 317-2 PN/DP型PLC,使用的控制网络是西门子PROFIBUS或PROFINET,所用笔记本电脑的操作系统是Windows,所用西门子PLC的操作系统是自带的RTOS;实现的用户应用是在PLC工业控制系统上计算常用工业控制律(PID、状态反馈、LQG)的加密控制器应用程序。
[0029] 本实施例的基础类库层处在上述硬件和操作系统之上,用于提供不同加密控制器应用共享的基础函数和与硬件固件相关的底层函数,包括:实时密码学库,以OpenSSL、Miracl两种通用密码学库为基础,通过删减与工业控制场景无关的冗余处理、更换字符串数据结构为整数数组类型和利用蒙哥马利算法与Karatsuba-Comba快速技术,给出在严格要求实时性的加密控制器应用程序中可用的实时同态加密算法(RSA、ElGamal等);同态运算指令库,提供与主流的加法同态加密算法、乘法同态加密算法相对应的同态运算指令,同时支持以后加入实用化的有全同态性质的同态运算指令;量化恢复机制库,给出完成原文与明文相互转换的三种典型的量化恢复机制的实现,包括定增益机制、变增益机制和变规则机制;控制网络协议库,以搭建连接控制器和现场单元的控制网络通信为目标,在本实施例所用的西门子技术体系之下,编程实现Open IE类的通信函数并根据函数功能封装为与功能对应的调用接口;工业控制信号转换库,主要针对在过程工业中常见的特有信号,实现在过程工业中常见的特有信号与开发框架设计采用的基于百分比的标准信号之间的相互转换。
[0030] 本实施例的功能组件层处在基础类库层之上,调用基础类库层的函数来编写组件的功能代码,包括五个组件:
[0031] 加密控制器计算组件。该组件采用三个子模块相互配合共同完成计算任务的设计,将整个加密控制律计算任务分解为数据加密之前的预处理、控制器内的密文空间计算和数据解密之后的后处理,其中,前后两个子模块置于计算机上的MFC应用程序,中间的子模块置于PLC上的SCL应用程序,如此使能用户灵活利用计算机、PLC两处的上下文资源和明文空间、密文空间两处的计算特性以完成各种各样的加密控制律计算任务。特别地,本实施例在计算常用工业控制律(PID、状态反馈、LQG)时,通过抽提基于矩阵向量相乘的标准形式和分解加密控制律计算的整体过程,将上述控制律的特性部分(诸如误差计算、状态估计)集中在对控制器输出做预处理的子模块,而把其余符合标准形式的共性部分作为三个子模块的主体代码共享重用,从而降低用户开发具体应用时的工作量并提高加密控制器计算组件的可重用性;而且本实施例采用特殊值标记和条件式判定的方法,将用于填充矩阵的大量零元素排除在计算之外,大量减少组件重用导致的冗余计算,降低计算资源开销并提高计算实时性。
[0032] 加密器/解密器组件。该组件是与加密控制器方法中的加密/解密单元相对应的功能组件,用于加密控制器输入、解密控制器输出、量化原文数据和恢复明文数据。本实施例基于下层实时密码学库中的RSA、ElGamal等同态加密算法和量化恢复机制库中的三种典型方法来实现核心功能,并设计实现了输入转换、输出转换等辅助处理以对外提供简单一致的输入接口、输出接口。
[0033] 控制网络接口组件。该组件由现场单元侧接口和控制器侧接口组成,用于提供在现场单元和控制器之间传输数据所需的控制网络通信服务。本实施例主要使用以OPC技术及OPC服务器为主组态实现的通信方式,能够应用Profibus现场总线、Profinet工业以太网控制网络和S7通信协议,并对用户屏蔽了与通信硬件/固件相关的底层细节;而且根据策略模式思想将上述多种通信服务的各自实现封装起来,使它们可以相互转换,并向上给出标准通用的抽象通信接口。
[0034] 被控过程接口组件。该组件包括物理过程接口和虚拟过程接口,用于将不同被控过程平滑接入到使用加密控制器的闭环控制回路。在本实施例中,向下,通过MFC和Matlab混合编程的方法连接通过Matlab仿真软件虚拟的被控过程,同时也支持通过分布式I/O设备连接工业控制现场的物理被控过程;向上,基于下层的工业控制信号转换库,给出诸如测量信号、控制信号的标准数据接口,从而将四容水箱等典型过程工业对象紧密接入到使用加密控制器的闭环控制回路。
[0035] 参数文件组件。本实施例的参数文件包括存储控制器参数的PLC位存储区变量组和存储加解密参数的计算机上的TXT文档,并通过它们向上给出参数管理服务的数据基础。
[0036] 本实施例的运行管理层处在功能组件层和用户应用之间,提供运行组织、参数管理和用户界面,向下按照特定控制流组织功能组件整体运行,向上支持用户所需的加密控制器应用。包括:运行组织,是指按照特定控制流组织下层功能组件作为一个整体共同运行以实现加密控制器的整体功能集成,在本实施例中,由于加密控制器应用程序是由计算机上的MFC程序和PLC上的SCL程序组合而成,难以直接通过常规的程序设计方法定义控制流,所以采用控制流时序编码机制来将位于两处硬件设备和软件实体的功能组件按照特定控制流组织起来共同运行,具体的,将特定加密控制器应用程序的控制流的事件时序和分支选择编码为一条可通信传输的十六进制整数序列,从而在控制流的每一步骤按照对应十六进制数的取值执行程序来完成对位于不同硬件设备和软件实体的功能组件的运行组织,而且,采用基于同步的运行时切换方法以在线切换关键执行分支和重要组件特性,本实施例中的该方法是从现场单元和控制器两侧程序的通信同步机制发展而来的,可用于在线切换同态加密算法和同态运算指令。参数管理,其一是编程时的参数生成,本实施例基于MFC编程技术和实时密码学库编写了对原始参数加密、转换和写入文件的自动化工具类,其二是运行时的参数设计,本实施例结合编写的工具类和OPC通信技术,提供在线设置控制器参数、加解密参数的服务。用户界面,本实施例利用MFC的图形界面编程功能来提供用户和加密控制器应用程序之间的交互窗口,可用于对加密控制器应用内数据的监视、记录和分析,也支持通过扩展或改造已有的用户界面模板来满足用户的个性化需求。
[0037] 图2为基于上述实施例所述的加密控制器应用程序开发框架的开发方法的流程图,该开发方法包括以下步骤:
[0038] 步骤1:根据用户应用的具体需求确定加密控制器应用程序的业务逻辑和控制流程,确定业务逻辑时主要考虑所需计算的控制律和所用同态加密算法的同态性质类型,确定控制流程时主要考虑所在工业控制系统的配置、所用控制网络和通信协议、所用同态加密算法和所用被控过程接口。
[0039] 步骤2:根据业务逻辑,调用基础类库层的同态运算指令函数重写加密控制律计算组件的功能程序,配置开发框架给出的加密器/解密器组件、参数文件组件;同时重用开发框架提供的其余功能组件。
[0040] 步骤3:根据控制流程,改造开发框架中的运行组织部分(主要是生成编码控制流时序的十六进制整数序列)以满足新的控制流需求,设置开发框架提供的参数管理服务;同时重用开发框架给出的用户界面或重新自定义用户界面。
[0041] 步骤4:在对应开发工具中编译加密控制器应用程序中的各个软件实体,并将它们分别部署到各自对应的硬件设备,在本实施例中,在VS 2010中编译MFC程序并部署在计算机上,在STEP 7中编译SCL程序并部署到PLC中,之后即可启动运行。
[0042] 上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。