配电自动化终端(FTU)与主站之间走 IEC 60870-5-104 规约,而 104 协议本身没有任何认证字段——身份认证全部靠外加的安全层。这一层里最容易想错的问题就是:证书 SN、FTU 设备 SN、通信模块 IMEI、SIM 卡 IMSI、终端地址、主站设备号……这些标识之间,到底要建立多少条绑定关系?

一、先想清楚:标识之间不需要两两绑定

如果让这些标识两两建立绑定关系,会形成 N(N−1)/2 条关系网,而且每条关系的可信度取决于其中最弱的一环。这种思路在工程上必然失败,因为:

  • SN 可以贴牌、可以复刻;
  • IMEI 可以改写(模块刷机即可);
  • IMSI 可以拔卡换机——卡是合法的,设备未必是台账里那台。

它们都只是”名称”,不是”凭据”。整个系统中唯一真正不可伪造的凭据只有一样:SM2 私钥——在安全芯片内生成、不可导出,私钥不出芯片。

正确的形态是星型结构,而不是网状结构:

✗ 错误:两两绑定 → N(N−1)/2 条关系网 证书SN FTU SN IMEI IMSI 终端地址 主站号 ✓ 正确:CA 一次性写进同一张证书 → 星型绑定 SM2 证书(唯一绑定中枢,私钥是唯一凭据)
标识绑定的星型中枢结构

一句话概括:CA 在签发时把所有标识一次性写进同一张 SM2 证书(这是绑定动作)→ 双向握手验证私钥归属(这是认证动作)→ 逐项比对证书值与链路观察值、白名单值(这是校验动作)。

二、四层标识,各自的可信度完全不同

层级标识防伪造能力在认证中扮演的角色
密码学凭据SM2 私钥(安全芯片内)强(不出芯片)唯一凭据,一切认证的根
证书标识证书 SN / 序列号中(CA 背书)吊销与白名单的索引键
设备标识FTU 设备 SN、模组 IMEI弱(可贴牌/改写)台账核对项,写进证书后获得 CA 背书
链路标识IMSI、终端 104 地址、主站源发地址弱(可换卡/可伪造)运行期一致性检查项
四层标识的可信度与角色分工

关键理解:弱标识本身不可信,但写进证书之后,就获得了 CA 背书——终端如果谎报 IMEI,与证书值冲突即被拒。绑定不是让标识之间互相证明,而是让它们都接受同一把私钥的管辖。

三、证书签发:绑定动作发生在投运之前

FTU 在出厂/投运时,通过本地维护口向安全芯片注入证书申请信息,CA 核验台账后签发。证书关键字段与标识的对应关系:

证书字段写入的标识与谁核对
Subject SN(证书序列号)全网唯一,一机一证网关白名单(证书 SN ↔ 白名单 SN)
Subject 通用名 / 设备标识扩展FTU 设备 SN设备台账
Subject 扩展(模组型号+硬件版本)通信模组信息模组台账 + 运营商 IMEISV 对账
Subject IP / 终端地址扩展104 协议终端地址(SA)网关白名单(证书地址 ↔ 白名单地址)
Issuer电网行业 CA证书链校验
SM2 证书字段与标识的对应

注意 IMEI 的取舍:完整 IMEI 不写进证书。因为换通信模组在现场很常见,写进证书就意味着换模组必须重签证书,运维成本极高。折中方案是:证书放模组型号+硬件版本,完整 IMEI 进网关白名单,再利用运营商侧的 IMEISV 上报做外部对账。

四、认证动作:一次双向握手,验证全部

FTU 上电后与安全接入网关做一次国密 SSL(GM/T 0024)双向证书握手,此后所有 104 报文装在加密隧道里。网关侧在握手过程中对终端证书做八项校验:

#校验项性质
1证书链:用根 CA 公钥验签终端证书密码学校验
(验身份真实性)
2有效期:NotBefore / NotAfter
3吊销状态:查 CRL / OCSP
4持钥证明:挑战-应答,验对方确实持有私钥
5证书 SN ∈ 白名单(且不在吊销黑名单)绑定校验
(验台账一致性)
6证书内终端地址 ↔ 白名单地址 ↔ 链路实际地址
7证书内模组信息 ↔ 终端上报 IMEI
8链路层 IMSI ∈ 白名单(取自核心网/网关观测)
网关侧八项校验:前四项验真,后四项验绑定

其中第 4 项(持钥证明)是本质:前面七项查的都是”纸面信息”,只有这一步验证对方真的持有那把不可导出的私钥。其余七项是把纸面信息互相勾稽,防止”合法的证书 + 错误的设备”组合。

五、主站侧:主站设备号用 104 标准字段承载

反向的方向同样要认证——最危险的攻击恰恰是伪造主站向 FTU 下发遥控。主站设备号不需要自造字段,IEC 60870-5-104 的传送原因(COT)第二个字节本来就是源发地址(Originator Address, OA),标准定义为”谁发起的这条命令”。

FTU 侧的校验就一行逻辑:

1
if (下行报文.COT.源发地址 ∉ 授权主站列表) then 拒绝 + 告警

再叠加主站侧 SM2 证书的握手认证,就构成双向:通道层双向证书(GM/T 0024)解决”你是谁”,应用层 OA 校验解决”这条命令是不是被内部篡改或越权代发”。

六、运行期校验与换设备的原子操作

握手只发生一次,绑定校验在运行期还要持续做:

  • 每帧:SM3-HMAC + 序号/时间戳防重放(或 SM4-GCM 加密认证一体);
  • 每连接:断链重连必须重新完整认证,不允许续用旧会话;
  • 定期:证书链/吊销状态重新核对,会话密钥按小时或按报文条数重协商。

换通信模组或整台终端时,必须执行三步原子操作,顺序不能反:

  1. 吊销旧证书(上 CRL,全网秒级生效);
  2. 补签新证书(新模组信息写入);
  3. 更新网关白名单(新 SN / IMEI / IMSI)。

只改台账不吊销证书是最常见的现场事故——旧私钥若已泄露,改台账等于没改。

七、容易踩的坑

  1. 5G-AKA / ONU 注册只证明”卡/光路合法”,不证明”这台 FTU 是台账里那台”——入网认证是前提,不是终点,证书认证不可省。
  2. 必须双向,单向等于没做——只认证终端方向,挡不住伪造主站的遥控下发。
  3. 一机一证,别刷同一套密钥——同一份证书批量烧进几百台终端,一台被拆解提取,全网失守。
  4. 时钟依赖要谨慎——依赖时间戳防重放的方案要求 FTU 时钟同步(SNTP/北斗),时钟漂移过大会大量误拒或打开重放窗口。可优先选用基于挑战序号(CSQ)的机制(IEC 62351-5 思路),不依赖时钟同步。
  5. 跨厂商互操作是隐性成本——IEC 62351-5/6 落地比例低,认证扩展多按厂商私有实现,招标文件里必须写明认证机制与互通要求。

小结

整个认证体系的逻辑就三句话:

  • 绑定发生在签发时:CA 把所有标识写进同一张证书,星型结构,不做两两绑定;
  • 认证发生在握手时:一次双向 SM2 证书握手 + 持钥证明,验证”私钥归属”这一个本质问题;
  • 校验贯穿运行期:逐帧 HMAC 防篡改防重放,白名单持续勾稽,换设备三步原子操作。

标识是名称,私钥是凭据,证书是绑定的载体——把这三者的职责分清,方案就不会走形。