ん?エピソードはどこに行ったのかって?あと、ホームズ時代に指紋分析ってあったっけ?まあいいや。今回はタイミング的に、学生の研究の話をさせてください。先日、研究室サイトで公開した↓の件です。

ブラウザフィンガープリンティングとTLS フィンガープリンティングによるユーザトラッキングとその対策の研究(PDF)

フィンガープリントといっても、リアル指紋じゃないです。え、当たり前だって?だって学内でまぎらわしいって言われたんだもん。具体的には、Webとかネットワーク上における指紋ですね。最近、ヨーロッパの方でcookieの使用についての承諾確認がうるさくなっていますよね。GDPRのせいかなー。なので、最近は非cookieによるユーザトラッキングが流行りらしいです。cookieじゃなければユーザによる拒否関係ないからってことでしょうね。でも、そんな同意もなしに勝手にトラッキングするなんてけしからん!と、上の研究は、この背景と動機によるものでした。

でも、特定/トラッキングされたくない!という人達がいれば、特定/トラッキングしたい!と思人達もいる。特定/トラッキングしたい人達の中にも、正当な(と本人たちが主張する)理由をもってる人もいます。例えば、「攻撃者を特定/追跡したい!」という理由。実は、当研究室にもそんな動機で「fingerprintにより攻撃かを特定したい!」という学生もいますし、何より上の研究をしてる学生自身が、昔はその動機で研究してたりして(キリシタン的にいうと、「転んだ」訳です:-)。そんな風に、fingerprint精度を上げたい側と、アンチfingerprinting側が双方研究のシノギを削っていて、どえらいカオスになってます(fingerprintの研究は、日本だとあんまりなくて、明治大学の齋藤孝道先生のところぐらいですね)。これはそのまんま、セキュリティにおける攻撃と防御のarms race(出た!)の縮図だったりします。例えば、browser fingerprinting(BF) toolではCanvas Fingerprintingなんてのが出ていたりします。これは、ユーザがダウンロードしたページで、Javascriptによりグラフィックやアニメーションを描画させます。それにより、ブラウザの種類や端末の性能などを「指紋」として抽出できるツールです。ちなみに上のリンクにアクセスすると、あなたのfingerprintを出してくれます。どれぐらい特定できるかというと…さすがにchromeの同じウィンドウの違うタブでやっても同じ結果になりますが、新しいウィンドウのchromeやedgeでは違うfingerprintが生成されます。でもセッションcookieとは同等のトラッキングはできるかもしれません。一方、特定ができてるかは…これだけではわかりません。

また一方では、アンチfingerprint、つまりfingerprintによる特定やトラッキングを避けるツールも出てたりします。例えばFirefoxは2019年5月以降、fingerprintの採取を抑止する機能をデフォルトで実装していたり、Chromeの拡張機能でもcanvas fingerprintingなどによるfingerprinting対策の拡張機能がいろいろ出ています。先ほどのcanvas fingerprinting対策だと、Canvas Fingerprint Defenderってのがありますね。私これをChromeに入れて使ってますが、canvas fingerprintingしてるサイトを検出してくれます。例えば、これにより、某航空会社サイトはcanvas fingerprintしてることが判明しました。これは検出するだけでなく防止もしてくれてるはずなので、canvas fingerprintはされてないと思いますが、特にサイト閲覧には支障ないようです。

このように、推しとアンチ混在のfingerptint界ですが、この中でこの学生が行った研究は、「トラッキングされないfingerprint対策」の研究です。具体的には以下の3つ。

  1. browser fingerprinting(BF)対策ってあるけど、それってどの程度危険なのか?
  2. BFだけじゃなく、TLS fingerprinting(TF)も組み合わせると、BFだけでは防げないよね?
  3. BF+TF組み合わせに対する対策を考え、実装、評価した

この研究についてコメントする前に、TFについて。TFは、TLSのhandshakeの通信、つまり暗号化前の通信の特徴をとらえて指紋を採取するものです。具体的にはserver helloの中のCipher suite(暗号化できるアルゴリズム一覧)が、ブラウザにより異なる。こういった情報により、クライアントの指紋を採取します。BFと異なるTFの利点は、暗号化された通信でも、TLSのserver helloは暗号化されていないので通信の途中でも指紋が採取できることです。

で、学生の研究ですが、1ではまず、各種BF対策ツールを適用して、BFに対する有効性と、更に2として、BFとTFを組み合わせた場合の有効性(トラッキングされないかどうか)を検証しています。具体的には、組み合わせた場合と単独の場合で、対策ツール適用前後で値が「変化」しているかを見ています。変化していれば、対策ツールが有効だという判断、「変化」していなけば、有効ではない(危険)という判断です。結果、TFを組み合わせると既存のBF対策ツールでは十分ではないので、BF対策+TF対策を組み合わせる手法を提案しています。その提案手法の評価は、対象サイトに10回アクセスしてそのユニーク度を見ています。つまり、ユニークな値が表れた数をカウントしています(詳細はPDFを見てね)。

どうですか、この研究。私はこの研究自体は面白い観点だし、もっと研究されるべきだし、複数のツールで評価し、かつ対策も実装して評価したことは大いに評価すべきと思います。すばらしい。ここで褒めたことを皆さん、覚えておいてくださいね!じゃないと、文句ばっか言ってるように思われるので。

指導する立場として言うと(ちゃんと指導しとけよというお叱りは甘んじて受けます)、この評価方法には問題があります。
その前に、TFとBFの粒度の違いについてちょっとだけ。これは研究会発表の際にも指摘されたことですが、TFが特定できるのは、Cipher suiteなどを使ってるようにブラウザ(の特定のバージョン)までで、BFのようにマシンまで特定できる訳ではない。なんで、BF対策だけでTFが防げないのはある意味当然。でもまあ、この問題は本筋ではないんで、とりあえず脇に置いときます。

プライバシーをはかるには、少なくとも2つの特性に着目する必要があります。一つは識別性(identifiability)で、もう一つは追跡性(tracability)です。識別性とは、ホストあるいは利用者を一意に特定できる、ということ。一方、追跡性は、「誰だか分からないが、特定の誰かの利用を追跡できる」ということです。で、この2つは別々に考えるべきと私は考えます。

情報量エントロピーとは、各事象が持つ情報量の尺度で、「あることが起きにくい」ほど、値が大きくなる。逆に、「特定される確率が高い」とエントロピー値は低くなります。このエントロピーはプライバシーの評価尺度としても結構使われています。(例えば[1]など)

[1] Datta, A., Lu, J., & Tschantz, M. C. (2019). Evaluating Anti-Fingerprinting Privacy Enhancing Technologies. WWW’19, May 13–17, 2019, San Francisco, CA, USA, 2, 351–362.

その計算式は下記の通り。

または、確率変数を用いるとこう。

では、次に識別性のエントロピーについて考えましょう。「誰かまでは分からないが、一意に特定できる」確率を考えます。複数人がアクセスして得られたfingerprintのうち、2つが一緒だったら、特定できる確率は1/2、3つなら1/3になりますよね。ではここで、10人のfingerprintがa,a,a,b,b,c,c,d,e,fだったとします。すると、エントロピーは-((1/3log(1/3)k×3)+(1/2log(1/2)×4)+(log1×3))=1.079となります。

次に、追跡性を考えてみます。とりあえず、識別性はおいておくとすると、同じクライアントが複数回アクセスした時に、特定できる可能性なので、こちらは、同じ値が出る可能性=頻度で考えてみます。10回アクセスして、同じ値が2つ出たと。そうすると、エントロピーは-(1/5log(1/5)×2)=0.280。

でも、本当は複数回で同じ値が出ても、他の人と同じ値になると追跡が難しくなるので、識別性も考慮しないといけません。だから実際には、「複数回アクセスしたら同じ値が出て、しかもそれはユニーク」である確率を求めるんですかね?

てな感じです。なんか、合ってる自信はあんまりないので、ツッコミお待ちしています。

Follow me!

コメントを残す