數(shù)字簽名主要用于對(duì)數(shù)字消息進(jìn)行簽名宝与,以防消息的偽造或篡改。盲簽名用來在保證投票者匿名的情況下冶匹,生成簽名习劫。
RSA算法
- 投票者
使用RSA算法生成公私鑰對(duì)(
),并將公鑰
公布嚼隘。
- 選取兩個(gè)不同的大素?cái)?shù)p和q榜聂,計(jì)算它們的乘積n=pq。令
须肆,代表對(duì)于n匿乃,比n小但與n互為素?cái)?shù)的正整數(shù)的個(gè)數(shù)(由歐拉函數(shù))
- 隨機(jī)選取一個(gè)整數(shù)e,
幢炸,計(jì)算滿足
的d。
- 以(e,n)為公鑰
拒贱,(d,n)為私鑰
宛徊。
- 選取兩個(gè)不同的大素?cái)?shù)p和q榜聂,計(jì)算它們的乘積n=pq。令
- 投票者
使用私鑰d和hash函數(shù)h對(duì)選票m簽名生成m`,并公布(m,m`,e,h)逻澳。
- 使用一個(gè)安全的hash函數(shù)h來生成消息摘要h(m)
- 加密信息m闸天,
- 其他節(jié)點(diǎn)對(duì)其選票進(jìn)行檢驗(yàn),檢驗(yàn)通過斜做,則接收苞氮。
- 解密,如果
瓤逼,則驗(yàn)證通過笼吟。
- 解密,如果
RSA盲簽名
系統(tǒng)生成秘鑰對(duì)(e,n)和(d,n),(e,n)為公鑰霸旗,(d,n)為私鑰贷帮,公布公鑰(d,n),并選擇一個(gè)安全hash函數(shù)h(sha-256)诱告。
-
投票者選擇盲化因子r(選擇要求)措伐,盲化選票m(此時(shí)選票上應(yīng)有候選人的編號(hào)和時(shí)間戳)
投票者把盲化選票m' 和投票者唯一身份標(biāo)識(shí)發(fā)送給系統(tǒng)
-
系統(tǒng)確認(rèn)投票者身份揖曾,對(duì)盲化選票m`簽名些己,代表授權(quán)證明诵肛,再把選票發(fā)回給投票者(盲化因子r的存在使得該選票即使被其他人截獲,也無法使用)
-
投票者去盲箱蟆,獲得已簽名授權(quán)的選票
投票將選票(m沟绪,s')廣播到網(wǎng)絡(luò)上
其他人只要驗(yàn)證
是否為真即可
ECC算法(elliptic curve cryptography)
-
系統(tǒng)初始化
首先選擇一個(gè)橢圓曲線,接著構(gòu)造橢圓群
空猜,選擇
上一點(diǎn)G绽慈,G的階是滿足安全要求的素?cái)?shù)p,pG=0辈毯。選擇1到n-1之間的隨機(jī)數(shù)
作為用戶的私鑰坝疼,計(jì)算
作為用戶的公鑰
-
簽名生成
用戶對(duì)明文m進(jìn)行簽名,選擇1到n-1之間的隨機(jī)數(shù)k谆沃,
唁影,計(jì)算簽名值(r,s)耕陷。如果r=0或s=0掂名,則另選隨機(jī)數(shù)k,重新執(zhí)行上面的過程哟沫。
-
簽名驗(yàn)證
接收方在收到消息m和簽名值(r,s)后饺蔑,先計(jì)算h(m),
嗜诀。然后驗(yàn)證等式
猾警。如果為真,接收簽名隆敢,否則发皿,簽名無效
基于ECC的盲簽名
為了保護(hù)投票者的隱私,使用盲簽名來使得其他任何人無法通過選票上的簽名追蹤到投票者拂蝎,且該選票可被證明是合法的穴墅。
-
初始化
構(gòu)造橢圓群
系統(tǒng)選擇
上一點(diǎn)G,G的階是滿足安全要求的素?cái)?shù)p匣屡,pG=O(O為無窮遠(yuǎn)點(diǎn))封救。選擇1到n-1之間的隨機(jī)數(shù)
作為系統(tǒng)的私鑰拇涤,計(jì)算
作為系統(tǒng)的公鑰
系統(tǒng)選擇1到n-1之間的隨機(jī)數(shù)k捣作,計(jì)算
,公開
和公鑰P和一個(gè)個(gè)安全hash函數(shù)h(sha-256)
-
投票者
隨機(jī)在
上選擇點(diǎn)$G`(x_i,y_i)鹅士,并計(jì)算
投票者發(fā)送盲化消息m'和其唯一身份標(biāo)識(shí)給系統(tǒng)
-
系統(tǒng)確認(rèn)投票者身份券躁,對(duì)盲化選票m'進(jìn)行簽名,代表授權(quán)證明掉盅,再把選票發(fā)回給投票者(盲化因子的存在使得該選票即使被其他人截獲也拜,也無法使用)
-
投票者去盲化,獲得簽名授權(quán)(R,S)
投票者將選票(m,R,S,r)廣播到網(wǎng)絡(luò)上
其他人只要驗(yàn)證
是否為真即可