Gerd Altmann via Pixabay
Google Chrome のバージョン76で、ある変更が加えられて話題になっている。それは、表示しているWebページ側で、現在の状態がシークレットモードかどうか検出できないようになったことだ(参照:
Protecting private browsing in Chrome)。
Google Chrome を使っている人の中には、そもそもこのモードの存在を知らない人もいるだろう。パソコンで閲覧しているなら
「Ctrl+Shift+n」(Mac の場合:
⌘+shift+n)で、シークレットモードが始まる。
シークレットモードでは、通常の表示とは異なり、Webブラウザ自体が暗い色使いになる。そして閲覧履歴や Cookie などの情報がWebブラウザに保存されなくなる。このモードは、プライベート ブラウジングを実現するためのもので、閲覧履歴を保存しない(
Google Chrome ヘルプ)。英語版の Google Chrome では、このモードのことを
Incognito mode(お忍びモード)と呼ぶ。
先ほど挙げた Google のブログ エントリ「Protecting private browsing in Chrome」では、シークレットモードの意義をこう説明している。「共有または借用したデバイスのプライバシーを保護したい、または閲覧履歴から特定の行動を除外したい。政治的弾圧や家庭内虐待などの状況では、人々はウェブでの行動とプライベートブラウジング機能の使用を隠すための、重要な安全上の理由があるかもしれない」と。
このような理由があり設けられているシークレットモードだが、Chrome 76 までは通常モードかシークレットモードかを判定することが公然とおこなわれてきた。「how to detect Incognito mode」というキーワードでネット検索すると、その方法が多数出てくる。その一例を挙げておこう(参照:
Stack Overflow)。
この判定には「FileSystem API」というWebブラウザの部品が利用される。「FileSystem API」は、保存容量が小さい Cookie の代わりに、大容量のデータをWebブラウザに保存できる機能だ。Webブラウザに履歴を残さないシークレットモードには無用なため、シークレットモードではこれまで無効になっていた。
そこで、この「FileSystem API」が有効かどうかを調べることで、簡単にシークレットモードか否かを判定できたわけだ。この処理は、プログラム1行で実現できる。
こうしたシークレットモードの判定は、誰にとって需要があったのか。一例はネットメディアである。有料で記事を配信しており「1週間のうち5件の記事は無料」としているようなところだ。
こうしたメディアでは、同じ人が何回記事を読んだのか知る必要がある。しかし、シークレットモードでは、同じ人が何回訪れたのか判定するのが難しい。履歴が残らないために、毎回まっさらな状態でアクセスしてくるからだ。
そのため少なからぬ人が、シークレットモードで制限を回避して記事を読んでいた。他の方法を利用して判定するにしても、IPアドレスを使えば、会社などから閲覧している人を全て同一人物と見なしてしまい不都合だ。ネットメディアの中には、制限回避をしている人を弾くために「シークレットモードでは一律で閲覧不可」にするなどの対策をしていた。
しかし、そうした行為は、個人を特定し難くするというシークレットモードの趣旨に反する。
そのため7月30日に登場した Chrome 76 で「FileSystem API」の挙動が変更された。シークレットモードでは、一時的な仮想RAMを作り、その上で「FileSystem API」を有効にするようになった。そうすることで、これまでのように「FileSystem API」の有無でシークレットモードか否かを判定することができなくなった。
それが、Chrome 76 時点での、Google の対策だった。