# How to Securely Collaborate on Data: Decentralized Threshold HE and Secure Key Update - Notes ###### tags: `Meeting Paper` `NTU` :::info Kim, E., Jeong, J., Yoon, H., Kim, Y., Cho, J., & Cheon, J. H. (2020). How to securely collaborate on data: Decentralized threshold he and secure key update. IEEE Access, 8, 191319-191329. ::: [TOC] ## Background ### [Threshold Homomorphic Encryption - 閾值同態加密在隱私計算中的應用](https://www.cnblogs.com/pam-sh/p/16446840.html) :::spoiler > 1. 單密鑰同態加密 只有一個私鑰,且不同公鑰加密的密文無法相互計算。 > 2. 閾值同態加密(多密鑰加密) 支持多個私鑰,不同公鑰加密的密文可以互相計算。 > #### 問題 > 1. 多方聯合計算最安全的途徑是各自生成、保存公私鑰,但由於算法限制,不同公鑰加密的信息無法進行相互計算,導致隱私計算無法進行 > 2. 假設多方使用一套公私鑰,雖然計算可以順利進行,但系統安全性會大大下降,系統中只要有一方被成功攻擊,私鑰就會泄露。 > 3. 假設多方使用一套公私鑰,則無法決定由哪個參與方生成公私鑰 > #### Solution - Threshold Homomorphic Encryption > 由於單密鑰同態加密在實際應用中存在諸多關於密鑰使用、管理的問題,閾值同態加密(多密鑰同態加密)應運而生。簡單來說,閾值同態加密算法中存在多個私鑰、一個(或多個公鑰,使用該公鑰系統加密的密文之間可以相互計算,並且只有當參與解密的私鑰數量達到一定閾值時,才能成功解密密文,所以這種多密鑰同態加密算法又被稱為閾值同態加密 > #### Definition > 閾值同態加密算法同樣可以概括為以下4個函數。(,,) > * $(pk, sk, ek) \leftarrow Keygen(Params)$: 密鑰生成函數,其中$pk$是公鑰、$sk$是私鑰、$ek$是用於計算的密鑰 > * $c \leftarrow Enc(pk, m)$: 加密函數,使用公鑰$pk$加密明文$m$信息得到密文$c$ > * $m \leftarrow Dec(c, sk_1, sk_2,\cdot \cdot \cdot ,sk_k)$: 解密函數,最少$k$個私鑰參與,才能解密得到明文 > * $c \leftarrow Eval((c_1,pk_1,ek_1), (c_2, pk_2, ek_2), \cdot \cdot \cdot , (c_N, pk_N, ek_N))$: 密文計算函數,在多個密文上進行計算、獲得最終結果,計算過程需要密鑰$ek$參與 ::: ### [Learning with Errors (LWE)](https://zhuanlan.zhihu.com/p/621070457) ### [多密鑰同態加密](https://blog.csdn.net/weixin_43476788/article/details/105388612) :::spoiler > 多密鑰同態加密的概念,以及基於NTRU密碼系統的具體實現,最早由L’opez-Alt等人描述。該方案的一個缺點是,在密鑰生成時必須知道參與方數量的上限,因為參數隨著參與方數量的增加而增加。(類似的實現在LWE下是可能的,但它只支持固定數量的參與方) ::: ### [Norm](https://ch-hsieh.blogspot.com/2010/04/norm.html) / [Infinity Norm](https://juejin.cn/post/7022248588767920142) :::spoiler > Norm:一般翻譯成範數 (在英語中 norm 有規範的意思,比如我們說normalization就是把某種東西/物品/事件 做 正規化,也就是加上規範使其正常化),不過個人認為其實翻譯成 範數 也是看不懂的...這邊建議把 Norm 想成長度就好 (事實上norm是長度的抽象推廣), > >也許讀者會認為好端端的長度不用,為何又要發明一個 norm 來自討苦吃?? 既抽象又艱澀。 > >事實上想法是這樣的: >比如說現在想要比較兩個數字 $3 , 5$ 之間的大小,則我們可以馬上知道 $3<5$;同樣的,如果再考慮小數與無理數如 $1.8753$ 與 $π$,我們仍然可以比較大小 $1.8753<π=3.1415...$ 故可以發現我們有辦法對 "純量" 做明確的比大小,WHY? 因為前述例子中 $3, 5, 1.8753$ or $π$ 其各自的大小有辦法被 "measure "! > >但是如果是現在考慮的是一組數字 我們如何去measure 其大小呢?? 比如說 > $$x:=[1, -2, 0.1, 0 ]^T$$ > 上式的大小該是多少? 是 $1? −2? 0.1???$ >再者如果更過分一點,我們考慮一個矩陣 > $$A = \left[ {\begin{array}{*{20}{c}} 1&2\\ 3&4 \end{array}} \right]$$ 也正是如此,可以發現我們確實需要新的 "長度" 的定義來幫助我們如何去 measure 矩陣/向量/甚至是函數的大小。 > >故此,我們首先定義甚麼是Norm,(也就是把 "長度" or "大小" 的本質抽離出來) --- >L-infinity norm給出了一個向量的每個元素中最大的那個元素幅值。 例如,對於向量 $X= [-6, 4, 2]$,其 L-infinity norm就是$6$。 在L-infinity norm中,只有最大的元素有才具有影響。因此,例如,如果你的向量代表建造一座建築物的成本,通過最小化L-infinity norm,我們就可以做到減小建築物最昂貴的那部分成本。 ::: ## In This Paper ### Threshold HE VS. Multi-Key HE 兩者的差別依照原文的解釋是整合之前產生共同的公鑰的就是Threshold HE,而在整合之後產生公鑰的就是Multi-Key HE ### Proactive Secrete Sharing :::spoiler > 主動式秘密共享方案是指對移動敵手安全的秘密共享方案,這些敵手可以在一段時間內監視秘密共享者,但對一個時間單位內可訪問的共享者數量有限制。為了保護共享的秘密不被對手發現,應定期更新共享的秘密,使共享的秘密保持不變,以前的共享不再有用 ::: ### [What is Homomorphic encryption evaluation key](https://crypto.stackexchange.com/questions/73176/what-is-homomorphic-encryption-evaluation-key) :::spoiler > ### In short > >Public key is used to encrypt, private key is used to decrypt, and evaluation key is used to perform homomorphic operations (usually, homomorphic product or, the somehow equivalent operation, a logic AND gate). >### In detail > >Public and private keys in homomorphic encryption (HE) schemes are just the same as in other types of schemes. > >The evaluation key ($evk$) is also public, it is typically generated using the private key, and it is used to control the noise growth or the ciphertext expansion during homomorphic evaluation. > >Some schemes have a "Key-switching" key instead of the evaluation key, but they are more or less the same. For instance, in the description of FV and YASHE, you can see that to perform a homomorphic product, one first multiplies the ciphertexts, $\tilde{c}_{mult} := c_1 \otimes c_2$, then uses this "extra public key" to adjust $\tilde{c}_{mult}$, that is, to get a ciphertext cmult > >with the correct dimension and that can be decrypted using the original secret key. > >So, in general, this is how you use $evk$: you perform a homomorphic operation that introduces a lot of noise or that generates a ciphertext in higher dimension, then you perform an extra operation using $evk$ to "correct" that ciphertext. :::