<前の日記(2008年07月27日) 次の日記(2008年08月02日)> 最新 編集

高木浩光@自宅の日記

目次 はじめに 連絡先:blog@takagi-hiromitsu.jp
訪問者数 本日: 3029   昨日: 3459

2008年07月30日

MacユーザはIPv6を切るかnet.inet6.ip6.use_tempaddr=1の設定を

Mac OS Xの初期設定の危険性

私の周囲に物理的に近づくことのできる人は、私が使っているノート型コンピュータの無線LANインターフェイスのMACアドレス*1を知ることができる。たとえば、セミナー等で私が講演している会場に来れば、講演中に私が無線LANのスイッチを切り忘れていたなら、無線LANのパケットを傍受することで私のMACアドレスを知るだろう*2。それだけでは他の人のアドレスと混じって区別できないだろうが、別の場所で再び同じことをすれば、両方に存在したものが私のMACアドレスだ。

これはもう隠しようがないので、先に自ら暴露してしまおう。「00:1f:5b:d1:ec:bd」は私のMACアドレスだ(図1)。

図1: 私のMacBookの無線LANインターフェイスのMACアドレス

これを暴露するのはリスクのある行為であり、お薦め出来ない。また、仮に他人のMACアドレスを知ったとしても、当人に断りなく暴露する行為は控えるべきである。

しかし、知ることができてしまう以上、これが知られてしまっても問題を生じさせない社会が構築されるべきであろう。

さて、今週はIETF72に来ている。IETFの会場には無線LANが配備されており、そのネットは当然ながらIPv6対応だ。Macに乗り換えてから初めてIPv6の使える環境に来たので、自分のIPアドレスがどうサーバに伝わるのか調べたいと思い、「IPv6対応確認くん」のようなサイトはないかと探していたところ、なんと、ちょうど都合のよいことに、次のニュースが流れていた。

「fusianasan」も使えるようなので、早速書き込んでみた。

さて、このときの私のIPv6アドレスは「2001:df8:0:16:21f:5bff:fed1:ecbd」だった(図2)のだが、そのことは、私が黙っていれば他人にはわからない(ようになっているのが望ましい)。

図2: IETF72会場における私のIPv6アドレス

しかし、この(128ビットある)の下位半分の64ビット(インタフェースID)は、私のMACアドレスから機械的に生成されている。(日経ネットワークの記事「シスコ資格:CCNPへの道(BSCI編) IPv6編<第1回> IPv6アドレスを知る」など参照。)

「21f:5bff:fed1:ecbd」は、「02 1f 5b ff fe d1 ec bd」のことで、私のMACアドレスの上位24ビット「00 1f 5b」と下位24ビットの「d1 ec bd」の間に固定の値「ff fe」が挿入され、上から7ビット目が反転されて(00 が 02になっている)生成されている(図3)。

図3: IPv6アドレスの下位64ビットの生成方法(基本形)

したがって、私のMACアドレス「00:1f:5b:d1:ec:bd」を知っている人は、「21f:5bff:fed1:ecbd」も知ることができる。この文字列でGoogle検索してみるとどうなるだろうか。

そう、私が書き込んだ2ちゃんねるの文章が見つかってしまう。*3

このように、(基本形の)IPv6アドレスは、ケータイWebの契約者固有IDと同じプライバシー上の問題を孕んでいる。つまり、このままでは、

  • アクセスしただけでサイト運営者に「高木が来たな」とわかってしまい、全サイトにmixiの足跡機能が付いたような状態になる。
  • しかも、自宅にいようが、外出先にいようが、IPv6アドレスの下位64ビットは変わらないので、私だと特定されてしまう。
  • 広告会社のサーバに私の足跡が残り、私がいつどのサイトを見に行っているかを記録されてしまう。
  • ワンクリック不当請求サイトにアクセスしただけで、私の住所氏名が表示されるようになってしまいかねない。それを避けようとすると、「ケータイWeb」のような限定的な使い方(ごく少数の決まったサイトしか使わない)でしかインターネットを利用できなくなってしまう。(詳しくは、10日の日記「日本のインターネットが終了する日」の「契約者固有ID送信時代の安全なケータイWeb利用リテラシ」を参照。)

ということだ。(IPv6が十分に普及した暁には。)

Windowsでは対策機能が有効になっている

この問題を避けるために、IPv6では、RFC 3041「Privacy Extensions for Stateless Address Autoconfiguration in IPv6」という規格が2001年に定められていて*4、IPアドレスの下位にMACアドレスを使用しない方法(しかも定期的に自動変更する方法)が規定されてる(10日の日記「日本のインターネットが終了する日」の後半の「IPv6のプライバシー問題は既に解決済み」参照。)。このアドレスのことを「anonymous address(匿名アドレス)」または「temporary address(一時アドレス)」と呼ぶ。

Windows Vistaでは、標準設定で、この一時アドレスを使うようになっている。そのため、Windowsでアクセスした場合は上記の問題が生じない。2ちゃんねるの「書き込みテスト 専用スレッド 1」でfusianasanで書き込んでいる事例のうち、下位アドレスの真ん中に「ff:fe」を含んでいないものは、一時アドレスで、これらはWindowsから書き込んだものと思われる。

Mac OS Xで対策機能を有効にするには

さて、Mac OS Xにおいて、一時アドレスを使いたいのだが、どうやったらそれができるだろうか。GUIの設定項目を探している限りでは方法が見当たらない。ググってもそういった情報が見当たらない。

ググってググってググりまくったところ、ようやくその方法を見つけた。ターミナルから、以下のコマンドを実行すればよいようだ(管理者パスワードが必要)。

sudo sysctl -w net.inet6.ip6.use_tempaddr=1

これを設定して、無線LAN(Macでは「AirMac」と呼ばれる)を一旦「切」にした後「入」にすると、一時アドレスが使えるようになる。

図4: Mac OS XにIPv6の一時アドレスが割り当てられた様子

図4のように、「IPv6アドレス」の欄に複数のアドレスが表示されるようになる。このうち、右半分の真ん中当たりに「ff:fe」がない方が、一時アドレスである。(ランダムな値のように見えるもの。)

ここで、2つのアドレスが割り当てられた状態なので、Webブラウザがどちらのアドレスを使うかが問題となる。Firefox 3とSafariで試してみたところ、どちらでも、ちゃんと、一時アドレスの方をソースアドレスとしてサーバにアクセスしていることが確認できた(図5)。

図5: 一時アドレスで書き込みできるようになったことを確認した様子

ただし、Mac OS Xを再起動するとこの設定は元に戻ってしまうことに注意が必要である。現在の設定状態を確認するには、以下のコマンドを使えばよい。「0」と表示されたときは、一時アドレスを使わない設定になっていることを意味する。

sysctl net.inet6.ip6.use_tempaddr

Mac OS Xで、起動時から「use_tempaddr=1」の設定となるようにしたいのだが、どうするのがよいだろうか。詳しい方の解説を待ちたい。

設定がよくわからない人には、IPv6を「切」に設定することをお勧めする。図6のところで「切」に設定できる。

図6: Mac OS XでIPv6アドレスの取得をオフにする方法

ちなみに、

sudo sysctl -w net.inet6.ip6.temppltime=秒数

で、アドレスを変更するタイミングを設定することができるようだ。

もっと解説と周知を

それにしても、Webで見ている限り、これらの設定に関する解説が皆無だ。話題にしている人もごく少数しか見つからない。わずかに見つけたのは以下の3つだ。

  • KAMEの歴史と成果 (1100字x8ページ = 約17600bytes) , 何かの原稿?

    さらにこれ以上の細かいパラメータの設定などはnet.inet6以下をsysctl(8)で設定することになります。これは他のBSDと同様に利用できます。例えば、
    $ sudo sysctl -w net.inet6.ip6.use_tempaddr=1
    とするとプライバシ拡張アドレス[RFC3041]を利用することができます。ルータ広告を受け取るか否かはip6configコマンドやGUIによってインタフェース毎に設定できますが、プライバシ拡張アドレスはip6configやGUIで設定でき ませんので、一度設定すると全インタフェースのアドレスがプライバシ拡張アドレス使用になってしまうことに注意してください。

  • problem with RFC3041 temporary "private" addresses, Apple Mailing Lists, 2007年2月
  • Proposal: Enable IPv6 Privacy Extensions (RFCs 3041/4941) by default, lucky.freebsd.net, 2008年6月10日

    Our IPv6 implementation comes with the code to enable this feature, but by default it is turned off. My proposal is to enable it by default, and (略)

1つ目は、KAMEプロジェクトについて書かれた何かの原稿のようだ。Mac OS XのIPv6スタックはKAME由来らしいので、設定方法が同じとなっている。原稿では、機能について一通り説明されているが、その必要性は説明されていない。

2つ目は、Mac OS Xでこの設定をした場合にハングアップしてしまうという不具合を指摘したもので、Apple Computerのtechnical staffが返事をしている。この不具合はおそらく現在では修正済みと思われる。

3つ目は、FreeBSDの開発チームの会話だろうか。一時アドレス機能をデフォルトで有効にしようよと提案されていて、賛同されている。2008年6月のやりとりなので、つい最近の話だ。近々、FreeBSDでも一時アドレスが有効になり、その後にはMac OS Xでもそうなるのかもしれない。

それにしても、日経BPや@ITなどのIPv6の解説記事を探しても、この「一時アドレス」のことについての解説がぜんぜん見当たらない。どういう危険が想定されてこの機能が用意されたのか、各種OSで標準設定がどうなっていて、どうやって変更できるかと、もっと一般の人達に解説され、周知されてしかるべきだろう。

IPv6の普及が十分でない現在ではまだこのリスクはあまり顕在化していないかもしれない。自宅のインターネット接続がIPv6対応していないという家庭はほとんどだろう。それでも、出先で使った無線LANが、知らないうちにIPv6対応しているということは、そろそろ起きても不思議ではない。アクセス先のサーバが知らないうちにIPv6対応していて、アクセスログをIPv6アドレスで記録しているということも、そろそろ増えてきそうだ(2ちゃんねるのように)。

IPv6対応サイトが少ないとしても、広告会社のサーバだけがIPv6対応していれば、広告によるトラッキングは可能になってしまう(アクセス元がIPv6対応していれば)。

ちなみに、昨年4月に総務省から出た「電子政府システムのIPv6対応に向けたガイドライン」には、次の記述が見られる。

5.3 匿名性や閉鎖性の低下によるプライバシー問題の顕在化への対応方法

  • IPv6アドレスは、後半64ビットに各ホスト固有の識別子(インタフェース識別子)を含む。インタフェース識別子は通常EUI-64を用いて定義される。
  • 上のように定義されたアドレスを用いた場合には、固定されたインタフェース識別子からユーザの行動が追跡される、いわゆるトラッキングの危険が存在する。従ってプライバシーが懸念される状況においては、通常のEUI-64から生成されるアドレスに代わって、 RFC 3041で標準化されている Temporary Addressを用いることが推奨されている。
  • Temporary Addressのインタフェース識別子には、ハッシュ関数を用いて生成される(擬似)乱数列を利用する。またアドレスには有効期限を設け、定期的に更新を行うことでトラッキングの防止を実現する。
  • Windows XP SP2 のIPv6スタックには、このRFC3041一時アドレスが実装されている。Windows VistaにおいてはRFC3041に加えて、アドレス有効期限の延長が可能な、独自の一時アドレスも利用できる。
電子政府システムのIPv6対応に向けたガイドライン, 総務省, 2007年4月2日

このことをもっと一般に知らせるべきだ。

*1 「MACアドレス」の「MAC」(Media Access Control) は、Macintoshのことではないので注意。

*2 これは、無線LAN接続を暗号化する設定をしていても防げない。MACアドレスは暗号化されないので。(2007年11月3日の日記「無線LANのMACアドレス制限の無意味さがあまり理解されていない」参照)

*3 「ID長過ぎじゃね?」などと、板の説明も読まずに書いたことがバレバレだ。「説明くらい読めよ」と言われる前に先に自ら言っておきたい。

*4 2007年に、RFC 4941で改訂されている。

本日のTrackBacks(全100件) [TrackBack URL: http://takagi-hiromitsu.jp/diary/tb.rb/20080730]
clicklog:ip6.use_tempaddr (2008年08月01日 01:41)

たぶん同様の回答多数だと思うけど、 % echo net.inet6.ip6.use_tempaddr=1 | sudo tee -a /etc/sysctl.conf でよいのではないかと。(これがお作法に則ったやり方なのかはわからないですが) しかしこの件のように、MacOS X ではデフォルトが安全側に倒れてない場合がしば..

おいちゃんだよ!高木先生のところで、MacのIPv6のプライベートなところがMACアドレスから自動生成されちゃって、AirMacのMACアドレスと突き合わせると個人特定されちゃって嫌だよね、あとこれ(コンピューター的な意味で)個体識別されちゃうよね、って話が載っていた。...

検索

<前の日記(2008年07月27日) 次の日記(2008年08月02日)> 最新 編集

最近のタイトル

2016年08月23日

2016年07月23日

2016年07月16日

2016年07月02日

2016年06月12日

2016年06月03日

2016年04月23日

2016年04月06日

2016年03月27日

2016年03月14日

2016年03月06日

2016年02月24日

2016年02月20日

2016年02月11日

2016年02月05日

2016年01月31日

2015年12月12日

2015年12月06日

2015年11月23日

2015年11月21日

2015年11月07日

2015年10月20日

2015年07月02日

2015年06月14日

2015年03月15日

2015年03月10日

2015年03月08日

2015年01月05日

2014年12月27日

2014年11月12日

2014年09月07日

2014年07月18日

2014年04月23日

2014年04月22日

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|05|06|07|08|09|10|11|12|
2012|02|03|04|05|06|07|08|09|
2013|01|02|03|04|05|06|07|
2014|01|04|07|09|11|12|
2015|01|03|06|07|10|11|12|
2016|01|02|03|04|06|07|08|
<前の日記(2008年07月27日) 次の日記(2008年08月02日)> 最新 編集