Randomness
使用 Ishai-Sahai-Wagner 方案的安全邏輯與
我想嘗試實現一個安全的和這裡描述的方式: https ://eprint.iacr.org/2010/441.pdf
它說有兩個位 a 和 b 並且它們已被分成 d+1 份。我怎樣才能分裂一點?我想沒有比一點更原子的東西了,不是嗎?你能給我一個關於如何做到這一點的例子嗎?我的意思是我可以這樣說,例如:
讓 $ d $ 是 4. 假設 $ a $ = 1,那麼我可以將其拆分為以下 4 份: $ a_1 = 1, a_2 = 1, a_3 = 1, a_4 = 0 $ 因為那時它認為 $ 1 \mathbin{\oplus}1\mathbin{\oplus}1\mathbin{\oplus}0 = 1 = a $ . 這是什麼意思 $ d $ 分享?我假設這些份額是隨機值?
我嘗試了安全 AND 的第一個實現,如下所示:
void SecAND(char a, char b, char* arr, char* brr) { int i; int j; int d = 4; int r[4][4]; int c[4]; for(i = 0; i < d; i++) { for(j = i+1; j < d; j++) { srand(time(NULL)); int rij = rand() % 2; r[i][j] = rij; } } for(i = 0; i < d; i++) { for(j = i+1; j < d; j++) { r[j][i] = (r[i][j]^(arr[i]*brr[j]))^(arr[j]*brr[i]); } } for(i = 0; i < d; i++) { c[i] = (arr[i]*brr[i]); for(j = 0; j < d; j++) { if(j != i) { c[i] = c[i] ^r[i][j]; } } }
}
這可能是正確的嗎?
“分裂成 $ d + 1 $ 在引言中提到了秘密共享方案並提到了門檻值屬性。因此,這個特定的 IACR 預印本並不是秘密共享的最佳來源。我建議從 Shamir 秘密共享算法開始。
為了擁有安全的與門,您應該計算編碼 $ c=\sum_{i,j} a_i b_j $ 如下:
$ c=a_i b_j \oplus z_{ij} $
那 $ z_{ij} $ 為了 $ i<j $ 是隨機的並且對於 $ i>j $ 是:
$ z_{ij}=(z_{ji} \oplus a_i b_j)\oplus a_j b_i $