2011-07-04 24 views
2

私はXML設定を使用する独自のアプリケーションを持っています。現在私はboost :: property_treeを使ってxmlファイルを読み込みます。C++:XML設定ファイルを暗号化する方法

実行可能ファイルとxmlファイルの両方を公開システムにデプロイしたいと思います。そのシステムの管理者を含む誰もがxmlを読むことを避けたいと思います。

理想的には、私は簡単に手動で変更することができるように私のシステム上にクリアテキストxmlを維持したいと思います。それから私は、ファイルに対していくつかの暗号化コマンドを呼び出し、それをより公的なマシンに配備し、その実行可能ファイルをその場で復号化するようにします。私は同じキーを使用し、実行可能ファイルのソースにハードコーディングします。

これは合理的なアプローチですか?これを実装する最も簡単な方法は何ですか?より良い方法がありますか?

+1

保護する必要があるものはありますか?あるいは、人々がファイルをぶち壊してサポートを呼びかけないようにするだけですか?後者の場合、バイナリのシリアル化はどうでしょうか? – jglouie

+0

これは建設的なことではありません。十分に決定されたシステム管理者は、アプリケーションをリバースエンジニアリングし、キーを見つけて、設定ファイルを解読することができます。設定を変更しなければならない人は、アプリケーションを放棄するだけです。そのようなトリックでやっていることは、結局、あなた自身の市場シェアで自分を撃っていることです。 – zwol

+0

設定ファイルを読むためにアプリが解読キーを保持する必要があるので、暗号化は、正当な形式のセキュリティではなく、カジュアルスヌーパを抑止するための最良の手段です。 – hobbs

答えて

2

すでにboostを使用しているので、いつでもserialize itとすることができます。バイナリアーカイブを使用すると、ファイルは基本的に読めなくなります。あなたのフォローアップの質問は次のようになると思います。でも安全にしたいですか?それとも読めない?

+0

私の必要性のために、最も簡単で速くなることが判明しました。システム間の移植性のために、私はバイナリではなくテキストのシリアライゼーションを使用しました。これは数字とテキストが読めることを意味します。 – Cookie

1

コードがクライアントのマシン上で実行されている場合は、がクライアントのマシンになければならないため、原則としてデータがわからないことはありません。難読化しようとすることはできますが、最終的にクライアントはデータを読み取ることができなければならないので、それを知る必要があります。

プログラムに暗号化キーを埋め込むだけの場合、クライアントはファイルをスキャンしてキーを抽出することができます。あなたが少し強く働くなら、あなたはSkypeを作ることができますが、それも解体されています。

すべては、データを保護する必要性の深刻さに依存します。それが絶対であればそれはできませんが、カジュアルな訪問者を避けたいのであれば、少し難しくすることができます。

1

あなたの目標が偶然検査から誰かを防ぐことであれば、合理的なアプローチです。

設定を読むことができないようにする必要がある場合(奇妙な理由で)、プログラムがそれを読むことができるので、愚かな用事です。そうすることを決定したユーザーも同様です。プログラムを逆アセンブルするか、単にデバッガからメモリダンプを実行します。そのように言えば、シンプルで軽量な暗号化は、最も厳しい暗号化でさえ同じように破損するため、十分に適しています。

xmlなどの明示的に人間が読める形式を使用することは、人々に読ませたくない場合に適しているかどうかを検討することもできます。

1

私は非常によく似ています。私は圧縮アルゴリズムを使用して、ファイルを「暗号化」しました。 zlibはC++で使用できます。コマンドラインとコードの両方から、ファイルの暗号化と復号化を簡単に行うことができます。さらにいくつかの 'セキュリティ'を追加するには、圧縮ファイルをパスワードでxorすることができます。

これは実装が簡単で使いやすいものです。もちろん、クライアントがハッカーである場合や、XMLを読むための金銭的インセンティブがある場合は、このような方法を使用しません。

関連する問題