0

私のアプリケーションは、データベース サーバーに接続するクライアント デスクトップ アプリです。このアプリは、ユーザーが .pdf .xlsx などのファイルをデータベースに保存できるようにするドキュメント管理システムであり、ドキュメントのすべてのバージョンを追跡します。ユーザーはドキュメントを「チェックイン」および「チェックアウト」できます。ユーザーがファイルをチェックアウトすると、そのファイルはデータベースからダウンロードされ、ユーザーのハード ドライブにコピーされます。次に、ユーザーはファイルにアクセスして編集し、データベースにチェックインします。データベース内では、ファイルは圧縮され、暗号化され、base64 でエンコードされた形式でテキスト フィールドに格納されます。

私の目的は、ファイルがユーザーのハード ドライブにコピーされるときに暗号化されていることを確認することですが、それでもユーザーは簡単にアクセスできるようにすることです。私が望むものを視覚化する最良の方法は、TrueCrypt がどのように機能するかを検討することです。これにより、ユーザーは暗号化されたバイナリ ファイルを作成し、ドライブとしてマウントすることができます。たとえば Windows では、ボリュームにドライブ文字が割り当てられ、ユーザーはマイ コンピュータなどからファイルにアクセスできます。

私のアプリでは、暗号化に Botan ライブラリを使用しています。

Qtで同様のことを達成することは可能ですか? もしそうなら、どのように?そうでない場合、何をお勧めしますか?

どうもありがとう。

4

1 に答える 1

2

ええと、あなたが話していることは非常に合理的だと思いますが、技術的な詳細と可能な解決策に進む前に、いくつかの「コアデザイン」の考えが必要です.

私が理解している限り、物事は次のようになります。

<---> <----> <----> <サードパーティのアプリ>

次に、ファイルはファイルシステムからデータベースに移動し、特定のアルゴリズムを使用して暗号化します。ファイルがデータベースからファイルシステムに戻るとすぐに、サードパーティのソフトウェアで変更できるようになります...

それが重要なポイントです..ハードドライブに暗号化が必要なのは何ですか?実装を進める前に、何を達成しようとしているのかを明確にする必要があると思います。サードパーティのソフトウェアが暗号化されていないデータにアクセスできるようになると、実際には、OS にインストールされている他のすべてのソフトウェアが同じレベルのアクセス権を持つことになります。(これを書いている間、私はいくつかの奇妙な構成について考えていました。たとえば、特定のユーザー(Linux)の下でアプリケーションによってオープンオフィスを実行できますが、ファイルが保存されているフォルダーは所有者アクセスによってのみ読み取り/書き込みが可能ですが、私はそれだと思いますとにかく..質問は-あなたが何を防ぎたいかです...提案された状況であなたが考えることができるのは、ハードドライブが物理的に取り外されたときのデータへのアクセスだけだと思います.. 次に、オペレーティング システムに応じて、TrueCrypt などの標準的なソリューションを使用し、Linux では「マウント」システム コールを使用するか、Win32 では API を使用することをお勧めします (ほとんどのソリューションには、アプリケーションから実行できる API またはコマンド ライン ユーティリティが用意されています)。 )。それはかなり簡単に達成できます。

于 2013-08-07T20:15:08.163 に答える