バーコードのローテーション

はじめに

ローテーション バーコードは通常のバーコードと同じように見えますが、定期的に変更されます。 頻度は 1 分間隔で行われ、ターミナル/リーダーは 最新のものが表示されます。このセキュリティ対策により、システムで発生するリスクは バーコードのスクリーンショット、特にチケットの盗難または無許可のチケット 考えていますバーコードをローテーションすると、 NFC に対応していないため、スマートタップを活用する(ハードウェアの不足や、 無効になっている場合)。

API リファレンス

ローテーション バーコードの技術的な詳細については、 RotatingBarcode

ペイロードの例

JSON
{
  "rotatingBarcode": {
    "type": "QR_CODE",
    "valuePattern": "MyRotatingBarcode-{totp_timestamp_seconds}-{totp_value_0}",
    "alternateText": "Ticket#: 1234567890",
    "totpDetails": {
      "algorithm": "TOTP_SHA1",
      "periodMillis": "3000",
      "parameters": [
        {
          "key": "3132333435363738393031323334353637383930",
          "valueLength": "8"
        }
      ]
    }
  }
}

フォールバックの仕組み

ユーザーのデバイスでは、一度に 1 つのクーポン利用メカニズムのみが使用されます。 。 以下の利用方法が優先度順に使用されます。

  1. スマートタップ: スマートタップ ペイロードが指定され、デバイスがサポートしている場合 NFC/HCE
    • この設定は、ユーザーが [コードを表示] をクリックしてオーバーライドすることもできます。 ローテーション バーコード/静的バーコードの表示が強制されます。
  2. ローテーション バーコード: ローテーション バーコードのペイロードが指定されている場合
  3. 静的バーコード: バーコードのペイロードが指定されている場合

クーポン利用ペイロードを複数指定すると、すべてのユーザーが対象になりますが、 セキュリティ上の影響を及ぼす可能性があります。特に、静的なバーコードを ローテーション バーコードを使用する際、代替手段として使用すると、 ローテーション バーコード。静的なバーコード フォールバックはウェブビューにのみ表示されます ローテーション バーコードをサポートしていないクライアントでも使用できます。現時点で、 すべての Google ウォレット クライアントでローテーション バーコードをサポートします。

保存フロー

Google Wallet API には、次のような複数のフローがあります。

  • 保存時または事前に交通機関クラスを作成する
  • JWT で完全なオブジェクトを送信するか、事前にオブジェクトを保存する JWT で ID で参照します。
  • 保存後のオブジェクトの更新

提案された rotatingBarcode フィールドは、これらすべてのフローと互換性があります。 ただし、セキュリティを強化するために、次のことをおすすめします。

  • object:insert API を呼び出して、パスを [Google ウォレットに追加] ボタンを JWT 内の ID で特定のオブジェクトを参照します。これにより 生成される JWT にローテーション バーコードの秘密鍵は含まれません。
  • 単一のパスをスコープとする OTP 秘密鍵を使用する
  • 鍵は、更新しない限り、有効期間中有効である 表示されます。契約期間中は、このキーが頻繁に更新されることはないと想定しています。 維持します。

次のシーケンス図は、さまざまなアクター間のフローを示しています。 一般的な統合の場合:

ローテーション バーコードを使用するためのシーケンス図