2011/08/21 一日家でだらだらした.

yebo blog: iOS 5で、開発者がUDIDにアクセスすることを禁止 で UDID 利用禁止への対策として MACアドレスをMD5にかけて利用というものがあげられている.

そもそも端末識別/認証すべきではないという話で, アプリごとにUUIDを生成して利用すればそのUUIDでは名寄せできなくなってよい. しかし, 広告プロバイダなどの立場では楽に名寄せができないのが嫌, ということで騒ぎになっている. UDIDが利用できなくなるリスクは考慮しておくべきだと思うのだが.

以下では, そもそもの話は置いておいて, MACアドレスのみで認証する場合の問題を考えてみる.

1. MACアドレスは通信すれば漏れる

以下の高木さんの記事のように, 無線LANデバイスのMACアドレスは通信すれば漏れる. MACアドレスのみで"認証"しているサービスを利用している人が隣りにいたら, その人になりすますのは容易だ.

2. iPhone系デバイスのMACアドレスの空間はたぶん大きくない

MACアドレス全体の空間は, 281兆ほどあるが, AppleにわりあてられているMACアドレスのベンダIDは, IEEE-SA - Registration Authority で検索したところ 100くらいだ. 以下に3つ例が上げられている.

以上の記事での3つのベンダIDのみがiPhone系デバイスに利用されているとすると, (256^3)* 3個, 約5千万個のMACアドレスしか存在しないことになるが, iPhone系デバイスは1億台以上出荷されているので, さすがにもう少し多いだろう. とはいえ100個全部利用しているはずはなく, 仮に10ベンダIDを利用しているとすると 1.7億個のMACアドレスがiPhone系デバイス用として存在することになる.

この仮定が正しいとすると, 100万ユーザがいるサービスでMACアドレスのみでの"認証"を利用していると, 適当なMACアドレスで認証に成功する確率は約 0.006(0.6%). 170個に1つ当たる計算となる.

MACアドレスの製造時の消費には規則性がある可能性が高く, もっと確率を上げられるだろう.

というわけで, MACアドレスはUDIDよりタチが悪そうだ.

実際のサービスに利用しているのかはわからないが, AndroidではAndroid idが一部の機種ではすべて同じになっているので MACアドレスを使えばできそうだと書いてあるプレゼン資料を見つけた.

明日は昼前に雨があがったらサッカーに行くかも.