1. 程式人生 > >支付寶離線支付演算法猜想

支付寶離線支付演算法猜想

猜想原理

以支付寶為例,只要之前有一次用這個支付寶錢包賬號買過東西,自動售貨機就可以記住,並進行識別(猜測是用了一個標誌碼來唯一識別)。

設計猜想一

  1. 使用者在支付寶上繫結自己的銀行帳號及個人資訊;
  2. 使用者帳戶資訊在繫結時已上傳到支付寶後端伺服器;
  3.  客戶端離線本身沒關係,客戶端只是生成使用者的帳戶資訊,轉化成一個可掃描的二維碼/條形碼;
  4. 商戶端獲取使用者帳戶資訊向支付寶後端伺服器發起請求,支付寶通過請求的解析和認證,認證後通過付款申請,後臺伺服器響應:付款成功;
  5. 使用者付款成功。

設計猜想二

使用者用支付寶會員名、手機號、郵箱對應的支付寶數字賬號申請支付寶離線支付服務

  • 使用者使用手機將上述資訊發給支付寶的專用伺服器(Token Requestor);
  • 支付寶的專用伺服器將支付寶賬戶資訊傳送給令牌服務提供商(Token Service Provider、Token SP),就是支付寶自己的令牌服務系統;
  • Token SP將賬戶資訊和針對這個賬戶預生成的虛擬卡號(Payment Token、token)發給支付寶賬戶中心驗證;
  • 支付寶賬戶中心通過驗證,向Token SP授權,並在資料庫中建立支付寶數字賬號和token的唯一對應關係,並將這個支付寶數字賬號和token做出賬務關聯;
  • Token SP獲得授權,將token回送給支付寶的專用伺服器;
  • 支付寶的專用伺服器先將裝置(AppleWatch和iPhone)唯一標識和Token進行繫結,然後將token回送至iPhone和Apple Watch的Secure Element進行硬體加密保護。

通俗來講,這個過程就是:

  • 使用者在手機支付寶把支付寶會員名abc_123、手機號18610101010、郵箱[email protected]對應的支付寶數字賬號12345678發給支付寶的專用伺服器。
  • 支付寶的專用伺服器把這四個資訊傳送給支付寶的Token SP。
  • Token SP啟動一種演算法,針對生成了一個虛擬卡號87654321,並把(abc_123、18610101010、[email protected]1234567887654321)傳送給支付寶賬戶中心。
  • 支付寶賬戶中心一看,會員名、手機號、郵箱、數字賬號正確,便在自己的系統裡偷偷地將賬戶1234567887654321虛擬卡關聯了起來,並告訴Token SP:“來信收到,內容無誤,你的請求已經得到了批准。
  •  Token SP收到回信後,將87654321回送給支付寶專用伺服器。
  • 支付寶專用伺服器將87654321儲存在iPhone和Apple Watch的Secure Element裡面。

使用者使用支付寶離線支付在商戶進行交易

  • AppleWatch將Token和交易有效起始時間、有效終止時間通過加密演算法生成二維碼傳送給POS;
  • POS將二維碼和其他交易資訊傳送給支付寶交易中心;
  • 支付寶交易中心將二維碼和其他交易資訊傳送給支付寶交易轉接伺服器;
  • 支付寶交易轉接伺服器通過演算法解密並將Token和交易有效起始時間、有效終止時間發給Token SP;
  • Token SP通過Token對應出12345678,將12345679回送至支付寶交易轉接伺服器;
  • 支付寶交易轉接伺服器將Token、12345678和其他交易資訊發給支付寶賬戶;
  • 支付寶賬戶進行交易授權,並將12345678和授權資訊回送至支付寶交易轉接伺服器;
  • 支付寶交易轉接伺服器將Token和授權資訊回送至支付寶交易中心;
  • 支付寶交易中心將Token和授權資訊回送至POS;
  •  POS提示交易成功,打單。

從上述過程來看,商戶、支付寶交易中心和交易轉接伺服器之間採用Token來標識卡片,採用有效時間來控制有效時常,而12345678在且僅在交易轉接伺服器、Token SP和支付寶交易中心之間進行傳送。

風險控制

如果手機丟失時:

  • 使用者會登陸支付寶網站,登陸並停用使用者手機上的支付寶離線支付服務;
  • 支付寶的專屬伺服器會立即向Token SP發出請求,按照自己儲存的該裝置對應的Token列表逐一申請吊銷這些Token;
  • 撿到手機的人嘗試支付(假設TA神通廣大,偽造出了使用者的指紋並通過了Touch ID的驗證);
  • 在交易進行到“Token SP通過Token對應出12345678”這一步時,因為Token已被吊銷,所以交易無法繼續;
  • 使用者找回或者購買了新裝置,重複申請支付寶離線支付的流程,獲取全新的Token。

如果在用的Token出現交易風險時:

  • 支付寶交易中心會對該Token取消授權,並通告Token SP;
  • Token SP會向支付寶專屬伺服器回送Token失效的資訊;
  • 支付寶專屬伺服器向iPhone和AppleWatch發出指令,將這張卡片標記為不可用。
  •  使用者重複申請支付寶離線支付的流程。

橫向比較傳統支付和支付寶離線支付,實際上後者比前者多了兩個參與方,就是令牌申請方Token Requestor和令牌服務提供商Token SP,這兩方的存在保障了使用者賬戶的安全,降低了數字賬戶洩露的概率。

設計猜想三

一開始就生成了很多張二維碼儲存在本地,沒網也會有二維碼(通過實際嘗試重新整理了很多張二維碼,發現基本沒有一張是相同的,所以這個猜想基本是排除的)。