2006-12-27

livedoor Wirelessの話の続き

昨日の記事の続き。個人として書いていて会社の意見ではありません。

「Web屋のネタ帳」のこと

誤読するのも無理ないというか、CNETの記事にはWEPキーが必要と書いてあるんですが、他のニュースサイト見ると書いてなかったり、普通に説明を見た限りだとわかりそうにないので。なので早とちりでああいう記事が書かれるのも無理はないと思うのですが、気になるのは、何もそこまで悪意を持って叩く必要があるのかな、っていう点です。

少し前にも、百式の人をボロクソに書いてたけど、ブラウザの同時コネクション設定ぐらいでサーバー負荷が増大して大変なことになるなんて考えにくいというかフツーあり得ないというか、「Web屋」ならその辺は感覚的に分かるはずだし、RFCもMUSTじゃなくてSHOULDになってるし、そもそもタイトルからして煽りすぎではないか。もちろんブラウザのデフォルトは適切な値であるべきだろうけど、ボットやクローラや分割ダウンローダーの方がよっぽど問題になるよね。

記事自体には(ちゃんと訂正を入れてくれるので)どうこう言うつもりは無いんですが、きょうび5000万円請求されたり奥歯ガタガタ言わされたりといった怖い事件が多発しているので気をつけたほうがいいんじゃないかと思いました。

WEPキー + MACアドレス認証は結局安全なのか

そもそも、アーキテクチャの選択だけで安全性が保障されるつーことは無いよね。
暗号化が弱いとか、MACアドレスは詐称できる、っていうのは分かるんだけど、実際のところIDやパスワードの管理コストまで考えると、従来のWEB認証より安全なケースも多いんじゃないかな、と思う。
例えば子供にNintendoDSやWiiでインターネット接続させたいような場合に、MACアドレスを事前登録しておけば小学校低学年の分別の付かない子供にlivedoor IDとパスワードを教える必要がなくなるわけだよね。パスワードを知らなければそもそもフィッシング被害に遭ったりしない。設定済みのNintendoDSを友達に貸すような、カジュアルなタダ乗りも相手にIDとパスワードを教えなくて済むようになるわけだし。

もちろんこれは確率的な問題に過ぎないんで、そこらじゅうで電波傍受されてて偽アクセスポイントが設置されてるのであれば、また話は違ってくるだろう。

なんか間違ってたら教えてください。

どこに書いてあるのか

http://d.hatena.ne.jp/dacs/20061226/1167065122
WEPとセットになっているんだそうだ。そんなこと非加入者が知りうるところのどこにも書いてなさそうだが…それはライブドアの落ち度ではないのかな?

探したら書いてあった。簡単に思わせたくてそこら辺の説明をはしょってるのかもしれない。
ライブドアではよくあること。いやほんとライブドアではよくあること。

http://helpguide.livedoor.com/help/wifi/qa/grp591#3088
Q. MACアドレス認証を利用する際の接続フローを詳しく教えて下さい
A. 以下の流れになります。

■通信可能エリアでアクセスポイントを検知

■WEPキーを入力し、IPアドレスを取得

■ブラウザを起動する

□接続完了

犯罪に使われるかどうかの話


専門家じゃないので詳しいことは知りません!

1. 法的な抑止力があるかどうか
WEPキーもMACアドレスのどちらもパスワードと呼ぶには微妙だと思うけど、それで認証を構成しているのであればMACアドレスを詐称して使うことは不正アクセス禁止法でいうところの不正アクセスに該当するんじゃないの?

2. 技術的な抑止力があるかどうか
担当者じゃないんで知りませんが、同じMACアドレスが物理的に離れたアクセスポイントで使われてたら不正利用だってのはわかるよね。あとMACアドレスで製品名わかるはずなのでゲーム機でSPAM送信してたらおかしいとか、そういう。

3. どの程度抑止できればいいのか
インターネットは犯罪に使われるからダメとか。

2006-12-26

livedoor Wirelessのラの字も考えてないWeb屋のネタ帳の誤読記事

livedoor wireless、MACアドレスによる認証を開始--ニンテンドーDSにも対応
http://japan.cnet.com/news/com/story/0,2000056021,20339983,00.htm

に関して、Web屋のネタ帳の人が
「セキュリティのセの字も考えてないライブドアの公衆無線LANサービス」という記事を書いているのですが、
http://neta.ywcafe.net/000698.html

何か色々間違ってると思うので、書いておきます。これはライブドアの中の人じゃなくて、1ユーザーとしての立場で書いてるのと、あとネットワーク管理者でもなんでもないんで、そこら辺信頼できるかどうかは各自ご判断ください。

まず、実際自分で試してみたのですが、これは接続したい機器のMACアドレスを事前に登録しておくとWEB認証をスキップできるというもので、そもそもWEPキーを入れないとアクセスポイントに繋がりません。なので、Web屋のネタ帳の記事にある、「MACアドレスだけで認証する」というのは間違いです。

もう少しつっこんだことを書くと

- セキュリティ上の懸念はある
- 気になる人はMACアドレスを登録する機器を限定すべき
- MACアドレスを知られただけで不正アクセスの責任を負わされるというのは非現実的

と、個人的には思います。

偽装アクセスポイントの問題

偽装アクセスポイントというのは、livedoor Wirelessに限らず公衆無線LAN全般の問題で、偽のアクセスポイントを設置しておけば自動接続してきた機器のMACアドレスを収集したり、通信を傍受することができる。そういった行為を取り締まる法律やら条例やらがあるかどうかは知らない。そもそも第三者がSSIDとWEPキーが「たまたま」同じアクセスポイントを設置する、というケースも一応ありうるだろう。

なので公衆無線LANに繋がった後に「WEB認証画面を見てURLが正しいかHTTPSで繋がっているかを確認して、本物のアクセスポイントに繋がっていると確証が持てたらユーザー名とパスワードを入力してログインしてください」ということを、記憶が定かではないが小学校の五年生ぐらいで教わったように思う。

つまり、ここで「本来必要なWEB認証画面」が表示されずに使えてしまったら、偽のアクセスポイントを使っている可能性がある、ということになるのだが、MACアドレスを事前登録しておくことでWEB認証がスキップされるので、本物のアクセスポイントを使っているのか、偽のアクセスポイントを使っているのかを判別する要素がなくなってしまう。

という問題があると思うので、万が一偽装アクセスポイントに接続して通信が傍受されても問題ないような機器に限定してMACアドレスを登録するようにしておけばいいんじゃないかと思う。ゲーム対戦とか。アプリケーションレベルで暗号化されてる場合とか。

犯罪に使われるか、タダ乗りできるかどうか

これについてはWEPキーはそもそも認証としては弱いので、総当たりで試すなりlivedoorWirelessの会員に聞くなりすれば突破できるだろう。なので、認証済みのMACアドレスを手に入れて、MACアドレスを偽装すればタダ乗りすることが可能になる。ただし、ゆるゆるとはいっても、パスワードはパスワードなので会員でもないのにlivedoor Wirelessのアクセスポイントを使うのは不正アクセスなんちゃらに該当するんじゃないかと思う。全体からすると信頼できる他人にlivedoor idとパスワードとWEPキーを教えて故意にタダ乗りさせるようなケースの方が圧倒的に多いんじゃあるまいか。

これは全く個人的な意見だけど、正規の利用者がMACアドレスを他人に知られただけで責任を負わされるというのは非現実的だと思う。その人のアカウント経由で犯罪が行われたとしても、どのアクセスポイントを使ったかなんてのは分かるんだから、普通にアリバイを証明をすればいい。ただし、同じMACアドレスで複数のアクセスポイントに繋ごうとした場合に、正規ユーザーにも関わらずアクセス制限をかけられるような可能性はあるんじゃないかと思う。そこら辺の仕組みはlivedoor Wirelessの中の人ではないので知らない。


以上です。
とりあえず、MACアドレスだけで繋がるというのは間違いです。

補足 2006-12-26


実際のところは事前にWEPキー(申込み時にユーザー毎に割り当てられる10文字程度の英数字)を機器にあらかじめ設定しておくことが必要


これも間違い。そういう形態でサービス提供することは不可能だと思う。書いていい話なのかどうかわからないけど自分が知る限りlivedoor WirelessのWEPキーはユーザー毎ではなく全ユーザー共通。これは低価格の公衆無線LANでは(たぶん)一般的なんじゃないかと思う。複数使い分けられるのはあった気がする。

で、もっと安全な認証方法でサービスを提供しているところもあるので、
http://itpro.nikkeibp.co.jp/article/COLUMN/20060306/231816/

その点を指して「セキュリティ上問題がある」というのであれば真っ当な意見なのでその辺は否定しません。サービス概要を見ると「IEEE802.1x認証は後日対応予定」と書いてあるが、具体的にいつ対応するのかは知らない。

livedoor WirelessはWEPキーで暗号化されているので完全無欠鉄壁セキュアです!みたいな宣伝はしてないよね。してたらJAROにTELすればいい。逆に「盗聴される恐れがありますが月額500円!」とか、わざわざユーザーの不安を煽るような周知をしないといかんのか。

そもそも盗聴されて困る情報をインターネットで送るときは暗号化しなさいと小学校の三年生ぐらいで教わるはずなので、その辺のリスクは十分に承知した上で値段とサービスエリアと対応機器と考えて契約すればいいんじゃないかと思います。少なくともNintendoDSで使いたいとかそういう事情があるならWEPしか使えないようだし、MACアドレス認証というのは妥当な方法だと思う。

あと偽アクセスポイントについては普通に業務妨害か何かで取り締まれるんじゃないかと思った。

2006-12-19

Greasemonkeyの本をもらいました

Greasemonkeyスクリプティング TIPS&SAMPLES」の献本をいただきました。ありがとうございます。
いろいろメンテしてなかったり動かなくなってたりすいません。

めんどくさいんでディレクトリインデックス見れるようになってます。
ネタで作ったのとかあまりにくだらないのはエントリ書いてません。
http://la.ma.la/misc/userjs/

ちなみに一番古いのはこれです。
http://la.ma.la/misc/userjs/KuruKuruMixi.user.js

2006-12-16

Firefoxのロゴみたいになっている乾燥機



Firefoxのあのロゴっぽい感じになってます。
乾燥機に衣服が放り込まれているだけなのですが、一体どういう状況でこんなことに……。

2006-12-15

ライブドアのテクノロジーセミナーでしゃべってきました

昨晩はライブドアで開催されたテクノロジーセミナーで「Technologies for UI」という題でプレゼンをやりました。
発表資料はpdfかhtmlで公開する予定ですが、とりあえずテキストだけ先にアップしておきます。

http://ma.la/files/livedoor/seminar2006/seminar.txt

プレゼンツールがFirefox専用だったりするので、これも少し手直しして公開予定です。
こういう機会があるたびにプレゼンツールを作ってるような気がします。

----
追記:12/15

ライブドアのtechblogの方に発表資料をアップしました。
http://blog.livedoor.jp/techblog/paper/ldtech2006/

上下カーソルキーでページをめくれます。

2006-12-14

Wiiのリモコンを使ってプレゼンする方法

id:naoyaに先に書かれてしまったのですが、昨日はWiiリモコンとDarwiinRemote(日本語FAQ)を使ってプレゼンしました。



MacBookだと最初からBluetoothを認識できるので、DarwiinRemoteを起動すれば特に何もしなくて使えます。

Windowsでプレゼンに使うための方法はITMediaの記事に詳しく載ってます。
http://www.itmedia.co.jp/bizid/articles/0612/08/news120.html

信頼のおけるブロガーの人が、例のWiiリモコンを持って来ると事前に聞いていたので、ジャックされるんじゃないかと心配の種でした。

2006-12-08

document.lazy_writerをバージョンアップ

先日書いたdocument.lazy_writerをバージョンアップしました。
http://la.ma.la/misc/js/lazy_writer/

ロードするスクリプトのURLが動的になっているケースも多いので、
- URL指定の文字列を部分一致に。(完全一致するパターンがある場合はそちらを優先)
- 正規表現でパターンを指定できるように
- 関数でパターンを指定できるように

しました。

以下サンプル。

// 適用するURLを正規表現か部分文字列で指定できます。
document.lazy_writer(/google/, function(str){ /* your custom document.write */ });
document.lazy_writer("google", function(str){ /* your custom document.write */ });


他の条件を絡めたいときは、関数で実行条件を指定することが出来ます。
// 今見ているページのURLが.htmlで終わっていれば適用する
document.lazy_writer(
    // 実行するか判別するための関数
    function(url){ 
        return (
            url.indexOf("google") != -1
            && /\.html$/.test(location.href)
        )
    },
    // 実行する関数
    function(str){/* your custom document.write */}
)

// 常にalertを使って出力、デバッグ用
document.lazy_writer(
    function(url){return true},
    function(str){alert([this.current_script.src, str])}
)

という具合。個人的に必要な機能は一通りそろったと思うので開発終了。

2006-12-06

ページレンダリングを妨げないdocument.writeの実装

とてもシンプルに自分自身が属する script 要素を取得
http://d.hatena.ne.jp/amachang/20061201/1164986067

document.writeをDOM仕様にする
http://nyarla.net/blog/javascript-tips1

あたりに着想を受けて、作ってみました。
http://la.ma.la/misc/js/lazy_writer/

特定のscript src内のdocument.writeをピンポイントに置き換えることができます。

制限事項としては、document.writeを使ってscriptタグを生成するようなコードの場合、IEではinnerHTMLにscriptを書いても実行されないという仕様があるので実行されません。その点を除けば、IFRAMEをdocument.writeで挿入するような、良くある広告系のdocument.writeを置き換えることが可能です。

過去にもdocument.writeを書き換えてナントカする話を書いたりしてるのですが、現在実行されているscript要素を判別する方法がわかったので、より実用的になっています。