您好,欢迎访问飞畅科技官网!
服务热线:+086 0571-87007055/56/57 EN
飞畅科技工业通信技术中心

光通信与工业互联网方案专家

EXPERT IN OPTICAL COMMUNICATION & INDUSTRIAL INTERNET SOLUTIONS

联系我们CONTACT US

全国咨询热线

0571-87007055/56/57/75

市场部直线电话:0571-87007140

手机:15306818230(微信)

QQ :2355416925

定制设计:18072828031(微信)

或给我们留言

在线留言

加密过的旧报文为何还要拦?工业联网防重放窗口科普

浏览次数:飞畅科技原创作者:飞畅科技技术团队

FIBERIOT / 基础知识

远程采集链路已经加密,为什么安全网关还要记录报文序号?因为“别人看不懂”,和“这份数据没有被重复使用”,是两件事。有人把路上经过的一份合法报文原样记录下来,隔一会儿重新送到接收端,即使无法读懂内容,也可能造成麻烦。防重放就是在保护内容之外,给接收端一份已经处理过哪些报文的记忆。

安全网关之间的保护隧道与重复报文被拦截的路径
图1:AI辅助原创通用机制示意;106为ESP序号示例,不是PLC应用字段;非特定产品能力。

01一、原封不动,也可能不是现在该接收的数据

先想象一封盖好封条的工作指令。封条能够帮助辨别内容是否被拆改,却不能单独证明这封信没有递交过。把同一封完整的信送来第二次,内容和封条仍可能全部正确。网络中的重放也有类似特点:攻击者可以复制密文,不必先解密,更不一定需要重新编造一条合法命令。

这里的类比只解释重复递交,不表示网络加密真的依靠纸封条。真实安全协议使用密钥和鉴别算法检查报文。保密、完整性与防重放是相关但不同的目标。普通以太网帧中的差错校验也不能代替这种鉴别:发现传输差错,与确认报文来自合法密钥持有者,并不是同一种能力。

因此,看到设备宣传“支持加密”,还不能直接推断它怎样阻止旧数据再次进入系统。工程上需要确定使用的协议、实际安全端点、协商方式,以及接收端有没有启用相应检查。本文以IPsec中的ESP机制解释原理,不把这种能力自动归给中间所有工业设备。

02二、先找到真正记账的两端

IPsec可以在IP网络上提供安全保护,ESP是其中一种报文保护机制。为了便于理解,可以把安全关联简称SA,看成某个方向上的一套保护约定:使用什么密钥、算法,以及怎样解释相关状态。往返两个方向的状态不能简单混成一本账。

发送端为属于这一安全关联的报文依次编号。接收端依据安全关联找到对应的检查记录,而不是看见一个数字就拿去和全网设备比较。ESP中的安全参数索引SPI帮助识别关联,序列号参与防重放判断;这些字段也需要纳入相应的完整性保护,不能让外部随意改号绕过检查。

如果链路上有串口服务器、工业交换机和外置安全网关,应把各自职责画清。飞畅FCT-1100-F1S1串口服务器可作为串行设备接入网络的真实产品背景,但本文不据此宣称它支持IPsec。若由外置网关建立隧道,检查发生在对应网关,普通转发设备并不会因此自动拥有防重放窗口。

03三、为什么不能只接受“比上次大”的序号

网络报文不一定严格按发送顺序到达。不同路径、队列和并行处理,都可能让后发送的数据先到。如果接收端只记住最大序号,并拒绝所有比它小的报文,正常迟到的数据也可能被误拦。防重放需要同时兼顾重复识别和一定程度的乱序容忍。

滑动窗口可以理解成一排带号码的小格子。每个格子记录对应报文是否已经通过鉴别并接收,而不是保存那份报文的全部内容。窗口右侧对应当前已经鉴别通过的较大序号,左侧限定还能考虑接收的较旧序号;窗口以外太旧的报文会被丢弃。

例如,为了讲解,假设当前只观察101到108这八个号码,并且106已经被接收。再次出现106,就是已见过的号码;105若尚未接收,则有资格继续接受鉴别。这里的八格只是插图例子,不是标准规定的固定窗口,更不是任何飞畅型号的参数。

八格示例窗口区分已接收、尚未接收及太旧报文
图2:AI辅助原创窗口示意;八格及101至109仅用于讲解,非设备参数。

04四、窗口移动,要等报文真的通过鉴别

收到109时,接收端不能只看号码较大,就立即把整排格子往前搬。如果有人伪造一个极大的序号便能推动窗口,正常数据就可能被挤到窗口之外。正确理解处理顺序,比死记“窗口向右滑”更加重要。

实现可以先进行轻量的序号预检查,快速拒绝明显重复或太旧的报文。对于有资格继续处理的报文,还要检查相应完整性或鉴别结果;只有验证成功,才把它记为已接收,并按需要更新窗口。预检查并不等于报文已经得到信任。

鉴别失败的报文不能为新的序号“占座”,也不能让最大的已鉴别序号向前推进。不同算法和实现可以采用不同的内部处理方式,但对使用者而言,关键是区分预筛选、密码学验证和状态提交。图中的处理流程应表达这种依赖,而不是画成号码越大就直接放行。

05五、丢包、乱序与重放,现象相近但原因不同

窗口允许一定范围内的未见号码迟到,但不保证任意晚到的报文都能接收。若网络出现很大乱序,合法数据也可能落在窗口左边。此时看到丢弃计数增加,不能马上认定发生了攻击,也不能直接认定光纤或交换端口已经损坏。

应先把时间段、方向、安全关联及业务记录对应起来,查看路径切换、队列积压和网关负载是否同期变化。单纯把窗口调大不是所有故障的答案:实现支持范围、状态开销和业务可接受的迟到程度都需要核实,更不能为了消除告警而随意关闭保护。

接收端也不靠这个窗口补回丢失的数据。它负责判断哪些报文有资格进入后续处理,是否重传、如何恢复会话,以及控制程序怎样处理超时,要由对应的传输或应用机制负责。防重放窗口不是可靠传输协议,也不是把网络自动整理成按序到达的缓存。

序号预检查与完整性鉴别通过后才能提交窗口状态
图3:AI辅助原创逻辑处理示意;不是指定设备的硬件电路或固定算法组合。

06六、隧道里的新包,不一定是新的业务命令

还有一个容易忽略的边界:应用程序可能把同一条操作指令再次发出去。第二次发送经过安全端点时,会形成带有新序号的新报文。对于隧道层来说,它不是已经接收过的旧ESP报文;对于业务系统来说,却可能仍是一项重复操作。

因此,防重放不等于“设备保证每条命令只执行一次”。重要业务还需要根据实际协议设计事务标识、重复请求处理、有效期、权限与状态约束。不能给任何普通协议随意添加几个字段,就声称已经获得完整安全性;这些机制需要发送端和接收端共同约定并验证。

同样,一个尚未接收且仍在窗口内的合法报文,也不因通过序号检查就自动证明符合业务时限。设备控制是否允许延迟执行,需要应用层自己的判断。把报文是否重复、发送者是否可信和指令现在能否执行分开理解,才能避免把安全隧道当成万能控制器。

07七、把机制落实到可以核对的项目记录

项目设计先标注隧道端点及保护范围,再核对协议、协商、窗口支持和日志含义。串行接口、以太网转发和安全处理属于不同层;某设备支持光纤、VLAN或串口联网,并不能据此推定它具备特定密码算法或认证能力。

验证应在授权的测试环境中进行,使用隔离的测试数据,分别观察正常顺序、允许的乱序、重复报文和鉴别失败等情况。记录说明书版本、配置和结果,不在正在控制生产设备的网络里重放真实操作指令,也不把示意图里的数字当成测量记录。

小白可以记住一句话:加密像保护信的内容,防重放还要核对这封信是否已收过。窗口让接收端保留有限的历史,鉴别让这份历史不能被伪造序号轻易推动,而应用程序仍要负责自己的重复操作与时效规则。三者配合,才构成职责清楚的工业通信设计。

资料依据

RFC 4303:ESP,2.1、2.2与3.4.3节;RFC 6479:防重放算法的说明性文档,后者不是强制标准。产品背景:FCT-1100-F1S1三合一串口服务器,不据此宣称产品支持IPsec。

现场常见问题

加密之后就不会被重放了吗?

不能这样推断。加密保护内容,防重放还依赖接收端的序号记录、鉴别与正确状态管理;应核对实际协议与配置。

窗口内的旧序号一定会被丢弃吗?

不是。窗口内尚未见过的报文可以继续接受鉴别;已经鉴别接收的重复序号会被拒绝。太旧的窗口外报文也会被拒绝。

隧道防重放能保证命令只执行一次吗?

不能。应用重发同一命令可以形成新的外层报文。业务事务、重复处理与有效期需要应用层独立约定。

适用边界与延伸阅读

通用ESP防重放机制,不是特定产品的内部结构、测试结果或安全能力承诺。

TDM over IP怎样保护传输:访问控制、IPsec与电路质量验收;串口服务器怎样安全联网:访问控制、加密通道与工业现场防护