パスワードを暗号化する方法、symetricとasymetricの暗号化などについて多くの脅威があります。アプリケーションにパスワードを保存
私は単純なprobemを持っています。ユーザーがsqliteデータベースに接続するたびにパスワードを入力する必要がある場合は、すべて問題ありません。
問題は、アプリケーションにパスワードを保存して、sqliteデータベースに接続するたびに入力する必要がないことです。
私はパスワードを暗号化してどこにでも暗号化されたパスワードを保存できることは知っています。しかし、それは、他のどこかでそのパスワードを解読するために第2のパスワードを保存する必要があることを意味します。
このプロセスを繰り返して、2番目のパスワードを暗号化できますが、そのパスワードを暗号化解除するために必要な暗号化されていないパスワードを再度残します。
私の質問はどこですか?私は他のパスワードを暗号解除するために必要な最終パスワードをどこに保存する必要がありますか?そのパスワードを置く最も安全な場所はどこですか?あなたが最後の部分を理解しない場合
は、ここで私は最後の部分で説明しようとしたものの一例である:
さんが言ってみましょう:データベースをオープンする
パスワードは次のとおりです。1234
私はそのパスワードをsomeKey
というキーで暗号化し、そのパスワードはabcd
私は、キーsomeKey
とabcd
暗号化を解除場合、私は、私は、キーsomeKey
で再びabcd
を暗号化することができ、私はxy#8
をunencryptingによって1234
パスワードを取得することができます場合、私はついにxy#8
を得ることができます1234
を取得する必要がありますその後、キーsomeKey
と私は1234
abcd
が、私はその後、同じキー
someKey
とその暗号化を解除します取得します
このプロセスを何回繰り返すかは関係ありませんが、暗号化されていない鍵someKey
がアプリケーションのどこかで終わることになります。私がその鍵を保管する必要がない唯一の方法は、ユーザーがデータベースに接続するたびにパスワードを要求することです。
文字列someKey
をできるだけ隠してアプリケーションに保存するのが最も安全な場所はどこですか?
http://blogs.msdn.com/b/ericlippert/archive/2011/09/27/keep-it-secret-keep-it-safe.aspx – SLaks
なぜデータベースに最初にパスワードが設定されているのですか? – SLaks
私は、アプリケーションを使用するユーザーに柔軟に対応したいと考えています。私は、データベースがパスワードを持っていること、パスワードを持っていないこと、パスワードを持っていることをプログラムに覚えさせて、誰かがdata.dbファイルを盗むと開くことができないようにする必要があります。 –