課題: 私は、データを記録してディスクに保存する Linux ハンドヘルド デバイスを持っています。これらのデータは、USB 経由で Windows アプリケーションと交換する必要があります。ユーザーがこのデータにアクセスできる場合 (USB マスストレージなどを介して)、データを暗号化する必要があります。さまざまなOSで、citrix端末セッションなどでも、すぐに使用できるはずです。
計画: FUSEを使用してユーザー空間にファイル システムを作成し、大容量ストレージを介して Windows に提供します。Windows が 1 つのファイルにアクセスするたびに、コールバックを受け取り、その場でデータを暗号化します。さらに、いくつかの動的コンテンツを含めることができます。たとえば、パスワードがファイルに書き込まれると、より多くのコンテンツが表示されます。
問題: 大容量ストレージ ガジェット ( g_file_storage など) を使用する場合、ファイルまたはブロック デバイスのみを受け入れますが、ファイル システム (ディレクトリ) は受け入れません。なんで?
[...] データのセクターを読み書きするためのシンプルなインターフェイスを提供します。これは、ハード ドライブへのアクセスに使用される低レベル インターフェイスによく似ています [...]。オペレーティング システムは、USB ドライブをハード ドライブのように扱い、任意のファイル システムでフォーマットできます。(ウィキペディアより)
したがって、大容量ストレージを介して動的ファイルシステムを使用する機会はありません...これが、Android携帯電話をPCに接続すると、電話上のすべてのデータをアンマウントする理由のようです。
オプション:
- 「ユーザー空間にブロックデバイス」を作成します-FUSEに似ています(ファイルを動的に提供したい場合は、リバースFATドライバーが必要です)
- ブロックデバイスを作成するために独自の nbd サーバーを実装します (リバース FAT ドライバーも必要ですか?)
- 暗号化されたファイルをパーティションに保存し、このパーティションを大容量ストレージ ガジェットに渡します (問題は、パフォーマンスと動的相互作用の欠如です)
- 大容量ストレージ デバイスを提供せず、他のアイデア (eth over USB) に注意する
現時点では、最後のオプションのみが現実的であるように思われます - または、別のヒントはありますか?
私は感謝されます!
チャーリー