配电自动化FTU与主站的认证流程设计:SN、IMEI、IMSI与证书如何建立绑定
配电自动化终端(FTU)与主站之间走 IEC 60870-5-104 规约,而 104 协议本身没有任何认证字段——身份认证全部靠外加的安全层。这一层里最容易想错的问题就是:证书 SN、FTU 设备 SN、通信模块 IMEI、SIM 卡 IMSI、终端地址、主站设备号……这些标识之间,到底要建立多少条绑定关系?
一、先想清楚:标识之间不需要两两绑定
如果让这些标识两两建立绑定关系,会形成 N(N−1)/2 条关系网,而且每条关系的可信度取决于其中最弱的一环。这种思路在工程上必然失败,因为:
- SN 可以贴牌、可以复刻;
- IMEI 可以改写(模块刷机即可);
- IMSI 可以拔卡换机——卡是合法的,设备未必是台账里那台。
它们都只是”名称”,不是”凭据”。整个系统中唯一真正不可伪造的凭据只有一样: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 | 证书链校验 |
注意 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 加密认证一体);
- 每连接:断链重连必须重新完整认证,不允许续用旧会话;
- 定期:证书链/吊销状态重新核对,会话密钥按小时或按报文条数重协商。
换通信模组或整台终端时,必须执行三步原子操作,顺序不能反:
- 吊销旧证书(上 CRL,全网秒级生效);
- 补签新证书(新模组信息写入);
- 更新网关白名单(新 SN / IMEI / IMSI)。
只改台账不吊销证书是最常见的现场事故——旧私钥若已泄露,改台账等于没改。
七、容易踩的坑
- 5G-AKA / ONU 注册只证明”卡/光路合法”,不证明”这台 FTU 是台账里那台”——入网认证是前提,不是终点,证书认证不可省。
- 必须双向,单向等于没做——只认证终端方向,挡不住伪造主站的遥控下发。
- 一机一证,别刷同一套密钥——同一份证书批量烧进几百台终端,一台被拆解提取,全网失守。
- 时钟依赖要谨慎——依赖时间戳防重放的方案要求 FTU 时钟同步(SNTP/北斗),时钟漂移过大会大量误拒或打开重放窗口。可优先选用基于挑战序号(CSQ)的机制(IEC 62351-5 思路),不依赖时钟同步。
- 跨厂商互操作是隐性成本——IEC 62351-5/6 落地比例低,认证扩展多按厂商私有实现,招标文件里必须写明认证机制与互通要求。
小结
整个认证体系的逻辑就三句话:
- 绑定发生在签发时:CA 把所有标识写进同一张证书,星型结构,不做两两绑定;
- 认证发生在握手时:一次双向 SM2 证书握手 + 持钥证明,验证”私钥归属”这一个本质问题;
- 校验贯穿运行期:逐帧 HMAC 防篡改防重放,白名单持续勾稽,换设备三步原子操作。
标识是名称,私钥是凭据,证书是绑定的载体——把这三者的职责分清,方案就不会走形。