2011-07-07 4 views
2

私は.Net WinFormsアプリケーションを作成しており、リモートサービスにアクセスするにはパスワードを保存する必要があります。私はすべての設定を書き込むXMLファイルを持っています。しかし、私はプレーン・テキストでパスワードをXML構成ファイルに書きたくありません。私はAesCryptoServiceProviderを使って情報を暗号化することを考えました。このクラスでは、データを暗号化するためのキーが必要です。プログラムのソースコードをそのまま残すことができます。しかし、これは、私のプログラムのすべてのインスタンスに対して、キーが常に同じであるため、プレーンテキストに格納するよりもほんのわずかになるように思えます。最初にプログラムを始めるときにキーを生成することができましたが、それを保存するにはどこが良いでしょうか?私が持っていた1つの考えは、定数の鍵と、私がパスワードと一緒に保管する塩を使用することです。これは、鍵を開いた状態で保管する必要なしに、各個人のマシンに固有の「鍵」を作成するでしょう。このタイプの情報をユーザーのハードドライブに保存するための標準的な方法はありますか?ユーザーのハードドライブに保存されている情報を安全に暗号化するにはどうすればよいですか?

答えて

2

私はこのための完璧な解決策を考えることはできませんが、DPAPIを使用することができます...

ので、これは、通常は別のシステム上のファイルの復号化を防ぐことができますが、ultimativelyデータを保護しません。ユーザーはあなたのプログラムから追加のキーバイトを抽出することができます。また、彼は問題ではないマシン/ユーザーキーにアクセスすることができます。

「最後の1つの暗号を保存する場所キーを避けることはできませんか? ...私は、厳格なアクセス権限

+0

DPAPIは私がWindowsで使用するものです。 – Yuliy

0

で各ユーザーのレジストリパスをお勧めしたい私は、ユーザーがマスターパスワードを使用してください

  • 考えることができる唯一の2つのオプションがあります - これは、ユーザーであることを意味しますデータの暗号化を全面的に担当します。これは迷惑になるかもしれませんので、ユーザーアカウントとの統合を検討してください。
  • システム特有の情報に依存しています - 私は.NET開発者ではありませんので、システム固有の情報の量はどれくらいか分かりませんが、何か助けてもらえます。これは実際には外部のユーザーがパスワードを解読するのを防ぐだけですが、理論的にはシステムにアクセスできる人なら誰でも入手できます。人々は、彼らが同じように簡単にあなたがそれを送信する前に送信する必要があり、生のパスワードを印刷することができ、キーのようなものを抽出するために、あなたのアプリになっについてのご心配ならば

は、しかし覚えておいてください。あなたが心配している場合は、他のオプションを検討する必要があります

関連する問題