現在取り組んでいる Web サイト用の新しい暗号化システムを作成しようとしています。可能であれば、開始する前に誰かにセンスチェックしてもらうことができるかどうかを確認したかったのです!
更新: 元の質問でより明確になっているはずです。後でデータを読み戻せるようにするために、一部のユーザー データを暗号化する必要があります。また、ログイン時にユーザーを確認するために、ユーザーのパスワードまたはパスワードのハッシュも保存する必要があります。
計画は次のとおりです。
マスター キー: DPAPI キー セッター アプリケーションを作成して、テキスト ベースのマスター キーを取得し、DPAPI を介して暗号化し、暗号化された出力をサーバー上のテキスト ファイルに保存します。これは、サイトを新しいサーバーに移動するたびに実行する 1 回限りのタスクです。マスター キーは、AES 暗号化を実行するために使用されます。
新規ユーザー登録時:
2.1. パスワードデータ/パスワードデータのハッシュを保存します。
2.2. マスター キー ファイルをロードし、DPAPI を使用してキーを復号化します。復号化されたマスター キーと、各ユーザー データの新しいランダム IV を使用して、AES で暗号化された文字列を作成します。暗号化された文字列の前に対応するランダムな IV を付けて、暗号化された各文字列を保存し、データベースの varchar 列に挿入します。
ユーザーのログイン時:
3.1. パスワード ハッシュを照合してユーザーを検証します。
3.2. 暗号化されたユーザー データ フィールドごとに、コンテンツを IV と暗号化されたデータの 2 つの部分に分割します。DPAPI からマスター キーと IV を取得し、データを復号化して画面に表示します。
それはどのように聞こえますか?上記に明らかな欠陥はありますか?
私は過去にこの種のものに Enterprise Library Security を使用していたので (これは .NET コアでは使用できなくなりました!)、これに慣れていないので、どんな助けも大歓迎です!