一种基于TPM的Modbus/TCP协议的安全增强方法技术

技术编号:13328439 阅读:82 留言:0更新日期:2016-07-11 18:38
一种基于TPM的Modbus/TCP协议的安全增强方法属于工业控制领域和信息技术领域。工业控制系统的安全关系到国家安全。现有的安全方案中,并没有从根本上解决通信的安全认证问题,存在客户机、服务器被冒充及密钥窃取的问题。本发明专利技术引入可信计算思想,为设备增加可信计算模块(TPM),用TPM的身份认证密钥保证设备身份可信,设备操作系统及组态软件的度量信息保证设备的状态可信性。在可信服务器的参与下,完成双方的身份和状态认证。在协议格式上增加了Hash Item,保证报文的完整性。TPM的绑定密钥及授权数据PCR保证密钥Kms生成过程中的安全性,用HMAC及密钥Kms保证通信过程中双方身份的认证性。

【技术实现步骤摘要】

本专利技术属于工业控制领域和信息
,涉及一种工控系统中常用的通信协议Modbus/TCP的安全增强方法。
技术介绍
工业控制系统广泛应用于电力、化工、油气开采、交通运输等国家关键基础设施领域,因而工业控制系统的安全关系到国家安全。近年来,随着工业以太网技术的快速发展,TCP/IP等互联网技术被引入到工业控制系统中。在将TCP/IP技术的安全威胁引入到工业控制系统中的同时,破坏了工业控制系统的封闭性。将工业控制系统中广泛使用的私有协议的设计和实现中的漏洞暴露给攻击者,给工业控制系统带来了巨大的威胁。工业控制网络与我们的传统IT网络存在着巨大差异。工业控制系统一般情况下拥有固定数量的设备,可预测的通信流及私有通信协议,最重要的是高可用性需求。由于工业控制系统网络的特殊性,传统的IT安全保护机制是无效的。广泛部署的工业控制系统私有协议如:DNP3、Modbus、Modbus/TCP中没有提供安全控制,给攻击者提供了较多可以利用的漏洞,如Modbus/TCP中无认证性,则攻击者只要接入网络就可以发送合法的Modbus报文,进而篡改控制器中寄存器中的参数或者线圈状态,造成系统故障。协议缺乏完整性,攻击者可以篡改报文。协议缺乏新鲜性,攻击者可以将窃听到的报文重新发送到网络中引起系统故障。协议缺乏加密,地址和命令信息明文传输容易被攻击者窃听。当前针对Modbus/TCP协议安全增强的研究主要有两个方向:一是将安全增强机制部署在网关,二是将安全增强机制部署在终端设备上。现有的安全方案中,并没有从根本上解决通信中的安全认证问题,存在客户机、服务器被冒充及密钥窃取的问题。
技术实现思路
为了解决上述问题,专利技术了一种安全增强的Modbus/TCP协议。此协议引入可信计算思想,为设备增加可信计算模块(TPM),用TPM的身份认证密钥保证设备身份可信,设备操作系统及组态软件的度量信息保证设备的状态可信性。在可信服务器的参与下,完成双方的身份和状态认证。在协议格式上增加了HashItem,保证报文的完整性。TPM的绑定密钥及授权数据PCR保证密钥Kms生成过程中的安全性,用HMAC及密钥Kms保证通信过程中双方身份的认证性。本专利技术的技术方案如下:本安全方案中,设备中均增加可信平台模块(TPM),增加了TPM的设备称为可信设备,设备在TPM基础上能够进行可信存储、组态软件和OS关键信息的可信度量。利用TCG软件栈的相关函数获取设备状态信息相关的PCR值,PCR值的安全是由TPM负责的。TPM提供进行身份认证和状态认证的基础,工业控制系统中增加了可信服务器(AS)为通信双方提供认证基础。可信服务器(AS)的作用是对客户机、服务器(可信设备)终端身份和状态进行验证,然后定期轮询工业控制系统中各可信设备,获取其身份和系统状态信息,维护可信设备信息白名单。在本文的安全模型中,应用可信计算的思想保证设备的认证性,包括两方面的认证:设备身份认证和设备状态认证。身份认证由TPM的身份认证密钥提供,身份认证密钥是TPM唯一的背书密钥的代替物,是不可迁移的。即身份认证密钥是与TPM绑定的,可保证TPM不被冒充。因此身份认证密钥可以代表TPM的终端身份,并且保证可信设备不被冒充。设备状态认证利用远程证明的方式,远程证明包括:可信度量及可信报告。可信度量是对平台及组件的完整性进行度量,可信平台在启动时以TPM和CRTM(CoreRootofTrustforMeasurement)为信任根,由BIOS、操作系统加载模块、操作系统、应用程序等构建信任链,沿着信任链由下向上层层度量。组件度量的结果写入到平台配置寄存器PCR中。可信报告是将平台及应用组件的度量值即PCR值签名后报告给验证方,验证方通过验证签名和PCR值来判断平台和应用程序的状态是否可信。本安全方案中将可信度量对象选定为操作系统关键内核模块及工控组态软件。可信度量产生的度量信息存储在设备TPM指定的PCR中,利用TSS相应函数取得该PCR的值,作为该设备的状态信息。状态信息能够动态反应该系统是否遭到破坏从而保证设备状态可信。本安全方案中利用HMAC算法保证报文传输中的完整性。本协议分为可信更新验证、身份认证及Modbus/TCP安全通信三个子过程,身份认证子过程完成通信双方身份及状态可信的认证,生成Modbus/TCP安全通信中HMAC计算使用的密钥Kms。密钥Kms用绑定密钥传输,绑定密钥的授权数据设置为绑定密钥生成时某PCR的值,保证在密钥传输过程中若系统遭受攻击,系统状态发生变化(PCR值发生变化),则绑定密钥的授权数据与现在PCR的值不一致,则绑定密钥无法使用,进而身份认证过程结束。需要可信更新验证过程中发现可信设备的变化,重新启动身份认证过程。本协议运行之前协议参与者应当具备的知识如下:1)可信设备(客户机和服务器)中存储可信服务器AS的公钥Ks_Pub。2)AS中存储所有可信设备的可信状态信息即存储工控软件度量值的PCR值、身份认证密钥的公钥、绑定密钥的公钥构成白名单。可信服务器AS用其私钥Ks_Pri签名客户机相关的PCR值、身份认证密钥的公钥、绑定密钥公钥生成可信服务器的签名,可信服务器向工业控制系统中所有服务器推送客户机的信息及可信服务器的签名,可信服务器的签名可让服务器认证可信服务器AS。服务器中存储工业控制系统中所有客户机的相关信息。协议运行过程如下:(1).身份验证过程身份验证过程的目标为用身份认证密钥的私钥对存储在PCR中的状态值进行签名,保证双方身份和状态的可信。通信双方在可信服务器AS的参与下完成双方身份和状态的认证。用绑定密钥加密传输对称密钥Kms及随机数,绑定密钥的授权数据指定为某个PCR值,绑定密钥只有在指定的PCR值与授权数据一致情况下才可使用,可保证只有该TPM平台且TPM系统状态与TPM生成该绑定密钥时状态一致时才能够使用该绑定密钥。从而保证对称密钥Kms协商过程中通信设备双方的状态的可信性。该通信过程中,A代表Modbus通信中的客户机,B代表服务器。身份验证过程通信步骤如下:步骤1.1:A→B:req,Na;req,Na分别是客户机A向服务器B发出的通信请求、随机数。步骤1.2:服务器B收到客户机A的请求req和随机数Na后,将PCR值与随机数Na串联后计算摘要值,调用TPM_Quote计算PCR的签名值QuoteB。步骤1.3:B→A:QuoteB,Nb;QuoteB,Nb分别为服务器B发本文档来自技高网
...

【技术保护点】
一种基于TPM的Modbus/TCP协议的安全增强方法,其特征在于:本协议运行之前,可信设备即客户机A和服务器B中存储可信服务器AS的公钥Ks_Pub;AS中存储所有可信设备的可信状态信息即存储工控软件度量值的PCR值、身份认证密钥的公钥、绑定密钥的公钥构成白名单;协议运行包括以下三个过程:(1).身份验证过程该过程中,A代表Modbus通信中的客户机,B代表服务器;身份验证过程通信步骤如下:步骤1.1:A→B:req,Na;req,Na分别是客户机A向服务器B发出的通信请求、随机数;步骤1.2:服务器B收到客户机A的请求req和随机数Na后,将PCR值与随机数Na串联后计算摘要值,调用TPM_Quote计算PCR的签名值QuoteB;步骤1.3:B→A:QuoteB,Nb;QuoteB,Nb分别为服务器B发送给客户机A的PCR签名和随机数;步骤1.4:A→AS:ReqB,Ns;ReqB,Ns分别为客户机A向可信服务器AS发送要求服务器B相关信息的请求和随机数;步骤1.5:可信服务器AS查找白名单后将服务器B的信息Kb_Pub,Pcrb,BAIK_Pub与Ns串联后用Ks_Pri签名,签名值为SIGNS;用Kb_Pub,Pcrb,BAIK_Pub与SIGNS构建报文Bdata;式中Kb_Pub为服务器B的绑定密钥的公钥,Pcrb为服务器B相应的PCR值,BAIK_Pub为服务器B的身份认证密钥的公钥,Ks_Pri为AS的私钥,其中SIGNS=Sign(Ks_Pri,Kb_Pub,Pcrb,BAIK_Pub);步骤1.6:AS→A:Bdata;可信服务器AS向客户机A发送服务器B的相关信息报文Bdata;步骤1.7:客户机A用可信服务器AS的公钥Ks_Pub验证AS的签名SIGNS及随机数Ns;客户机A从报文Bdata中得到服务器B的PCR值、服务器B身份认证密钥的公钥BAIK_Pub及服务器B的绑定密钥的公钥Kb_Pub后,验证服务器B的签名QuoteB;上述验证操作均成功后,客户机A生成随机数Nc,将客户机A的PCR值用身份认证密钥的私钥AAIK_Pri签名生成QuoteA,QuoteA=TPM_Quote(AAIK_Pub,Pcra,Nc);步骤1.8:A→B:QuoteA,Nc;QuoteA,Nc分别是客户机A向服务器B发送的PCR签名和随机数;步骤1.9:服务器B调用verifyQuote()验证客户机A的签名QuoteA,若返回值为success,则服务器B生成随机数Nd,并利用客户机A的绑定密钥的公钥Ka_Pub加密Nc,Nd;Bok=TSS_Bind(Ka_Pub,Nc|||Nd);步骤1.10:B→A:Bok;Bok为服务器B向客户机A发送的确认客户机A可信的报文;步骤1.11:客户机A用绑定密钥的私钥Ka_Pri解密Bok,即调用TPM_UnBind(Ka_Pri,Bok,keyAuth),keyAuth为创建绑定密钥时的授权数据,在此选用客户机A的PCR值.在该函数执行过程中,首先验证该授权数据keyAuth是否与现在客户机A中相应PCR的值一致,一致才可使用绑定密钥的私钥Ka_Pri;解密后,验证随机数Nc是否与步骤1.7中发送给服务器B的随机数Nc相等;若相等,则客户机A生成HMAC运算中使用的对称密钥Kms,同时生成随机数Ne,将Kms,Nd,Ne用服务器B的绑定密钥的公钥Kb_Pub加密,生成Keys,Keys=TSS_Bind(Kb_Pub,Kms||Nd||Ne);步骤1.12:A→B:Keys;Keys是客户机包含对称密钥Kms的报文;步骤1.13:服务器B用绑定密钥的私钥Kb_Pri解密报文Keys;之后验证随机数Nd是否与步骤1.9中生成的Nd一致,若一致,则接收客户机A发送的对称密钥Kms;然后用客户机A的绑定密钥的公钥Ka_Pub加密报文Keys中客户机A的随机数Ne,Brekeys=TSS_Bind(Ka_Pub,Ne);步骤1.14:B→A:Brekeys;服务器B告诉客户机A确实收到了对称密钥Kms;步骤1.15:客户机A用绑定密钥的私钥Ka_Pri将Brekeys解密;验证随机数Ne是否与步骤1.11中生成的随机数一致,一致则客户机A确定服务器B收到了对称密钥Kms;(2)安全通信过程:步骤2.1:客户机A根据实际工控环境中PLC的计算能力选择Hash算法,记为hashAlg;sdata为hsshAlg,HMAC(Kms,data),data;data为Modbus/TCP请求报文sdata中的Modbus/TCP PDU字段数据;步骤2.2:A→B:sdata;sdata为客户机A的Modbus/TCP请求报文;步骤2.3:用HMAC计算sdata的数据域,即HMAC(Kms...

【技术特征摘要】
1.一种基于TPM的Modbus/TCP协议的安全增强方法,其特征在于:
本协议运行之前,可信设备即客户机A和服务器B中存储可信服务器AS的公钥
Ks_Pub;AS中存储所有可信设备的可信状态信息即存储工控软件度量值的PCR值、
身份认证密钥的公钥、绑定密钥的公钥构成白名单;
协议运行包括以下三个过程:
(1).身份验证过程
该过程中,A代表Modbus通信中的客户机,B代表服务器;身份验证过程通信
步骤如下:
步骤1.1:A→B:req,Na;
req,Na分别是客户机A向服务器B发出的通信请求、随机数;
步骤1.2:服务器B收到客户机A的请求req和随机数Na后,将PCR值与随机
数Na串联后计算摘要值,调用TPM_Quote计算PCR的签名值QuoteB;
步骤1.3:B→A:QuoteB,Nb;
QuoteB,Nb分别为服务器B发送给客户机A的PCR签名和随机数;
步骤1.4:A→AS:ReqB,Ns;
ReqB,Ns分别为客户机A向可信服务器AS发送要求服务器B相关信息的请求
和随机数;
步骤1.5:可信服务器AS查找白名单后将服务器B的信息Kb_Pub,Pcrb,
BAIK_Pub与Ns串联后用Ks_Pri签名,签名值为SIGNS;用Kb_Pub,Pcrb,BAIK_Pub
与SIGNS构建报文Bdata;式中Kb_Pub为服务器B的绑定密钥的公钥,Pcrb为服务
器B相应的PCR值,BAIK_Pub为服务器B的身份认证密钥的公钥,Ks_Pri为AS
的私钥,其中SIGNS=Sign(Ks_Pri,Kb_Pub,Pcrb,BAIK_Pub);
步骤1.6:AS→A:Bdata;
可信服务器AS向客户机A发送服务器B的相关信息报文Bdata;
步骤1.7:客户机A用可信服务器AS的公钥Ks_Pub验证AS的签名SIGNS及
随机数Ns;客户机A从报文Bdata中得到服务器B的PCR值、服务器B身份认证密
钥的公钥BAIK_Pub及服务器B的绑定密钥的公钥Kb_Pub后,验证服务器B的签名
QuoteB;上述验证操作均成功后,客户机A生成随机数Nc,将客户机A的PCR值
用身份认证密钥的私钥AAIK_Pri签名生成QuoteA,
QuoteA=TPM_Quote(AAIK_Pub,Pcra,Nc);
步骤1.8:A→B:QuoteA,Nc;
QuoteA,Nc分别是客户机A向服务器B发送的PCR签名和随机数;
步骤1.9:服务器B调用verifyQuote()验证客户机A的签名QuoteA,若返回值为
success,则服务器B生成随机数Nd,并利用客户机A的绑定密钥的公钥Ka_Pub加
密Nc,Nd;Bok=TSS_Bind(Ka_Pub,Nc|||Nd);
步骤1.10:B→A:Bok;
Bok为服务器B向客户机A发送的确认客户机A可信的报文;
步骤1.11:客户机A用绑定密钥的私钥Ka_Pri解密Bok,即调用
TPM_UnBind(Ka_Pri,Bok,keyAuth),keyAuth为创建绑定密钥时的授权数据,在此
选用客户机A的PCR值.在该函数执行过程中,首先验证该授权数据keyAuth是否与
现在客户机A中相应PCR的值一致,一致才可使用绑定密钥的私钥Ka_Pri;解密后,
验证随机数Nc是否与步骤1.7中发送给服务器B的随机数Nc相等;若相等,则客户
机A生成HMAC运算中使用的对称密钥Kms,同时生成随机数Ne,将Kms,Nd,
Ne用服务器B的绑定密钥的公钥Kb_Pub加密,生成Keys,Keys=TSS_Bind
(Kb_Pub,Kms||Nd||Ne);
步骤1.12:A→B:Keys;
Keys是客户机包含对称密钥Kms的报文;
步骤1.13:服务器B用绑定密钥的私钥Kb_Pri解密报文Keys;之后验证随机数
Nd是否与步骤1.9中生成的Nd一致,若一致,则接收客户机A发送的对称密钥Kms;
然后用客户机A的绑定密钥的公钥Ka_Pub加密报文Keys中客户机A的随机数Ne,
Brekeys=TSS_Bind(Ka_Pub,Ne);
步骤1.14:B→A:Brekeys;
服务器B告诉客户机A确实收到了对称密钥Kms;
步骤1.15:客户机A用绑定密钥的私钥Ka_Pri将Brekeys解密;验证随机数Ne
是否与步骤1.11中生成的随机数一致,一致则客户机A确定服务器B收到了对称密
钥Kms;
(2)安全通信过程:
步骤2.1:客户机A根据实际工控环境中PLC的计算能力选择Hash算法,记为
hashAlg;s...

【专利技术属性】
技术研发人员:杨静詹静吴欢陶政
申请(专利权)人:北京工业大学
类型:发明
国别省市:北京;11

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

1