パスワードを忘れた? アカウント作成
145860 journal

Livingdeadの日記: WSSEとHTTPダイジェスト認証

日記 by Livingdead

HTTPダイジェスト認証で送るもの

A1 = ユーザ名 ":" realm ":" パスワード
A2 = HTTPのメソッド ":" コンテンツのURI
response = MD5( MD5(A1) ":" nonce ":" nc ":" cnonce ":" qop ":" MD5(A2) )

サーバ側ではMD5(A1)を保存している.nonceはサーバで生成され,リクエストに対して401でレスポンスを返す時にクライアントに通知される.cnonceはクライアント側で生成する.
WSSEで送るもの

PasswordDigest = base64(sha1(Nonce . Created . パスワード)) … (type-A)
PasswordDigest = base64(sha1(base64_decode(Nonce) . Created . パスワード)) … (type-B)
X-WSSE: UsernameToken Username="Melody", PasswordDigest="VfJavTaTy3BhKkeY/WVu9L6cdVA=", Created="2004-01-20T01:09:39Z", Nonce="7c19aeed85b93d35ba42e357f10ca19bf314d622"

NonceとCreatedの組み合わせは有効期限の間サーバ側で保持され,同じNonceとCreatedの組み合わせでの認証を要求されると無条件で認証に失敗する.これによりリプレイを防ぐ.パスワードは生のまま連結してハッシュするのか.ここはダイジェスト認証のA1のようなものを使う方がいいだろうなぁ.

それにしてもなんで似たようなものが再発明されているんだろう.HTTPヘッダに入れて使うだけならHTTPダイジェスト認証のプチ劣化コピーのように思える.と思ったが,そもそもX-WSSEヘッダではなくWS-Securityの枠組みでSOAP文書などにXMLで埋め込んで使うためのもので,再発明というわけではなかったのか.

【関連サイト】
Web Services Security仕様
Web Services Security (WS-Security)
WS-Security 入門
Web Services Security 補遺

いわゆる「WSSE認証」は、リプレイ攻撃すら防げないあまり出来のよくないプロトコルであり、どうせならHTTP Digest認証を使う方がましなのに、なぜこれが使われているのだろうか?

via: 高木浩光@自宅の日記 - 公衆無線LANで使うと危ないiPod touchアプリに注意

え・・・リプレイ攻撃防げないのか.勉強不足.

この問題に対処するため、WS-Securityを発表した3社は、2002年8月に発表した「Addendum(補遺)」(日本語版)でこの問題への解決策を公開した。補遺には、リプレイ攻撃を防ぐ有名な手法であるノンス(nonce:「その場限りの」「1回だけの」といった意味)とタイムスタンプを使って、ダイジェストに手を加える方法が規定されている。

via: @IT:特集 次世代XML Webサービスを試す Part 2 1.WS-SecurityとWeb Services Development Kit

ううむ,そうだよな・・・何か見落としているんだろうか.見落としてるんだろうな.偉い人はヒントへのポインタだけでも書いておいてもらえるとアンダーアチーバーでも勉強できるのでありがたいのだが.ググレカスに怒られるか.

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

身近な人の偉大さは半減する -- あるアレゲ人

読み込み中...