我正在寻找一种加密文件的方法,该文件可以在当前终端会话中解密。我们退出会话后,文件会再次加密。
此场景的一个用例是:假设某人想通过虚拟机管理程序强制重启系统来获取对文件的访问权限,并更改 root 密码以获取访问权限,如果文件保持加密状态,则该尝试将是徒劳的。
到目前为止,我知道可以解密文件或整个文件系统的方法,并且这种解密方式会一直保持下去,直到再次加密。我正在寻找一种临时解密方法。我甚至找到了一些方法,可以让文件内容保持加密状态,直到提供密码短语,使其可读而不是乱码。这也没有帮助,因为该文件是可执行的。
这个想法是在系统上远程运行此文件以捕获公共虚拟机管理程序上的流量。因此,如果有人试图闯入,他们将无法做到。
我已经启用了 grub 密码,但由于过程中遇到一些异常,因此这不是一个可行的解决方案
如果有任何其他想法或建议我将非常感激。
答案1
我想您可能对磁盘加密的工作原理感到困惑。
到目前为止,我知道可以加密文件或解密整个文件系统的方法,并且这种解密方式会一直保持下去,直到再次加密。我正在寻找一种临时解密方法。
当您使用 dm-crypt/luks 或 veracrypt 进行全盘加密时,磁盘上的数据始终保持加密状态。通常,只有引导扇区未加密,导致您在启动时或启动前容易受到攻击,但可以采取更高级的配置步骤来尝试缓解这种情况。此外,crypt-header 通常留在磁盘上,因为实际上,密码有多糟糕,数据有多敏感,您最终害怕谁?
这里有一个关于暴力破解 dm-crypt/luks 标头的精彩帖子:https://news.ycombinator.com/item?id=21791785。有很多数学知识我都无法理解,而且我肯定偏离了你的问题,但这里有一句很好的引言,它让我既失望(因为我有一些加密容器,我想用暴力破解它们),又感到安慰(因为任何有理智的人都不想生活在一个加密技术的安全性无法信任的世界。那场辩论发生在 90 年代,技术文盲独裁者几乎要获胜了。):
如果您可以将 1200 个 CPU 核心投入到这个项目中,那么当宇宙年龄达到现在的两倍时,您就有 50% 的机会破解密码。
基本上,如果你想进入 dm-crypt/luks 设备,邪恶女仆或 5 美元扳手。如果没有人记住密码,本质上就是随机数据。即使有了量子计算机,如果密码和哈希算法足够好,在我们的有生之年,也没人能破解。
回到你的问题:在典型的系统配置下,除了引导扇区和交换区之外,磁盘上的数据始终保持加密状态。你在启动时提供加密密钥,密钥保存在内存中,所有加密都在写入磁盘之前进行,所有解密都在你读取磁盘时即时进行。所有文件系统信息都保存在内存中,磁盘上绝对不应该有未加密的数据……除了交换区,你可能需要对此采取一些措施。
此场景的一个用例是:假设某人想通过虚拟机管理程序强制重启系统来获取对文件的访问权限,并更改 root 密码以获取访问权限,如果文件保持加密状态,则该尝试将是徒劳的。
所以,我想你可能对加密的工作原理感到困惑,但同时,还有很多不同情况需要考虑。我想问的问题是,你是否担心这个设备上的另一个人,在文件使用时,也有 root 访问权限的人会发现它?你是否担心另一个拥有 root 访问权限的人会发现一个他们不熟悉的加密容器的存在?如果是这样,下面的解决方案不适合您。
使用 veracrypt 和 dm-crypt/luks 不仅可以加密整个磁盘或分区,还可以创建加密容器。您可以在打开会话时挂载这些容器,并在关闭会话之前卸载它们。不幸的是,当它们被挂载时,具有 root 访问权限的其他系统用户仍然可以访问它们。在 Unix 上,root 就是上帝。你能想象作为设备管理员发现无法访问的分区时的恐惧吗?
我希望这能有所帮助。您有很多选择,但我认为您可能需要更清楚地了解自己正在尝试做什么。您已使用“luks”标签发布了此内容,因此您正朝着正确的方向前进,属性配置的 dm-crypt/luks 是目前可用的最强大的加密。我建议您阅读更多内容并更好地了解加密。
https://blog.canadianwebhosting.com/how-to-create-an-encrypted-container/
https://linux.die.net/man/8/cryptsetup
https://wiki.archlinux.org/index.php/Dm-crypt
https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption
https://wiki.gentoo.org/wiki/Dm-crypt
https://www.kernel.org/doc/html/latest/admin-guide/device-mapper/dm-crypt.html
另外,关于通过虚拟机管理程序强制重启系统:这是一个有趣的话题,因为拥有该级别虚拟机管理程序访问权限的攻击者也可以充当邪恶女仆,毒害您的启动并拦截您的加密密码。他们可以这样做,也可以做任何他们想做的事情。这就是为什么 AWS 数据中心的位置不公开的原因,其想法是它们是安全。您有相信主人。
这个想法是在系统上远程运行此文件以捕获公共虚拟机管理程序上的流量。因此,如果有人试图闯入,他们将无法做到。
再次,我认为您可能感到困惑。当您提到“公共虚拟机管理程序”时,您的意思是您打算在公开托管虚拟机的机器的裸机虚拟机管理程序上运行它吗?否则,我可以看到您可能试图做的两件事:一是您有一个托管虚拟机,试图嗅探虚拟机管理程序托管的其他虚拟机上的所有流量,并试图通过加密嗅探软件来隐藏这一点。另一个是您有一个托管虚拟机,试图通过嗅探流量来保护它,但担心邪恶女仆对 root 密码的攻击。
在所有这些情况下,我建议您重新考虑部分或全部假设。
这只有其他我能想到的可能的解释是,也许你已经控制了这个盒子,并想在不被发现的情况下在上面运行嗅探器?但是,如果你控制了这个盒子,你可以随心所欲地来来去去而不会被抓住,你认为他们会注意到嗅探器吗?