12. 录制数据加密
本章面向持有云账号与密钥的管理员。现场采集人员不需要阅读,可直接跳过。
设备可以为一支团队绑定一把录制密钥。绑定之后,每一段录制在写入 SD 卡的那一刻就已经是密文——卡被拔走、设备遗失,或者中途换手,拿到卡的人没有密钥也读不出任何画面。
密钥只在管理员手里。拿着设备的采集人员看不到、也改不了密钥;手机 App 只显示「已加密 / 未加密」一个状态,不提供任何开关。这是刻意的:现场设备本身就是要防的一环。
开启之后有什么不同
- 文件名、分片大小、目录结构都不变,仍然是
.mcap。 - 文件内容变成密文。没有密钥的工具打开会直接报错,而不是读出一段坏数据。
- 加密格式支持随机读取:用 visio-schema 的
read_mcap读取时不需要先整段解密,速度与未加密文件基本相同。要在 Foxglove 中拖动进度条查看,需先用visio-decrypt生成明文副本。 - 录制帧率、时长、上传都不受影响。
session.json中的recording_key_fingerprint字段会填入 16 位十六进制的密钥指纹(未加密时为空),用来标明「这批文件要用哪一把钥匙打开」。它只是钥匙的指纹,不是钥匙本身,可以随文件一起分发。
两种开启方式
需 visio-schema 0.9.1 及以上。方式一可直接用「5. 取数与在 Foxglove 查看」附件中的 visio-display 打包版(双击运行即进入该控制台);visio-settings-qr 与 visio-decrypt 需通过 pip 安装:pip install "visio_schema-0.9.1.tar.gz[display,qr]"(见「7. 工程集成与数据格式」)。
方式一:用 visio-display 直接设置(推荐)
在电脑上启动 visio-display 的本地控制台:
visio-display --serve
连上设备后,在页面的密钥区域即可完成设置、轮换、清除,并可查看当前设备正在使用哪一把密钥。密钥在写入设备之前会先存进本机钥匙串,所以不会出现「设备已经加密、管理员却没有钥匙」的情况。
方式二:扫码配置(适合批量出厂 / 远程团队)
管理员在自己电脑上生成一张二维码,采集人员用 App 的「扫码设置」扫一下即可(见第 8 页)。二维码里的密钥经过加密封装,只有设备固件能解开,任何人都无法从二维码或截图中读出密钥;如需限定只能用于指定设备,请加 --device。
# 生成一把新密钥(请务必备份这个文件;同时会存入本机钥匙串)
visio-settings-qr keygen --out recording.key
# 首次为一批从未加密过的设备制作二维码(会依次询问其他可选设置,直接回车跳过;默认输出 settings_qr.png)
visio-settings-qr qr --recording-key-file recording.key --first-provision
之后要更换密钥,需要同时提供当前正在用的那把(--old-recording-key-file);要停止加密则用 --clear-recording-key,同样需要当前密钥。二维码还可以限定只对某几台设备生效(--device),或设置有效期(--expires-in)。
怎么读取加密后的录制
把密钥放进本机钥匙串之后,日常使用和未加密时完全一样,不必每次都指定:
# 1) visio-display 控制台:运行 visio-display --serve,选择加密录制后按提示粘贴 64 位十六进制密钥
# (验证通过后自动存入钥匙串)
# 2) 命令行直接指定密钥文件(本机 Rerun 回放,需 pip 安装版)
visio-display --mcap-in ego_0000.mcap --key-file recording.key --rerun
# 3) 钥匙串位置(按指纹索引,可同时保存多个团队的密钥)
# ~/.config/visio/recording-keys.json
# 4) 给不接受密钥的工具(如 Foxglove Studio)生成一份明文副本
visio-decrypt ego_0000.mcap ego_0000_plain.mcap
密钥丢失等于数据永久丢失。加密后的录制没有任何后门,我们也无法帮您恢复。请把密钥文件备份到至少两个地方,并与设备分开保管。
深入了解
密钥管理清单
- 备份到至少两个地方,与设备分开保管——密钥丢失即数据永久丢失,没有恢复途径。
- 轮换时用
--old-recording-key-file提供当前密钥;旧密钥仍要保留,用来打开轮换前录制的文件(钥匙串按指纹索引,可同时保存多把)。 - 指纹可以随文件分发,它不是密钥;靠
session.json里的recording_key_fingerprint就能知道一批文件对应哪把钥匙。 - 设备端没有开关,采集人员无法关闭加密;停止加密只能由管理员用当前密钥执行
--clear-recording-key。 - 二维码里的录制密钥是封装的,只对目标设备有效,可以限定设备(
--device)与有效期(--expires-in),与第 8 章明文携带 Wi-Fi 密码的普通设置二维码不同。
工程细节
在电脑上用 visio-display、钥匙串文件或 visio-decrypt 打开加密录制的具体方法,见 7.6 读取加密录制。