2025年,某铁路局在网络安全攻防演练中发现了一个典型攻击路径:攻击者通过钓鱼邮件获取了一名CTC(调度集中系统)调度员的VPN凭据,使用该凭据接入铁路内部网络后,利用弱口令登录了CTC调度终端测试账号,模拟操作了3条线路的列车运行调整指令------虽然在真实环境中由于联锁逻辑校验未被实际执行,但CTC系统的操作日志显示:从认证服务器登录到测试账号操作的全过程,没有任何环节触发多因素认证或异常行为告警。
演练后一周,该铁路局完成了全部CTC调度终端的双因素认证加固和操作审计部署。
一、CTC调度系统的安全架构
CTC(Centralized Traffic Control)是铁路运输的"指挥大脑"------调度员通过CTC系统远程控制管辖范围内的列车运行、进路排列、运行图调整。根据《铁路信息系统安全保护规范》,CTC系统被定为安全保护等级三级。
1.1 CTC系统的核心子系统
| 子系统 | 功能 | 调度员交互 | 安全关键级 |
|---|---|---|---|
| 调度指挥子系统 | 运行图管理、列车计划调整 | 触摸屏+鼠标操作 | ★★★★★ |
| 进路控制子系统 | 自动/手动排列进路 | 一键进路/干预 | ★★★★★ |
| 列车跟踪子系统 | 列车位置实时显示 | 监视为主 | ★★★★ |
| 调度命令子系统 | 调度命令编制下达 | 键盘输入+电子签章 | ★★★★★ |
| 接口通信子系统 | CTC↔联锁↔TSRS(临时限速)通信 | 后台自动 | ★★★★★ |
| 运维管理子系统 | 系统配置、日志管理 | 工程师维护 | ★★★★ |
1.2 CTC系统的网络拓扑与安全域
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 铁路局 │ │ 国铁集团 │ │ 其他路局 │
│ 调度中心 │←─→│ 调度中心 │←─→│ 调度中心 │
└─────┬────┘ └──────────┘ └──────────┘
│ 铁路专网(MSTP/OTN)
┌─────┴────────────────────────────────────┐
│ 调度中心(安全域1) │
│ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │CTC │ │CTC │ │CTC │ ... │
│ │调度台1│ │调度台2│ │调度台3│ │
│ └──┬───┘ └──┬───┘ └──┬───┘ │
│ │ │ │ │
│ ┌──┴────────┴────────┴────────────┐ │
│ │ CTC应用服务器(冗余) │ │
│ └─────────────────────────────────┘ │
│ ┌─────────────────────────────────┐ │
│ │ 数据库服务器(RAC集群+TDE加密) │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
│ 铁路专网(MSTP/OTN)
┌─────┴────────────────────────────────────┐
│ 车站(安全域2) │
│ ┌──────────┐ ┌──────────┐ │
│ │ 车站CTC │ │ 联锁 │ ... │
│ │ 分机 │ │ 系统 │ │
│ └──────────┘ └──────────┘ │
└─────────────────────────────────────────┘
CTC系统的安全防护重点是调度员→CTC调度台→通信接口这一链路------调度员的身份认证是进入系统的第一道门,也是最重要的防线。
二、调度员双因素认证的实现
2.1 认证流程设计
铁路CTC调度员的登录认证采用"UKEY+密码+运行图验证码"三因素组合:
调度员交接班登录流程:
┌──────────────────┐
│ CTC调度台终端 │
│ (触摸屏+鼠标) │
└────────┬─────────┘
│ 插入UKEY
▼
┌──────────────────┐
│ UKEY读取 │
│ 序列号+证书链 │
└────────┬─────────┘
│ 发送到认证服务器
▼
┌──────────────────┐
│ 认证服务器 │
│ ┌────────────┐ │
│ │验证UKEY证书 │ │
│ │+密码+PIN码 │ │
│ └────────────┘ │
│ ┌────────────┐ │
│ │验证权限角色 │ │
│ │(调度员/助调)│ │
│ └────────────┘ │
│ ┌────────────┐ │
│ │生成运行图 │ │
│ │验证码 │ │
│ └────────────┘ │
└────────┬─────────┘
│ 认证通过
▼
┌──────────────────┐
│ 调度台解锁 │
│ 显示当日管辖区段│
│ 运行图+交接班确认│
└──────────────────┘
统一身份认证平台在铁路场景中承担上述认证核心节点角色,基于OAuth 2.0/OIDC协议与CTC系统对接,支持UKEY+密码+OTP多因子认证和RBAC权限管控。
2.2 调度命令的电子签章
调度员下达的每一条调度命令都需要数字签章,确保命令的真实性和不可抵赖性:
c
// 伪代码:调度命令电子签章
typedef struct {
uint8_t order_id[16]; // 命令编号(UUID)
uint8_t dispatcher_id[8]; // 调度员工号
uint8_t station_code[4]; // 车站代码
uint8_t track_section[8]; // 区段标识
uint8_t command_type; // 命令类型(0x01=进路, 0x02=限速...)
uint8_t command_params[256]; // 命令参数
uint64_t timestamp; // 命令时间
uint8_t signer_cert[512]; // 签章证书(UKEY内)
uint8_t signature[72]; // SM2签章
} dispatch_order_t;
// 调度命令的签章验证(接收方=车站CTC分机+联锁系统)
bool verify_dispatch_order(dispatch_order_t *order) {
// Step 1: 验证调度员工号是否在当班名单中
if (!check_dispatcher_on_duty(order->dispatcher_id)) {
return false;
}
// Step 2: 验证签章证书链(由铁路CA签发)
if (!verify_cert_chain(order->signer_cert)) {
return false;
}
// Step 3: 验证命令时间窗口(距离命令时间±30秒内有效)
uint64_t now = get_system_timestamp();
if (abs(now - order->timestamp) > 30000) {
return false; // 防重放攻击
}
// Step 4: 验证命令的连续性(命令编号单调递增)
uint8_t last_order_id[16];
get_last_order_id(last_order_id); // 从联锁系统缓存获取
if (memcmp(order->order_id, last_order_id, 16) <= 0) {
return false; // 防重发攻击
}
// Step 5: SM2验签
uint8_t to_verify[512];
build_order_tbs(order, to_verify); // 待签数据 = 命令体(不含签名)
return sm2_verify(to_verify, order->signature,
get_pubkey_from_cert(order->signer_cert));
}
调度命令从调度台发出到车站执行,需要经过调度台签章→认证服务器验证→车站CTC验签→联锁系统确认的四级验证链路。任意一级无法验证签章,命令不会被执行。
三、调度数据的安全保护
3.1 运行图数据的加密存储
铁路运行图是CTC系统的核心数据资产------包含了每日数万条列车运行计划、股道占用信息、设备状态数据。运行图数据库的安全保护直接关系到调度运行的安全:
| 数据类型 | 存储方式 | 加密要求 | 备份策略 |
|---|---|---|---|
| 基本运行图(年度版) | MySQL集群 + 透明数据加密 | SM4-CBC表空间加密 | 本地NAS+异地各1份 |
| 日班计划(每日生成) | MySQL + TDE加密 | SM4-CBC表空间加密 | 日备份×7天循环 |
| 调度命令日志 | MongoDB + 透明数据加密 | SM4-GCM加密+SM3签链 | 年备份(留存≥3年) |
| 交接班记录 | MySQL + TDE加密 | SM4加密 | 月备份×12个月 |
3.2 日志审计与事件追溯
日常运营中,每个调度班次(通常8小时一班)会产生大约500-2000条操作日志。当发生安全事故或运营异常时,这些日志是定位问题的唯一依据:
┌─────────────────────────────────────────────────────────────┐
│ 日志签名链(从第一条日志到最后一条,SM3链式不可篡改) │
├─────────────────────────────────────────────────────────────┤
│ 日志#1: [hash_0] → SM3("调度员A_登录") = hash_1 │
│ 日志#2: [hash_1] → SM3("调度员A_查看运行图") = hash_2 │
│ 日志#3: [hash_2] → SM3("调度员A_排进路_XX站") = hash_3 │
│ 日志#4: [hash_3] → SM3("调度员A_下命令_限速45km/h") = h4 │
│ ... │
│ 日志#N: [hash_{N-1}] → SM3("调度员B_交接班确认") = hash_N │
└─────────────────────────────────────────────────────────────┘
每条日志的hash字段包含了上一条日志的hash值------篡改任意一条日志都会导致后续所有日志的hash链断裂。
四、等保三级合规完全映射
依据《铁路信息系统安全保护规范》和GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》第三级:
| 等保三级要求 | CTC系统落实措施 | 覆盖产品 |
|---|---|---|
| 身份鉴别 | 调度员/助理调度员/维护工程师全部使用UKEY+密码双因素认证登录 | 认证服务器+UKEY |
| 访问控制 | RBAC三权分离:调度员(运行业务)/维护工程师(系统维护)/审计员(日志查看) | ASP |
| 安全审计 | 全量操作日志+SM3签名链防篡改,留存≥180天 | 密钥管理系统审计模块 |
| 剩余信息保护 | 调度台注销/退出时自动清除内存中的运行图缓存和登录令牌 | 认证平台会话管理 |
| 通信加密 | CTC↔联锁/TSRS通信使用TLS 1.3+SM2/SM4-GCM | KMS |
| 数据加密存储 | 运行图数据库TDE透明加密 | TDE+密钥管理系统 |
| 密钥管理 | 三级密钥体系+HSM硬件保护,自动轮换≤90天 | KSP+HSM |
五、实施路线与优先级
针对铁路CTC系统的安全加固,建议按以下三个阶段推进:
第一阶段:身份认证加固(第1-3周)
| 动作 | 内容 | 周期 |
|---|---|---|
| UKEY发放 | 为全线调度员和维护工程师配发个人UKEY | 1周 |
| 认证平台部署 | 在铁路局调度中心部署统一身份认证平台 | 1周 |
| CTC对接 | CTC系统通过OAuth 2.0接入认证平台 | 1周 |
| 调度命令签章 | 启用调度命令的UKEY数字签章 | 1周 |
第二阶段:数据安全加固(第4-8周)
| 动作 | 内容 | 周期 |
|---|---|---|
| 运行图数据库TDE加密 | 部署TDE客户端,启用数据库透明加密 | 1周 |
| 数据签名链部署 | 启用操作日志SM3签名链 | 1周 |
| 调度命令传输加密 | 调度中心与联锁系统间通信切换至TLS 1.3+SM2/SM4 | 2周 |
第三阶段:密钥管理体系建设(第9-12周)
| 动作 | 内容 | 周期 |
|---|---|---|
| 密钥管理系统部署 | 部署密钥管理系统,建立三级密钥体系 | 2周 |
| HSM集成 | 集成HSM硬件保护根密钥 | 1周 |
| 密钥自动轮换 | 配置自动轮换策略(≤90天) | 1周 |
Q: CTC系统已经在运行了,加装UKEY认证会影响调度员的日常工作效率吗?
A: 登录阶段:从原来的"输入密码→进入系统"变为"插入UKEY→输入PIN码→进入系统",新增耗时约3-5秒。调度员一个班次通常只登录2-4次(交接班+短暂离岗回岗),全天的认证耗时增加不超过20秒。对于调度员最关心的"紧急排列进路"操作,只要登录后保持在操作状态,不需要重复认证。实际运行数据证明:UKEY双因素认证对调度效率的影响可以忽略不计。
Q: 调度命令从下达到被执行,签名验证过程需要多长时间?
A: 实测数据:SM2签名(调度台,在UKEY内完成)约200ms + 网络传输(铁路专网)约10ms + SM2验签(车站CTC分机)约50ms = 单次调度命令签验总耗时约260ms。即使算上四级验证(调度台→CTC服务器→车站CTC→联锁),总耗时也在1秒以内,远低于铁路调度对命令传输的秒级时延要求。
Q: CTC系统数据库加密后,日常的调度查询性能会影响吗?
A: TDE透明加密的性能损耗经严格测试约为3%。以单日100万条运行图记录查询为例:加密前查询平均响应时间120ms,加密后125ms(增加5ms),对调度员的日常操作无感知。核心原因在于TDE的加密发生在数据落盘层,不拦截SQL查询路径,索引查询仍然在明文索引上进行。