私はこれが許容できる解決策であるとは思わない。
HMACの目的は、データの整合性と信頼性を検証することです。したがって、これを使用して情報が変更されていないことを確認し、ユーザーが秘密鍵(この場合はパスワード)を持っていることを確認できます。
それができないことは、チャネルを暗号化し、エンドユーザーのサーバーのIDを確認することによって盗聴から保護するなど、SSLが実行できる他のいくつかのことです。
盗聴:中間者(MITM)がこのトランザクションを監視し、リターン応答(HMACダイジェスト)を傍受し、それを自分の要求として送信することを妨げるものは何もありません(他のユーザーからの応答を停止することさえあります) 。
サーバーのIDの確認:ここで欠落している最も重要な部分の1つは、フィッシング詐欺師にだまされないようにユーザーを保護することです。有効なSSL証明書があれば、ユーザーはそのサイトがあなたのものかなりすまし者かを確認する方法がありません。エンドユーザーの信頼性を検証することで自分自身を保護しようとしていますが、これはすばらしいことですが、エンドユーザーを保護することを忘れています。
なぜSSLが利用できないのか知りたいです。私はこれをよく耳にしますが、通常の理由は、誰かが証明書のために50ドルをポニーにしたくないからです。しかし、証明書はそれだけの価値があり、セキュリティが重要な環境では、SSLが利用できないという技術的な理由は実際にはありません。