コンテンツへスキップ
ものがたり
戻る

2007-03-14

107桁までは言えます

大学には200桁以上言える奴が居ましたが…

NegotiateServiceCredentials, probably mostly useless

MSのGSSAPI実装にはバグがあるらしい

http://www3.ietf.org/proceedings/04aug/229.htm

GSSAPI実装って、つまりKerberosのことなんだけど。GSSAPI SPNEGO Issuesというセクションに次のような一文がある。

We couldn’t find a way of producing a implementation that followed the spec and interoperated with MS.

ところでWSHttpBinding.Security.NegotiateServiceCredentialsをtrueにしていると、このspnegoあるいはsslnegoを使うことになるのだが、既に仕様違反と思しきspnegoとは違って、sslnegoは標準準拠になり得るのかと思いきや、全然そんなことは無かったのである。

WS-Trustに基づくRequestSecurityToken (RST)とRequestSecurityTokenResponse (RSTR)でTLS 1.0のnegotiationをClientHelloからServerFinished1までやり取りして得られるSecurityContextToken (SCT)の中身は、まずデフォルトではDPAPIで暗号化されていてWindows以外では中に入っていると思しきsymmetric keyを取り出せない。

SecurityContextTokenの中身が標準仕様としてまともに策定されていない時点で、WS-SecureConversation逝って良しと考えるのが、おそらく僕ら一般人の反応であろう。

さて、ちょっとした技を使えばこのSCTの中身をDPAPIで暗号化しないようにすることが出来るのだが2、それでもこのSCTの中に含まれる↓のようなバイナリデータのフォーマットは、通常人には理解できないだろう。

42 00 42 02 83 42 06 99 2B 75 75 69 64 2D 38 36 36 65 33 31 63 37 2D 39 35 33 62 2D 34 32 39 32 2D 38 30 34 37 2D 30 61 38 36 63 62 64 34 31 63 31 34 2D 31 42 04 AD ED FA 75 15 E6 38 41 43 8F 22 A3 2B 85 7F 6C 7F 42 08 9E 1E 3E 61 45 81 04 70 A8 66 59 2E 90 C4 20 8E 31 21 86 F6 1A 01 A2 AB 75 75 35 05 EB 3A 56 8D 9F 02 11 A3 42 0E 8F C6 E4 E9 D4 9A 33 C9 08 42 10 8F C6 F4 95 A6 EE 33 C9 08 42 14 8F C6 E4 E9 D4 9A 33 C9 08 42 16 8F C6 F4 95 A6 EE 33 C9 08 01

僕がbinary XmlDictionaryWriterのデータフォーマットであることを思い出すことが出来たのも奇跡に近い。utf16でもねえしbinary serialization formatでもねえ…と何時間か考えさせられた3。binary dictionary readerなんて1年以上いじってねえし、忘れとるわ。

で、結局のところ何が言いたいかというと、WCFとinteroperabilityを実現していると宣伝している製品がいくつかあるようだが、いかがわしいなということである。少なくともXmlDictionaryReaderのデータ形式を解読するコードが無いと実装できないと思うのだが、本当に作っているものだろうか?

政治ポジションテスト

何か懐かしい感じ。
http://seiji.yahoo.co.jp/feature/toitsuchiho07/position/

何か昔あった奴は統計結果が信用できなかったものだけど、試しにやってみたら「リベラルかつ小さな政府を目指すタイプ」とか言われちった。僕は個人の自由権を確保するために政権や経済活動の規制を強化しろっていう保守的な4スタンスをだいたい常にもっているつもりなのだけど、その辺の微妙なニュアンスまでは理解してもらえていない気がする。

Footnotes

  1. 実際にはClientFinishedまで処理すれば、その応答となるServerFinishedは無視出来る。

  2. ヒント: SecureConversationServiceCredential

  3. というか、最初はそもそもDPAPIで暗号化されたものから書式を読み取ろうと試みた。

  4. 伝統的な価値観を尊重するという意味。ネオコンに保守という美しい言葉は勿体ないと思う。


この記事を共有:

前の記事
NegotiateServiceCredentials, probably mostly useless
次の記事