我正在研究學術項目,其中一部分將透明加密(AES-CTR)應用於存儲在磁盤上的選定Ext4文件(我已經可以將它們標記爲已加密新的ioctl等)。修改由Ext4文件系統寫入磁盤的數據
爲了做到這一點,我需要找到最適合在數據上調用我的算法的位置,同時讀取或寫入設備。由於文件系統提供的大量功能(如日誌,內聯,o-direct,擴展盤區),我現在正在努力尋找適當的解決方案 - 我需要對原始數據進行操作,因爲它存儲在數據塊。
我腦子裏想的一些想法,一個是從sys_read(...)
和sys_write(...)
,更精確地ext4_file_write(...)
和generic_file_aio_read(...)
中的某處CALLPATH掛鉤 - 但不會與mmap
工作,可能不是要走的路。另一種方法是通過ext4_writepages(...)
和ext4_readpages(...)
(和它的回調,因爲它是異步的),當內存頁被寫入磁盤時。
因爲它不是生產版本,只是一個概念驗證 - 我可以關閉一些Ext4功能以簡化任務。使用該算法時,我需要能夠訪問inode的xargs(存儲密鑰id的位置),並且要知道塊編號以便生成[en/de]加密中使用的初始向量。你對這個問題有什麼想法和/或建議嗎?
非常感謝您的回答!這似乎是一個好方法,但我不確定是否可以接受,因爲它只是修改Ext4本身 - 顯然使事情變得更加困難...... –
使用我提到的方法,您無需修改現有的EXT4實現,這是使用wrapfs的很酷的東西。請讓我知道,如果你需要進一步澄清這一點。 – Mavla