引言——密碼學發展簡史
談隱私計算,繞不開密碼學。
關于保密的需求,最早可以追溯到約公元前1500年的美索不達米亞。那時,人們主要使用筆和紙,或簡單的機械輔助工具來進行加密。
密碼棒——一種早期的加密工具[1]
這個階段,一般稱之為經典密碼學,或古典密碼學。
古典密碼學
“
如果需要保密,信中便用暗號,也即是改變字母順序,使局外人無法組成一個單詞。如果想要讀懂和理解它們的意思,得用第4個字母置換第一個字母,即以D代A,余此類推。 ——蘇維托尼烏斯,羅馬十二帝王傳
凱撒密碼[2]
其中比較有特點的,就是以凱撒密碼為代表的換位加密。這類密碼通常易于破解,以維吉尼亞密碼為代表的多表置換密碼出現,大幅降低了被頻率分析和攻擊的風險。
凱撒密碼在一次加密中的的偏移量是相同的,比如都是A->D,B->E,偏移量固定為3,而維吉尼亞密碼的偏移量需要查表來決定。
比如明文是: ATTACKATDOWN
密鑰采用一個單詞不斷重復組成,比如 LEMON
密鑰長這樣: LEMONLEMONLE
整個加密過程,看明文第一個字母A,對應密鑰第一個字母L,那我們就查L行的A列,得到密文L;第二個字母T,對應密鑰第二個字母E,那就查E行的T列,得到密文X;第三個字母T,對應密鑰第三個字母M,那就查M行的T列,得到密文F,以此類推。
我們可以得到密文: LXFOPVEFRNHR
近代密碼學
進入20世紀,復雜機械和電動機械被發明出來,更有效和復雜的加密方法應運而生。
最有代表性的,就是圖靈領銜破解的Enigma密碼機。
Enigma密碼機[3]
Enigma的核心原理仍然是多表替代,只不過借助機械使得這個過程半自動化,更加高效。
并且,三個轉子、不同方向、不同相對位置、連接板上的字母換序等多種條件組合之下,共有一億億種可能性(沒寫錯,一億億)。
在圖靈破譯Enigma之前,雷耶夫斯基首次將嚴格的數學化方法應用到密碼破譯領域,他領銜的波蘭三杰破解了大量德軍密碼,成為圖靈偉大成就的基礎。
現代密碼學
19世紀40年代,現代信息學之父香農的《密碼學數學理論》被認為是開啟了現代密碼學時代。
我在香農的維基百科詞條里,還發現他和圖靈曾經有過一段夢幻聯動。
“
1943年,香農有機會和英國數學家和密碼學家艾倫·圖靈合作。圖靈被派到華盛頓和美國海軍交流破譯德國的北大西洋潛艇艦隊密碼的成果,并在貝爾實驗室待了一段時間。香農和圖靈在一個自助餐廳見面。圖靈向香農介紹了現在被稱為“通用圖靈機”的概念。香農對此很感興趣,因為圖靈機的概念和香農自己的很多想法相吻合。
隨后,香農證明了一次性密鑰(cryptographic one-time pad)是無法被破譯的。香農同時證明了一個無法被破譯的密碼系統的密鑰必須有以下特征:完全隨機;不能重復使用;保密;和明文一樣長。 [4]
1976年 Diffie 和 Hellman 的公鑰密碼的思想提出,是現代密碼學的里程碑。兩位也在2015年因為提出公鑰密碼思想獲得圖靈獎。
公鑰密碼學也就是非對稱密碼學,在此之前,加密和解密一直使用同一個密鑰(即對稱加密)。
對稱加密的問題在于,私鑰一旦暴露,密文就不再安全,而假想一個場景,A和B想要針對一段文字進行加密,則必須把密鑰通過不安全的通道進行傳輸。
當然,可以通過迪菲赫爾曼秘鑰交換協議(沒錯,也是上面兩位發明的)來交換私鑰,但是仍然有可能被中間人攻擊獲取秘鑰。
非對稱加密由于可以傳輸公鑰,在傳輸密鑰環節更加安全,但是由于算法更加復雜,運算效率比對稱加密要低。
有了非對稱加密的基礎,現代密碼學開始飛速發展。
時間來到1982年,姚期智院士提出了著名的百萬富翁問題,開創了多方安全計算這一密碼學的新分支。
多方安全計算
億萬富翁Alice和Bob,想知道誰更有錢,但是又不想暴露自己具體有多少資產,應該怎么辦呢?
這就是百萬富翁問題。一般而言,最佳解法是通過不經意傳輸。
不經意傳輸(Oblivious Transfer)
我和張三打牌,但是我牌技不佳,總是輸,為了讓游戲更公平一點,我可以看張三一張牌的大小,但是我不想讓張三知道我看的是哪一張,不然他可以有選擇的出那張牌,導致我還是輸。
這時,我們就可以通過不經意傳輸的方法,來達到我看了一張牌,但是張三不知道我看的是哪張這個效果。
實用中,常常簡化為1-2不經意傳輸,即發送者發送2條消息給接受者,接收者只得到其中一條,但發送方并不知道接收者得到了哪一條。
假設Alice有兩個密文m0和m1(兩張牌),Bob想獲取其中一個。
- Alice生成兩個RSA公私鑰對,將兩個公鑰p0和p1發給Bob;
- Bob生成一個隨機數,并用p0或p1中的任一個加密這個隨機數(想要m0就用p0,要m1就用p1),并將密文結果發送給Alice;
- Alice用p0和p1對應的私鑰分別解開密文,得到兩個結果k0和k1,注意,其中一個就是Bob真正的隨機數,另一個不是,但是Alice不知道哪一個才是。拿到k0和k1后,用k0和m0進行異或,用k1和m1異或,得到e0,e1,發送給Bob;
- Bob用之前生成的隨機數,分別于e0和e1進行異或,其中一條就是Alice的密文,另一條則是一個無意義的隨機數。[5]
有點繞?繼續看:我們假設Bob想要的是m0,他用p0加密了隨機數x,得到p0(x)。
Alice用p0的私鑰解開這個數,就得到了x,然后與m0異或,得到e0=m0⊕x,以及另一個隨機數和m1異或的結果,發給Bob。
Bob拿到了e0和e1,和自己之前的隨機數x異或,x⊕e0 = x ⊕ m0 ⊕ x = m0,這樣,他就拿到了m0。
那我們如何用不經意傳輸來解決百萬富翁問題呢?
這里數據玩家來簡化一下問題,假設兩人的資產都在億級別,但是又不超過十億。
Alice取十個一模一樣的盒子,按1~10的順序排好,但是不能做記號,代表1~10億,按照自己的資產規模分別往里面放入黑桃,紅心和方塊花色的撲克牌(撲克牌都用A)。
如果盒子編號小于自己的資產規模,則放入黑桃,如果相等,則放入紅心,如果編號大于自己的資產規模,則放入方塊。
把十個盒子都加鎖,并且交給Bob;
Bob根據自己的資產規模,選擇其中一個箱子加上自己的鎖,并把其他箱子都銷毀。
最后,Bob把這個雙重加鎖的箱子給回Alice。
Alice拿到箱子,不知道這具體是哪一個箱子,因為沒有編號。
兩人分別開鎖,看里面的撲克牌花色,如果是黑桃,說明Alice更加富有,紅心,兩人相等,方塊,則Bob更加富有。[6]
當然,兩人的資產規模不太可能是整數,如果正好相等,可以再比千萬級的資產,只要不斷重復上述過程即可。
這樣,通過不經意傳輸,我們就實現了多方安全計算,即數據的可用不可見。
隱私計算發展現狀
隱私計算到底是什么
隱私計算是多種技術的統稱,目的是為了讓多個數據擁有者,在不暴露數據本身的前提下,實現數據的共享、互通、計算、建模,最終產生超出自身數據的價值,同時保證數據不泄露給其他參與方。
一圖看懂隱私計算發展[7]
隱私計算是一套復雜的技術體系,包含了硬件、密碼學、分布式機器學習等多種底層技術。
目前大家基本的共識,是隱私計算包含三大技術路線,即:可行執行環境TEE,多方安全計算MPC,以及聯邦學習FL。
隱私計算技術棧[8]
隱私計算賽道為何突然火熱?
其核心是數字經濟的發展,數據要素重要性的確立和數據基礎設施、數據法律法規、數據交易生態不夠完善之間的矛盾導致的。
究其原因,在于數據擁有方對于數據不能給,不敢給,不愿給。
不能給
政府機構、醫院、中小金融機構,基礎設施不夠完善,信息化還沒有做好,業務還沒有數據化,數據沉淀還不夠多。
哪怕已經有一些數據,但分布于不同的部門,存儲于不同的基礎架構,手工臺賬和Excel并存,更不用談數據治理、規范、標準和數據打通及數據服務了。
近幾年,多方面因素的共同作用下,現狀已經有所改善。
不敢給
基礎設施具備以后,又迎來了越來越嚴格的合規和監管,個人隱私保護等法規的逐步健全,也使得原來那種野蠻生長的,明文傳輸的明文傳輸個人隱私數據的商業模式漸漸的行不通了。
怎么給才合規,怎么拿才合規,太多的反面案例讓大家有點畏首畏尾,寧可少做,不可做錯。
而隱私計算,正是讓大家敢于進行數據共享和交易的一劑良藥。
不愿給
大家都意識到數據的重要性,所以把數據看作自己最重要的資產,不愿意和其他機構分享數據。
別說其他機構了,就是在某些金融機構內部,不同部門之間的數據想要打通也得費一番功夫。
隱私計算的核心。能力在于讓數據可用不可見,讓數據不動模型動。
希望能夠讓各方在數據不離開本地數據庫的前提下,完成數據的交互,碰撞和建模。
所以,隱私計算在數據基礎設施逐漸完善,解決大家不能給的前提下,一方面保護了傳輸的數據的私密性,解決大家不敢給的困境,另一方面保護了數據所有機構的資產安全,打消大家不愿給的顧慮,是兼顧當下解決數字經濟發展和隱私保護的最佳方案。
隱私計算發展痛點
產品和技術不夠成熟
產品由于涉及到眾多技術棧,使得整個產品形態非常復雜,考慮到隱私計算的實際應用場景,可能需要部署在防火墻內、私有云、DMZ區,存在跨網絡交互,涉及防火墻策略等復雜的部署方案,使得整個產品的實施交付更為復雜,還沒有形成相對標準的產品套件。
此外,多方安全計算由于大量使用密碼學算法,使得性能降低。比如,生成一個RSA的密鑰對,通常就涉及大整數的素數分解,需要的計算量極大。
根據信通院的測試,40萬行樣本x900列特征的縱向聯邦學習建模比明文慢數十倍甚至百倍,并且隨著規模增加,這個倍數還會放大。
隱私計算存在性能瓶頸[9]
此外,隱私計算中有很多假設被大家習以為常了,認為假設一定成立。
比如,聯邦學習假設梯度無法推斷出有用的信息,然而這個假設很難被證明,事實上,反例已經出現: 梯度會泄漏訓練數據?MIT新方法從梯度竊取訓練數據只需幾步。
就算無法推斷出原始數據,一些具有統計意義的數據,難道就不會造成數據擁有方的損害嗎?比如交易總量,比如客戶總數,比如客戶性別比……
更加致命的假設,是隱私計算中,我們通常假設所有節點都是“半誠實”的,也就是,大家雖然有機會獲取對方泄露的數據,但還是遵守約定。[10]
然而實踐中,等到相關技術逐漸被大家掌握,所有節點還能夠保持“半誠實”嗎?如果大家都是惡意節點,大家都“投毒”(摻入假數據),隱私計算還可靠嗎?
客戶接受程度低
由于產品原理太過復雜,很難給客戶解釋清楚,最難的是,如何自證。
經過一套復雜的方案設計,你如何證明隱私計算平臺沒有獲取到客戶的明文,或者,至少不能還原或推斷出有用的信息?
就算給客戶解釋清楚了,客戶也沒辦法給監管解釋清楚。
監管真的認可這類方案嗎?做成了項目,收益有多少,能否覆蓋監管成本?畢竟,項目上線以后,肯定會引起監管關注,三天兩頭監管現場檢查,無數的材料、匯報、解釋……沒有機構愿意承受。
還有,真的不會“用力過猛”嗎?以金融行業為例,如果大家都完成了“斷直連”,所有數據源都從合規的出口接入,還有必要套上隱私計算的殼子嗎?
此外,就算大家都接受了,還存在對原有業務流程的大改造,以及對性能的潛在影響。
原有流程下,企業內部數據與外部數據融合后,經過特征工程,在決策引擎內完成模型加工并輸出結果。
在隱私計算的方案下,企業內部數據需要先加密,進入隱私計算產品,再與外部數據進行計算,最后的結果通過決策引擎輸出,返回給業務系統繼續后續流程。 [11]
這套流程,涉及多個系統改造,涉及多個部門參與,是否會影響其他業務或產品,是否涉及整體架構的變更,是否涉及網絡架構調整,性能是否能夠滿足秒級反饋,這些都是未知數。
尚未形成完整解決方案
數據安全需要端到端的全流程防護,從客戶授權、采集、加工、融合、應用的全流程,都是需要防護的。如果僅僅只在某一個環節應用隱私計算技術,而其他環節仍然明文來往,則沒有達到實質上的效果。
目前的隱私計算方案,大多集中在數據的融合環節,針對不同數據所有方的數據,在融合時確保數據可用不可見,但是在其他環節很少涉足,也缺少相應的方案。
而很多客戶,對于隱私保護很焦慮,但是缺少一攬子方案,包括客戶授權協議,數據存儲,數據生命周期管理,數據權限控制等等,如果缺少相應方案,客戶仍然難以下定決心。
此外,與行業內的數據源尚未打通,導致一個項目,要和兩方甚至三方從0開始磨合,設計方案,聯調測試等等。
如果與某一數據源形成合作方案,又面臨另一個問題,即不同的隱私計算產品不互通,導致新的孤島形成。
展望未來
盡管有不少問題,但是隱私計算仍然是大勢所趨。
針對以上的痛點,目前隱私計算行業也在積極應對和調整。
多種技術路線融合,異構平臺互通
三種技術路線各有所長,MPC應用場景最廣,隱匿查詢、隱私求交、不經意傳輸等技術,廣泛應用于多種場景中,但是由于各類加密算法的復雜性,導致性能存在瓶頸;FL在聯合建模場景最為常用,然而梯度交換時,時常需要采用同態加密等手段增強安全性;TEE交付模式太重,仍需探索軟硬結合的交付模式。
事實上,在一個隱私計算項目中,多種技術結合的模式也很常見。例如,在縱向聯邦學習場景中,通常需要雙方通過隱私求交框定交集結果;針對某些場景計算效率太低的情況,也經常需要采用硬件加速卡來提升性能,這也倒逼MPC的供應商研究軟硬一體的解決方案。
事實上也可以看到,不少大廠已經開始推出隱私計算一體機。因為基于硬件的TEE是可以和MPC以及FL無沖突銜接的,并且會提升兩者的性能。
此外,多個隱私計算平臺互聯互通時,肯定會遇到底層打通的問題,軟硬一體的方案肯定更加強勢,會要求其他各方兼容自己的硬件體系。
互聯互通也是隱私計算繞不開的話題,本就為了打通數據孤島而進行的努力,由于不同平臺的協議和標準不互通,形成了新的孤島。
而要解決互聯互通的問題,最大的難點在于,以誰的為準來進行互聯互通,或者說,以什么標準來進行互聯互通,這就依賴于行業標準的建立。
行業標準加速建立
行業標準加速建立[12]
中立第三方機構、聯盟積極推進各類行業標準的建立,如信通院、北京金融科技產業聯盟等。
符合標準的產品,相當于得到權威機構認證,可以降低市場的認知成本,加快產品的交付落地,同時,同一標準的產品也是可以互聯互通的。反過來,會促使行業玩家力爭符合標準,完成認證,從而推進行業更加標準化、規范化的良性發展。
相信,隨著標準的不斷完善,生態的逐步繁榮,隱私計算的未來不可限量。
參考資料
[1]
密碼學歷史: https://zh.wikipedia.org/wiki/%E5%AF%86%E7%A0%81%E5%AD%A6%E5%8E%86%E5%8F%B2
[2]
凱撒密碼: https://zh.wikipedia.org/wiki/%E5%87%B1%E6%92%92%E5%AF%86%E7%A2%BC
[3]
密碼學發展簡史: https://github.com/guoshijiang/cryptography/blob/master/history/README.md
[4]
克勞德·香農: https://zh.wikipedia.org/wiki/%E5%85%8B%E5%8A%B3%E5%BE%B7%C2%B7%E9%A6%99%E5%86%9C
[5]
【聯邦學習之旅】04 不經意傳輸、秘密共享、密鑰交換與差分隱私: https://wdxtub.com/flt/flt-04/2020/12/03/
[6]
百萬富翁問題的一個簡單解釋:: https://www.jianshu.com/p/5a220e95cee2
[7]
一圖看懂隱私計算發展: http://hqsxw.net/202107194407.html
[8]
WAIC 2021 | 翼方健數張霖濤:隱私安全計算如何助力形成數據和計算互聯網: https://www.sohu.com/a/480974753_129720
[9]
信通院發布2021年隱私計算行業觀察: https://www.secrss.com/articles/37491
[10]
探索 | 聯邦學習概念辨析與金融應用思考: https://mp.weixin.qq.com/s/wj24yoqlO94ThXzEodPNJg
[11]
隱私計算公司開拓金融業的意見與建議: https://mp.weixin.qq.com/s/rmeHCQUUsVIrbgE2w-6mGA
[12]
可信隱私計算安全標準和測試解讀: https://www.secrss.com/articles/37557