发明名称 一种基于TPM的Modbus/TCP协议的安全增强方法
摘要 一种基于TPM的Modbus/TCP协议的安全增强方法属于工业控制领域和信息技术领域。工业控制系统的安全关系到国家安全。现有的安全方案中,并没有从根本上解决通信的安全认证问题,存在客户机、服务器被冒充及密钥窃取的问题。本发明引入可信计算思想,为设备增加可信计算模块(TPM),用TPM的身份认证密钥保证设备身份可信,设备操作系统及组态软件的度量信息保证设备的状态可信性。在可信服务器的参与下,完成双方的身份和状态认证。在协议格式上增加了Hash Item,保证报文的完整性。TPM的绑定密钥及授权数据PCR保证密钥Kms生成过程中的安全性,用HMAC及密钥Kms保证通信过程中双方身份的认证性。
申请公布号 CN105721500A 申请公布日期 2016.06.29
申请号 CN201610218409.X 申请日期 2016.04.10
申请人 北京工业大学 发明人 杨静;詹静;吴欢;陶政
分类号 H04L29/06(2006.01)I;H04L9/14(2006.01)I;H04L9/30(2006.01)I;H04L9/32(2006.01)I;H04L12/26(2006.01)I;G06F21/44(2013.01)I;G06F21/57(2013.01)I 主分类号 H04L29/06(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 刘萍
主权项 一种基于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,data)与sdata中的Hash Item值比较,若不相等,则A不可信;若相等,说明请求报文真实可信,服务器B向客户机A发送回复报文redata,redata为hashAlg,HMAC(Kms,responsedata),responsedata;responsedata为Modbus/TCP回复报文中Modbus/TCP PDU字段数据;步骤2.4:A→B:redata;redata是服务器B向客户机A发送的Modbus/TCP回复报文;步骤2.5:客户机A用HMAC和密钥Kms计算回复报文redata的数据域responsedata,将HMAC(Kms,responsedata)值与redata中的Hash Item值比较,两者相等则客户机A接收回复报文redata,否则客户机A认为服务器B是冒充的;(3)可信更新验证过程客户机A和服务器B因为均安装了TPM芯片,且流程一样,在可信更新协议中统称为可信设备A;可信更新验证过程具体步骤如下:步骤3.1:AS→A:Nonce,reqAuth(A);其中AS代表可信服务器,A代表可信设备,Nonce,reqAuth(A)分别表示可信服务器AS向可信设备A发送的随机数和验证请求;步骤3.2:可信设备A将可信服务器AS请求的PCR值(Pcra)与随机数Nonce,调用TPM_Quote接口签名,即Quote=TPM_Quote(AAIK_Pri,Pcra,Nonce),AAIK_Pri代表可信设备A的身份认证密钥的私钥,Pcra代表可信服务器AS请求的可信设备A的PCR值;步骤3.3:可信设备A用可信设备A的PCR值(Pcra)和可信设备A的签名Quote构建回复报文resp即resp=Pcra,Quote;步骤3.4:A→AS:resp;可信设备A向可信服务器AS发送回复报文resp;步骤3.5:可信服务器AS用verifyQuote(AAIK_Pub,Pcra,Quote,Nonce)验证可信设备A的签名Quote及随机数Nonce;AAIK_Pub为可信设备A的身份认证密钥的公钥,Pcra为A的PCR值,Quote为步骤3.2中可信设备A生成的PCR签名,Nonce是步骤3.1中可信服务器生成的随机数;verifyQuote()返回success,则可确认A的PCR值Pcra及随机数Nonce在传输过程中未被篡改;步骤3.6:可信服务器AS将接收到的可信设备的PCR值Pcra与AS白名单中可信设备A的PCR值Pcra比较;若相等,则说明可信设备A的状态是可信的,可信服务器AS中可信设备A的白名单条目不发生改变;若不相等,可信服务器AS需要向可信设备A的admin用户发送请求报文;请求报文中询问是否发生了系统主动更新操作;若admin用户的回复报文中指明没有发生主动更新操作,可信服务器AS向可信设备A的admin用户发出警告,同时切断A平台与其他设备的通信;若可信设备A的admin用户的回复报文中指明发生了更新操作,同时发送了可信设备A的TPM新生成的绑定密钥的公钥ka_Pub,可信则服务器AS更新白名单库中可信设备A的PCR值和绑定密钥的公钥Ka_Pub;若可信服务器AS更新了白名单库中可信设备A的信息,需进行以下操作:若可信设备A的设备类型为客户机,则可信服务器AS将可信设备A的白名单信息推送到工业控制系统所有的服务器中;之后可信服务器AS向可信设备A发送启动身份验证的消息,可信设备A将重新发起与服务器的身份认证过程;若可信设备A的设备类型为服务器,则可信服务器AS向所有的客户机广播消息,消息内容为:与可信设备A通信应重新发起进行身份验证过程;切断通信的方式为:若可信设备A的设备类型为服务器,可信服务器AS将可信设备A的设备IP地址发送给客户机,客户机与可信设备A通信时将重新发起身份认证过程;若可信设备A的设备类型为客户机,可信服务器AS则向所有服务器推送可信设备A的设备状态不可信的消息,服务器接收到可信设备A不可信的消息时,将可信设备A的对称密钥Kms置为无效,此时可信设备A与服务器无法正常通信。
地址 100124 北京市朝阳区平乐园100号