一、核心结论(N6705C / N7900 / N6900 主流双向平台)
仪器内置 INT:/ 本地文件系统无原生 AES / 密码加密 SCPI 功能,不存在SYST:FILE:ENCRYPT、FILE:SECURE、SYST:SEC这类标准加密指令;
整机固件没有硬件文件加密模块,日志(ELOG/DLOG)、导出 CSV/BIN 文件均为明文存储;
校验是否存在加密能力的标准判断方式:下发疑似加密指令,读取错误寄存器判定指令是否存在。
二、SCPI 校验步骤:判断设备是否具备文件加密能力
1. 测试通用加密头部指令
scpi
*CLS
SYST:FILE:ENCRYPT?
SYST:ERR?
返回 -113."Undefined header":本机完全不支持文件系统加密(95% 常规功率模块都是此结果)
返回数字 0/1 且无报错:代表固件支持加密开关配置
2. 补充测试安全类扩展指令
部分高端定制固件会用安全分组指令,一并校验:
scpi
SYST:SEC:STAT?
SYST:FILE:SECURE?
FILE:ENCR:MODE?
SYST:ERR?
只要任意一条报 - 113.说明无原生文件加密体系。
3. 分区 / U 盘加密单独校验(极少机型选配)
极少数高端定制机型支持 USB 盘硬件加密,可带盘符查询:
scpi
SYST:FILE:ENCRYPT? USB:
SYST:ERR?
INT 内置盘全线无加密支持。
三、两类容易混淆的 “保护≠加密” 机制
1. 文件锁定 SYST:FILE:LOCK
仅禁止删除、覆盖、写入,文件内容依旧明文可读,不属于加密;
scpi
SYST:FILE:LOCK?
锁定后可正常用SYST:TRANSFER?读取完整明文日志。
2. ELOG 事件写保护 ELOG:PROT
只防止 ELOG 被ELOG:CLE清空、防止新事件覆盖旧记录,数据全程明文存储,无加密。
scpi
ELOG:PROT?
四、可行的替代安全方案(仪器无原生加密时)
方案 1:上位机端加密(工业通用)
SCPI 读取 ELOG/DLOG 明文文件流(SYST:TRANSFER?)
Python/LabVIEW 在上位机做 AES 加密、加盐、密码打包保存本地 示例简易逻辑:
python
运行
# 下载仪器明文文件
inst.write('SYST:TRANSFER? "INT:/logs/limit.csv"')
raw_data = inst.read_raw()
# 上位机AES加密后存本地
from cryptography.fernet import Fernet
key = Fernet.generate_key()
cipher = Fernet(key)
encrypted = cipher.encrypt(raw_data)
with open(r"C:safe_loglimit.enc","wb") as f:
f.write(encrypted)
方案 2:外接硬件加密 U 盘
使用带硬件密码锁的工业加密 U 盘插入仪器 USB 口,仪器仅负责写入明文到 U 盘,U 盘硬件层自动加密存储。
五、机型兼容划分
完全无文件加密(标准量产机型) N6705C、N7970A~N7976A、N6950A/N6952A、E36xx 全系列双向电源;无任何加密 SCPI。
仅特殊军工 / 定制固件可选加密 Keysight 定制改版 N7900 高功率机型,才会开放SYST:FILE:ENCRYPT系列指令,普通市售版本不搭载。
六、自动化校验 Python 代码
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP::192.168.1.100::INSTR")
inst.timeout = 3000
inst.write("*CLS")
# 测试核心加密查询指令
try:
enc_resp = inst.query("SYST:FILE:ENCRYPT?")
err_msg = inst.query("SYST:ERR?")
except Exception:
err_msg = "-113.Undefined header"
if "-113" in err_msg:
print("设备不支持文件系统加密功能,文件全部明文存储")
else:
print(f"加密支持状态: {enc_resp}")
# 区分锁定、写保护(不是加密)
lock_state = inst.query("SYST:FILE:LOCK?")
elog_protect = inst.query("ELOG:PROT?")
print(f"文件锁定状态: {lock_state.strip()}")
print(f"ELOG写保护状态: {elog_protect.strip()}")
inst.close()
速查判定规则
下发 SYST:FILE:ENCRYPT?
报错 - 113 → 无文件加密
正常返回数值 → 支持加密开关
文件锁定、ELOG 写保护只是防篡改,不能加密内容;
量产商用双向电源默认无仪器端加密能力,加密必须上位机实现。