私のアプリケーションは、RijndaelManagedクラスを使用してデータを暗号化します。この暗号化の一部として、パスワードがロードされたSecureStringオブジェクトを使用します。このオブジェクトは、バイト配列に変換され、実行時にRajindaelManagedオブジェクトのキーにロードされます。
私が持っている質問は、このSecureStringのストレージです。ユーザーが入力したパスワードは実行時に入力でき、SecureStringオブジェクトに「安全に」ロードできますが、ユーザーが入力したパスワードが指定されていない場合は、デフォルトで何かを設定する必要があります。
したがって、最終的には、質問は次のようになります。
アプリケーションを実行するたびにSecureStringオブジェクトにロードする既知の文字列またはバイト配列が必要な場合、どうすればよいですか?「暗号化された」データは最終的に別のアプリケーションによって復号化されるため、ユーザーが入力したパスワードが指定されていない場合でも、あるアプリから別のアプリに移動するときにデータを暗号化する必要があります。これは、他のアプリがパスワードを適切に復号化できないため、デフォルトのパスワードをランダムにすることができないことを意味します。
私が考えている解決策の1つは、単一のパスフレーズのみを吐き出すdllを作成し、そのパスフレーズを使用して、実行時にいくつかの異なるハッシュ/再編成関数を実行してから、最終的にsecureStringオブジェクトにフィードすることです。これは十分に安全ですか?
わかりやすくするために編集*:暗号化されたデータは、マシン間でファイルを介して渡されます。常にパスワードが設定されているZipファイルと考えてください。ユーザーが直接何も入力しない場合は、デフォルトのファイルが想定されます。