一种基于DLMS加密通信的红外端口保护方法与流程

文档序号:17726473发布日期:2019-05-22 02:32阅读:477来源:国知局

本发明涉及电能表技术领域,尤其涉及一种基于dlms加密通信的红外端口保护方法。



背景技术:

随着信息化的不断发展,智能电网的建设也在不断完善,智能电表在智能电网的建设中具有核心的地位。目前,老式的电能表已经逐步更新为智能电表,二者主要的区别在于计量方法以及数据交互方式的不同。随着大数据概念的提出,对于智能电表的数据通信要求也在不断提高,为了保证通信端口的正常可靠,需要通过合理的方法对电表的通信端口进行保护。

目前,智能电表在设计的过程中都会有一个红外通信端口和一个其他通信端口,例如rs-485。通常情况下,rs-485端口在电表端盖的保护下,如果直接打开端盖尝试使用rs-485端口通信,智能电表会检测到端盖开启,并判定为窃电事件发生,上报到主站。但是,红外通信的特性决定设计人员无法在此端口处设置类似的保护结构,因此,通过软件设计来实现对红外端口的保护就显得尤为重要。



技术实现要素:

本发明所要解决的技术问题是:提供一种基于dlms加密通信的红外端口保护方法,采用这种方法能很好的保护红外端口。

本发明所采用的技术方案是:一种基于dlms加密通信的红外端口保护方法,它包括以下步骤:

s1、持续检测通信请求,若检测到通信请求,则跳转到下一步,若没有检测到通信请求,则续集检测;

s2、判断端口是否为红外端口且闭锁,若是,则直接拒绝通信请求,然后返回步骤s1继续检测;若否,则跳转到下一步;

s3、分析通信请求的安全认证方式,若为低级别的安全认证,则跳转到步骤s4;若为高级别安全认证,则跳转到步骤s5;

s4、比对密码,如果密码正确,则将失败通信次数清零,然后建立通信连接;如果密码错误,则跳转到步骤s6;

s5、分析通信请求的通信策略,然后根据分析到的通信策略进行解密,之后再对比解密出来的密码,若密码正确,则将失败通信次数清零,然后建立通信连接;如果密码错误,则跳转到步骤s6;

s6、将失败通信次数加1,然后判断失败通信次数是否超过设定的阈值,如果没有超过,则返回步骤s1继续检测;若超过,则改变端口状态为闭锁状态,同时反馈错误信息,并且返回步骤s1继续检测。

作为优选,步骤s6端口状态改变为闭锁状态后内部计数器开始工作,当计时器达到设定的时间后,端口状态改为解锁状态。

作为优选,端口状态改为解锁状态时,保持失败通信次数。

作为优选,步骤s6将失败通信次数加1之前还需要判断通信请求是否是红外端口发送过来,若是,则将失败通信次数加1;若否,则返回步骤s1继续检测。

作为优选,步骤s6在判断通信请求是红外端口发送过来后,还需要判断红外端口的模式是否为多次失败后闭锁模式,若是,则将失败通信次数加1,若否,则返回步骤s1继续检测。

作为优选,步骤s4比对密码是依据aarq规定标识来比对密码的。

作为优选,步骤s5分析到的通信策略后,通过aes-gcm-128加密算法以及分析到的通信策略来进行解密。

作为优选,当掉电时,将失败通信次数保存到存储器,当上电后,从存储器读取掉电时存储的失败通信次数。

作为优选,步骤s6中设定的阈值为3-6次。

作为优选,步骤s6设定的阈值为4-5次。

采用以上方法与现有技术相比,本发明具有以下优点:这样可以防止恶意对红外端口进行访问,能很好的保护红外端口,并且当错误访问次数较多后直接将红外端口闭锁,防止恶意访问持续。

而且掉电不会影响失败通信次数,这样可以防止他人通过反复上下电进行通信尝试。

具体实施方式

以下通过具体实施方式对本发明做进一步描述,但是本发明不仅限于以下具体实施方式。

本发明旨在通过检测并处理异常的通信请求,从而对端口进行保护。具体的实现方法是解析应用层建立请求数据帧aarq,判断客户端所使用的密码是否正确,进而根据设计方案对端口状态以及后续的通信请求进行处理。

端口设置有以下三种模式,分别为:

直接锁死、多次失败后闭锁以及永久不锁;

受到保护的通信端口对应具有三种状态:

锁死状态:端口模式设置为1时的状态,此时不允许通信。

多次失败后闭锁:端口模式设置为模式2且当前端口闭锁。

永久不锁:端口设置为模式2且当前端口没有闭锁或者端口设置为模式3。

因为模式1为永久锁定状态,模式3为永久不锁状态,无需进行额外处理,只有端口设置为模式2时需要通过程序来进行保护。

当程序检测到一次错误密码通信后,失败通信次数加1,此数据作为累积记录值,在电表初始化时写0。如果持续使用错误密码通信,当失败通信次数累加到大于预定的允许失败次数后,端口闭锁,不能进行通信,直到电表上电时间达到预定的闭锁时间后自然解锁,或者是由其他通信方式使用正确密码建立链接后,发送命令进行解锁。

在端口未闭锁之前使用正确密码通信将会刷新失败通信次数为0。

端口保护处理的关键点在于端口闭锁方案的设计,自然解锁后端口状态参数的更新,以及上下电对端口状态的处理。

端口闭锁后不能通信,在程序的秒任务函数中会对端口状态进行检测,如果端口处于闭锁状态,将闭锁时间减1,再次判断闭锁时间如果为0,说明此时闭锁时间达到预定时间,端口状态更新为解锁状态,但不会对当前失败次数清0。此时,如果再次使用错误密码通信,则端口再次进入闭锁状态。

而且为了加强端口的保护,在掉电时将当前失败通信次数保存至存储器,上电时将数据恢复,以此保证在上下电时刻,同样可以对端口进行正常的保护,防止他人通过反复上下电进行通信尝试。

对于如何判定端口在进行异常通信,并按照设计方案进行闭锁操作的具体步骤如下:

1、监控串口中断,当检测到有数据通信时,进入通信处理函数。

2、检测端口状态,如果是红外端口收到通信请求且为闭锁状态,则直接拒绝通信。

3、链路层初始化建立后,分析应用层建立过程中的通信帧,获得本次通讯过程中使用的安全认证方式。

4、如果为lls低级别通信,依据aarq规定标识,比对服务器端的lls密码,如果密码正确,将失败通信次数清0,状态位清0,建立应用层链接,开始后续的数据交互。否则执行步骤6。

5、如果是hls高级通信,由于hls认证方式有四种定义,根据不同的定义方式会对数据进行不同方式的处理,因此需要解析本次通信定义的策略等级,使用aes-gcm-128加密算法以对应的方式进行解密,验证密码正确,将失败通信次数清0,状态位清0,建立应用层链接,否则执行步骤6。

6、确定密码错误后,判断此通信端口是否为预设的保护端口。

7、如果此通信端口是保护端口,判断当前端口模式是否为模式2,即多次失败尝试后闭锁。

7、如果是模式2,将失败通信次数加1,判断当前失败通信次数是否超过预设允许失败尝试阈值。

8、当失败尝试次数超过预设的失败尝试阈值时,改变端口状态为闭锁,并返回相应的错误信息进行提示。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的技术人员应当理解,其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行同等替换;而这些修改或者替换,并不使相应的技术方案的本质脱离本发明各实施例技术方案的精神与范围。

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