我希望能够向客户已售出的机器发送“固件”更新。它们不是联网设备,因此需要手动完成。用于将文件加载到系统上的那些挂钩已经就位。
我不希望他们能够看到这些更新中的代码,所以我看到两个选项:
- 压缩要部署的文件目录。加密该目录。上传至设备。在设备上解密。让脚本手动将代码部署到需要的位置。
- 创建一个 .deb 包以让 dpkg 处理部署。加密该包。上传至设备。使用(更简单的)脚本解压 .deb 包。
我更倾向于第二种选择,因为它感觉更干净。话虽这么说,我在安全方面没有太多经验,但希望做得尽可能好。
我的第一直觉是做类似的事情这个答案对于任何一种情况。 IE端使用openssl进行加密和解密。
但是,有更好的方法吗?也许 dpkg (或其亲属)中有一些东西以某种特定的方式对其进行加密?手动加密包对我来说感觉不对。我做得正确吗?
编辑1
澄清一下,我的问题不一定是建议使用什么工具。除非另有说明,否则我将使用 openssl。我想问的是,使用 openssl 是否不如其他一些工具来实现此目的,并了解这些差异(如果适用)。
答案1
dpkg 不打算使用加密,因此您需要外部工具。
主要问题 - 解密密钥存储在哪里以及如何使用。
它必须至少已经存储在客户机器中并由“固件”自动使用。
“固件”必须知道如何从加密文件中更新自身。
更新1
在安全方面,GPG 和 OpenSSL 看起来几乎相同,但大多使用不兼容的格式和证书。正如 security.stackexchange 所说。
关于“手动”加密。必须在自动构建过程中包含包加密。