ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

船岸通信保护落地:SECOM与S-100 Part 15关键解析

2026/9/25 8:45:19 拓冰建站 浏览量
船岸通信保护落地:SECOM与S-100 Part 15关键解析 上周连着跑了三天的船岸通信测试我盯着监视屏上跳动的加密握手日志忽然想起半年前第一次给某船队做通信保护改造时对方技术负责人说的话卫星链路花钱买的是带宽谁知道数据半路被人看过没有。这句话基本概括了现在船舶远程运维和智能航运推进过程中最容易被低估的一块船岸通信保护。我们今年的重点课题就是围绕船岸通信保护方案展开的核心研究对象是SECOM标准和S100 PART15这两个东西一个管通信安全机制一个管数据交换层面的权限和隐私约束合在一起才算把一条船从岸上到海上的数据链路完整兜住。这篇文章不是标准原文解读而是我们做项目时的落地笔记。如果你是做船舶信息化集成、航运管理平台开发或者海事标准研究相关工作的这几年的e-Navigation推进、VDES普及、船队智能化改造都会让你绕不开这件事。我会从链路现状讲到标准机制再到工程实现和实测数据最后把踩过的坑一起抖出来希望能帮你省掉几个月的调研时间。1. 船岸通信的现状链路种类与安全缺口1.1 当前船岸通信都在传什么数据先聊聊数据本身因为安全方案一定是跟着数据走的。现在一条远洋船的船岸通信传的东西早已不只是文字电报和船位报告。机舱里各种传感器的温度、压力、振动数据主机的运行参数和油耗导航系统的电子海图更新包货舱状态和安全报警船员管理信息甚至远程视频诊断的画面全都需要从船端回到岸端。反方向的数据同样不少气象预报、航线计划、海图改正通告、备件与补给的调度指令等。这些数据一旦被篡改或者被拖出来分析后果不光是泄密两个字能带过去的。举个最简单的例子电子海图更新包如果被人替换成恶意数据整条船的航线计算可能在不知不觉中偏离正确航道航行指令如果被中间人篡改船员看到的信息和岸端下发的信息不一致冲突只在某个节点爆发。这就是为什么需要一套完整的船岸通信保护方案而不是单纯给某个传输通道加个密码。1.2 裸奔的链路AIS、VDES、卫星通信的隐患目前船岸通信链路主要靠这几种卫星通信VSAT、低轨/高轨移动卫星、VDES甚高频数据交换系统、4G/5G岸基网络以及传统的AIS。它们的带宽、时延和覆盖范围各不相同但安全状态普遍不乐观。链路类型典型带宽时延当前安全状态主要风险卫星链路2Mbps-20Mbps400ms-1200ms依赖运营商链路层加密厂商内部可见明文、密钥体系不透明VDES32kbps-80kbps200ms-500ms多数未加安全扩展数据帧可伪造、无身份鉴权4G/5G岸基50Mbps-400Mbps30ms-80ms有运营商通道加密但非端到端基站侧可被接入、云端管理平台弱口令AIS低速率近实时明文广播无鉴权、可伪造船舶身份AIS是我们最熟的例子它在设计时就没有考虑身份认证和加密船位、航向、航速全是明文广播只要有一台终端就能监听一片水域还能伪造AIS目标干扰自动避碰。VDES在设计上解决了带宽问题但安全扩展还没普及很多实际项目里VDES帧依然是明文传输。卫星链路虽然是收费服务但安全模型基本是运营商保证你不上不了网就只看到数据严格说属于单点信任无法满足船队管理方自己的安全边界要求。1.3 威胁模型从哪几条路径进来做安全方案前先要列威胁模型不然容易把力气花错地方。我们把船岸通信面对的威胁分成四类。第一类是被动监听攻击者不需要进入系统只要在无线覆盖范围内用设备接收无线信号就能积累大量敏感数据。第二类是主动注入在VDES或AIS频段伪造数据帧或者对岸端云平台发起重放攻击把一段合法的历史数据重新发送。第三类是中间人篡改这多发生在链路级代理和卫星地面站与云平台之间的网络环节数据包在进入TCP/IP网络后可能被截住改写。第四类是拒绝服务通过大流量阻塞有限带宽的卫星/VDES链路让船舶远程监控和紧急呼叫全部失效。很多团队一上来就买防火墙、上堡垒机这些当然有用但问题大多出在链路的最后一程和中间一程上。船端设备经过两层网络拓扑才能到岸端安全节点如果没有对待传输的消息做端到端保护中间任何一段被突破都会前功尽弃。2. SECOM标准到底保护什么从报文到会话的核心机制2.1 SECOM在整套安全体系中的位置SECOM这个缩写在这个课题里指的就是面向船岸通信的端到端安全通信标准框架Secure Communication for Maritime。我们研究时最关心的是它在安全体系里的层次定位。船内网络的安全已经有IEC 61162-450和IEC 61162-460这样的标准在管解决的是船载局域网内部设备互操作和基本网络安全而SECOM要管的是船岸之间跨公共通信网络的那一段也就是从船端安全网关到岸端安全网关的整条消息通道。可以这样理解船内设备相当于公司内部局域网IEC 61162-460是内网的门禁和监控但公司对外访问互联网、给总部传文件需要一套端到端加密和身份认证机制这就是SECOM的空间。它不是要替代卫星服务商或VDES的链路加密而是把安全提升到消息本身可信的层级让底层链路只负责搬运密文。2.2 握手与双向身份认证SECOM的会话建立过程借鉴了现代互联网安全协议的思路但针对海上链路做了专门处理。第一步是双向身份认证船端和岸端各持有一张证书握手时不仅船端要向岸端证明自己是谁岸端也要向船端证明自己就是真正的管理平台。判断身份的依据是设备的唯一标识比如船端网关的序列号或者船舶的IMO编号绑定到X.509证书中。握手过程大致是船端向岸端发送Hello携带自己的证书和随机数。岸端验证证书链、吊销状态回复Hello响应并携带自己的证书。双方交换密钥协商参数ECDHE生成会话密钥。双方各自发送Finished消息确认密钥一致进入数据交换阶段。这套流程在互联网设备上做得飞起但搬到海上会有两个麻烦一是卫星链路时延高TLS一次完整握手要多个RTT可能好几秒才建立安全通道二是IP地址是动态变化且频繁切换的TCP连接可能随时断掉重来。SECOM针对这两点做了改进支持会话快照与恢复握手完成后把安全上下文密钥状态、序列号、断点保存下来链路切换时不需要重新完整握手。2.3 数据帧的加密与防重放设计SECOM对应用数据采用消息级加密这个消息级是很关键的。就是说它不是加密一条TCP字节流而是把应用层的一条条数据帧分别封装进安全信封SecureEnvelope每一帧都独立做机密性和完整性保护。这样即使某一帧在链路传输中丢了或者乱序其他帧不受影响而一条断流的TCP流被切断重建后已经封装好的消息可以直接续传。下面这段是我们内部用来验证SecureEnvelope构造逻辑的伪代码实际产品里会有更复杂的头字段但核心流程就是这样import os from cryptography.hazmat.primitives.ciphers.aead import AESGCM def build_secure_envelope(payload: bytes, session_key: bytes, seq_no: int) - dict: nonce os.urandom(12) aad fsecom_v1|usr|{seq_no}.encode(utf-8) ct AESGCM(session_key).encrypt(nonce, payload, aad) return { version: 1.0, seq: seq_no, nonce: nonce.hex(), ciphertext: ct.hex() }每一帧的安全头里至少包含版本号、序列号、随机数、时间戳和校验字段。接收端收到后会先检查序列号是否大于已接收的最大序列号再检查时间戳是否在允许窗口内双重校验用来挡住重放攻击。这里有个细节允许的窗口不能太宽否则重放窗口变大也不能太窄否则链路抖动导致正常稍旧的数据帧被丢弃。我们在项目里常用的窗口是60秒链路时延在几百毫秒到1.2秒的范围内都够用。2.4 为什么不能直接把TLS搬过来这是每次技术评审都会被问的问题。TLS本身没有问题直接用于船岸通信也确实能解决加密传输但有几个实际阻碍。一是TLS握手对卫星链路不友好时延高时建立时间太长连接频繁重建会让后端安全设备压力很大。二是TLS保护的是连接不是消息一旦TCP流中断重连上层应用得自己做断点续传而船岸之间的网络本来就经常因为船舶跨区、切换卫星波束而断流把断点续传做好比塞一个标准TLS难得多。另外船上很多工控协议NMEA 0183、NMEA 2000、Modbus网关转出来的数据不都是IP封装的普通TLS不在每个工控协议上都能方便地包一层。SECOM的封装粒度在应用消息层正好适配这些非IP但在TCP/UDP/IP上转了一圈的数据。团队里如果已经把IEC 61162-460落地过再上SECOM会觉得工作量主要在适配层而不是安全机制本身。3. S-100 Part 15在船岸数据交换里的角色权限、分级与隐私3.1 S-100框架与Part15的关系如果说SECOM管的是数据怎么传才安全那么S-100 Part 15管的是哪些数据谁能看、谁能改。S-100是国际海道测量组织推出的通用海道数据模型底层基于ISO 19100地理信息标准目标是统一电子航海时代的各类数字化产品。大家比较熟知的电子海图产品规范S-101、潮流产品规范S-111、助航安全产品规范S-124都是S-100框架下的具体实例。Part 15是S-100框架中专门处理安全域的组成部分我记得在IHO的标准分册里这一部分主要定义数据交换环境的身份管理、访问控制、数据分级和隐私约束。说得直白一点如果一条电子海图更新消息用的是S-100标准的封装结构那Part 15就要决定哪些船可以更新哪些区域的图、无人船平台能不能读这次更新、更新包下载后能否被第三方转发。我们项目里最初只看重加解密觉得把通道加密就完事了做了几次合规评审后才发现数据访问控制比通道加密更复杂。通道加密解决的是恶意者拿不到明文但控制不了有合法通道的用户越权读数据。S-100 Part 15就是在数据层补齐这个缺口。3.2 谁有权限看哪一层数据在S-100 Part 15的视角下船岸数据交换的访问控制可以做到几个粒度数据集级、要素级和操作级。数据集级比较好理解比如某船队购买了北海区域的电子海图更新服务那就只能接收北海区域的更新包其他区域的数据包即使被推到船上也不能解密。要素级更细比如一张电子海图里有水深点、碍航物、航标、管线区等多种要素不同类型的用户可能被授权只看其中一部分港口引航员看到碍航物和航标但管线区数据只有码头管线运营方可见。操作级则是区分读取、写入、转发、删除这些动作避免有人从权限漏洞里把数据复制出去。为了把权限落地到工程我们在岸端定义了一套基于属性的访问控制策略船舶证书的属性标签里直接携带船舶类型、航行区域、服务订阅项等字段。S-100 Part 15对应的元数据模板里也预留了这些字段的映射位置数据封装时会把访问要求写进元数据船端安全网关在解密后还会再做一次本地策略校验。这样做的价值在于即使岸端策略中心被攻破单条数据到了船端还是有可能因为本地策略不匹配而无法落地。3.3 与SECOM的分工协同在完整方案里SECOM和S-100 Part 15是一条流水线上的不同环节。SECOM负责给每条消息做加密、认证、防重放确保消息在网络传输过程中不可见、不可改、不可冒充。S-100 Part 15负责在数据生产、封装、消费环节定义谁有资格触碰哪些内容并把这种定义映射到元数据和访问策略里。实际的数据流是岸端业务系统生产数据系统根据S-100 Part 15的规则打上数据分级和授权策略交给SECOM安全网关封装加密经过卫星/VDES/4G链路传输到船端船端安全网关解密后再调用本地的策略引擎验证授权只有通过的才交给应用系统。一旦某项授权过期哪怕数据已经下载到船端缓存里策略引擎也不会把它递交给海图软件。这种分工还有个额外的好处——审计。因为SECOM的每一帧都带序列号和身份信息S-100 Part 15定义了访问日志的记录字段两套东西合在一起后任意数据在什么时间被谁读取过、在哪个节点解密的全都可以追溯。这块对船队管理方的合规压力尤其重要。4. 船岸通信保护方案的工程骨架从标准到可落地的组件4.1 整体拓扑与信任边界方案落地时我们采用的是双网关加策略中心的拓扑。岸端一侧放岸基安全网关、密钥管理服务KMS和策略中心船端一侧放船载安全网关SEGW连接船内业务网络和外部通信设备中间是各种通信链路包括卫星、VDES和4G/5G。信任边界要划清楚船端业务网络ECDIS、机舱监控、VDR等内部默认不信任设备之间通信走IEC 61162-460船载安全网关对外只允许两条通道一是与岸端安全网关建立的加密会话二是与本地运维终端的管理通道管理通道也要求双向证书认证。岸端同样把云平台与数据服务划进一个安全区任何外部对数据接口的访问都必须经过岸基安全网关转发。有些团队画的拓扑图里船端安全网关后面就是船内网中间不加任何隔离这是不对的。网关应该处于一个带防火墙动作的隔离区只暴露必要的端口和服务比如NMEA 4000系列网关转发、海图更新接收端口其他一律拒绝路由层面禁止船内设备直接访问公网所有对外流量强制走安全隧道。4.2 船端安全网关设计与硬件要求船载网关的硬件选型我们踩过很多次坑。船上的供电环境不稳定、湿度高、振动大普通工控机放在集控室还能凑合但放在通信设备舱就得用满足DNV或船级社认证要求的工业设备。另外网关需要有硬件加密模块或者至少一个受保护的密钥存储区私钥不能只放在文件系统里。软件层面网关至少要有这几个功能模块链路抽象层把卫星、VDES、4G抽象成同一套接口、SECOM协议栈、本地策略引擎、日志记录模块、远程配置管理接口。链路抽象层是最容易被低估的因为在真实环境下四种链路不是一直同时可用切换时机要根据信号强度、费率、带宽策略综合判断而安全隧道又要在切换时尽量减少重建时间。4.3 岸端密钥中心和策略中心岸端KMS承担的职责包括证书签发与吊销、密钥轮换、会话密钥分发、密钥备份恢复。证书体系按层级做根CA离线存储只用于签发中间CA中间CA在线签发船端证书。我们项目里证书有效期设了365天密钥有效期90天到期的密钥在KMS里留历史版本用于解密旧数据新数据一律用新密钥加密。策略中心负责把S-100 Part 15的规则翻译成机器可执行的策略。策略模型建议用策略集的方式管理一个策略集对应一种数据产品海图更新、潮流预报、助航安全消息每艘船可以订阅多个策略集。策略的变更通过安全隧道下发网关收到后先验证签名再应用到本地不需要重启服务。4.4 配置和部署步骤要点我们整理过一份可以直接照着做的部署清单核心步骤如下规划信任域和数据分级先列出船岸之间所有数据流给每类数据定一个安全级别。建立证书体系初始化根CA和中间CA生成岸端网关证书和船端网关证书把证书和私钥写入受保护存储。部署岸端KMS和策略中心配置角色、船队、订阅策略集启动OCSP服务方便船端离线时也能快速校验证书吊销状态。部署船端网关安装SECOM协议栈、配置链路参数连接船内网络到隔离区用船端证书发起第一个加密会话。业务流量接入把需要保护的业务系统如海图更新下载、机舱数据回传发布到网关的虚拟端口上其余业务逐步迁移。验证与基线固化做一次完整链路测试记录各链路的加密隧道恢复时间、吞吐量、延迟把这些值存成基线数据。这套流程第一次做大概要一到两周后续船队批量部署时每艘新船只需要半天到一天因为岸端证书和策略都是批量生成脚本化处理的。5. 实测环节链路切换、攻击模拟与性能损耗5.1 测试环境怎么搭不少同事问我们用什么设备测的。我们在实验室里搭了一套半实物测试环境船端用一台加固网关接三个模拟通信模块分别模拟卫星链路通过一台网络损伤仪注入900ms时延和1%丢包、VDES链路通过SDR模拟器收发数据帧、4G链路常规以太网加流量整形。岸端用一台标准服务器跑KMS、策略中心和岸基网关。测试项目分成三大类功能测试、攻击模拟、性能评估。功能测试主要验证正常的加密会话建立、数据收发、链路切换后隧道恢复攻击模拟我们做了三种被动嗅探、伪造帧注入、重放攻击性能评估主要测端到端时延、吞吐损失和加解密CPU开销。5.2 三类攻击模拟结果被动嗅探的测试方法很直接在船端和岸端模拟器之间放一个旁路监听节点分别记录未保护状态和保护状态下的数据。结果是一眼可见的未保护时监听节点能直接还原NMEA信息消息和海图更新包的内容启用SECOM后抓到的只有密文没有密钥的情况下无法还原任何业务信息序列号和时间戳的规律也看不出业务规律。伪造帧注入我们做了两个场景。第一个场景直接往VDES频段里插入一段伪造的海图更新通知未保护状态下船端应用直接接收并弹窗提示有新更新包保护状态下被网关拒绝了理由是证书不匹配和签名校验失败。第二个场景更贴近实际攻击者先录一段合法船位报告然后在90秒后重放这同一条消息。未保护时后端平台会把这条过期船位当作新数据入库保护状态下因为序列号没有递增且时间戳超出窗口网关直接丢弃并生成一条告警。攻击类型未保护时效果保护后效果被动嗅探明文可还原业务内容仅密文无有效信息伪造数据注入船端误信并入库签名校验失败拒绝并告警重放攻击后端接收过期报文入库序列号/时间戳校验失败丢弃并告警5.3 性能损耗和实际交付数据大家最关心的还是性能。我们选了1MB的电子海图更新包作为测试样本在模拟卫星链路900ms时延、1%丢包下未保护时端到端完成时间约32秒启用SECOM保护后约35秒多出来的3秒主要是加密封装约0.8秒和重传机制变化约2秒。带宽方面SECOM头加上元数据大概增加12%~15%的包体积在这个量级下是可以接受的。加解密CPU开销在船端设备上也很关键。我们用的是一台低功耗工业主机CPU四核1.4GHzAES-256-GCM单流加解密吞吐在软件层能做到200Mbps以上远大于卫星链路和VDES的带宽上限。因此性能瓶颈通常不在加解密而在链路本身的时延和丢包。做过一次大文件传输50MB气象再分析数据保护状态耗时比未保护多约9%考虑到换来的必需的安全收益这个代价完全可以接受。链路切换测试中我们从VDES切到卫星、再切到4G记录安全隧道恢复时间。结果在2.8秒到9.6秒之间具体数字取决于链路切换时是否提前断流。如果网关的链路层能预判信道质量下降并在断流前发起切换恢复时间可以压到3秒以内如果链路直接硬断则需要差不多一个完整的安全上下文重建时间。6. 经验笔记密钥管理、兼容性与合规是最容易翻车的三个地方6.1 密钥和证书管理不少船东拿到方案后问的第一句话是密钥丢了怎么办。这个问题不是玩笑因为船上环境复杂硬件模块可能损坏、整船可能延期坞修、船员可能误格式化存储。我们在项目中强制约定每艘船至少有两份备份密钥一份放在岸端KMS的加密保险区一份由船东指定的技术负责人离线保存设备上只存当前有效密钥过期密钥在备份区留存至少两个轮换周期。证书吊销也必须做成自动化的船舶出售或转籍时通过KMS接口一键吊销并生成新的入网证书。我见过没做这个动作的船东旧船卖了半年岸端平台还在给它回传数据这是个典型的控制面漏洞。6.2 设备兼容性适配第二坑是不同厂商VDES设备的兼容性。VDES设备更新换代很快部分设备只实现了基本的数据帧收发不支持我们在帧头扩展的安全字段。碰到的办法是在船端网关做协议归一化对外仍然走标准VDES帧但在网关内部把所有帧统一转换成SECOM封装的消息再通过船内网络和岸端网关重建安全会话。这套适配层多花了我们三分之一工期但好处是以后换通信设备不用动上层应用。所以规划预算时别只盯着标准协议适配开发这块得有心理准备。6.3 合规与数据留存第三坑是数据留存和跨区域合规。船舶在公海、他国领海、港口附近时数据经过的中转节点可能出现在不同法域监管对日志留存和数据出境的要求不完全一致。我们的做法是分地存储船端保留原始数据日志岸端只接收脱敏后的聚合指标涉及敏感定位和航海计划的数据不出船端岸端需要明细时通过定向接口申请。这样既满足了船舶航行安全对数据完整性的要求也避免了把全部明细数据集中到一个位置带来的合规风险。6.4 最后说一个低成本自查技巧如果你暂时没有预算上全套设备有一个低成本自查我想分享在船端配一台带旁路镜像的交换机把去往卫星调制解调器的流量镜像出来抓包再用Wireshark分析有没有异常明文业务数据、有没有设备在直连公网IP。很多时候厂家默认配置会留一些直连端口就是因为没人去抓包看。先摸清现状再决定上不上安全网关方案思路会清晰很多。这个动作我们每次去船东现场都会做一次找到的异常数量比预想多不少。