隠しボリューム作成ツール「Shufflecake」

シャッフルケーキ

Shufflecake は Linux 用のツールで、ストレージ デバイス上に複数の隠しボリュームを作成できるようにするため、フォレンジック検査を行ってもそのようなボリュームの存在を証明することは非常に困難です。

セキュリティ監査会社Kudelski Securityは、既存のパーティション上の利用可能な空き領域に分散して、ランダムな残存データと区別がつかない隠しファイルシステムを作成できるツールセット「Shufflecake」をリリースした。これらのセクションは、アクセスキーを知らない限り、フォレンジック分析時でさえその存在を証明することが困難な方法で作成される。

このプロジェクトは、機密データを隠蔽するためのTruecryptやVeracryptよりも高度なソリューションとして位置づけられており、Linuxプラットフォームをネイティブにサポートし、デバイス上に最大15個の隠しパーティションを配置し、それらを互いに入れ子状にすることで、その存在を分析から隠蔽することを可能にします。

ユーザーの裁量で作成される隠しパーティションは、ext4、xfs、btrfsなど、あらゆるファイルシステムに合わせてフォーマットできます。各パーティションは、それぞれ独自のロック解除キーを持つ独立した仮想ブロックデバイスとして扱われます。

痕跡を隠蔽するために、「もっともらしい否認可能性」という行動モデルが提案されている。基本的に、価値の高いデータは、価値の低いデータを含む暗号化されたセクション内に追加のレイヤーとして隠され、一種の隠された階層構造を形成する。プレッシャーがかかると、デバイス所有者は暗号化されたセクションの鍵を明かすことができるが、他のセクション(最大15階層)をその中に隠すことができるため、それらの存在を特定したり、その存在を証明したりすることは困難になる。

Shufflecakeおよびカーネルモジュールは、カーネル5.13および5.15を搭載したDebianおよびUbuntuでのみテストされています(Ubuntu 22.04はサポートされています)。このプロジェクトはまだ動作プロトタイプ段階であり、機密データの保存には使用すべきではないことにご注意ください。

将来的には、パフォーマンス、信頼性、およびセキュリティをさらに最適化し、Shufflecake パーティションから起動する機能を提供する予定です。

シャッフルケーキについて

秘匿性は、各パーティションをストレージデバイス上のランダムな位置に配置された暗号化セグメントの集合として構成することで実現されます。各セグメントは、パーティションに追加のストレージ容量が必要になったときに動的に作成されます。分析を困難にするため、異なるセクションからのスライスがインターリーブされます。

シャッフルケーキのセクションは隣接するリージョンにリンクされておらず、すべてのセクションの一部が一緒にミックスされています。 使用済み部分と空き部分に関する情報は、各セクションに添付されたロケーション マップに格納され、暗号化されたヘッダーによって参照されます。 カードとヘッダーは暗号化されており、パスキーを知らなくても、ランダム データと区別できません。

ヘッダーはスロットに分割され、各スロットは独自のセクションと関連するセクターを定義します。ヘッダー内のスロットは積み重ねられ、再帰的にリンクされています。現在のスロットには、階層内の前の(より隠蔽度の低い)セクションのパラメータを復号するためのキーが含まれており、単一のパスワードで選択した項目に関連付けられたすべてのより隠蔽度の低いセクションを復号できます。各より隠蔽度の低いセクションは、ネストされたセクションの一部を自由領域として扱います。

デフォルトでは、ネストされた Shufflecake パーティションはすべて、最上位パーティションと同じサイズで表示されます。たとえば、1GB のデバイスで 3 つのパーティションを使用する場合、それぞれがシステムから 1GB のパーティションとして認識され、利用可能なディスク容量はすべてのパーティションで共有されます。保存されるデータの総量が実際のデバイスサイズを超えると、I/O エラーが発生し始めます。

未開封のネストされたセクションはスペース割り当てに参加しません。つまり、上位レベルのセクションにデータを書き込もうとすると、ネストされたセクション内のデータは上書きされますが、エラーが発生する前にそのセクションに格納できるデータのサイズを分析することで、ネストされたセクションの存在が明らかになることはありません(上位レベルのセクションには変更不可能なデータが含まれていると想定されています)。データは偶然使用されることはなく、決して個別に使用されることもありません。通常の作業は常に最新のネストされたセクションで行われます。スキーマ自体が、たとえデータが失われるリスクがあっても、データの存在を秘密に保つことが最優先事項であることを示唆しています。

Shufflecakeの実装は比較的高いパフォーマンスを提供しますが、オーバーヘッドコストのため、LUKSサブシステムに基づくディスク暗号化の約半分のパフォーマンスにとどまります。Shufflecakeを使用すると、サービスデータを保存するために追加のRAMとディスク容量コストも発生します。メモリコストはパーティションあたり60MB、ディスク容量の使用量はパーティション全体のサイズの1%と推定されます。これに対し、同様の目的を持つWORAM技術では、5~200倍の速度低下と、使用可能なディスク容量の75%の損失が発生します。

ユーティリティ (shufflecake-userland) と Linux カーネル モジュール (dm-sflc) のコードは C で記述され、GPLv3 ライセンスの下でリリースされているため、公開されているカーネル モジュールをメインの Linux カーネルに含めることはできません。カーネルが出荷される GPLv2 ライセンスの下で。

さらに詳しく知りたい場合は、以下のリンクから詳細をご確認いただけます。


Googleで優先ソースとして追加する