رمزینه‌های چرخشی

مقدمه

رمزینه‌های چرخشی درست مانند رمزینه‌های معمولی هستند اما به‌طور دوره‌ای، معمولاً هر دقیقه، تغییر می‌کنند و پایانه/کارت‌خوان به‌گونه‌ای برنامه‌ریزی شده است که فقط جدیدترین رمزینه را بپذیرد. این اقدام امنیتی خطرات مرتبط با نماگرفت رمزینه، به‌ویژه سرقت بلیت یا بازفروشی غیرمجاز بلیت را کاهش می‌دهد. رمزینه‌های چرخشی همچنین می‌توانند به‌عنوان جایگزین برای دستگاه‌هایی که نمی‌توانند از «ضربه هوشمند» استفاده کنند (به‌دلیل عدم پشتیبانی از NFC (نداشتن سخت‌افزار، یا غیرفعال بودن نرم‌افزار)) عمل کنند.

مرجع میانای برنامه‌سازی کاربردی

برای جزئیات فنی درباره «رمزینه‌های گردان»، نوع 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. Smart Tap: اگر محموله smart-tap مشخص شده باشد و دستگاه از NFC/HCE پشتیبانی کند
    • توجه: کاربر می‌تواند با کلیک کردن روی «نمایش کد» این تنظیم را لغو کند که باعث می‌شود رمزینه گردان/رمزینه ثابت نمایش داده شود.
  2. رمزینه چرخشی: اگر محموله رمزینه چرخشی مشخص شده باشد
  3. رمزینه ایستا: اگر محموله رمزینه مشخص شده باشد

مشخص کردن چند بار داده پس‌خرید می‌تواند تضمین کند که از همه کاربران پشتیبانی می‌شود اما ممکن است پیامدهای امنیتی داشته باشد. به‌ویژه، استفاده از رمزینه ایستا به‌عنوان جایگزین رمزینه چرخشی اکثر مزایای امنیتی استفاده از رمزینه‌های چرخشی را ازبین می‌برد. بارکد ثابت بازگشتی فقط در نماهای وب یا در کارخواه‌هایی که از بارکدهای چرخشی پشتیبانی نمی‌کنند نشان داده می‌شود. از امروز، انتظار داریم همه کارخواه‌های «کیف پول Google» از رمزینه‌های چرخشی پشتیبانی کنند.

ذخیره کردن Flow

Google Wallet API چندین جریان ارائه می‌دهد، ازجمله:

  • ایجاد کلاس‌های پیشنهاد در زمان ذخیره یا قبل‌از آن
  • ارسال اشیای کامل در JWT، یا ذخیره کردن اشیا پیش‌از موعد و سپس ارجاع دادن به آن‌ها با شناسه در JWT
  • به‌روزرسانی اشیاء پس‌از ذخیره شدن آن‌ها

فیلد rotatingBarcode پیشنهادی با همه این جریان‌ها سازگار است، اما برای بهبود امنیت، موارد زیر را پیشنهاد می‌کنیم:

  • object:insert API را فراخوانی کنید تا مجوز را در سرور «کیف پول Google» درج کنید و دکمه «افزودن به کیف پول Google» را پیکربندی کنید تا به شیء خاص با شناسه در JWT شما ارجاع دهد. این کار تضمین می‌کند که JWT حاصل شامل کلید خصوصی رمزینه گردشی نباشد.
  • از کلید رمز OTP استفاده کنید که برای یک مجوز واحد تعریف شده است
  • انتظار می‌رود کلید، مگر اینکه به‌روز شود، برای طول عمر مجوز معتبر باشد. انتظار نداریم این کلید درطول عملکرد عادی با هیچ تناوبی به‌روز شود.

نمودار توالی زیر جریان بین کنشگران مختلف را برای یک ادغام معمولی نشان می‌دهد:

نمودار توالی برای استفاده از «رمزینه‌های چرخشی»