ユーザーのメール アカウントの受信メールと、Twitter アカウントのツイートを監視するアプリケーションを作成したいと考えています。したがって、ユーザーは自分のログイン資格情報を提供する必要があります。私の疑問は、この機密データをどこにどのように保存するかです。私は自分のアプリケーションがユーザーにこれらのことを繰り返し尋ねるのを煩わせたくありません。
さらに、これらのデータを暗号化して保存する必要がある場合、アプリケーションで使用しているキーをどのように保護すればよいでしょうか?
ユーザーのメール アカウントの受信メールと、Twitter アカウントのツイートを監視するアプリケーションを作成したいと考えています。したがって、ユーザーは自分のログイン資格情報を提供する必要があります。私の疑問は、この機密データをどこにどのように保存するかです。私は自分のアプリケーションがユーザーにこれらのことを繰り返し尋ねるのを煩わせたくありません。
さらに、これらのデータを暗号化して保存する必要がある場合、アプリケーションで使用しているキーをどのように保護すればよいでしょうか?
暗号化のポイントは、平文の秘密性をより小さな鍵の秘密性に依存させることです。
この場合、キーを保存する方法もないため、暗号化だけでは役に立ちません。
代わりに、サード パーティによって (パスワードを使用して) 管理されている既存のシークレットを使用し、それを使用してキーを派生させる必要があります。
Windows では、DPAPI を使用できます。DPAPI は、最終的にユーザーのログイン パスワードによってサポートされます。
ユーザーがパスワードを忘れた場合 (または別のアカウントから変更された場合)、データは回復不能に失われます。
これは、そのユーザーとして実行されているコードに対して防御しないことに注意してください。
何を防御しようとしているのかを決める必要があります。
本当に必要な場合 (良い考えではありませんが...)、たとえば Firefox のようにパスワード用の暗号化されたストレージを作成することをお勧めします。ユーザーはマスターパスワードでパスワードを保護します。
答えはどこにもありません。暗号化された形式であっても、パスワードを保存しないでください。「正しい」方法は、おそらく同様の Web アプリケーションの動作をシミュレートすることです。実際、Twitter にログインする場合は、[remember me] チェックボックスをオンにすると、次回から Twitter がパスワードを要求することはありませんよね? それはどのように実装されていますか?
通常、特別なトークンはクライアント側の Cookie に保存されます。Cookie はサーバーに送信され、認証に使用されます。Cookieには有効期限があり、期限が過ぎると自動的に削除されます。
デスクトップ アプリケーションのより良い解決策がない限り、このメカニズムを使用することをお勧めします。
アプリケーション全体のパスワードを使用し、そのパスワードを使用して他のすべてのパスワードを暗号化し、アプリケーションがtwitterが必要であると言うと、そのパスワードを使用して復号化すると思います...さらにマスターパスワードのソルトハッシュを取得してディスクに保存します。