3

安らかで、高速で、セキュリティが低い簡単な認証方法を実現できないかと考えています。

クライアントのサーバーで有効な SSL 証明書に依存できないため、SSL はオプションではありません。また、適切に使用すると、リクエストの本文に署名する必要があるため、HMACは実際には不可能ですが、私の場合、その本文は大きなファイルになる可能性があります。さらに、JavaScript/AJAX で認証が可能である必要があります。

とてもシンプルなことを考えました。その問題は何ですか:

HEADER: X-Authentication: タイムスタンプ:ユーザー名:sha256(タイムスタンプ:パスワード)

サーバーはユーザーのパスワードを知っており、ハッシュをチェックできます。タイムスタンプは、たとえば 10 秒前に行われた要求のみを許可するために使用されます。リプレイ ウィンドウは非常に小さく、サーバー側にはセッションがありません。

ハッシュがクラックされた場合、攻撃者はパスワードを知っており、無制限にアクセスできます。

代わりに使用することです

HEADER: X-Authentication: タイムスタンプ:ユーザー名:HMAC(パスワード、「タイムスタンプ+リクエストメソッド+動詞」)

行く方法は何ですか?私はセキュリティの専門家ではありません。セッションをサーバーに保存する方がよいでしょうか (RESTful ではありません)。

4

2 に答える 2

3

必要なことを行うランダム ハッシュ アルゴリズムを構築しました。これは jAuthenticate と呼ばれます。

https://github.com/thomasoeser/jAuthenticateからダウンロードできます</p>

ここでその仕組みを確認できます: http://furiousgryphon.com/jauthenticatedemo.html

これが強力なアルゴリズムである理由 (私の意見では) は、ハッシュに影響を与えるために乱数を使用しているが、難読化された数値をハッシュと共に送信しているためです。

各ハッシュは 1 回のみ使用できます。

無料のオープン ソース (MIT) です。

于 2012-10-20T10:26:51.707 に答える
1

HTTP 認証は拡張可能であるため、独自のメカニズムを発明できます (明らかに自己責任で!)。詳細については、 https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-p7-auth-20を参照してください。

わざわざ独自の新しい X- ヘッダーを発明する必要はありません。スキームで既存の Authorization ヘッダーを使用することをお勧めします。例えば

Authorization: kruemel-auth timestamp:HMAC(password, 'timestamp+request-method+verb')

理想的には、新しいスキームは仕様とともに IANA に登録されます。レジストリは、開発された認証方式を追跡するためにセットアップされています。http://tools.ietf.org/id/draft-ietf-httpbis-authscheme-registrations-03.htmlを参照してください。

于 2012-09-18T20:19:16.797 に答える