Google Wallet関連のセキュリティ問題がここ最近になり続けざまに報告され話題になっている。1つはPIN番号に関する問題で、root化された端末で簡単に正解のPIN番号を抜き出して決済を行えるという脆弱性。もう1つはroot化関係なしに、第三者が入手したAndroid端末でGoogle Walletの情報を初期化して、そこに残ったプリペイドカード情報を新しいアカウントに紐付けてしまう脆弱性だ。こうした報告を受けGoogleでは一時的に同サービスでのプリペイドカードの利用を中止し、対策が行われた14日にサービス再開を改めて報告した。

Google Walletとは、NFC (Near Field Communications)技術を使って携帯電話(スマートフォン)等で非接触通信による決済や認証を行うサービスだ。MasterCardのPayPassサービスと互換性があり、PayPassに対応したリーダーや商店であればGoogle Walletのアカウントでそのまま決済できる特徴がある。ユーザーは手持ちの端末でGoogle Walletのアプリを起動し、PIN番号を入力してリーダーにタッチするだけで決済が完了する。MasterCardのクレジットカードだけでなく、Googleが発行するプリペイドカードを登録(Redeem)してクレジットに充てることも可能となっている。

このGoogle Walletについて、ここ数カ月で次々と脆弱性が報告されており、特に2月初旬に報告された2件のケースは致命的なものとしてGoogleでも対応に追われることになった。1つめはZveloが2月8日(米国時間)に報告したもので、root化されたAndroid端末から簡単にPIN番号を割り出せてしまうという問題だ。もともとはviaForensicsが発見した問題だったが、これを基に分析を行うことでPIN番号を簡単に抽出する方法が発見されたのが発端となる。NFCでは通信の安全性を担保するため、セキュアエレメント(SE)と呼ばれる暗号化ハードウェアを内蔵(あるいはSIMカード内に保存)している。ところがGoogle Walletの実装ではPIN番号など重要なデータがハッシュ化された状態でSEの外側である、各アプリ(この場合はGoogle Walletアプリ)のデータベース領域にそのまま保存されており、実際にユーザーのPIN入力があってもこのデータベースとのマッチングのみで認証を通してしまうという。このSHA256でハッシュ化されたPIN番号は数字4桁と短いこともあり、1万通りのブルートフォース攻撃で元データの抽出が可能で、事実上意味を成していないというものだ。Zveloでは問題をすぐにGoogleに報告し、現在その対策を行っている段階だという記述で説明を締めている。

2つめはよりシンプルな方法でクレジット情報が盗めるという問題で、Smartphone Champが2月9日に報告している。Zveloの手法がroot化された端末という条件に加え、PIN番号解析という仕組みを導入しなければならないのに対し、こちらはroot化いかんにかかわらず第三者がAndroidのホーム画面にアクセスさえできれば現象を再現可能という問題となる。具体的にはGoogle Walletアプリの登録情報を削除するだけで、あとはアプリを起動すると新しいGoogleアカウントとPIN番号を確認してくるので、新たな情報で上書きするだけでいい。これで削除以前に登録されていたプリペイドカード情報がそのまま新アカウントに引き継がれ、新たに登録したPIN番号でいつでも利用可能になる。唯一の対処方法は、ロックスクリーンを解除されないように数字またはフィンガージェスチャーの登録を行っておくしかない。

このように立て続けに問題が報告されたことを受け、GoogleではWallet担当バイスプレジデントのOsama Bedier氏の署名で10日付けでBlog記事を投稿し、同サービスにおけるプリペイドカードの利用を一時中断したことを報告した。2つの問題に対処するため、まずGoogle Walletのroot化された端末での利用を止めるようユーザーに訴え、通常の利用では問題が発生しないことを強調している。そして2つめのアカウント上書き問題については、今回のように一時的にプリペイド利用を中止することで対処している。そして14日、問題を修正してプリペイドカードの利用を再開したことを報告した。もし何らかの問題でプリペイドカードの残高が利用できなくなっていた場合、無料サポートに連絡するよう併記も行われている。

こうしたサービスで問題が発生すること自体は避けられないと筆者は考えており、むしろ100%の安全性を喧伝するよりも、いかに早く問題に対処し、被害を受けたユーザーの補償を進めるかのほうが重要だと思う。その意味で、今回のGoogleの対応はまずまずではないかと考える。だが現時点の大きな問題は、Google Walletが現状で「Sprintの提供するNexus S 4G」でしか利用できないことで、先日もVerizon WirelessがGalaxy NexusでのGoogle Wallet搭載を拒否したことが話題になったほどだ。理由はいくつか考えられるが、その最大の原因はVerizon WirelessやAT&Tらが同サービス対抗となるISIS (アイシス)というジョイントベンチャーを立ち上げてカードプロセッサー事業を行おうとしていることに由来するとみられる。GoogleとSprintは実数を公表していないものの、1キャリアに1端末のみというハンデゆえ、現時点でのGoogle Walletの利用者がほとんどいないというのが筆者の予測だ。そのためサービスのブラッシュアップが進まず、今回のようなセキュリティ問題でも被害こそ少ないものの、発覚と解決までに時間がかかるような状況になりやすいと考える。

スマートフォンとNFCを使ったモバイルペイメントという新しい技術であり、未知の脆弱性は多く内在し、今後も運用上のトラブルが多く出てくることだろう。実際のところ、この手の新サービスを提供する事業者では、事前予防的に制限をつけてサービスを提供しているケースが多い。例えば、NFCやクレジットカードを使わない「Square」というサービスでは決済金額の上限が設定されており、実質的に小銭を支払うレベルの買い物でしか利用できない。リトアニアで利用されているNFC決済サービスの「Mokipay」ではPIN番号なしで決済できる金額の上限が30リトアニアリタス(約907円)までとなっており、それ以上の金額の決済が発生したときは、あらかじめアカウントに紐付けられた携帯電話でポップアップが出現し、PINコードを入力しない限り先に進めないようになっている(MokipayではNFC携帯の普及度を勘案してFeliCa Liteライクなシールでのサービス利用も可能になっており、端末とのペアリングを行うのはそのため)。利便性をうたいつつも利用に制約がある点は、クレジットカードと比べてまだまだ発展途上の技術であるということを認識させる。

(提供:AndroWire編集部)