QRコード単体では、あなたに関する情報は何も外部に伝わりません。データを格納したパターン(通常はウェブアドレス)にすぎず、スキャンされたことを知る手段もありません。プライバシーリスクは別のところにあります。コードが開くウェブサイトと、コードを作成したサービスです。この両者は、あなたの行動の詳細を記録できます。
QRコードは単なるデータ
QRコードは二次元バーコードです。白黒のモジュールは、URL、テキスト、連絡先、Wi-Fiのパスワードといった普通の文字を符号化しています。スマートフォンのカメラがパターンを認識すると、その場で文字列をデコードします。コードはデバイスではないため、コード自体が何かを送信することはありません。メモリも通信機能もなく、スキャンされたことを報告する手段もありません。
つまり、印刷されたコードのプライバシーは、同じテキストを紙に書いた場合とまったく同じです。1人にスキャンされようと100万人にスキャンされようと、パターンは変わらず、外部に情報を送ることもありません。最終的な内容を直接含む静的コードは、あなたを追跡することがそもそもできません。
この開放性には別の側面もあります。QRコードの中身は何も隠されていません。スキャナーを持つ誰もが、見えるコードをデコードできます。符号化は暗号化ではありません。この事実が、記事の後半で述べる「コードに入れてはいけないこと」の根拠です。
プライバシーリスクの本当の発生源
スキャン後には2つのことが起こります。両者は区別して考える価値があります。
1つ目はリンク先です。ウェブサイトを開くコードは、普通のウェブサイトを開きます。サーバーログ、Cookie、アナリティクススクリプト、フォームなど、それに伴うすべてが含まれます。サイトはアクセスがあったことを把握し、訪問者が残す詳細を記録できます。
2つ目はコードを作成したサービスです。多くの商用QRジェネレーターは、目的のアドレスを直接符号化しません。代わりに、自社ドメイン上の短いリダイレクトリンクを符号化します。スキャンすると、まずそのサーバーにアクセスし、サーバーがスキャンを記録してから本当のリンク先へ転送します。これが「動的」コードの仕組みであり、スキャン分析の仕組みです。
静的コードには仲介者がいません。スキャンするとリンク先に直接移動し、途中の誰も何も知り得ません。プライバシーを重視するなら、この2つの設計の違いこそ最も重要なポイントです。
リンクを開いたときにウェブサイトにわかること
リンクを開くと(QRコードでもクリックでも)、サイトのサーバーには同じ情報が渡ります:
- あなたのネットワークを識別するIPアドレス。
- そのIPから推定されるおおよその位置情報。番地レベルではなく、通常は市区町村や地域単位。
- ユーザーエージェントとして自動的に送信されるデバイスとブラウザーの情報:OS、ブラウザーの種類とバージョン、画面サイズ。
- ブラウザーの言語、正確なアクセス時刻、閲覧したページ。
- あなたが自発的に入力したすべての情報:フォーム、ログイン、ダウンロード。
- Cookieとブラウザーフィンガープリント。以降のアクセスであなたを識別できます。
同様に重要なのは、ウェブサイトに簡単にはわからないことです。名前、メールアドレス、電話番号、連絡先は、あなたが入力しない限り知り得ません。許可なく正確なGPS位置情報を読むことはできず、あなたがアクセスを許可しない限り、カメラやファイルに触れることもできません。
スキャンという行為自体は何も明かしません。データを共有するのはページを開くことです。したがって、実務上のプライバシーの問題は常に、リンク先のページを信頼できるかどうかに帰着します。
スキャン追跡の仕組み
コードが「動的」の場合、符号化されたリンクはジェネレーターのサーバーを指します。各スキャンはサーバーが記録できるイベントです:時刻、背後のIPアドレス、デバイスの種類、IPから推定されるおおよその位置。運営者はスキャンのダッシュボードを確認でき、通常はコードのリンク先を変更できます。千枚のチラシに印刷された後でもです。
これ自体は密かに悪意のある仕組みではありません。変更可能なレストランのメニューや再版されるパッケージ、マーケティングキャンペーンには、変更でき測定できるコードが必要という正当な理由があります。しかし、あなたへの影響は現実です。すべてのスキャンが、あなたが選んでいない第三者に報告され、その記録は(見つけられるなら)その第三者のプライバシーポリシーが支配します。さらにランディングページが、リダイレクトの記録に加えて独自のアナリティクスを行う場合もあります。
コードは作成者から遠く離れた場所にも渡ります。ある国でスキャンされたポスターが、別の国のサーバー経由で接続されることもあります。プライバシーの観点では、それをスキャンすることはその運営者に直接連絡することと同じです。
スキャン時に情報をさらさないための方法
小さな習慣でリスクの大部分は防げます:
- 開く前に読む。ほとんどのスマートフォンのカメラは、ページが読み込まれる前に、デコードされたリンク、少なくともドメインを表示します。見慣れない短縮リンクやスペルミスのあるドメインなら、開かないでください。
- 出所不明のQRランディングページは疑ってかかる。ポスターをスキャンしてたどり着いたページには、ログイン情報、支払い情報、個人情報を入力しない。コードが銀行や公共料金の事業者を名乗る場合は、代わりにその組織のアドレスを自分で入力する。
- 余計なものは断る。QRランディングページに勧められたアプリをインストールせず、今していることと無関係の権限リクエストは拒否する。
- Cookieを避けたいときはプライベートブラウジングを使う。ただしIPアドレスは隠せないことを心得ておく。
- 接続先サイトからIPアドレスを隠したいならVPNを検討する。その場合、代わりにVPN提供者がサイトと同じ情報を見ることを理解した上で。
- 信頼できるソースを優先する。本物のコードの上にシールを貼り、偽の支払いページへ誘導する手口が実際に使われている。そのため、重要な場面で見かけたコードは、怪しいメールのリンクと同じくらい注意深く確認する。
公開されているコードに秘密を入れてはいけない理由
どんなスキャナーでもどんなコードでもデコードできるため、エンコードしたものは実質的に公開したことになります。画面、ポスター、名刺、共有ドキュメント上のコードは撮影やスクリーンショットが可能で、その中のデータはその画像に無期限に残ります。
そのため、実際にコードに入れられがちな多くのものが除外されます:
- パスワード、PIN、ワンタイムコード。コードを見た人は誰でも秘密を手にします。
- 公開される場所に貼るWiFiの接続情報。カフェの壁にあるゲストネットワークのパスワードは意図的な選択ですが、オフィスのドアにあるプライベートネットワークのパスワードは情報漏洩です。
- 見知らぬ人が見られる場所にある本人確認番号、自宅住所、電話番号。
- 使い切りチケットやクーポンのコード。自分が使う前にコピーされて使用されるおそれがあります。
- 二要素認証の設定コード。認証アプリを連携するときに表示されるQRコードには、ログインコードを生成する秘密が含まれています。スキャンした人は誰でも同じコードを生成できるため、共有や撮影は絶対にしないでください。
ルールはシンプルです。QRコードはデータを保護するのではなく公開するための手段です。秘密をエンコードしてよいのは、コードを見られる全員がその秘密を持つことを意図している場合だけです。
プライバシー重視のジェネレーターが違う点
トラッキングしやすい設計には中継するサーバーが必要です。短縮リンク、リダイレクト、ログです。プライバシー重視のジェネレーターはその仲介者を排除しており、違いはすべてここから生まれます。
サーバー上ではなくブラウザー内でコードを生成するため、エンコードするテキストやアドレスがデバイスの外に出ることはありません。アカウントなしで動作するため、コードに紐付けるメールアドレスを収集されることもありません。静的コードを生成し、最終的なリンク先を直接含みます。リダイレクトもスキャンログも有効期限もありません。リンク先が存在する限りコードは動き続け、スキャンされても誰にも通知されません。
この方式で動く無料ジェネレーターもあります。QRCodeMax.Vipもその一つです。どのツールにも簡単に当てはめて試せます。基本的なコードのために登録を求めたり、自社の短縮リンク経由でしかコードを提供しないサービスなら、そのコードはトラッキングの仕組みでもあります。目の前でコードを作り、何も求めないなら、コードはただのデータに戻ります。
まとめ
QRコード自体はあなたについて何も明かしません。ただの不活性な模様です。プライバシーを左右するのはリンク先のページと、コードの背後にあるサービスです。開く前にリンクを読み、見慣れないQRランディングページは見慣れないメールのリンクと同じ扱いにし、公開される場所に秘密をエンコードすることは絶対にせず、アカウントもリダイレクトもなしにローカルで静的コードを作るジェネレーターを選びましょう。そうすれば、スキャンは読むのと同じくらいプライバシーを保てます。