綾小路龍之介の素人思考

ircチャンネル常駐とpart要請とop権限と同一性判定

ircチャンネルの常駐とオペレータ権限について思うところ。Tiarraにせよそのほかのbotにせよ、常駐していると次のような状態を引きおこすことがある。それは、「チャンネルにオペレータ権限を持っている人が1人もいなくなり、自分だけがチャンネルにいる。」という状態だ。このような状態になると、元チャンネルオペレータはどうにかしてオペレータ権限を復活させようとするわけだ。オペレータのいないチャンネルでチャンネルオペレータを回復するには、チャンネルにいるメンバー全員がチャンネルからpartして、チャンネルが消滅して、再度誰かがチャンネルを作って、その誰かがオペレータにならなくてはいけない。つまりチャンネルオペレータがいなくなると、元チャンネルオペレータはオペレータ権限を回復するためにchannelにjoinしているメンバーに一旦partすることを要請する。このときに常駐bot等呼びかけに一切反応しないメンバーがいると、いつまでもメンバーがチャンネルに残ることになる。

ここでの問題は、part要請したチャンネルメンバーと元チャンネルオペレータが同一人物であることをチェックする確実な方法が無いという点だ。もちろん、同一性が保証できる限り、part要請に従いop復権に手を貸すことはチャンネルメンバーとして間違っていないと思う。しかし、一つ間違えればop乗っ取りになるpart要請はソーシャルなop乗っ取り行為とも考えられるわけで、part要請に応じるか無視するかは微妙な問題と思われる。

結局、op復権を目的としたpart要請は元オペレータの全員がop権限を手放してしまったことがそもそもの問題である。残念なことに、IRCのプロトコル的には人とIDを一意に結びつけるためのキーワードをやり取りしない(例えば、rshプロトコルでは人とアカウント名やそれに伴う権限を一意に結びつけるためにその人のみが知っているはずのパスワードをやり取りする)ので、人がログアウト前に持っていた権限をログアウト後も保存し再度ログインしたらその権限を復権するような処理は行えない。人とIDの結びつきをプロトコル的にサポートしないことが、簡単にop権限を手放す問題に一役買っているように思う。

アカウントのような人とIDの結びつきをサポートしないことは、IRCにとって、人とIDの繋がりを弱くしたがIDと権限の繋がりをも弱くした。op権限の再配布という観点からすればこれは欠点だ。しかしop権限の配布を含むチャンネル管理はチャンネルオペレータに委ねられている訳なのだから、チャンネルオペレータの仕事にはbanやkickする以外にもop権限の維持があるということを忘れないで頂きたい。つまるところ、op復権を目的としたpart要請はオペレータ側の操作ミスに起因しているのであり、常駐メンバーに責任は無いと僕は思う。

IRCのできない一度ログアウトしたユーザの持っていた権利をさらにチャンネルオペレータがその権限を手放さないようにできれば良いのだけれど、人と権限を結びつけることは人の同一性判断の方法が確実でない以上難しいと思える。しかし、人に対して権限を付与するのではなく同一性判断が簡単な何らかの要素(nickname, username)に対して権限を付与すると考えれば簡単だ。そして、アカウントを固定のものとすれば

同一性判断の方法として、生体認証、鍵認証、トリップ等があるのだけれど、どれも同一性判断の根拠を送信するという点では変わらない。つまり、同一性の根拠が第三者に盗まれてしまえば第三者が自分の代わりとして振舞うことが出来てしまうわけだ。そんなわけで同一性判定の決定的な解決策はいまのところないと思う。では、にしてもパスワード認証というプロセスを経たとしてもこの問題は付いて回る。

「part要請したメンバーと元チャンネルオペレータの同一性チェックが不可能である。」チャンネルメンバー側からメンバーの同一性を判定する方法は/whoisから得られる情報なわけだが、その両方が過去のチャンネルオペレータの情報と一致していたとしても、それを同一性判定の絶対的な根拠としては使うには不十分だと思う。例えば、ircサーバから見たIPアドレスが同じ2人のユーザが、片方がオペレータ権限を持っていて、もう一方がオペレータ権限を持っていなかったとする。この状態でオペレータ権限を持ったユーザがpartしたら、オペレータ権限を持たないユーザはオペレータ権限を持っていたユーザのnickを使うことで、たりと同じネットワークに属するnickは変更できるし、IPアドレスはNATの内側にいる別ユーザIRCプロトコル的には、channelにjoinするときの認証やサーバ接続の認証は含まれていないわけで、、

同一性判定の問題を完全に解決するためには、IRCサーバはユーザ名とパスワードの認証を行えば良い訳だが、一つの工夫を行えばよい。基本的な認証のプロセスとして考えられる問題は、サーバがクライアントに要求した情報はそのサーバに繋がるユーザは誰でも参照できるという点だ。

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2006-09-30T00:17:37+09:00
  2. Modified: 2006-09-30T07:12:54+09:00
  3. Modified: 2010-03-28T00:39:18+09:00
  4. Generated: 2017-05-26T23:09:15+09:00