本文轉發自量子位
脫了馬甲我照樣兒認識你!
這句在2000春晚趙本山的經典臺詞,放在隱私圈有了新的解釋:在不看到數據「真面目」的情況下,照樣能得到答案。
數據的進擊與人工智慧的野望隨著人工智慧(AI)技術的不斷發展和各種產品落地,數據作為各種人工智慧算法的原材料,其價值已經普遍得到大家認可。各個公司能夠採集到的數據畢竟有限,想得到更精準的訓練模型,就需要將數據聯合起來挖掘更大的價值。
但真正讓數據「流動」並不簡單,對於擁有數據的各個企業來說,面臨著很大的矛盾:通過數據分享和交互顯然可以提升AI算法的效果,但同時又必須要保障自己的數據不洩露出去。
Rosetta讓隱私計算與AI攻守結合而解決數據的動態使用、分享中的安全問題,正是「隱私計算+AI」技術的專長。其融合在數據的使用、處理過程之中,保障計算過程本身(廣義的講,還包括計算結果)不會洩露原始明文數據本身的信息。
國內首個自主研發的基於主流TensorFlow框架的隱私AI框架可以解決以上種種問題:Rosetta (https://github.com/LatticeX-Foundation/Rosetta)
「Rosetta」名稱取自古埃及的羅塞塔石碑(Rosetta Stone)。其上記載著古埃及象形文字、埃及草書和古希臘文三種文字。
這裡寓意著Rosetta框架將承載和結合AI、隱私AI和區塊鏈三種典型的技術。這使得Rosetta的發展方向聚焦在以下三個方面:
面向AI需求,服務AI開發者
完全開源,透明開放
持續集成高效、可擴展的隱私保護技術後端
目前開源的 Rosetta 0.2.0版本中,以TensorFlow這一流行AI框架為基礎,深度改造其python前端和後端kernel,融合了最前沿的安全多方計算(MPC)算法協議。
那麼讓我們揭開Rosetta的神秘面紗,先睹為快,舉一個簡單的「硬核」例子:
假設現在有三個個體A,B和C各自都具有自己採集到的一批私有數據,並且已經各自經過標準的特徵工程等方式將其表達為三個矩陣,和,正如大部分的AI算法(比如推薦系統)那樣,某一個步驟中需要執行矩陣乘法這樣的算子操作。
顯然為了保護數據的隱私,三方之間是不能將各自的數據直接明文的傳輸給其他參與者的,而這樣的計算又必須要進行數據的交互,這時,用戶可以引入Rosetta框架後很快的解決這一問題。
Rosetta框架實例分析比如,各方在本地有一樣的如下腳本rosetta_demo.py (這裡為了更加直觀的體驗,我們以各方通過console輸入簡單的數據來示例,真實場景下可以調用隱私數據文件讀取接口來輸入):
#!/usr/bin/env python3
# Import rosetta package
import latticex.rosetta as rttimport tensorflow as tf
# You can activate a backend protocol, here we use SecureNNrtt.activate("SecureNN")
# Get private data from every party
matrix_a = tf.Variable(rtt.private_console_input(0, shape=(3, 2)))
matrix_b = tf.Variable(rtt.private_console_input(1, shape=(2, 1)))matrix_c = tf.Variable(rtt.private_console_input(2, shape=(1, 4)))
# Just use the native tf.matmul operation.cipher_result = tf.matmul(tf.matmul(matrix_a, matrix_b), matrix_c)
# Start execution
with tf.Session() as sess:sess.run(tf.global_variables_initializer())
# Take a glance at the ciphertext
cipher_result = sess.run(cipher_result)print('local ciphertext result:', cipher_result)
# Set only party a and c can get plain resulta_and_c_can_get_plain = 0b101
# Get the result of Rosetta matmul
print('plaintext matmul result:', sess.run(rtt.SecureReveal(cipher_result, a_and_c_can_get_plain)))A 、B和C方在完成配置好網絡拓撲配置文件後,分別運行
python rosetta_demo.py --party_id=0
python rosetta_demo.py --party_id=1
python rosetta_demo.py --party_id=2
然後,各方分別按照提示在終端中輸入各自的私有數據,比如A方可以按照如下提示輸入其對應的矩陣元素值:
[2020-07-29 20:10:49.070] [info] Rosetta: Protocol [SecureNN] backend initialization succeeded!
please input the private data (float or integer, 6 items, separated by space): 2 3 1 7 6 2
假設A方輸入的私有矩陣為 , B 方輸入的私有矩陣為 , C 方輸入的素有矩陣為
。
我們先直接列印出算子計算的結果,此時各方本地輸出的是各不相同的被編碼後的密文信息,比如:
local ciphertext result: [[b'D\xa9P\xfeul\x00\x00#' b'\xcbj\x1c\x1f*D\x00\x00#' b'\xef\xdb\xa2\xddS\x90\xff\xff#' b'\xaa:\xbcD\x96\x83\xff\xff#']
[b'\x16\xb3\xf6\xa9@x\x00\x00#' b'4\xff/\x99\xc9\xbb\xff\xff#' b'8\x11\xfa\xa1Y<\x00\x00#' b'_9\x92>\xea6\x00\x00#']
[b'\xeb)\xf3\xa0\xfa\xc6\xff\xff#' b"\x1c'\xec\x80\xa1%\x00\x00#" b'\xf4\xcd\xc4\xb6\xfb\x1a\x00\x00#' b'B\x10\xeeNd\xe6\xff\xff#']]
在上述腳本的最後我們顯式的調用了SecureReveal接口來將隱私AI的結果「解密」出來,且通過設定參數為5來要求只有A和C可以得到明文值,所以A方和C方將得到類似如下的正確明文結果:
plaintext matmul result: [[b'8.000000' b'14.000000' b'18.000000' b'4.000000']
[b'4.000000' b'7.000000' b'9.000000' b'2.000000']
[b'24.000000' b'42.000000' b'54.000000' b'12.000000']]
[2020-07-29 20:11:06.452] [info] Rosetta: Protocol [SecureNN] backend has been released.
而B方則不會得到正確的明文計算結果,其輸出是:
plaintext matmul result: [[b'0.000000' b'0.000000' b'0.000000' b'0.000000']
[b'0.000000' b'0.000000' b'0.000000' b'0.000000']
[b'0.000000' b'0.000000' b'0.000000' b'0.000000']]
[2020-07-29 20:11:06.558] [info] Rosetta: Protocol [SecureNN] backend has been released.
可以看出除了必要的數據預處理接口外,我們完全的復用了TensorFlow中的算子,在更複雜的計算邏輯圖中,你可以像這個trivial例子中的Matmul一樣,直接使用native TensorFlow的算子即可,不需要感知任何後端複雜的隱私協議!
AI開發者能在不需要對隱私AI技術有任何了解的情況下,只需要改動兩三行代碼即可將現有AI代碼轉換為具備數據隱私保護功能的程序,Rosetta可以說是AI開發者的「貼心小馬甲」。
為了更相近了解這種隱私保護技術,量子位邀請到矩陣元算法科學家謝翔博士進行直播分享, Rosetta如何將隱私計算能力賦予人工智慧,讓我們的隱私更安全。
分享內容隱私計算背景介紹
如何實現隱私保護
什麼是Rosetta
Rosetta運行原理
Rosetta的應用場景
未來的規劃
嘉賓介紹:謝翔,中國科學院軟體研究所博士,矩陣元算法科學家,負責公司整體隱私計算技術的預研和產品化,主導設計和開發Rosetta開源框架。
格密碼理論、同態加密、零知識證明、安全多方計算等密碼學算法和協議設計的專家。發表論文10餘篇,曾在密碼學的頂尖學術會議Eurocrypt,CCS上發表論文。
直播&報名直播時間:2020年8月6日(周四),19:00-20:30
其中分享時間為60分鐘,問答交流環節30分鐘
報名方式:掃碼添加小助手,備註「隱私」,將邀請您加入直播群。歡迎大家與謝翔老師、更多開發者一起探討和交流隱私AI,也歡迎分享給需要的朋友:
Tips:關注「矩陣元」,回復「區塊鏈」,免費獲取全網最全的區塊鏈入門資料。
為了數據的流動
關注矩陣元 了解隱私計算
--長按二維碼 識別關注--
戳閱讀原文,走進矩陣元!