螞蟻集團異構平臺開放演算法協議與開源實踐

架構師修行手冊發表於2023-04-06

來源:DataFunSummit

導讀 本文將介紹異構平臺開放演算法協議與開源實踐。

分享分為三部分:

1. 開放協議背景

2. ECDH-PSI 協議架構

3. 開源實踐

分享嘉賓|陸宇飛 螞蟻集團 技術專家

編輯整理|丁知逾 北方工業大學

出品社群|DataFun



01

開放協議背景

基於開發演算法協議的互聯互通是指透過定義演算法執行流程中互動介面的協議,使不同平臺獨立開發的運算元可以實現互聯互通的一種方式。
開放協議互聯互通有利於:
第一、增加演算法安全透明度,提升安全可信度。因為開放演算法協議就是要把演算法最底層的互動協議開放出來,讓整個演算法安全公開透明。
第二、減少演算法容器的安全稽核成本,提升效率。這是因為企業與其它廠商互通時不再需要引入外部的演算法容器,也就不再需要走安全稽核流程,效率提升。
第三、促進行業演算法迭代與進步。因為一旦演算法協議的介面標準化後,廠商之間的演算法產品相互替換性增加,如果某一廠商的演算法引擎成為瓶頸,則廠商有更多動力去做演算法最佳化,從而提升行業整體演算法水平。
考慮到隱私計算行業的多樣性,在保證演算法協議一致性的基礎上,還需提供一定的靈活空間,因此在設計開發演算法協議時,需遵循以下原則:
互動出域資訊透明,這一點是根本,因為開放演算法協議每一次網路互動的行為都需要被精確地定義出來;
對演算法本地實現開放,只規定協議互動部分的介面,而不去限制演算法本地計算部分的行為;
支援演算法和安全機制擴充套件,為順應隱私計算行業的高速發展和新技術的出現,開發演算法協議應具備可快速擴充套件的能力。
開放演算法協議的技術路線主要為專用 MPC 演算法互通協議、通用 MPC 演算法互通框架和隱私路由這三類。專用 MPC 演算法互通協議具有較高的同構程度及較為固定的演算法流程,因此適合用開放協議來規範化。通用 MPC 演算法互通框架將複雜的 MPC 程式分層為演算法邏輯層、運算元介面層、協議執行層(定義細粒度介面)。透過開放協議將每一層協議介面規範化,並將各層介面組裝的方式也規範化,從而可以保證上層無論怎麼變都依然能夠互聯互通。隱私路由可以轉換平臺底層使用的隱私計算協議,確保使用不同密文加密的平臺在透過其轉換後互通。隱私路由舉例如下,平臺 1 使用秘密分享,平臺 2 使用同態加密。當平臺之間要進行通訊時,隱私路由可將平臺 1 使用秘密分享加密的密文轉化為用同態加密來加密的密文,實現平臺之間的互通。

螞蟻集團異構平臺開放演算法協議與開源實踐

02
ECDH-PSI 協議架構
EDCH-PSI 是螞蟻集團在開放協議互聯互通領域落地的第一個運算元。專有協議 EDCH-PSI 分為兩個階段:握手階段和演算法主體執行階段。
演算法協商握手階段需確定互動互通的演算法和執行所需引數(包括 PSI 演算法型別、求交樣本數量等演算法引數和橢圓曲線型別、雜湊演算法型別等安全原語相關的引數),為減少所使用的 RTT,使開放協議儘可能高效,握手協議在一次互動中完成。

螞蟻集團異構平臺開放演算法協議與開源實踐

ECDH-PSI 握手過程如下圖所示,參與者 A 傳送 Request,參與者 B 回覆 Response 即可完成。兩種傳送的演算法執行引數和安全引數一一對應,但區別在於,Request 方傳送的引數是候選引數列表,Response 方返回的是選中的引數。後面 A 和 B 做 PSI,就直接在 B 選中的引數上執行 PSI 的主題計算即可。

螞蟻集團異構平臺開放演算法協議與開源實踐

演算法主體執行階段基於握手協商的引數完成 PSI 計算。參與者雙方執行的操作具有對稱性,此處就參與者 A 進行演算法說明,參與者 A 本地生成金鑰 Key和集合 {ai}。第一步,透過 hash_to_point() 函式將集合中的值對映到橢圓曲線上的點 Pi,再透過 scalar_mul() 函式將點 P與金鑰相乘加密得到新的點 P1i。scalar_mul 代表橢圓曲線上的點乘運算,大家也可以簡單理解成是加密運算,之後參與者雙方交換 P1,Q1 資訊。第二步,再次呼叫 scalar_mul() 函式對收到的 Q1進行基於自己金鑰的二次加密得到 Q2i。再次進行資訊互動,得到自己的 P2。第三步,A 透過比較集合 P2 和 Q2 即可判斷 a是否在交集中。如此,便可在不洩露原始資訊的前提下,判斷二者集合的交集。

螞蟻集團異構平臺開放演算法協議與開源實踐

03

開源實踐
隱語的運算元原生支援開發演算法協議,開放演算法協議在隱語中並不是一個 demo,而是生產級可用的。透過開源,隱語給出了開放協議的一種參考實現,幫助行業更好地理解協議的內容。地址如下:

螞蟻集團異構平臺開放演算法協議與開源實踐

隱語中提供 ECDH-PSI 實戰的 Python 和 C++ 的介面,無論基於哪種環境,都僅需要實現以下三個步驟,即可輕鬆完成 ECDH-PSI 的實戰:
① 建立傳輸層連線,輸入雙方的 IP 地址和埠;
② 配置 PSI 演算法引數和安全引數;
③ 執行開放協議的 ECDH-PSI。
具體程式碼如下。

螞蟻集團異構平臺開放演算法協議與開源實踐

螞蟻集團異構平臺開放演算法協議與開源實踐

隱語在 Github 和 Gitee 上面都有倉庫,歡迎大家來反饋和共建。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027824/viewspace-2944078/,如需轉載,請註明出處,否則將追究法律責任。

相關文章