FIDO2とポスト量子暗号をサポートする信頼性の高い暗号化コンテナ
クラウドプロバイダーは「保存時のデータは暗号化されています」と繰り返すのが好きです。それは安心できる言葉に聞こえますが、その暗号化キーを誰が管理しているか想一想してみてください。ホスティングプロバイダーがキーを持っているなら、規制当局からのリクエスト、内部リーク、漏洩したアクセストークンによって、外部者がファイルにアクセスできてしまいます。
他人のサービスへの信頼を避けるため、データはネットワークに送信する前にクライアント側で暗号化されます。VeraCrypt、gocryptfs、ageなどのツールがこの目的のために存在しますが、それぞれにトレードオフがあります:古いフォーマット、ハードウェアキーのサポートがない、通常ディスクとしてコンテナをマウントする際の複雑さです。
最近LUKSboxというRustで書かれたプロジェクトを見つけました。クラウドストレージ、USBドライブ、最新の認証方法に対応した、LUKS2の世界から最高のアイデアを取り入れた暗号化ファイルコンテナを作成するためのツールです。
コンテナの中身
コアコンセプトはシンプルです:すべてのデータが単一のファイル.lbxにパックされます。外部の観察者やクラウドドライブから見ると、ヘッダが別のファイルに保存されていれば、このファイルはランダムノイズのように見え、明白なヘッダーやメタデータはありません。
同時に、コンテナはLinuxおよびmacOSではFUSE、WindowsではWinFsp経由で通常のディスクとしてOSにマウントされます。通常のUSBフラッシュドライブと同じように扱えます。
作者たちが説明するこのプロジェクトの主な目標は、ポータブルな安全なコピーを作成することです。S3、Dropbox、または共有ネットワークドライブにアップロード.lbxして安心できます:ホストは物理的に内容を読み取ることができません。
ロック解除の方法と量子コンピュータからの保護
通常、暗号化されたストレージにはパスワードが必要です。LUKSboxにもパスワードはあり、Argon2idで真剣なデフォルトパラメータでハッシュ化されていますが、開発者はさらに進んでハードウェアキーのスロットを追加しました。
ストレージのロックを解除するためのサポートされているオプションは次のとおりです:
- FIDO2認証器。YubiKey、Nitrokey、Google TitanをHMAC-secretプロトコルでバインドできます。物理的にキーをタッチしなければ、コンテナは開きません。
- TPM 2.0。LinuxおよびWindowsで、マザーボードのハードウェアチップへのバインディング。コンテナがあなたのワークステーションでのみ開くべき場合に便利です。
- ポスト量子ハイブリッドモード。「今すぐ収集して、量子コンピュータで後で復号する」シナリオからの保護。LUKSboxは古典的なアルゴリズムとML-KEMアルゴリズム(FIPS 203、旧Kyber)を組み合わせることができます。このために別のキーファイル
.kyberが作成され、コンテナとは別の場所に保管できます。
これらのスロットはどれもファイルを直接暗号化しません。マスターボリューキーをラップします。いずれかのスロットの検証が成功すると、マスターキーが復号され、HKDF-SHA256経由でメタデータ、ファイルブロック、整合性検証用のキーが導出されます。
+-------------------------------------------------------------+
| Пароль / FIDO2 / TPM 2.0 / ML-KEM (.kyber) |
+------------------------------+------------------------------+
|
v
+-------------------------------+
| Master Volume Key (MVK) |
+---------------+---------------+
|
+---------------------+---------------------+
v v v
+-----------------+ +-----------------+ +-----------------+
| Header HMAC Key | | Metadata Key | | Per-file Keys |
+-----------------+ +-----------------+ +-----------------+
ディテールレベルでのセキュリティ
リポジトリは、多くの開発者が見落とすディテールへの注意深さで嬉しそうに驚かせます。
デフォルトでは、AES-256-GCM-SIVがブロック暗号化に使用されます。SIVの追加はnonce再利用に対する耐性を提供し、頻繁な上書き時に便利です。ChaCha20-Poly1305または標準のAES-256-GCMを選択することもできます。
ソースコードからのいくつかの興味深い発見:
- ブロック置換保護。ファイルの各暗号化されたチャンクには、ファイルID、ブロックインデックス、世代カウンターを含む追加認証データ(AAD)が装備されています。クラウドベースの攻撃者は、新しいブロックを古いバージョンで密かに置き換えたり、ピースを入れ替えたりすることはできません。
- メモリクリーンアップ。Linuxでは、munlockシステムコールがカーネルダンプとハイバネーションイメージからマスターキーを除外します。他のシステムでは、メモリロックとZeroizeトレイトによるバッファゼロ化の組み合わせが使用されます。
- ロールバック攻撃保護。オプションのサイドカーファイル
.anchorが署名付き変更カウンターを保存します。プロバイダーがコンテナ全体を古いバージョンにロールバックした場合、プログラムは気づきます。 - 別々のヘッダー。ヘッダーをheaderファイル
.hdrに移動すると、メインのコンテナファイル.lbxは署名のないバイト配列になります。
クイックスタート
このプロジェクトはRustで書かれているため、標準的なcargo build waycargo buildでソースからビルドできます。ほとんどのプラットフォーム向けにプレビルドパッケージ.deb、.rpm、Windowsインストーラー、macOSバンドルが利用可能です。
コンテナの管理は3つの方法で行えます:CLI、インタラクティブなTUIウィザード、eguiで構築されたGUIです。
通常のコンテナを作成してマウントする:
# Создаем хранилище с настройками по умолчанию
luksbox create my-vault.lbx
# Монтируем как директорию в Linux/macOS
luksbox mount my-vault.lbx /mnt/vault
# Или в отдельный диск в Windows
luksbox mount my-vault.lbx Z:
既存のコンテナにFIDO2ハードウェアキーを追加する:
luksbox enroll my-vault.lbx --kind fido2
別のフラッシュドライブにハイブリッドキーでポスト量子コンテナを作成する:
luksbox create secure-data.lbx --kind hybrid-pq --pq-hybrid /media/usb/key.kyber
コマンドラインフラグを覚えたくない場合は、luksbox initコマンドluksbox wizardがターミナルでステップバイステップのダイアログを開始します。
実践的なシナリオ
LUKSboxは安全な転送とリモートストレージの問題を解決します。このプロジェクトが適していそうな状況は次のとおりです:
- サードパーティのクラウド経由の同期。パスワードデータベース、個人キー、作業ドキュメントを、Google DriveまたはYandex Diskフォルダ内の単一のcontainer.luksファイル
.lbxに保存します。 - 外部サーバーでのバックアップ。バックアップスクリプトがコンテナをマウントし、新しいダンプを入れて、ディスクをアンマウントします。
- 秘密アーカイブの共有。ハードウェアトークンによる物理的な確認を要件として、同僚にファイルを送信します。
現在のプロジェクトステータス
このプロジェクトはpre-1.0段階です。コンテナフォーマットv3はすでに凍結されており、libFuzzerとAFL++によるファジングがリポジトリで構成されており、何百万ものイテレーションが実行されています。14回の内部セキュリティ監査ラウンドが完了していますが、独立したサードパーティの監査はまだ先です。
作者たちは正直に警告しています:暗号化されたコンテナは単一障害点です。ファイルが破損したり、すべてのキーが失われたりした場合、データは回復不能です。したがって、LUKSboxは保護されたポータブルコピーのために設計されており、重要なファイルの唯一の保存場所としては使用しないでください。
FIDO2サポートとポスト量子的な将来性を持つ最新のクロスプラットフォーム暗号化ツールが必要な場合は、リポジトリは確かに見る価値があります。ソースコードはApache-2.0ライセンスで公開されています。
関連プロジェクト