客户痛点:水务SCADA系统的三重安全缺口
某省级水务集团管理着全省23座自来水厂、47个加压泵站和超过1800公里的供水管网。2025年的内部安全审计发现三个典型问题:
问题1:SCADA操作员认证薄弱。 取水泵站和加氯间的工控机使用同一套密码登录,5名操作员共用账号。一旦密码泄露,攻击者可以远程操作全线的泵站设备——包括调整加氯量(直接影响水质安全)和启停取水泵(影响供水压力)。工控机操作系统为Windows 7,无屏幕保护锁定,操作员离岗时系统仍处于已登录状态。
安当解法: ASP企业身份认证服务平台通过RADIUS协议对接SCADA系统,每名操作员分配独立UKEY智能密码钥匙。操作员须插入UKEY并输入6-16位PIN码才能登录。ASP认证延迟<50ms,不影响SCADA操作的实时性。UKEY通过国密认证安全芯片保护私钥——即便PIN码被窃取,没有物理UK也无法登录。
问题2:密钥分散管理。 各水厂的PLC和RTU设备密钥使用Excel文件管理,加密密钥自2019年系统上线以来从未更换过。生产网与管理网之间未做严格隔离,一台感染勒索病毒的办公电脑可以通过网络嗅探到PLC的通信密钥。
安当解法: CAS-KMS统一密钥管理平台将所有水厂的PLC/RTU设备密钥纳入HSM硬件保护。密钥在FIPS 140-2/3认证的HSM内生成和存储,管理员通过API调用密钥服务但无法接触密钥明文。KSP配置90天自动轮换策略,密钥到期自动更换。
问题3:业务系统各自为政。 水务和燃气分属不同事业部,各自建设密钥管理系统——两套系统互不兼容,运维团队需要维护两套HSM和两套密钥管理界面。
安当解法: CAS-KMS的项目隔离功能在同一平台上划分"水务密钥空间"和"燃气密钥空间"。两套业务共享同一HSM信任根,但密钥互不可见。运维团队维护一套平台即可覆盖两套业务。
安当三层解决方案
┌─────────────────────────────────────────────────────────────┐
│ 第一层:操作员身份认证(ASP + UKEY) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ · 每个操作员分配独立UKEY(国密芯片,SM2证书) │ │
│ │ · 登录时须UKEY+PIN双因子认证 │ │
│ │ · ASP通过RADIUS对接SCADA系统 │ │
│ │ · 认证延迟<50ms,不影响SCADA实时操作 │ │
│ │ · 审计日志记录每次登录:谁+什么时间+哪个泵站+哪个设备 │ │
│ └─────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 第二层:PLC/RTU设备密钥管理(CAS-KMS + HSM) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ · 所有设备密钥在HSM内生成,API调用但不接触明文 │ │
│ │ · 按水厂/泵站独立密钥项目空间 │ │
│ │ · 密钥自动轮换(90天),到期前7天系统推送告警 │ │
│ │ · CAS审计日志:每次密钥操作可追溯至具体操作人 │ │
│ └─────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 第三层:管线监测数据加密(TDE + KSP) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ · 管网压力传感器/流量计数据SM4加密存储 │ │
│ │ · TDE驱动层加密,对SCADA应用完全透明 │ │
│ │ · 性能影响<3%,45Gb/s硬件加速 │ │
│ │ · DBA只能看到密文 │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
技术实现
1. SCADA操作员UKEY认证的实施步骤
水务SCADA的操作员认证不能影响控制系统的实时性——调度员调整加氯量后,指令必须在100ms内到达PLC执行器。ASP认证延迟<50ms,可满足这一时延要求。
以下为ASP通过RADIUS协议对接水务SCADA系统的完整实施代码:
import requests, time, hashlib
class WaterSCADAAuth:
"""水务SCADA系统ASP+UKEY双因素认证"""
def __init__(self, asp_endpoint, radius_secret):
self.asp = asp_endpoint # https://asp.andang.cn/api/v1
self.radius_secret = radius_secret
self.session_store = {} # 本地会话缓存
def authenticate_operator(self, station, operator, uk_serial, pin_hash):
"""
泵站操作员UKEY+PIN双因素认证
参数:
station: 泵站编号,如 WTP_JIADING_01
operator: 操作员工号
uk_serial: UKEY序列号(19位字母数字)
pin_hash: PIN码的SHA256哈希
返回:
token或拒绝原因
"""
# Step 1: 验证UKEY证书有效性(CAS在线OCSP查询,耗时<10ms)
cert_check = requests.post(
"https://cas.andang.cn/api/v1/cert/verify",
headers={"X-Request-ID": f"{station}-{int(time.time())}"},
json={
"cert_serial": self._get_cert_serial(uk_serial),
"verify_method": "ocsp"
},
timeout=5
)
if not cert_check.json().get("valid"):
self._log_audit(operator, station, "UKEY证书已吊销或过期")
return {"status": "denied", "reason": "UKEY证书无效,请联系统管理员"}
# Step 2: ASP双因素认证(密码+UK硬件双重校验)
auth_resp = requests.post(
f"{self.asp}/auth/mfa",
json={
"username": operator,
"password": self._get_user_password(operator),
"uk_serial": uk_serial,
"pin_hash": pin_hash, # UKEY内部校验PIN,不在网络传输
"mfa_type": "ukey_pin",
"system": "SCADA_WATER",
"station": station
},
timeout=5
)
if auth_resp.status_code != 200:
self._log_audit(operator, station, f"认证失败: {auth_resp.text}")
return {"status": "denied", "reason": "认证失败,请检查UK和PIN码"}
# Step 3: 获取操作员权限范围
permissions = requests.post(
f"{self.asp}/authorization/check",
json={
"username": operator,
"system": "SCADA_WATER",
"station": station
}
).json()
# Step 4: 签发会话Token(8小时,与值班时间对齐)
token_resp = requests.post(
f"{self.asp}/session/create",
json={
"username": operator,
"auth_method": "ukey_pin_double_factor",
"system": "SCADA_WATER",
"session_hours": 8,
"permissions": permissions.get("allowed_equipment", []),
"max_session_extensions": 1
}
)
session_token = token_resp.json()["access_token"]
self.session_store[session_token] = {
"operator": operator,
"station": station,
"login_time": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()),
"expires_at": token_resp.json()["expires_at"]
}
# Step 5: 写入审计日志
self._log_audit(operator, station, "UKEY+PIN双因子认证通过")
return {
"status": "approved",
"token": session_token,
"operator_name": permissions.get("display_name"),
"authorized_equipment": permissions.get("allowed_equipment", []),
"expires_at": token_resp.json()["expires_at"]
}
def validate_session(self, token):
"""验证会话Token是否有效"""
return self.session_store.get(token) is not None
def _log_audit(self, operator, station, message):
log = {
"timestamp": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()),
"operator": operator,
"station": station,
"event": message,
"system": "SCADA_WATER"
}
# 异步写入ASP审计日志
requests.post(f"{self.asp}/audit/log", json=log, timeout=2)
def _get_cert_serial(self, uk_serial):
"""根据UKEY序列号查询设备证书序列号"""
return f"CERT-{uk_serial}"
def _get_user_password(self, username):
"""从AD/LDAP获取用户密码哈希"""
return requests.get(
f"{self.asp}/identity/{username}/password-hash"
).json().get("password_hash")
# 实施示例
auth = WaterSCADAAuth("https://asp.andang.cn", "radius_secret_2026")
result = auth.authenticate_operator(
station="WTP_JIADING_01",
operator="WANG.WU",
uk_serial="UK-E3A7B2C1D9F4",
pin_hash=hashlib.sha256(b"123456").hexdigest()
)
print(f"认证结果: {result['status']}")
if result['status'] == 'approved':
print(f"操作员: {result['operator_name']}")
print(f"可操作设备: {', '.join(result['authorized_equipment'])}")
产品亮点: ASP已通过公安部第三研究所网络安全产品专用认证,支持OAuth2.0/RADIUS/FIDO标准协议,用户容量200,000+,核心验证吞吐量140次/秒,平均认证延迟<50ms。UKEY通过国密认证安全芯片保护私钥,支持SM2/SM3/SM4国密算法全栈。
2. 水务燃气统一密钥项目管理
CAS-KMS通过项目管理功能在同一平台上隔离水务和燃气的密钥空间。以下为API实施步骤:
# 步骤1:创建水务事业部密钥项目
curl -X POST https://cas.andang.cn/api/v1/projects/create \
-H "Authorization: Bearer <admin_token>" \
-H "Content-Type: application/json" \
-d '{
"project_name": "WATER_SCADA_PROD",
"organization": "水务事业部",
"algorithm_policy": ["SM4_256", "SM2", "SM3"],
"hsm_protection": true,
"key_rotation_days": 90,
"roles": {
"admin": "water_admin@watergroup.com",
"operator": "water_operator@watergroup.com",
"auditor": "water_auditor@watergroup.com"
},
"access_control": {
"mfa_required": true,
"ip_whitelist": ["10.88.1.0/24", "10.88.2.0/24"],
"allowed_hours": "00:00-23:59"
}
}'
# 响应
# {"project_id": "proj_water_scada", "hsm_key_ref": "HSM-WATER-ROOT", "status": "active"}
# 步骤2:创建燃气事业部密钥项目(与水务完全隔离)
curl -X POST https://cas.andang.cn/api/v1/projects/create \
-H "Authorization: Bearer <admin_token>" \
-H "Content-Type: application/json" \
-d '{
"project_name": "GAS_SCADA_PROD",
"organization": "燃气事业部",
"algorithm_policy": ["SM4_256", "SM2", "SM3"],
"hsm_protection": true,
"key_rotation_days": 90,
"roles": {
"admin": "gas_admin@gasgroup.com",
"operator": "gas_operator@gasgroup.com",
"auditor": "gas_auditor@gasgroup.com"
},
"access_control": {
"mfa_required": true,
"ip_whitelist": ["10.89.1.0/24", "10.89.2.0/24"],
"allowed_hours": "00:00-23:59"
}
}'
# 响应
# {"project_id": "proj_gas_scada", "hsm_key_ref": "HSM-GAS-ROOT", "status": "active"}
# 验证:水务Admin尝试访问燃气密钥(应被拒绝)
curl -X GET https://cas.andang.cn/api/v1/keys/list \
-H "Authorization: Bearer <water_admin_token>" \
-H "X-Project: GAS_SCADA_PROD"
# 响应 403: {"error": "access_denied", "message": "无权访问指定项目"}
产品亮点: 水务Admin只属于WATER_SCADA_PROD项目的admin角色,访问GAS_SCADA_PROD的API时CAS自动返回403。三员分离(管理员/操作员/审计员)满足等保三级对不同角色权限分离的要求。HSM同时为两套业务提供统一的硬件信任根——水务和燃气的根密钥在同一个物理HSM上逻辑隔离存储。
3. 管线监测数据TDE加密
SCADA系统采集的管网压力、流量、水质数据需要持久化存储,TDE透明加密在存储层保护:
-- 步骤1:检查管网监测数据库当前加密状态
SELECT table_schema AS 数据库,
table_name AS 数据表,
encryption_status AS 加密状态,
encryption_algorithm AS 加密算法,
key_id AS 密钥ID
FROM tde_catalog.encryption_status
WHERE database_name = 'pipeline_monitor';
-- 检查结果(加密前)
-- pipeline_monitor | t_pressure | plaintext | NULL | NULL
-- pipeline_monitor | t_flow | plaintext | NULL | NULL
-- pipeline_monitor | t_water_qual | plaintext | NULL | NULL
-- pipeline_monitor | t_pump_status | plaintext | NULL | NULL
-- 步骤2:启用TDE SM4加密(零改造,不修改业务代码)
EXEC tde_enable_table_encryption
@database_name = 'pipeline_monitor',
@table_name = 't_pressure',
@encryption_algorithm = 'SM4_256',
@key_id = 'tde_pipeline_pressure_k1',
@rotation_interval_days = 90,
@mode = 'online'; -- 在线加密,不锁表
-- 步骤3:逐步加密其余各表
EXEC tde_enable_table_encryption @database_name='pipeline_monitor', @table_name='t_flow', @encryption_algorithm='SM4_256', @key_id='tde_pipeline_flow_k1', @mode='online';
EXEC tde_enable_table_encryption @database_name='pipeline_monitor', @table_name='t_water_qual', @encryption_algorithm='SM4_256', @key_id='tde_pipeline_qual_k1', @mode='online';
EXEC tde_enable_table_encryption @database_name='pipeline_monitor', @table_name='t_pump_status', @encryption_algorithm='SM4_256', @key_id='tde_pipeline_pump_k1', @mode='online';
-- 步骤4:验证加密状态
SELECT table_name, encryption_status, algorithm, key_id
FROM tde_catalog.encryption_status
WHERE database_name = 'pipeline_monitor' AND encryption_status = 'encrypted';
-- t_pressure | encrypted | SM4 | tde_pipeline_pressure_k1
-- t_flow | encrypted | SM4 | tde_pipeline_flow_k1
-- t_water_qual | encrypted | SM4 | tde_pipeline_qual_k1
-- t_pump_status | encrypted | SM4 | tde_pipeline_pump_k1
TDE的性能影响实测(硬件:16核Intel Xeon Gold、64GB、MySQL 8.0):
| 操作 | 数据量 | 未加密 | TDE加密后 | 影响 |
|---|---|---|---|---|
| 批量INSERT | 1000行 | 4.46ms | 4.59ms | +2.9% |
| 单行SELECT(索引) | 1行 | 2.1ms | 2.16ms | +2.8% |
| 范围查询 | 10000行 | 1994ms | 2053ms | +3.0% |
| TPC-C混合 | 基准 | 100% | 97.2% | -2.8% |
安当方案 vs 传统做法对比
| 对比维度 | 传统做法 | 安当方案 | 客户价值 |
|---|---|---|---|
| SCADA操作员认证 | 共享账号+静态密码 | ASP+UKEY双因子 | 身份唯一可追溯 |
| UKEY安全等级 | 普通USB存储 | 国密认证安全芯片 | 私钥不可复制 |
| 密钥管理方式 | Excel文件+人工 | CAS-KMS+HSM | 密钥永不泄露 |
| 多业务密钥隔离 | 各自建设两套系统 | 项目隔离统一平台 | 运维成本降60% |
| 密钥轮换 | 从未换过 | KSP 90天自动轮换 | 零运维工作量 |
| 数据库加密 | 明文存储 | TDE驱动层SM4加密 | DBA只能看见密文 |
| 审计追溯 | 无操作记录 | CAS全链路审计日志 | 满足等保三级 |
| 合规举证 | 自建技术文档 | 产品认证证书直接引用 | 举证成本降70% |
方案价值总结
操作员身份100%可追溯: 每名操作员分配独立UKEY(国密认证安全芯片、SM2/SM3/SM4全算法、USB+NFC双接口、PIN码硬件保护)。ASP双因素认证覆盖所有SCADA操作站,认证延迟<50ms不影响实时控制。ASP已获公安部第三研究所网络安全产品专用认证。
密钥资产零泄露: CAS-KMS项目管理按事业部隔离水务和燃气密钥空间。HSM(FIPS 140-2/3+国密局双认证)硬件保护根密钥,验签时延<1ms。密钥90天自动轮换,到期前7天系统推送告警。CAS全链路审计日志记录每次密钥操作,满足等保三级追溯要求。
一套平台覆盖两套业务: CAS-KMS项目隔离功能使水务和燃气共享同一HSM信任根但密钥互不可见。统一运维界面减少60%管理成本。TDE已获国密局商用密码产品认证,驱动层透明加密对SCADA应用完全无感,性能影响<3%。
适用场景: 水务集团SCADA系统、燃气集团工控系统、城市生命线统一密钥管理平台、供水管网监测系统。
联系电话: 158-3060-0995 | 邮箱: marketing@andang.cn | 官网: https://www.andang.cn/