바코드 회전

소개

회전 바코드는 일반 바코드와 모양이 같지만 주기적으로(일반적으로 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. 스마트 탭: 스마트 탭 페이로드가 지정되고 기기가 NFC/HCE를 지원하는 경우
    • 이 옵션은 사용자가 '코드 표시'를 클릭하여 재정의할 수 있으며 이 경우 회전 바코드/정적 바코드가 표시됩니다.
  2. 회전 바코드: 회전 바코드 페이로드가 지정된 경우
  3. 정적 바코드: 바코드 페이로드가 지정된 경우

여러 쿠폰 사용 페이로드를 지정하면 모든 사용자를 지원할 수 있지만 보안에 영향을 미칠 수 있습니다. 특히 회전 바코드의 대체 수단으로 정적 바코드를 사용하면 회전 바코드를 사용함으로써 얻을 수 있는 보안 이점이 대부분 사라집니다. 정적 바코드 대체는 웹 보기 또는 회전 바코드를 지원하지 않는 클라이언트에만 표시됩니다. 현재 모든 Google 월렛 클라이언트는 순환식 바코드를 지원할 것으로 예상됩니다.

흐름 저장

Google Wallet API는 다음과 같은 몇 가지 플로우를 제공합니다.

  • 시간을 절약하거나 미리 대중교통 클래스 만들기
  • JWT로 전체 객체를 전송하거나 객체를 미리 저장한 후 JWT에서 ID로 참조
  • 저장된 객체 업데이트

제안된 rotationBarcode 필드는 이러한 모든 흐름과 호환되지만 보안을 개선하기 위해 다음을 권장합니다.

  • object:insert API를 호출하여 Google 월렛 서버에 패스를 삽입하고 JWT에서 ID별로 특정 객체를 참조하도록 'Google 월렛에 추가' 버튼을 구성합니다. 이렇게 하면 결과 JWT에 순환 바코드의 보안 비밀 키가 포함되지 않습니다.
  • 단일 패스로 범위가 지정된 OTP 보안 비밀 키 사용
  • 키는 업데이트되지 않는 한 패스 수명 동안 유효한 것으로 간주됩니다. 이 키는 정상 작동 과정에서 어떠한 빈도로도 업데이트되지 않을 것으로 예상됩니다.

다음 시퀀스 다이어그램은 일반적인 통합에서 다양한 행위자 간의 흐름을 보여줍니다.

회전 바코드 사용 시퀀스 다이어그램