21/6/29 讀書筆記
安全多方計算 Goldreich-Micali-Wigderson(GMW)協議
GMW協議中與GC的理念區別在於,對於每個wire,GC中P1扮演了主要的角色,其需要采用\(OT_1^2\)傳輸來向P2傳遞密文,而P2則相對被動。而在GMW中,對wire的值進行了share,提高了P2的主動性。
GMW支持NOT、XOR和AND計算,其相比於GC的最大優勢在於能拓展到更多方的共同計算。
對於一個gate,記為\(G\),其具有兩個輸入wire(\(x,y\))和一個輸出wire(\(w\)),假設參與者P1和P2分別持有\(x\)和\(y\),考慮\(x,y,w\)∈{0,1}:
-
P1隨機生成一個bit,稱之為\(x_a\),\(x_b=x \bigoplus x_a\),在這里我們可以稱\(\{x_a,x_b\}\)構成了x的一組share,\(x_a\)視為x的mask。將\(x_b\)發送給P2
-
P2同樣對其持有的\(y\)生成一組share記為{\(y_a,y_b\)},並將\(y_b\)發送給P1。
-
討論\(G\)的邏輯運算類型:
-
非運算 NOT(假設對x進行):則P1直接翻轉就行,無需通信
-
異或運算 XOR:P1和P2分別對自己持有的{\(x_a,y_b\)}、{\(x_b,y_a\)}進行計算,得出\(w_1=x_a\bigoplus y_b,w_2=x_b \bigoplus y_a\),然后P1和P2各自展示\(w_1\)和\(w_2\),由\(w=w_1\bigoplus w_2=x\bigoplus y\)得到輸出
-
與運算 AND:較為復雜,需要使用\(OT_1^4\)。P1首先需要考量一個算式:
\[w=S(x_b,y_a)=(x_a\bigoplus x_b) \and (y_a\bigoplus y_b) \]這個算式與P2持有的{\(x_b,y_a\)}有關,P1需要去猜測其組合的所有可能性,即{\(x_b,y_a\)}屬於{{0,0}, {0,1}, {1,0}, {1,1}}。P1在計算得到所有的四個結果后,還需要額外為自己生成一個計算密鑰\(k\in\{0,1\}\),並將所有的結果通過\(k\bigoplus S\)進行加密,將加密的結果通過\(OT_1^4\)發送給P2。P2得到被加密的結果后,P1和P2分別公布\(k\)和被加密的結果,最后通過\(w=w\bigoplus k \bigoplus k\)得到最終結果
注意這里,即使P1明明知道\(x_b\),但是它仍然考慮了\(x_b\)的不同情況。在\(x_b\)對P1已知的情況下,也許可以采用\(OT_1^2\)替代\(OT_1^4\)?我沒有想到為什么不這樣做的理由。
-
而為了拓展到多方(n方參與)的場景,只需要將share的部分改為產生(n-1)個mask,然后將mask發送出去(注意,這里區別於上述的雙方GMW過程)。但是實際上只是share的一個生成方法罷了,沒啥區別。其他考量基本一致,不再贅述。
安全多方計算 Shamir秘密共享方案
Shamir秘密共享方案是基於多項式插值法構造的具有門限的n方秘密共享方案。n個人共享一個秘密s,而僅當t個人以上提供其具有的share,才能還原出秘密s。
其構造方式可以描述為:
-
對於秘密s,給定一個值p,構造一個多項式如下:
\[f(x)=(s+a_1x+a_2x^2+...+a_{t-1}x^{t-1})mod(p) \] -
給定n個隨機值,每個隨機值稱為\(r_i\),求得\(f(r_i)\),然后將\((r_i,f(r_i))\)發送給第i個參與者。分發完成后,多項式被銷毀,秘密s被隱藏
-
根據數學原理,當我們擁有t個參與者持有的\((r_i,f(r_i))\)時,就能夠重建原t次多項式,並得到秘密s。重建方式使用多項式插值法:
\[f(x)=\sum_{i=1}^{t}\left(\prod_{1 \leq j \leq t, j \neq i}\left(x-r_{j}\right)\left(r_{i}-r_{j}\right)^{-1}\right) f\left(r_{i}\right)(\bmod p) \]而\(s=f(0)\)
安全多方計算 BGW協議
BGW協議是基於Shamir秘密共享方案的支持算術運算的多方MPC協議。其支持加法、數乘運算、乘法運算。
考察一個算術門\(G\),其具有輸入a和b:
-
基於Shamir方案,生成兩個多項式\(f(x)和g(x)\)用於保存秘密a和b。生成n個隨機值然后按方案進行處理和分發(即每個參與者\(P_i\)接收到\((r_i,f(r_i),g(r_i))\)),之后銷毀多項式
-
考慮\(G\)的類型:
-
加法運算:每個參與者\(P_i\)計算自己的\(f(r_i)+g(r_i)\),而這個值就是最終\(a+b\)的一個share,仍然滿足Shamir共享方案對門限t和n的要求
-
數乘運算(假設對a):每個參與者計算\(const * f(r_i)\),由於是線性的,仍然滿足Shamir共享方案。
-
乘法運算:對於乘法運算,由於多項式相乘后,其次數會發生改變(從t次變為2t次),因此會打破Shamir共享方案。
我們需要采用拉格朗日插值方法對這個2t次的多項式進行分析,我們有n個\((r_i,f(r_i)*g(r_i))\),構成了n個點。基於這n個點進行插值(為了方便,設\(m_i=f(r_i)*g(r_i)\)):
\[a*b=\sum_{i=1}^{2t+1}\lambda_im_i \]其中\(\lambda_i\)是第i個點對應的拉格朗日系數(這個系數可以由所有的n個\(m_i\)和\(r_i\)共同計算出來)。
-
此時對於參與者\(P_i\),其持有\(m_i=f(r_i)*g(r_i)\)是一個已知數,其將這個\(m_i\)作為秘密,重新基於Shamir方案構造一個新的t次多項式\(t_i(x)\),並將秘密\(m_i\)以\((r_j^i,t_i(r_j^i))\)分發給參與者\(P_j(j\in (0,n])\)
-
現在每個參與者持有:
- 關於最終結果的一個share,即\(m_i\)
- 關於每一個參與者的\(m_i\)的share
他們可以共同計算出上面的式子(計算過程通過數乘和加法就能完成,因為\(m_i\)的發布是通過t次多項式完成的)
-
最終所有參與者公布結果的share,從而通過Shamir方案得到最終結果。由於參與拉格朗日多項式計算的公式都是我們重新構造的t次多項式,所以保持了門限為t
-
-
對於BGW方法,門限t必須滿足\(2t<n\),否則在使用拉格朗日插值法時會發現沒有足夠的點進行插值(最多只能提供n個點,而2t級多項式的拉格朗日插值法需要2t個點)。
拉格朗日插值法:對於n次多項式\(h(x)\),假設知道n個滿足該多項式的點\(\{(x_i,y_i)|i\in (0,n]\}\),可以通過:
\[B_k=\{j|i!=j 且 j\in (0,n]\}\\ e_k(x)=\prod_{i\in B_k}\frac{x-x_i}{x_k-x_i}\\ h(x)=\sum_{j=0}^{n-1}e_j(x)y_i \]上述BGW求取過程中特定於求取\(x=0\)的情況,即\(\lambda_i=e_i(0)\)
數據分析導論 數據探索 匯總統計
數據探索是對於數據的初步探索,以更好掌握其性質。將從匯總統計、可視化、聯機分析處理三個主題進行介紹。
匯總統計是采用量化的數的集合來捕獲和描述一個大的數據集合的某種特征。可以從以下角度進行統計分析:
-
頻率和眾數:眾數對應較高頻率的數據。對於離散的分類屬性來說,其頻率和眾數具有較高的研究價值。對於連續的屬性來說,眾數通常會給出關於遺漏值的信息(比如指定0作為缺省值,就會使得0成為眾數)
-
百分位數:給定一個\(x_{p\%}\),使得整個數據中百分之\(p\)的觀測值小於\(x_{p\%}\)。百分位數是一些其他統計量的基礎。
-
均值和中位數。均值和中位數給出了值集的位置度量。均值對離群值較為敏感,中位數則更穩健地提供了值集中間位置的估計。
- 截斷均值:指定\(p\),將數據中前\(p\%\)和后\(p\%\)的數據剔除后,再求其他數據的均值。均值可以看做\(p=0\)的情況,中位數可以看做\(p=50\)的情況。
-
極差和方差:極值和方差給出了值集的散布度量。極差在大部分值相對集中、小部分值極端的情況下容易引發誤解。標准差是方差的平方根,方差被描述為:
\[variance(x)=s_x^2=\frac{1}{m-1}\sum_{i=1}^m(x_i-\overline x) \]但是均值本身容易被極端值帶偏,所以從方差引申出幾個其他度量:
- 絕對平均偏差(absolute average deviation,AAD)
- 中位數絕對偏差(median absolute deviation,MAD)
- 四分位數極差(interquartile range,IQR)
\[AAD(x)=\frac 1m\sum_{i=1}^m\mid {x_i-\overline x}\mid\\ MAD(x)=median(\{\mid{x_1-\overline x,...,x_m-\overline x}\mid\})\\ IQR(x)=x_{75\%}-x_{25\%} \] -
多元匯總統計:當多個屬性間具有一定關聯關系,使得每個屬性的散布不一定相對獨立,這時使用協方差矩陣分析數據的散布。協方差矩陣\(S\)為\(m\times m\)的方陣,\(s_{ij}\)表示第i個屬性和第j個屬性的協方差:
\[covariance(x_i,x_j)=\frac1{m-1}\sum_{k=1}^m(x_{ki}-\overline{x_i})(x_{ki}-\overline{x_i}) \]可以看出協方差在i==j時表現為方差。協方差體現了多個屬性一起變化的情況,協方差大小還依賴於變量的值域大小。協方差接近於0,表示兩個屬性間線性相關程度低。
而實際上更好的判斷相關性的方式是(皮爾森)相關性矩陣,即每個元素都是相關屬性間的皮爾森相關性度量(見數據相似性和相異性一節),其更好地排除了變量本身值域對於判斷和對比的干擾。
數據挖掘導論 數據探索 可視化
可視化的理論基礎在於相信人的分析能力和領域知識,而致力於如何采用可視化的方式將信息呈現給人,使得人能夠從中快速發現和聚焦於某些模式。
可視化的重要概念在於:
- 表示:如何將數據的信息對應到圖形中的元素。
- 安排:數據的安排需要合理,可視化圖形的安排需要盡可能清晰,凸顯出潛在的模式。
- 選擇:對於多維的數據,如何選擇能夠體現所需關系的屬性組合;以及在對象過多導致表示復雜時選擇並刪去微不足道的對象。
可視化的具體技術依賴於數據類型。
對於少量屬性(低維非時序非空間序簡單屬性),可以用莖葉圖、直方圖等,熟悉的概念就不多介紹。以下介紹幾種(我沒見過的)表示技術:
- 盒狀圖:利用盒的特殊位置標識不同的百分位點,利用離散點表示異常值。其能夠更在較為緊湊的情況下反映該屬性的位置度量的同時,較為大概地反映散布度量。

- 百分位圖:橫坐標為屬性值x,縱坐標表示所有數據中小於等於x的對象所占的百分比,構成的函數稱為(經驗)累計分布函數((E)CDF)。你還可以構建其反函數來畫圖。其展現了在數據層面屬性變化的趨勢。
對於具有時序和空間序的數據,其常常在時間和空間上具有平滑連續性。因此對於這種數據的可視化可以用更加直觀的曲面圖、等高線圖進行處理。而當需要同時考慮時間和空間維度時,對其中一個維度進行低維切片,即選取該連續維度空間內的離散點,針對該點固定,考察其他屬性。
對於更高維數據,介紹了這幾種方法:
-
數據矩陣圖:利用顏色表示數值,每個不同的屬性構成列,每個對象構成行,每個元素表示一個對象的一個屬性。看起來和表差不多,只是使用圖形元素替代了數值。
-
平行坐標系:縱坐標代表屬性的值域,橫坐標上每隔一定區間設置一個豎直軸,每個軸對應一個屬性。每個對象的屬性的值表現為這些軸上的點,連起這些點的一條折線代表一個對象。相似的對象之間的折線模式相似。對於屬性軸的合理安排會提高圖的清晰性。

- 星型坐標系:每個對象都是一個替身,對應一個JOJO的替身面板,不用解釋了吧(x
數據可視化的經驗總結出以下的指南性原則——ACCENT原則:
- Apprehension 理解:最大化對變量間關系的理解
- Clarity 清晰:最重要的元素和關系在視覺上最突出
- Consistency 一致:多張可視化圖之間對同一對象的表示要一致
- Efficiency 有效:盡可能簡單和容易解釋
- Necessity 必要:所有圖形元素應該是必要的
- Truthfulness 真實:能夠從圖形元素獲取到真實情況的隱性描述
