Shufflecake,一個用於創建隱藏加密磁盤分區的工具包已發布

安全審計公司 Kudelski Security 發布了 Shufflecake,這是一個工具包,允許您創建隱藏文件系統,這些文件系統分佈在現有分區的可用空間上,並且與隨機殘留數據無法區分。 部分的創建方式使得在不知道訪問密鑰的情況下,即使在進行取證分析時也很難證明它們的存在。 實用程序 (shufflecake-userland) 和 Linux 內核模塊 (dm-sflc) 的代碼是用 C 編寫的,並在 GPLv3 許可下分發,由於與發佈內核所依據的 GPLv2 許可證。

該項目被定位為比 Truecrypt 和 Veracrypt 更先進的隱藏敏感數據的解決方案,它具有對 Linux 平台的原生支持,並允許您在設備上放置多達 15 個隱藏分區,它們相互嵌套以混淆解析它們的存在。 如果 Shufflecake 的使用本身不是秘密(例如可以通過系統中是否存在適當的實用程序來判斷),則無法確定創建的隱藏分區總數。 根據用戶的判斷,創建的隱藏分區可以格式化以適應任何文件系統,例如 ext4、xfs 或 btrfs。 每個分區都被視為一個單獨的虛擬塊設備,具有自己的解鎖密鑰。

為了混淆痕跡,提出了使用“似是而非的可否認性”行為模型,其本質是將有價值的數據作為附加層隱藏在具有較低價值數據的加密部分中,形成一種隱藏的部分層次結構。 在壓力情況下,設備所有者可以向加密部分透露密鑰,但其他部分(最多 15 個嵌套級別)可以隱藏在該部分中,並且確定它們的存在和證明它們的存在是有問題的。

隱藏是透過將每個分割區建構成一組放置在儲存裝置上隨機位置的加密切片來實現的。 當分區中需要額外的儲存空間時,會動態建立每個片。 為了使分析更加困難,不同部分的切片是交替的,即Shufflecake 部分不連結到連續區域,並且所有部分的切片都是混合的。 有關已使用和空閒切片的資訊儲存在與每個分區關聯的位置映射中,該位置映射由加密標頭引用。 卡片和標頭經過加密,在不知道存取密鑰的情況下,無法與隨機資料區分開。

標頭分為多個槽,每個槽都定義了自己的部分及其關聯的切片。 標題中的槽是堆疊和遞歸鏈接的——當前槽包含解密層次結構中上一節(較少隱藏)的設置的密鑰,允許使用一個密碼來解密與所選關聯的所有較少隱藏的部分部分。 每個較少隱藏的部分都將嵌套部分的切片視為免費。

默認情況下,所有嵌套的 Shufflecake 部分都具有與頂級部分相同的可見大小。 例如,如果在一個 1 GB 的設備上使用三個分區,則每個分區都將作為一個 1 GB 的分區對系統可見,並且可用磁盤空間總量將在所有分區之間共享 - 如果保存的數據總量超過設備的實際大小,它會開始生成 I/O 錯誤。

未打開的嵌套部分不參與空間分配,即嘗試填充頂級分區將導致資料在嵌套分區中被分解,但無法透過分析錯誤開始之前可以放置在分區中的資料大小來揭示它們的存在(它假設上層分區包含不可變資料以分散注意力並且從不單獨使用,並且常規工作始終與最近的嵌套部分一起進行,該方案本身意味著維護存在的秘密更為重要資料而不是丟失該資料)。

事實上,始終創建 15 個 Shufflecake 部分 - 用戶密碼與使用的部分相關聯,未使用的部分提供隨機生成的密碼(無法了解實際使用了多少部分)。 當 Shufflecake 分區初始化時,為其放置分配的磁盤、分區或虛擬塊設備填充了隨機數據,這使得無法在一般背景下識別 Shufflecake 的元數據和數據。

Shufflecake 實現具有相當高的性能,但由於開銷成本的存在,與基於 LUKS 子系統的磁盤加密相比,它的吞吐量大約落後兩倍。 使用 Shufflecake 還會導致額外的 RAM 成本和用於在磁盤上存儲服務數據的空間。 內存成本估計為每個分區 60 MB,磁盤空間估計為總大小的 1%。 相比之下,目的相似的 WORAM 技術導致速度降低 5 到 200 倍,有用磁盤空間損失 75%。

該工具包和內核模塊僅在具有 5.13 和 5.15 內核的 Debian 和 Ubuntu 上進行了測試(支持 Ubuntu 22.04)。 請注意,該項目仍應被視為工作原型,不應用於存儲重要數據。 未來,我們計劃在性能、可靠性和安全性方面進行額外的優化,並提供從 Shufflecake 分區啟動的功能。

來源: opennet.ru

添加評論