利便性の高さで注目を集めるQRコード決済。一方、セキュリティー面のリスクが不安視されている。日経FinTech2018年8月号「『偽装QRコード』の脅威」で実態を押さえよう。

 QRコードを利用したキャッシュレス決済が、国内でも注目を浴びている。インバウンド需要を見込んで中国で人気のAlipayやWeChat Payを導入する加盟店が増えているほか、「LINE Pay」「楽天ペイ」など日本発のサービスも普及の兆しを見せている。

 便利なQRコードだが、本物と判別が難しいうり二つの偽のQRコードを作り出し、フィッシングサイトへ誘導して不正送金させる攻撃手法の存在がこのほど明らかになった。本稿では、QRコードが抱えるセキュリティ上の問題点について解説する。

セルを並べて0と1の情報格納

 まず、QRコードの仕組みからひもとく。最も重要なQRコードの特性は、格納されたデータを正しく相手に送り届けられることにある。「入れ物」となるバーコードの画像から、データの中身が誤って読み取られることがない設計になっている。

 従来のバーコードは、横方向に単にバー(線)を並べて、バーの幅の大小を変えて情報を格納していた。スーパーマーケットのレジで精算する際、店員は商品に貼り付けられたバーコードを読み込む。

 どの事業者のどの商品かを表すJANコードと呼ぶ世界共通の商品識別番号がバーコードとして格納してあり、POS(販売時点情報管理)レジでは、JANコードを手掛かりに対応する商品名や価格を探し出している。

 QRコードの場合、もっと複雑なデータをそれ自身に格納できる。縦と横に黒または白の正方形(セル)を並べて、0と1の情報を格納している。その際には、以下の規格に従ってセルを配置することが決まっている。

 規格には、いくつかの仕様がある。まず「モジュール」だ。

 QRコードを構成する最小単位であるモジュールは、明暗の2値を有し「明は0」「暗は1」にする決まり。1つのモジュールで1ビットの情報を格納できる。

 次が「バージョン(型番)」だ。データの容量に応じてモジュールの数を増減できる。バージョン1から40まであり、バージョン1は21×21モジュール、バージョン40は177×177モジュールで構成する。バージョン40で格納できる情報量は、最大4296文字分のデータとなる。

 続いて「機能パターン」。「位置検出パターン」「位置合わせパターン」「タイミングパターン」の3種の機能パターンが策定されていて、これらによってQRコードをどの角度から撮影しても正しい縦横方向で画像認識できる。

 位置検出パターンは、明暗の比率がどの角度から見ても等間隔になるようにデザインされている。QRコードの位置を検出するために用いられる。位置合わせパターンは、バージョン2以上で配置されるもので、位置検出パターンとともに、画像のゆがみなどを補正するために使われる。最後のタイミングパターンは、交互に明暗が並んだモジュールで構成しており、座標を特定するために使う。

 この3つの機能パターンを併用しているおかげで、QRコードリーダーは全てのモジュールを正確に切り出せる。

 「符号化領域」と呼ぶ仕様は、機能パターン以外のモジュールのこと。「データコード語」「誤り訂正コード語」「形式情報」などで構成する。QRコードでは、格納する情報に対して符号化と呼ぶ処理を施し、規則に従ってマトリックス上にモジュールを配置していく。モジュールの明暗の変換方式「マスク」や、後述する「誤り訂正レベル」などもここで記述している。

この先は有料会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら