私の最後の質問「シークレットを保存するためのポータブルデータベース」では、今までの最良の答えは sqlite-crypt を使用することです。
sqlite-crypt ドキュメントを読むと、データベースを開くための新しいパラメーターはパスフレーズです。もちろん、パスワードをハードコードしたくないので、そのパスワードを保存するための最も簡単で高速な方法は何だろうかと考えていました。
私の最後の質問「シークレットを保存するためのポータブルデータベース」では、今までの最良の答えは sqlite-crypt を使用することです。
sqlite-crypt ドキュメントを読むと、データベースを開くための新しいパラメーターはパスフレーズです。もちろん、パスワードをハードコードしたくないので、そのパスワードを保存するための最も簡単で高速な方法は何だろうかと考えていました。
いくつかのオプション。
ユーザーにパスキーを要求します (ユーザーは 1 つのパスワードを記憶してすべてのパスワードを取得します) (良い考えです)
アプリの最初の起動時にキーを作成し、独自の方法でハッシュします (悪い考えです)
上記を組み合わせて使用します。つまり、ユーザーに 1 つまたは 2 つのオプションを提供します ([パスワードを記憶する] チェックボックス)。
ユーザーに保存する必要があります。
それ以外の場合は、質問しているセキュリティメカニズムを他のセキュリティメカニズムに置き換えているだけです...
Infamy の回答に対する David のコメントはよく理解されています。ユーザーが下位レイヤーで保護を処理している場合に備えて、ある程度の柔軟性を許可する必要があります...だから、悪名高い人に投票してください。
パスワードが対話的にのみ使用される場合を除き、ハードコーディングはある時点で避けられません。
ファイル内のパスワードの状況でできる最善のことは、最初にアクセスを困難にし、誰かがそれを見つけた場合にできることを制限することです. 経験則として、文字列に格納されたパスワードには、プロンプトで入力する必要のある権限よりも多くの権限を与えないでください。
Windows では、ストレージ暗号化を提供するデータ保護 APIであるDPAPIを使用できます/使用する必要があります。
このタイプの問題のためだけにあります。
ストレージの暗号化は、次のいずれかに基づいています。
Karl FranklinのdnrTV ショーで、これを実装するために何が必要か、およびその他の暗号化機能が正確に示されています。
ショーのソース コードもこのページで入手できます。
もちろん、このテーマに関する記事は他にもたくさんあります。