信息安全管理——消息摘要与数字签名
生活随笔
收集整理的這篇文章主要介紹了
信息安全管理——消息摘要与数字签名
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.實(shí)驗?zāi)康?/h2>
(1)了解哈希/散列/雜湊函數(shù)的特點(diǎn);
(2)掌握常見HASH函數(shù)基本原理;
(3)理解數(shù)字簽名的基本原理。
2.實(shí)驗內(nèi)容
(1)文件/文本哈希值計算;
(2)HMAC驗證;
(2)數(shù)字簽名的驗證;
(5)軟件和工具:
順便學(xué)習(xí)一下:
彩虹表:http://www.zhihu.com/question/19790488
淺談HASH算法與CSDN密碼泄漏事件:http://www.cnbeta.com/articles/166531.htm
CSDN數(shù)據(jù)庫被爆 統(tǒng)計CSDN用戶都喜歡哪些密碼 http://www.cnbeta.com/articles/166527.htm http://www.cnbeta.com/articles/166529.htm
盲簽名
將用戶記為A,將簽名者記為B,B的公鑰記為e,私鑰記為d,以及一個公開的模數(shù)n,用戶A希望B進(jìn)行盲簽名。
(1)盲化:用戶A選取盲因子k,然后計算:
[t=mke (mod n)]
(2)簽名算法:簽名者B對t進(jìn)行簽名:
[td=(mke)d (mod n)]
(3)去盲處理:用戶A對B的簽名進(jìn)行去盲處理:
[s=td/k (mod n)=md (mod n)]
盲簽名因為具有盲性這一特征,因而在電子商務(wù)和電子選舉等領(lǐng)域有著廣泛的使用, 在電子推舉中,選民提交的選票也有必要蓋上選委會的戳記(即數(shù)字簽名)才合法,為了維護(hù)選民的匿名性也要用到盲簽名技能
群簽名
1、我們假設(shè)A、B、C三個設(shè)備屬于一個群,還有一個類似CA認(rèn)證機(jī)構(gòu)的服務(wù)器W
2、服務(wù)器W還有自己的私鑰和公鑰證書
3、A設(shè)備生成自己的私鑰和公鑰,并將自己公鑰發(fā)給服務(wù)器W,服務(wù)器W接收到A的公鑰,然后使用自己的私鑰對A的公鑰進(jìn)行簽名,并將簽名信息返回給A設(shè)備。此時,A設(shè)備就得到了服務(wù)器W對A公鑰的簽名信息
4、B、C設(shè)備重復(fù)步驟3的操作
5、A、B、C三個設(shè)備都向服務(wù)器W獲取W的公鑰證書
6、假設(shè)A要向B發(fā)送消息,則A使用自己的私鑰對要發(fā)送的消息進(jìn)行簽名,然后將此簽名信息、W服務(wù)器對A公鑰的簽名信息和A設(shè)備的公鑰一起發(fā)給B,此時B使用W服務(wù)器公鑰證書對B發(fā)過來的公鑰進(jìn)行驗簽,驗證通過后再使用A的公鑰對發(fā)送的消息進(jìn)行驗簽,驗簽通過則交互完成。
7、后續(xù)A向C、B向A,B向C,C向A,C向B發(fā)送消息搜使用同樣的方式進(jìn)行發(fā)送,在驗簽的過程中都使用W服務(wù)器的公鑰證書進(jìn)行驗簽,而且A、B、C三個設(shè)備簽名的時候都使用的是自己的私鑰進(jìn)行簽名,這樣就實(shí)現(xiàn)了群簽名的功能
可以利用群盲簽名來構(gòu)造有多個銀行參與與發(fā)行電子貨幣的、匿名的、不可跟蹤的電子現(xiàn)金系統(tǒng)。在這樣的方案中有許多銀行參與這個電子現(xiàn)金系統(tǒng),每一個銀行都可以安全的發(fā)行電子貨幣。這些銀行形成一個群體受中央銀行的控制,中央銀行擔(dān)當(dāng)了群管理員的角色。
環(huán)簽名
該 hash 函數(shù)的一個參考實(shí)現(xiàn)為:將 m 和 A 的字節(jié)數(shù)據(jù)拼接,然后用傳統(tǒng)的 hash 函數(shù)(如keccak256),得到的值再對 N 取模(這里的 N 是橢圓曲線上有限群的階)。
接下來 ,簽名方想對一消息 m 進(jìn)行簽名,但是又不想在公開簽名的同時,讓別人知道自己的確切身份,因此 簽名方 決定用環(huán)簽名的方式將自己藏到一群人中。于是 簽名方 找來 n-1 個其他人的公鑰(這些公鑰最好之前在系統(tǒng)中已經(jīng)出現(xiàn)過和使用過,不然 簽名方 藏在一堆新人中,還是會很容易的被識別出來),并編好序號,并將自己的公鑰隨機(jī)地插入其中,共同組合了一個包含 n 個公鑰的集合。不妨假設(shè)這 n 個公鑰為
pk0, pk1, pk2, …, pki-1, pki, pki+1, …, pkn-1
其中 pki 為簽名方的公鑰。
然后,簽名方隨機(jī)生成 n-1 個隨機(jī)數(shù) s0, s1, …, si-1, si+1, …, sn-1, 分別與除 pki 以外的 n-1 個公鑰一一對應(yīng)。
注意:這一步無需隨機(jī)生成 si,因為 si 會在后面通過計算得到。
接著,簽名方隨機(jī)生成 k, 并計算 k·g, 這里我們先假設(shè)
k·g = si·g+ci·pki (等式①)
這里 等式① 的用途暫時可能不太好理解,但可先不用管。但根據(jù) 等式① 我們可以確定的是,如果擁有 pki 的私鑰 ski,且如果已知 ci 和 k,那就可以反向求出 si。
注意:這里的 ci 是根據(jù)上一個公鑰 pki-1 和消息 m 計算出的 hash 值
接下來引入第2個式子,
cx = Hash(m, sx-1·g+cx-1·pkx-1) (等式②)
等式② 是一個遞推式,且 Hash 函數(shù)的第二個參數(shù)形式上跟 等式① 的右側(cè)是一樣的。這個遞推式的意思是:已知第 x-1 個公鑰對應(yīng)的 sx-1 和 hash 值 cx-1,求下一個公鑰對應(yīng)的 hash 值 cx。注意,當(dāng) x=0 時,x 的上一個其實(shí)是 n-1,因為下標(biāo)也要對 n 取模。
由于在 等式① 中我們定義了 k·g = si·g+ci·pki 所以 ci+1 可直接由計算得到
ci+1 = Hash(m, si·g+ci·pki) = Hash(m, k·g)
注意:此時求 ci+1 過程中我們暫時并不知道 si 和 ci,但后面計算得到 ci 后,可以由 k, ci+1 和 ci 求出 si。
緊接著,依次計算 ci+2, … , cn-1, c0, …, ci-1, ci:
場景1:(匿名投票)
機(jī)構(gòu)內(nèi)成員(C端用戶)對投票信息進(jìn)行環(huán)簽名,并通過可信機(jī)構(gòu)(如agency)將簽名信息和投票結(jié)果寫到鏈上,其他人可在鏈上驗證簽名時,僅可獲取發(fā)布投票到鏈上的機(jī)構(gòu),卻無法獲取投票者身份信息
場景2:(如匿名存證、征信)
與群簽名匿名存證、征信場景類似,唯一的區(qū)別是任何人都無法追蹤簽名者身份
場景3:匿名交易
在UTXO模型下,可將環(huán)簽名算法應(yīng)用于匿名交易,任何人都無法追蹤轉(zhuǎn)賬交易雙方;
(2)簡單字符計算md5值,并嘗試在線查詢破解
對字符“123”計算md5值
查詢結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的信息安全管理——消息摘要与数字签名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。