簽名介紹

羣簽名、環簽名、盲簽名、門限簽名、代理簽名和雙重簽名等

介紹

傳統簽名

  • RSA簽名:基於大整數難分解問題
  • ElGamal簽名:基於離散對數問題
  • Schnorr簽名:基於有限域上的離散對數問題
  • DSA:基於離散對數問題
  • ECDSA簽名:基於橢圓曲線上的離散對數問題

特殊簽名的大致理解:

  • 羣簽名:有一個類似管理員的角色,給所有人簽名(是有中心的)
  • 環簽名:不是所有人都簽名,只有部分人簽名,但具體不知道是誰,具有匿名性【是去中心化的】
  • 盲簽名:簽名者不知道簽名內容
  • 門限簽名:需要多個人的子密鑰一起完成簽名
  • 代理簽名:將密鑰授權給第三方,由第三方完成簽名
  • 雙重簽名:在簽名者和驗證者之間有一箇中間人,進行驗證授權

羣簽名

介紹

1991 年,Chaum 和 Heyst 給出了羣簽名的概念,基本思想是一羣人中的任意一個人可生成一羣簽名,外界可驗證其合法性,即此簽名的確爲羣中的某人生成,但不能確定到底是誰籤的【隱私保護】,當在發生爭議時,可由具有特權的羣管理員“打開”爭議的簽名,找出真正的簽名者【可追蹤】。

由於羣簽名具有隱私保護和可追蹤的特性,可廣泛應用電子商務、電子貨幣、可信計算、網絡取證、電子選舉等領域。

羣簽名方案構建分爲ROM模型標準模型

  • ROM模型:將hash函數看作是一個理想化的隨機Oracl(現實中不存在)構造簽名,安全性不充分;
  • 標準模型:是相對比於ROM模型,不將hash函數看作是一個理想化的隨機Oracl,更加接近現實,因此構建出的安全方案具有更高的安全性;

羣簽名應具有以下性質:

  • 正確性:合法簽名者生成的簽名可以被驗證通過;
  • 不可僞造性:只有羣成員才能進行簽名;
  • 匿名性:給定一個合法羣簽名,只有管理員才能識別出真正的簽名者;
  • 不可鏈接性:判斷兩個羣簽名是否由一個成員簽發的,在計算上是不可行的;
  • 防陷害性:管理員或任意成員都不代表該成員生成簽名;
  • 可追蹤性:管理員總能夠打開一個合法的羣簽名,並找出真正的簽名者
  • 抵抗合謀攻擊:任意一些羣成員合謀(包括管理員)也不能生成一個合法的羣簽名,使得管理員可以打開,但其他羣成員打不開的情況

方案

羣簽名方案的成員主要包括羣管理員和若干羣成員,一個完備的羣簽名方案由以下算法組成:

  • 系統建立:
    • 輸入安全參數,羣管理員生成一個羣公鑰GPK(用於羣簽名驗證)、一羣私鑰GSK(用於生成成員證書和打開簽名);
  • 成員加入:
    • 對於動態的羣簽名,新用戶與管理員之間交互,完成後新用戶加入羣並獲得成員證書和一個私鑰(用於羣簽名的生成),管理員獲得相關的追蹤信息,用於打開簽名,從而完成追蹤;
    • 對於靜態的羣簽名:管理員直接生成成員證書,並祕密傳送給新用戶,過程沒有交互,缺點是管理員可能會冒充成員進行簽名;
  • 簽名:羣中任意成員利用自己的成員證書和私鑰生成消息的羣簽名;
  • 驗證:任何人獲得GPK和一個(消息,簽名)對,可驗證此簽名是否合法,且對於合法的簽名,不知道具體的簽名者是誰;
  • 打開:對於合法的羣簽名,管理員能打開並找出實際的簽名者,管理員會給出證據,說明該簽名的確是某成員籤的,同時不會破壞此成員未來的簽名能力;
  • 撤銷【部分支持】:管理員可以撤銷某成員的簽名權利,之後此用戶就不能生成合法的羣簽名了;

原理

待補充

環簽名

最初由Rivest和Tauman提出,根據羣簽名而提出,與羣簽名的區別是:環簽名方案允許簽名者在一組成員中保持匿名、環簽名中不需要羣管理員,沒有羣成員預設機制,沒有更改和刪除羣機制。簽名者直接指定任意環,然後在不經過其他成員許可或協助的情況下進行簽名,如果要生成有效的環簽名,簽名者需要知道其私鑰和其他成員的公鑰。

盲簽名

1982年Chaum首次提出了盲簽名的概念,在盲簽名中,用戶可以獲得簽名者的簽名,而簽名人卻不知道所籤消息的內容。保證了簽名方案的匿名性和不可追蹤性,當(消息,簽名)被公開後,簽名者也無法獲知消息和簽名過程間的關係。1992年,Okamoyo提出了一種基於大數分解和離散對數的盲簽名方案,基於Schnorr和Guillon的協議,Pintcheval和Stern提出了一種可證明安全的盲簽名方案,2009年,Overbeck提出了首個基於編碼的盲簽名方案。

盲簽名可廣泛應用於各種匿名性場合,比如電子支付、電子投票等。

電子投票應用

下面介紹一個基於RSA盲簽名的電子選舉系統

  • 電子選舉

選舉委員會發布選舉人名單,投票人在選票上標記自己的意向候選人;爲使得選票有效,該選票需要經過選舉委員會的簽名確認,既要得到選舉委員會對選票的簽名,又不能泄漏選票內容,此時使用盲簽名可以完成該功能。

image-20230508230510845
  • 密鑰生成:\(N=pq\)\(PK=(e,N),SK=(d)\)

  • 投票人盲化數據

部分盲簽名

在盲簽名中籤名人完全不知道最終簽名的任何消息,將在電子現金系統中造成數據庫無限增長的問題,爲了解決該問題,1996年,Abe等提出了部分盲簽名的概念。

部分盲簽名允許簽名人在簽名中嵌入與用戶事先協商好的公共信息,且這些公共信息不能被移除或非法修改。在電子現金系統中,銀行可將有效期、面值等信息嵌到其發行的電子錢幣中,這樣銀行就能避免維持開銷無限增長的數據庫的困境。如果將公共信息設爲同樣值,則部分盲簽名就可以轉換爲完全盲簽名,因此部分盲簽名可以看作是盲簽名的一種形式。

方案

  • 建立

選擇階爲\(q\)的循環羣\(G_1\)\(G_2\),定義雙線性對\(e:G_1 * G_1\to G_2\);任意選擇羣\(G_1\)的生成元\(P\);定義兩個哈希函數\(H_1:\left \{0,1 \right\}^*\to G_1\)\(H_2:\left \{0,1 \right\}\to Z_q\),系統參數爲\(params=(G_1,G_2,e,q,P,H_1,H_2)\)

  • 密鑰生成

簽名人任意選擇\(x\in Z_q\),計算\(P_{pub}=xP\),其中籤名人的公鑰爲\(P_{pub}\),私鑰爲\(x\)

  • 簽名發佈

假設\(c\)爲實現協商好的公共信息,\(m\)是要簽名的消息,則簽名者和用戶的交互如下:

  1. 盲化:用戶隨機選擇\(r\in Z_q\),計算\(U=rH_1(m,c)\),並將\(U\)發送給簽名人;
  2. 簽名:簽名人計算\(V=(H_2(c)+x)^{-1}U\),並將\(V\)發送給用戶;
  3. 解盲:用戶計算\(S=r^{-1}V\),並輸出部分盲簽名\((S,m,c)\)
  • 驗籤

檢查等式\(e(H_2(c)P+P_{\operatorname{pub}},S)=e(P,H_1(m,c))\)是否成立,若成立,則接收該簽名,否則拒絕該簽名。

門限簽名

若一個羣體有\(n\)個人,那麼至少需要\(p\)個人簽名才視爲有效簽名。通常採用共享密鑰的方式來實現門限簽名,即將密鑰分割,例如分成\(m\)份,則其中必須有大於\(p\)份的子密鑰都被選則並且組合到一起,纔有可能重現密鑰。這種數字簽名在密鑰託管中廣泛應用。

代理簽名

密鑰所有者可以將簽名權利授予第三方,獲得簽名權利的第三方可以進行數字簽名,

雙重簽名

1983年,Itakura等提出多重簽名方案,該方案原理是多個簽名者對同一份文件進行簽名操作。

同態簽名

2001年,Rivest提出同態簽名,是指在沒有簽名私鑰的情況下,允許任何實體對已認證的數據進行同態運算操作生成新數據,並得到新數據的有效簽名。同態簽名根據同態運算函數分類,可以分爲線性同態簽名、多項式函數同態簽名和全同態簽名。

參考

  1. 數字簽名技術綜述-楊雪菲
  2. 羣簽名綜述-程小剛
  3. 部分盲簽名綜述-李明祥
  4. 同態簽名研究綜述-吳華麟
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章