私は、安全性が高いと思われるSSLのない認証システムを考えました。私は何か重要なことを見落としていますか?SSLを使用しない安全な認証
- ユーザーは
- Serverが
- サーバがそのログイン・ページの一部としてユーザにT-塩を送るセッションで伝送(T-塩)及び店舗の塩を生成し、ログインページにヒット負荷
- ユーザーユーザー名での種類とパスワードとクリック提出 MD5はT-塩と一緒に自分のパスワードを暗号化し
- ブラウザ
- ブラウザが送信し、サーバへのユーザ名とMD5(パスワード+ T-塩)
- サーバは
- サーバMD5 2
- サーバからMD5sの両方を比較するステップでセッションに格納されたT-塩と一緒にステップ7から取り出されたパスワードを暗号化の下にユーザ名(*注)を使用してデータベースからパスワードを取得しますステップ6とステップ8
- それらが同一である場合は、ログインが成功し
- を認証されているサーバーは、潜在的なリプレイ攻撃に
を防ぐために(ステップ2で追加)セッションからT-塩を取り除く*注取得したパスワードはi nステップ7は、ステップ8を動作させるために(一般的な方法であるように)一方向暗号化することはできません。しかし、データベースレベルでパスワードを保護するために2ウェイ暗号化システムを使用することは可能です。 (ちょっと、ユーザーフレンドリーなパスワード回復プロセスを可能にすることの副次的な利点があります。)
このスキームの長所と短所は何ですか?
SSLを使用するだけで何が問題になりますか? – ceejayoz
私が見ていることから、強みと多くの弱点はありません。これはひどい考えのようです。あなたのパスワードを平文で保存する方が、それよりも安全です。プレーンテキストのパスワードを送信し、サーバー側で暗号化してハッシュし、格納されているパスワードハッシュと比較するか、SSLを使用するか、またはその両方を行うだけです。 – netcoder
ceejayoz:SSLを使用することで問題になるのは、システムに追加するもう1つのコンポーネントだということです。プロジェクトにドロップできるPHPライブラリは簡単になります。 netcoder:パスワードをプレーンテキストで保存することは、パスワードをプレーンテキストで保存する代わりの方法よりも安全ではなく、おそらく数学的に証明できます。私は新しいアイデアを学び、探求しようとしているので、私は業界の教義に興味がありません。私は学問的に正しい人がこの価値がないと知っていますが、私は思っていた以上に複雑な解決法があるかもしれないという強い確信を持っています。 – OCDev