答案1
在您的应用程序中,您至少希望保护:
- 从服务器获取的实际媒体文件
- 允许 Raspberry 连接到 VPN 的 VPN 密钥(否则入侵者只需提取该密钥,自己连接到 VPN 并获取文件)
您可以仅加密这些内容,也可以加密整个根文件系统。也许你也可以在做这件事的时候做后者。
您可以使用 luks 加密 Raspberry 的根文件系统。你可以找到Debian 设置说明(大概是 Mint)系统,具有来自多个来源的加密根。基本上,您可以在安装系统之前从安装程序中完成此操作。事后转换系统要麻烦得多,因为您必须:
- 启动备用系统
- 挂载目标根文件系统并将其内容复制到其他地方(意味着有备用存储)
- 使用 luks 重新格式化目标根文件系统
- 将所有内容复制回来
- 添加新的加密分区
/etc/crypttab
,调整/etc/fstab
- 使用
chroot
或类似的方法,重新生成目标的 initramfs,以便它能够在启动时解密根。
单独的根文件系统和/boot
文件系统是必须的,因此如果您选择转换选项,您应该从已有的系统开始。将现有系统转换为加密根是一个专家程序。我很快发现教程但我还没有读过它,所以我不能保证它。
如果树莓派必须在无人看管的情况下自行启动,那么您将面临这样的问题:无论您做什么都是不安全的:该设备必须能够解锁自己的解密,这意味着窃贼可以访问密钥。尽管如此,如果您必须走这条路,您在评论中提出的缓解措施(即在不同介质上物理分离密钥)并不是一个糟糕的妥协。
这另一个问题介绍如何使系统在启动时以自动方式访问自己的解密密钥。您将创建一个简短的脚本,而不是keyscript
仅回显该解决方案中建议的密码阶段:
- 安装物理上独立的介质
- 从那里的文件加载并输出密码
- 卸载单独的媒体
该脚本将从 initramfs 内部运行。未经测试:这样的脚本可能看起来像这样:
mkdir -p /mnt/key
mount /dev/disk/by-id/sd-card-whatever-the-device-name-is-part1 /mnt/key
cat /mnt/key/root-filesystem-key
umount /mnt/key
...并在命名该脚本中添加一个keyscript
选项。/etc/crypttab