典型的な Web ベースのログイン システムがあります。有効期限がなく、パスワードが含まれる「ログイン リンク」を顧客が生成できるようにしたいと考えています。したがって、暗号化された形式のパスワードを含むリンクを作成したいと考えています。注: 各リンクが一意のキーを持つルックアップ テーブルが最善の方法であることはわかっています。それはしません。
私は公開鍵暗号化に精通していません..多分それが私が必要とするものですか?
これが私が考えていることです。これではまだ不十分な場合がありますので、お知らせください。
定義: user-password は、リンク内で暗号化された形式で必要なユーザーのパスワードを指します。
大量のリンクを生成することで暗号化キーを導出できる可能性があるため、すべてのユーザーパスワードに 1 つの暗号化キーを使用することはできません。
標準形式の対称暗号化を使用します。
サーバーには、1000 個の複雑な暗号化キーを含むテキスト ファイルがあります。
リンクが生成されると (そのリストを持つ PHP スクリプトを使用して)、1000 個の暗号化キーの 1 つが選択されて、平文のパスワードが暗号化されます (ほぼ同時に同じものが選択されるのを防ぐためにランダムではなく、順番に選択されます)。 .
ユーザーのパスワードを暗号化する前に、「s345lm34l5k342342343534432324sdfs」のようなものを先頭に追加して「ソルト」します。(例: password1 は s345lm34l5k342342343534432324sdfspassword1 になります)。「ソルティング」により、辞書攻撃に対する解読が難しくなります。この塩は非公開です。しかし、もちろん、危険にさらされる可能性があり、すべてのパスワードに対する 1 つのソルトであるため...
さらに、ランダムに生成された 2 番目のソルトがパスワードに追加されます。このソルトは、単一の強力なパスワードで暗号化されています。ソルトとそれを暗号化するパスワードの両方がランダムなバイト パターンであるため、ソルトを特定するのが難しくなります。
リンク メーカー ツールでは、10 分ごとに 15 個のリンクしか生成できず、その後 IP がロックアウトされます。
- リンク メーカー ツールは、提供されたユーザー/パスワードが実際に機能しているユーザー/パスワードの組み合わせでない限り、リンクを生成しません。そうすれば、誰かが暗号化情報を特定するためのリンクを生成しようとしても、うまくいきません。それでも、理論的には、彼らは有効なユーザー/パスワードを取得し、ブルート フォースを試みることができます。
これは安全ですか?