我需要在Linux系统上实现一种简单的方法来加密/解密数据,我希望得到您的反馈。基本上,我需要稍微改变一下函数的读写行为。
我检查了一些选项,如EncFS,但它们只在文件级别执行加密/解密(同时解密/加密整个文件)。但是,我需要一些细粒度级别的解决方案,比如块级。为了让事情变得更简单,我们只在文件的末尾追加数据,而不更改文件的现有数据。
以下面的用例为例:
我看到的是,您很可能还必须保存有关加密文件的元数据(块数等)。提前感谢!
发布于 2014-09-10 18:14:14
您所描述的与存储系统中的加密没有太大的不同,…只是你的“存储系统”是一个文件(foo.txt),而不是硬盘。现在,在一个完美的世界中,您可以用自己的密钥加密每个数据块(存储在foo.txt中),但这在您的情况下是非常不切实际的。在我看来,最明显的解决方案是使用“可调整的密码”或“可调整的窄块加密模式”。它们的设计是为了避免“每个存储的数据块都需要单独的密钥”(读:解决问题)。
因此,根据您的描述,我很可能选择“可调整的窄块加密模式”,如LRW (纸)、XEX (纸)或XTS。一个代表最常用实现之一的示例是AES-XTS。根据您的编码技能,将这样的解决方案集成到应用程序的CRUD功能中应该不会太困难。
为了完整起见,我要提到还有其他选择,这也可能导致一种有价值的解决办法。根据你提供的信息,我只是提到了我个人倾向于使用的东西。但是,选择合适的解决方案将在很大程度上取决于您想要存储的数据类型、格式化方式、您期望的安全级别、假设的特定场景等等(始终检查潜在的攻击向量!)你必须评估和验证所有的细节,才能选择最适合你个人情况和需要的最优解决方案。
许多例子之一:如果文件大小和可用的硬件功能允许的话,您最好对整个文件进行加密/解密(使用AES-CBC或类似的方法),而不是对您计划创建、读取、更新和删除的单个数据进行加密。另一方面,如果我们谈论的是一个文件,该文件必须包含数十万个单独的数据块/条目,因此它必然会增长到文件大小的几千兆字节以上,那么将该文件加载到系统内存中,以便与包含的数据进行斗争,将倾向于有点…。(让我们称之为)“非最佳”。
https://crypto.stackexchange.com/questions/19066
复制相似问题