Google 供應商共用 ID 屬性

背景

本文件說明 Google 和供應商 (或帳戶核發者) 之間整合的共用 ID 所需屬性。考量共用 ID 是一個很好的方式,這是指向 Google 帳戶與核發者帳戶之間不透明的指標。

因此請注意,共用 ID 不是指 Google 帳戶 (或 Google 儲存空間中的使用者或其他實體),也不是供應商/發卡機構帳戶 (或其他實體)。指兩者間的連結關係。

共用的 ID 屬性

需要共用 ID 的屬性都從過去經驗中開始,也就是因缺少共用 ID 中的屬性而遇到的技術問題。

如要整合 Google 和外部合作夥伴,使用的共用 ID 必須具備下列屬性:

  1. 全域不重複:這個共用 ID 必須明確指向 Google 使用者和發卡機構帳戶之間的一個連結。同一核發者中沒有其他具有相同值的共用 ID。
  2. 請注意:這些共用 ID 具有代表使用者執行操作的權限,因此第三方無法猜測共用 ID 值。
  3. 可撤銷:使用者可能會撤銷共用 ID,且此撤銷應禁止日後使用共用 ID 值。這個屬性有幾個組合屬性如下:
    • 不以任一帳戶的不可變更資源為依據:如果共用 ID 值不是以核發者帳戶或 Google 帳戶的不可變更屬性為基礎,則撤銷共用 ID 就會產生相同的共用 ID 值 (撤銷撤銷),因此共用 ID 的值不得為帳戶資源。
    • 不只是 <Google Account, Partner Account>:您必須使用其他值 (例如時間),才能順利撤銷。
  4. 允許任一側帳戶使用多個連結:建立共用 ID 值時,請注意,單一 Google 使用者無法將單一 Google 帳戶連結至多個銀行帳戶,也無法連結至多個 Google 帳戶 (例如,家長和子帳戶同時連結至上層的銀行帳戶)。與撤銷性類似,這個項目提供了一些美術拼貼:
    • 再次強調,不是以任一帳戶不可變更的資源為基礎:否則,如果單一 Google 使用者連結多個銀行帳戶 (如果共用 ID 值以 Google 帳戶為依據),或者多個 Google 帳戶都與單一銀行帳戶連結 (如果共用 ID 值以銀行帳戶資源為依據),共用 ID 就會具有相同的值
  5. 長期有效:共用 ID 僅在安全的情境下有效 (Google 與供應商之間的整合,兩者同時使用連線層級和應用程式層級的保護措施,例如 PGP、雙向安全資料傳輸層等),因此不需要短期的生命週期依然安全。Google 的偏好是,共用 ID 不會過期,但如果供應商要求到期時間,則必須保持較長的保留期限 (例如超過 1 年)。

其他建議採用的共用 ID 屬性如下:

  1. Base64:這會透過 https 輕鬆傳輸及傳送整合作業中的值。
  2. 長度下限:建議至少使用 27 位數 (在 Base64 編碼之前),以確保有足夠的位址空間避免發生衝突。

可能有誤的部分嗎?

為協助讀者瞭解必要的屬性,以下提供一些個案研究,說明未遵守這些屬性時發生的問題。

共用 ID 個案研究

個案研究 1:電話號碼回收服務

核發者,將使用者的電話號碼設為共用 ID。使用者 A 更換電話資費方案時,他們放棄了電話號碼,但後來換了新方案。一個月後,這款手機公司取出舊的電話號碼,突然發現電話號碼的新擁有者使用者 B 也開始從帳戶中看到未購買的商品,

核發機構違反許多共用 ID 屬性,主要屬性為 #1。電話號碼等資料可以從使用者遷移,因此只有在特定快照期間才會不重複。

個案研究 2:貼上

Google/合作夥伴員工不小心將共用 ID 貼到即時通訊,而非內部工具。多一層防護機制可防止任何人惡意使用共用 ID,但為了保障 Google 安全,我們想要撤銷共用 ID 並替換為新的 ID。當 Google/合作夥伴嘗試撤銷共用 ID 時,他們發現共用 ID 只是核發者系統中的使用者帳戶 ID,而共用 ID 會用於直接查詢使用者帳戶。因此,如要撤銷共用 ID,您必須刪除使用者帳戶並為其建立新 ID。

個案研究 3:壞員工

發生上述「貼上」事件後,Google/合作夥伴內部的不肖人士發現,由於共用 ID 只是使用者的帳戶 ID,如果他們能夠管理將他人的帳戶 ID 加到自己的共用 ID 值中,就可以利用該帳戶的購買交易。根據資源 #2 的違規情況,此無意間貼上不僅僅是一個安全的漏洞,更是適合每位使用者的安全漏洞。

個案研究 4:旋轉

在上方的「貼上」事件之後,核發者切換至 UUID 做為共用 ID 格式。此時,發卡機構員工會將部分共用 ID 誤透過電子郵件傳送為偵錯電子郵件執行緒的一部分。Google 表示,我們只要撤銷並替換使用者共用的 ID。

在輪替過程中,Google 會通知發卡機構,當資料庫清理作業期間,每個遭駭的使用者帳戶將有兩個共用 ID 處於閒置狀態。但發卡機構不允許資源 #4,並告知 Google 這些限制只能針對特定的使用者帳戶啟用一個共用 ID。這會導致競爭狀況非常混亂。