Secret-Sharing

電子投票系統

  • September 13, 2019

這學期我要學習密碼學課程。我將有一個關於“投票方案”主題的演講。

我正在通過閱讀 N.Smart 的“密碼學:簡介”一書為自己做準備,我遇到了一些我面臨一些困難的點。

我正在閱讀的部分是這樣的:

投票系統將假設我們有 $ m $ 選民,並且有 $ n $ 進行統計的中心。使用多個計票中心是為了讓選民匿名,並阻止少數幾個中心串通一氣來解決投票問題。我們將假設選民只能選擇兩名候選人之一。

  • 系統設置

每一個 $ n $ 理貨中心具有公鑰加密功能 $ E_i $ . 我們假設一個有限阿貝爾群 $ G $ 是固定的,素數的 $ q $ , 和兩個元素 $ g, h \in G $ 被選中的任何一方(包括理貨中心)都不知道離散對數

$$ \begin{equation}h=g^x.\end{equation} $$每個選民都有一個公鑰簽名算法。

  • 投票表決

每一個 $ m $ 選民投票 $ v_j $ 從集合 $ {-1, 1} $ . 選民選擇一個隨機的致盲值 $ a_j \in \mathbb{Z}/q\mathbb{Z} $ 並公佈他們的投票

$$ \begin{equation}B_j=B_{a_j}(v_j),\end{equation} $$使用比特承諾方案。此投票對所有參與方公開,包括計票中心和其他選民。隨著投票 $ B_j $ 投票者還發布了協議的非互動式版本,以表明投票是從集合中選擇的 $ {-1, 1} $ . 然後使用選民的簽名算法對投票及其證明進行數字簽名。

  • 投票分配

我們現在需要在計票中心周圍分配投票,以便可以計算最終計票。每個選民都使用以下 Shamir 的秘密共享方案,以共享 $ a_j $ 和 $ v_j $ 在計票中心周圍:每個選民選擇兩個隨機多項式模 $ q $ 學位 $ t<n $ .

$$ \begin{equation}R_j(X)=v_j+r_{1,j}X+\dots +r_{t,j}X^t\end{equation} $$ $$ \begin{equation}S_j(X)=a_j+s_{1,j}X+\dots +s_{t,j}X^t\end{equation} $$選民計算$$ \begin{equation}(u_{i,j}, w_{i,j})=(R_j(i), S_j(i)) \text{ for } 1 \leq i \leq n.\end{equation} $$選民加密貨幣對 $ (u_{i,j}, w_{i,j}) $ 使用 $ i $ 統計中心的加密算法 $ E_i $ . 這個加密份額被發送到相關的計數中心。然後投票者公佈其對多項式的承諾 $ R_j(X) $ 通過公開發布$$ \begin{equation}B_{l, j}=B_{s_{l, j}}(r_{l,j}) \text{ for } 1 \leq l \leq t,\end{equation} $$再次使用承諾方案。

  • 一致性檢查

每個中心 $ i $ 需要檢查的值

$$ \begin{equation}(u_{i,j}, w_{i,j})\end{equation} $$它從選民那裡收到 $ j $ 符合選民的承諾。這是通過驗證以下等式來完成的 $$ \begin{equation} \begin{split} B_j \prod_{l=1}^t {B_{l,j}}^{i^l}&=B_{a_j}(v_j)\prod_{l=1}^t B_{s_{l,j}}(r_{l,j})^{i_l}\&=h^{v_j}g^{a_j}=\prod_{l=1}^t(h^{r_{l,j}}g^{s_{l,j}})^{i_l}\&=h^{(v_j+\sum_{l=1}^t r_{l,j}i^l)}g^{(a_j+\sum_{l=1}^t s_{l,j}i^l)}\&=h^{u_{i,j}}g^{w_{i,j}} \end{split} \end{equation} $$

  • 計數

每一個 $ n $ 計票中心現在計算並公開發布其投票份額的總和

$$ \begin{equation} T_i=\sum_{j=1}^mu_{i,j}\end{equation} $$加上它公佈了致盲因素的份額總和$$ \begin{equation}A_i=\sum_{j=1}^mw_{i,j}.\end{equation} $$ 其他各方、其他中心和選民都可以通過驗證$$ \begin{equation}\begin{split}\prod_{j=1}^m \left ( B_j \prod_{l=1}^t {B_{l,j}}^{j^l} \right )&=\prod_{j=1}^m h^{u_{i,j}}g^{w_{i,j}}\&=h^{T_i}g^{A_i}.\end{split}\end{equation} $$ 任何一方都可以通過取 $ t $ 的價值觀 $ T_i $ 並對它們進行插值以顯示最終計數,這是因為 $ T_i $ 是評價 $ i $ 的多項式,它分攤選票的總和。要看到這一點,我們有$$ \begin{equation}\begin{split}T_i&=\sum_{j=1}^mu_{i,j}\&=\sum_{j=1}^mR_j(i)\&=\left ( \sum_{j=1}^m v_j \right ) +\left ( \sum_{j=1}^m r_{1,j} \right )i+\dots +\left ( \sum_{j=1}^m r_{t,j} \right )i^t.\end{split}\end{equation} $$如果最終結果是否定的,那麼大多數人投票 $ -1 $ , 而如果最終結果是肯定的,那麼大多數人投票 $ +1 $ .

我有以下問題:

  1. 在系統設置中,為什麼每個選民都有公鑰簽名算法而不是私人簽名算法?
  2. 投票的目的是什麼?在這一步,投票者是否選擇投票並發布 $ B_j $ 作為承諾,也是投票確實是從集合中選擇的證明 $ {-1, 1} $ ? 選民發表這些是什麼意思?
  3. 在“投票者加密貨幣對”的部分投票分配處 $ (u_{i,j}, w_{i,j}) $ 使用第 i 個計數中心的加密算法 $ E_i $ 。“ 哪一個 $ i $ 每個選民都接受嗎?選民是隨機選擇的嗎?
  4. 你能在投票分佈部分向我解釋一下“選民然後公佈它對多項式的承諾嗎? $ R_j(X) $ 通過公開發布

$$ \begin{equation}B_{l, j}=B_{s_{l, j}}(r_{l,j}) \text{ for } 1 \leq l \leq t,\end{equation} $$再次使用承諾方案。” ? 5. 您能否在一致性檢查部分向我解釋為什麼,為了檢查這些值是否與選民做出的承諾一致,我們是否必須驗證以下等式?

$$ \begin{equation} \begin{split} B_j \prod_{l=1}^t {B_{l,j}}^{i^l}&=B_{a_j}(v_j)\prod_{l=1}^t B_{s_{l,j}}(r_{l,j})^{i_l}\&=h^{v_j}g^{a_j}=\prod_{l=1}^t(h^{r_{l,j}}g^{s_{l,j}})^{i_l}\&=h^{(v_j+\sum_{l=1}^t r_{l,j}i^l)}g^{(a_j+\sum_{l=1}^t s_{l,j}i^l)}\&=h^{u_{i,j}}g^{w_{i,j}} \end{split} \end{equation} $$ 6. 在 Tally Counting 部分,您能否向我解釋一下為什麼我們要檢查它是否已正確完成,我們必須驗證以下等式?

$$ \begin{equation}\begin{split}\prod_{j=1}^m \left ( B_j \prod_{l=1}^t {B_{l,j}}^{j^l} \right )&=\prod_{j=1}^m h^{u_{i,j}}g^{w_{i,j}}\&=h^{T_i}g^{A_i}.\end{split}\end{equation} $$

全面披露:2007 年,我成立了一個旨在提高投票透明度的協會。我感到自豪的是,我的努力可能起到了一些作用,無論它多麼微不足道,因為使用電子投票機進行政治選舉的法國城市數量自那時以來一直在下降。

他的作者免費提供了定義問題協議的書。協議在這裡。它打算作為最先進的電子投票協議,只是作為本書中其他技術的應用。它大量使用了本書前面定義的 Pedersen 比特承諾方案(安全性是系統設置中要求沒有人必須了解離散對數的起源) $ x $ 的 $ h $ 基地 $ g $ 在有限阿貝爾群中 $ G $ ).

包括網路和可信硬體問題的方案的實際實現的描述超出了本書的範圍,因此沒有給出,因此不能批評。沒有明確嘗試解決阻止選民證明他/她如何投票的要求(通過洩露所謂的秘密 $ a_j $ ),也許是因為她/他得到了獎勵或威脅這樣做;這是良好投票系統的一個目標,當投票在物理公共投票站進行時,大多數實際投票系統(電子或非電子投票系統)在很大程度上實現了這一目標。而且,最重要的是,人類選民應該如何對系統充滿信心,儘管它依賴於大多數人尚未研究過的數學,並且設計和製造細節實際上是秘密的物理系統,也沒有得到解決。

試圖回答一些問題:

  1. 投票者根據公鑰簽名方案(如 RSA、ElGamal、Schnorr..)進行簽名,從而使用私鑰她或他的公鑰/私鑰對的組成部分。公鑰簽名方案允許驗證一段數據的來源和完整性(這裡是投票),而不需要任何可以偽造簽名的知識。[注意:與使用對稱算法(如 CMAC、HMAC)的其他旨在確保消息來源和完整性的方案相比,這是一個主要優勢,後者要求籤名者和驗證者共享一個密鑰,擔心驗證者可以使用該密鑰秘密製作其他驗證者無法檢測到的偽造(一種已知的工作解決方法是將驗證者使用的對稱密鑰嵌入僅可用於驗證的設備中;但隨後必須信任這些設備,因此實踐他們的製造者;提議的計劃確實要這樣做)]。

注意以下評論:“每個選民都有一個公鑰簽名算法”這句話意味著每個選民都有一個公鑰/私鑰對,並允許不同的選民使用不同的方案。驗證過程(方法和公鑰)必須是公開的,所以這些簽名方案的聯合可以認為是一個簽名方案;與FIPS 186-4中的各種 RSA/DSA/ECDSA 簽名方案和參數化非常相似,可以將其視為 FIPS 186-4 簽名方案。 2. 投票(在任何投票協議中)的目的是:

  • 允許選民做出選擇(這裡是 $ v_j\in{-1,1}; $ ) 以允許系統計算它們的方式(這裡總和的符號將是選舉的結果)。
  • 防止選民改變主意或以其他方式破壞系統;在這裡,這是通過發布投票承諾的簽名來完成的,以便任何感興趣的人以後都可以知道該選民已經投票,以及該選民的承諾是什麼(該承諾是公開可驗證的,但 $ v_j $ 對沒有任何資訊的人保密 $ a_j $ )。發布方式不得有歧義,尤其應防止多次投遞(可能與 $ v_j $ )。物理公共投票站的實施可以使用噴墨列印機在選民登記冊上寫下選民姓名和出生日期的二維碼。範例協議沒有說明如何使用線上手段來完成,但使用nntp的老式Usenet 組可能是某種近似值(至少發布系統面臨的威脅與 nntp 面臨的威脅有相似之處)。
  1. 在這個範例係統中,選民進行了規定的計算 $ (u_{i,j}, w_{i,j}) $ 並發送 $ \operatorname{Enc}i(u{i,j},w_{i,j}) $ 到投票中心 $ i $ 每個投票中心。
  2. 投票者承諾多項式 $ R(X) $ 通過發布(使用投票中的發布方式)承諾 $ B_{l,j} $ 對每個係數 $ R_j $ 該多項式的,除了低階係數 $ v_j $ (選民已經通過發布承諾來承諾 $ B_j $ 投票期間)。

引用自:https://crypto.stackexchange.com/questions/26291