最近とても注目されてきた「NFC」(Near Field Communication: デバイス間近距離通信に使われる技術)ですが、売れ筋のスマートフォンにも搭載され、ペイメントでの使用を想定して普及が予想されています。11月には神奈川で商店街でのNFCの実用実験が行われて話題になりました。

  しかしスマートフォン搭載のNFCについてのセキュリティの問題も研究されつつあります。9月にオランダのアムステルダムで開催されたEUSecWestセキュリティコンファレンス  と同時開催の脆弱性発見コンテスト「Mobile PWN2OWN」では、モバイルデバイスに特化してゼロデイ発表が多数されましたが、その中でもNFC経由でSamsung S3に対する攻撃を成功させた発表がありました。

  さらにこれを発展させると、不特定多数の人に対する「Walk by」攻撃が可能といえます。

IMAG0351

  この写真はNFCチップの入ったシールですが、このチップはプログラム可能なので、もちろん悪意のあるプログラムも仕込むことができます。そのようなNFCシールを大量に用意してカフェやレストランのテーブルの裏に貼って回ると何が起きるでしょうか? 最近はお茶や食事の時にスマートフォンをテーブルに置く習慣のある人はたくさんいるので、もしNFCシールの上に置かれれば、スマートフォンは持ち主の知らないうちにNFC経由で悪意のあるプログラムを呼び込むかもしれません。(参考: Shylockはスマート・カードがお好き )

  このNFC利用の攻撃が成功する主な理由は、NFCの通信パーミッションをデバイスがユーザーに尋ねないことに起因しています。しかし、現実世界でのNFCの利用を想定した場合には、ここに興味深い問題があります。

  例えばSuicaやEdyなどの無線チップ型ペイメントカードの駅やコンビニでの利用を考えてみましょう。カードの持ち主はカードリーダーにかざす事で改札や支払を行います。その際にこれらのカードは持ち主にパーミッションを求めることはしません。Suica機能入携帯で改札を通ったり支払をするときも、やはり持ち主はパーミッションを求められないことが普通になっています。当然これはNFC付きスマートフォンで支払を行う場合にも当然のこととして想定されています。

  ここでは、持ち主の意識の上では「カードリーダーにデバイスをかざす」動作がパーミッションを与えることと同義になっています。しかしデバイスにとっては、チップとカードリーダーが接近すれば自動的に通信を始めてしまいます。ここに、ユーザーの認知の上でのパーミッションとデバイスのパーミッション動作のギャップがあります。

  だからといって、NFC付きスマートフォンで支払や改札を通る際に毎回スクリーンが立ち上がりパーミッションを求めるとしたら、機能としては正しくても、ユーザビリティは著しく悪くなってしまうでしょう。

  何か良い方法はないのでしょうか? ひとつのアイデアとしては、スマートフォンには地磁気センサーやモーションセンサーが搭載されているので、「カードリーダーにかざす動き」の特定の変化のセンサーデータのストリームをキャッチしてパターンマッチングし、それをユーザーがパーミッションを与えたと見なすことならできそうです。これなら少なくともカフェでテーブルに置いたスマートフォンが、テーブルの裏に貼られたNFCシールから悪意のあるプログラムを呼び込むことはある程度防げるかもしれません。