【发布时间】:2014-07-07 20:48:11
【问题描述】:
我正在从事学术项目,其中一部分是对存储在磁盘上的选定 Ext4 文件应用透明加密 (AES-CTR)(我已经可以使用新的 ioctl 等将它们标记为加密)。
为了做到这一点,我需要找到在数据上调用我的算法的最佳位置,同时从设备读取或写入数据。由于文件系统提供了大量功能(如日志、内联、o-direct、范围),我现在正在努力寻找合适的解决方案——我需要对原始数据进行操作,因为它存储在数据块。
我的想法很少,一个是从sys_read(...) 和sys_write(...),更准确地说是ext4_file_write(...) 和generic_file_aio_read(...),挂接到调用路径上的某个地方——但这不适用于mmap,并且可能不是要走的路。另一种方法是通过ext4_writepages(...) 和ext4_readpages(...)(它是回调,因为它是异步的),当内存页面被写入磁盘时。
因为它不是生产版本,只是一个概念证明 - 我可以关闭一些 Ext4 功能以简化任务。在使用该算法时,我需要能够访问 inode 的 xargs(存储密钥 id 的位置),并且还要知道块号以生成用于 [en/de] 加密的初始向量。您对此问题有什么想法和/或建议吗?
【问题讨论】:
标签: c linux-kernel cryptography filesystems ext4