◆楊葶
電子支付系統中心交易賬本設計新思路
◆楊葶
(上海寶信軟件股份有限公司 上海 201203)
本文借鑒區塊鏈技術中的交易賬本的概念及實現思路,并以一種全新的設計思路實現傳統企業的電子支付系統的中心交易賬本模塊。通過采用加密算法對訪問電子支付系統的用戶身份進行驗證,通過HASH算法對系統間電子支付報文HASH值的真實有效性進行對比確保數據無篡改,在不改變原有電子支付系統框架和主體功能的前提下,通過局部的系統功能建設和優化,提高原系統電子支付的安全性,同時達到交易信息可追溯、可審計的目的。
加密算法;RSA;支付系統;交易賬本
近年來,面對銀行線上電子支付服務的快速發展,傳統企業也迎來了業務創新機會。企業信息化系統通過銀行提供的銀企直連接口、電子支付接口、第三方支付通道,可以快速實現日常業務電子轉賬、交易查詢、余額查詢。自動化及快速高效的資金收支體驗,使得企業對電子支付系統給予業務支持的期望也越來越高。但是電子支付通道帶給企業支付便捷性的同時,也增加了系統支付的安全風險。隨著數字經濟在全球的迅速發展,新一代信息技術對各行各業的影響日益擴大,許多金融機構都開始研究區塊鏈技術,并嘗試將其運用于現實,試圖改變金融體系所面臨的各種安全性、中心化等問題[1]。
區塊鏈是綜合運用密碼學、分布式數據庫、P2P通信、智能合約等技術,在一個去中心化、去信任網絡中,利用加密算法在鏈式數據結構中驗證和存儲數據[2]。其技術實現就是運用數學算法和加密技術,應用不可逆的哈希函數、時間戳、分布式共識機制等技術手段,構建互聯網環境下無須第三方信用背書的金融認證體系[3]。總的來看,區塊鏈的本質是一個對等網絡的分布式賬本數據庫[4]。
從目前社會上已經公布的研發成果看,區塊鏈的應用已有一些重大進展,但是很多項目尚處于研發和摸索階段。對傳統企業來講,區塊鏈技術的應用面臨較大的系統成本、技術成本和人力成本。與帶來的收益相比,其資本回報率低。真正的區塊鏈技術在實際應用中也存在一些問題,比如交易確認耗時長、能耗高等[5]。并且區塊鏈技術的應用,需要對傳統的信息化系統進行重構,這勢必會帶來系統的不穩定性。但是區塊鏈技術的應用有其獨特的優勢,比如區塊鏈具有不可篡改的特點,一旦發生交易,各個節點中都有記錄,從而避免了業務和資金之間的數據不一致而產生糾紛問題。區塊鏈數據前后相連構成的不可篡改的時間戳,使得監管部門對交易履歷的查閱成本降低,完全透明的數據存儲體系提供了可信任的追溯途徑,可以實現監管政策全覆蓋,降低了監管成本。區塊鏈的“共識算法”、“加密算法”等核心技術,可以保證原始交易信息不被篡改,保證其在各個交易節點的一致性和安全性[6]。
因此基于對區塊鏈技術劣勢和優勢的分析后,對企業使用中的電子支付系統,不直接應用“區塊鏈”技術,以一種全新的設計思路,對原有電子支付系統的功能架構進行微調,增加中心交易賬本模塊。通過加密算法加強對訪問支付系統的用戶身份的驗證,通過對每筆支付交易的關鍵信息的HASH值記錄跟蹤,建設支付系統內部一條類“區塊鏈”,以達到系統訪問用戶身份安全認證、原始交易信息無篡改增強檢查,并且可以通過這條內部交易鏈,做到業務可追溯、可審計,提高支付系統安全性的目的。
建立支付系統的中心交易賬本,方便每一筆支付交易的生命周期跟蹤,為業務系統、資金系統相關用戶提供查詢服務。
通過”交易鏈”,將每一筆付款單的生命歷程串聯起來,可以查詢到每一筆交易的運行路徑,為審計提供查詢線索。
通過”交易鏈”上的上下游的唯一HASH交易號,在支付環節驗證數據前后一致性,防止支付申請被人為篡改,防范支付風險。
(1)開發平臺
系統采用本公司自行研發的iPlat4J V6技術開發平臺。按照“大平臺、微服務”的架構模式進行設計,采用面向服務(SOA)及微服務(MSA)的技術架構模式,具有開放、輕量、解耦的特性,幫助企業快速構建扁平化、組件化、服務化應用系統。
(2)前臺
基于全新的iPlatUI 組件庫,采用 HTML、CSS、JavaScript 等標準的Web 技術,可以方便地實現在 PC 端和移動端的統一展示頁面。
(3)微服務
該系統原來采用微服務的軟件架構,微服務就是把一個大型的單個應用程序和服務抽象為顆粒度更小的微服務[7]。因此本次增加的賬本服務模塊,只需要提供單獨的服務組件,和原有服務建立的接口服務,或者更新應用程序的單個組件,而不會影響原系統核心服務部分。
(4)接口
采用REST API。REST API 的好處是基于標準的HTTP協議,對軟件依賴性小、兼容性較好。
(5)數據庫
本系統設計基于DB2數據庫。
交易賬本模塊在整個電子支付系統中主要承擔兩個主要功能,首先是對訪問用戶的密鑰管理及身份驗證;其次是對交易信息HASH值得記錄及關鍵節點HASH的校驗核對。中心交易賬本功能結構如圖1所示:

圖1 中心交易賬本功能結構
中心賬本數據模型采用賬本頭、賬本明細及交易明細三層結構存貯交易數據。賬本主要記錄每一筆付款單在每一個時間戳上對應的關鍵交易信息的HASH值。詳見圖2。

圖2 中心賬本數據模型
(1)數據簽名認證采用非對稱加密RSA算法
區塊鏈的模型設計中,一般采用非對稱加密技術對數據進行加密驗證。RSA算法是目前常用的非對稱加密算法之一,它既能用于數據加密,又能用于數字簽名。RSA包含一對密鑰對,公鑰對外公開,而私鑰是私密的,由用戶保管[8]。本設計方案采用RAS算法,對于發起支付申請的訪問系統身份進行驗證。由于不同的訪問用戶分配的公私密鑰不同,從而可以保證信息只能由通信雙方獲取,因此在數據加密方面安全可靠。
(2)交易賬本登記信息采用HASH算法
中心賬本中各個節點之間對交易的驗證使用HASH算法。由于該算法在電子支付系統內部及和電子支付系統交互的相關業務系統中使用,因此從交易量上考慮,使用SHA1就能滿足系統需求。SHA1是一種數據加密算法,該算法是可以將一段明文,以一種不可逆的方式將它轉換成一段長度較短、位數固定的信息摘要的過程[9]。系統采用SHA1哈希函數,將交易明細信息用SHA1哈希函數進行處理后將計算結果存儲到賬本中。
每一個外部系統調用電子支付系統之前,先登記注冊。密鑰簽發中心給每一個申請的業務系統生成一對密鑰。該業務系統的私鑰和電子支付系統的公鑰同時分發給業務系統。公私鑰對:(sk,pk):= generateKeys(keysize),sk私鑰發給申請人使用,pk公鑰由電子支付系統保留。同時將電子支付系統本身的公鑰發給業務系統,用于對整個發送報文的加密。
業務系統密鑰注冊成功,并設置一定有效期。到期后系統將會重新生成密鑰,并通知對方同時進行更換。主要數據結構設計見表1。

表1 密鑰管理數據結構
電子支付系統密鑰生成后,將該業務系統的私鑰和電子支付系統的公鑰同時分發給業務系統。業務系統密鑰注冊成功,并設置一定有效期。到期后系統將會重新生成密鑰,并通知對方同時進行更換。
由于電子支付系統的公鑰面向所有來訪業務系統發放,為避免頻繁更換導致所有業務系統同步調整,因此將資金系統的公鑰有效期限適當延長。見圖3密鑰分發圖。

圖3 密鑰分發圖
電子支付系統要求接入系統必須對原始報文信息按照統一的加密及數字簽名后,才能將申請支付信息發送給電子支付系統。電子支付系統收到支付申請后,對簽名進行驗證和數據核對,確保該表交易的簽名和實際提交人的簽名一致后,支付申請才被接收。報文非對稱加密解密示意圖參考圖4。
(1)業務系統加密
業務系統發起支付申請前,對支付申請的明細報文信息進行SHA1計算出HASH值H1。
H1=SHA1(detailMessage:P1)
然后對此HASH值用分配給業務系統的私鑰進行數據簽名。
H1’:= sign(Sk2,H1)
業務系統將包含加密后的HASH值H1’、交易明細報文P1及報文頭組裝后形成報文C1,C1用資金系統分發的公鑰Pk1對C1進行加密,然后將加密后的信息通過系統間REST接口,傳入電子支付系統。
C1=(P1,H1’,HEAD)
C1’:= sign(Pk1,(P1,H1’,HEAD))

圖4 非對稱加密解密示意圖
(2)電子支付系統解密:
電子支付系統在收到業務系統的支付申請C1’后,先用電子支付系統的私鑰Sk1對此交易進行解密。
C1:= verify(Sk1,C1’),然后得到C1
從C1記錄中,獲取交易明細P1,用SHA1進行計算得出交易明細結果H1
H1=SHA1(P1)
然后對交易記錄C1中的H1’,用資管系統的公鑰Pk2進行解密,得出結果H1
H1:= verify(Pk2,H1’),
最后,如果第2步和第3步的結果相同,則說明該申請數據確實來源于資管系統并且數據在傳遞過程中沒有被篡改。驗證成功。
業務系統通過REST接口,將支付申請發送到電子支付系統。支付系統收到該筆申請,將報文中的收方賬號信息、付方賬號信息、金額、業務類型、申請人等關鍵要素組合后,用SHA1算法生成HASH值,調用中心交易賬本的交易登記接口服務,將照申請單號、時間戳、來源系統、HASH值等信息記錄到中心賬本。
在資金審批環節,審批中心對收到的支付申請信息,將報文中的關鍵要素組合后,用SHA1算法生成HASH值,調用中心交易賬本的交易登記接口服務,將當前交易記錄信息及HASH值記錄到中心賬本。
在電子支付系統每一個流經節點,都會將當前節點收到的支付申請報文按照申請單號、時間戳、支付申請報文的關鍵要素的HASH值等寫入中心賬本,同時將報文明文信息單獨計入明細報文表中。
資金審批環節,審批中心根據當前收到的支付申請明文報文,組裝報文中的核心關鍵要素,按照SHA1算法對組合后的關鍵要素字符串進行HASH值計算,然后按照時間戳,獲取中心賬本中該支付申請單的最新的一條HASH值,和當前計算的HASH值進行對比,HASH值核對一致,是資金審批通過的前提條件。核對不一致,則退回給業務系統。
資金支付環節,將支付申請發送到銀行之前,需要再次核對當前節點獲取到的支付申請數據是否真實有效。將當前節點收到的支付申請明文報文中關鍵要素組合后,用SHA1算法計算HASH值,和該筆申請單的上一個節點的HASH值進行比較。如果比較結果一致,則繼續和該筆支付申請單的時間戳上最早的第一筆交易上的HASH值進行比較,如果兩次比較下來,HASH值一致,則說明數據從業務系統發出后,在電子支付系統的各個處理環節,數據未被篡改,滿足支付的基本前提條件。
各業務系統對訪問中心賬本查詢交易時,需提前進行系統注冊登記,登記后方可獲取私鑰。業務系統的查詢報文,需要通過私鑰對報文進行加密后發給中心賬本,中心賬本通過該系統的公鑰驗證簽名是否正確,簽名驗證通過則允許訪問中心賬本進行查詢。中心交易賬本可以查詢到每一筆支付申請交易所經過的所有節點,每一筆節點上的時間戳、參與人、簽名、交易明文及處理結果。
賬本在生成時,采用同步和異步兩種模式對賬本進行記錄。同步模式,在每一筆交易發生時,將簽名、加密報文、明文等信息寫入賬本中。同時異步事務,將交易記錄在文本中。在系統賬本發生異常時,可根據交易文本對系統賬本進行恢復。
通過中心交易賬本模塊建設,增加了支付系統訪問用戶的身份有效性驗證及支付申請交易的HASH值在各個節點的一致性對比。通過身份認證,確保支付系統收到的每一筆支付申請,數據來源都是在支付系統登記及密鑰驗證通過的。通過支付申請報文關鍵要素HASH值計算及在支付環節上下道工序間數據的一致性比對,確保每一筆支付申請從業務系統發出,在到達銀行之前,任何節點對數據的惡意破壞或者人為修改,都會使支付申請在發給銀行前進行內部攔截,無法實際支付。
從效率上來講,通過非對稱加密算法,來訪系統對身份進行簽名加密,支付系統對來訪系統身份進行解密驗證,在系統實際使用中,支付系統在對來訪系統身份驗證后再對支付申請報文驗收入庫速度未見明顯卡頓或者緩慢。支付系統在各個處理節點都增加了賬本登記功能,由于系統在交易賬本登記處理邏輯和支付系統每個節點的主體處理邏輯上采用異步事務處理模式,因此各個處理節點上的賬本登記并未對支付系統的整體流程效率有較大的影響。
所謂的“區塊鏈”,就是每個區塊經過加密,由此形成區塊鏈。其實質是一個不斷加長的列表記錄,但是以分布式存儲在網絡的所有節點[10]。通過區塊鏈技術的學習和在日常項目中應用的啟發,該系統經過局部改造后,基于數據庫數據存儲功能,增加了中心交易賬本應用模塊,將每一張支付申請作為一個區塊,將每張支付申請經過的業務處理和資金處理全路徑形成的列表記錄作為鏈,形成了該系統的“交易鏈”。通過中心交易賬本模塊,讓每一筆業務記錄清晰可見,審計查詢也有線索進行追溯。交易日志可以隨時對被意外破壞的賬本進行還原,增加了賬本的安全性。該系統方案采用了傳統的數據庫結構和局部功能重構,原系統改造人工成本小,軟硬件投入成本低,技術實現簡單,因此對提升傳統企業支付系統安全性方面的支付系統升級改造,有一定的借鑒意義。
[1]何德旭,史曉琳. A Study on the Financial Risks and Preventive Measures in the Internet Era[J]. 中國社會科學院研究生院學報,2018(02):39-45
[2]翟社平,段宏宇,李兆兆,等. 區塊鏈技術:應用及問題[J]. 西安郵電大學學報,2018,23(01):1-13.
[3]黃崎. 區塊鏈高新技術在旅游互聯網中應用的挑戰[J]. 軟件,2019,040(012):90-96.
[4]許嘉揚. 基于區塊鏈技術的跨境支付系統創新研究[J]. 金融教育研究,2017,030(006):9-14.
[5]周桐. 基于區塊鏈技術的可信數據通證化方法的研究與應用[D].中國科學技術大學,2019.
[6]馬昂,潘曉,吳雷,等.區塊鏈技術基礎及應用研究綜述[J].信息安全研究,2017,3(11):968-980.
[7]郭致遠,魏銀珍. 基于Spring Cloud服務調用的設計與應用[J]. 信息技術與網絡安全,2019,38(02):87-91.
[8]王煜,朱明,夏演. 非對稱加密算法在身份認證中的應用研究[J]. 計算機技術與發展,計算機技術與發展,2020,30 (01):94-98.
[9]王孟釗. SHA1算法的研究及應用[J]. 信息技術,信息技術,2018,42(08):152-153+158.
[10]焦英楠,陳英華. 基于區塊鏈技術的物聯網安全研究[J]. 軟件,2018,39(2):88-92.