数字签名简记
目錄
概念:
原理:
補充:?
分類:
數字簽名算法:
RSA數字簽名:?
ElGamal數字簽名方案:
補充:
概念:
? ?1976年Diffie和Hellman提出電子簽名的概念,目的是通過簽名者對電子文件進行電子簽名,使簽名者無法否認自己的簽名,同時別人也不能偽造或復制簽名,從而實現與手寫簽名相同的功能,具有與手寫簽名相同的法律效力。數字簽名就相當于社會中的身份證,用戶在進行電子商務活動時可以通過數字證書來證明自己的身份。數字證書當中包含了用戶的基本信息及公鑰信息。利用數字證書上的相關信息,可對數字證書的真偽進行驗證。
目前數字簽名技術的研究主要集中在基于公鑰密碼體制的數字簽名。
原理:
數字簽名一般都要求有可信任的第三方,在發生糾紛的時候作為仲裁者,所以,在研究中多以非對稱密碼體制為基礎提出數字簽名方案。下面以RSA算法為例。
假如用戶Bob的參數選取簡單寫為n=pq,其中p和q是大素數。{e,n}為公鑰,{d,n}為私鑰,一個用戶的公鑰會在較長時間內保持不變,所以我們可以說,在一定時間內,{e,n}表示了私秘秘鑰{d,n}的持有者的身份。
私鑰簽名,公鑰驗證;人人皆可驗證簽名(簽名者的公鑰人人皆知?
?一個簽名方案至少滿足以下三個條件:
1簽名者事后不能否認自己的簽名。
2接受者能驗證簽名,而任何其他人都不能偽造簽名。
3當雙方關于簽名的真偽發生爭執,一個第三方能解決雙方之間的爭執。
補充:?
消息認證碼(MAC)并不能很好地解決“不可否認”的問題
MAC中用的是對稱密碼體制的思想,發送方和接收方共享一個密鑰。
發送方事后可能會否認自己生成的MAC,并且把他賴在接受方身上。
接受方也確實有可能生成新MAC的能力,對于糾紛,第三方很難解決。
分類:
1基于大數難解題的數字簽名,(RSA數字簽名方案
2基于離散對數的數字簽名,(ElGamal數字簽名方案
3基于橢圓曲線離散對數的數字簽名?
數字簽名算法:
一個數字簽名包含兩個算法,即簽名算法和驗證算法。在簽名階段,簽名者用自己的私鑰對消息進行簽名。在驗證階段,驗證者則通過簽名者對應的公開鑰進行驗證。
RSA數字簽名:?
以{e,n}為公鑰,{d,n}為私鑰。
簽名過程:假設簽名者Bob,則只有Bob知道私鑰{d,n}。
設需要簽名消息為m,則簽名者Bob通過s = m^e mod N
(m,s)為對消息m的簽名。Bob在公共媒體上宣布他發布了消息,同時把m的簽名s置于消息后用于公眾驗證簽名。
驗證過程:私鑰簽名,公鑰驗證
? 公眾在看到消息m和其簽名s后,利用Bob的公開驗證密鑰{e,n}對消息進行驗證。公眾計算
m = s^d mod?是否成立,若成立,則Bob的簽名有效。公眾認為消息m的確是Bob所發布,且消息內容沒有被篡改。
改進:
假設公開的安全hash函數 H()
1)簽名過程
設需要簽名的消息m,簽名者Bob通過如下計算完成簽名
S=H(m)^d mod n
(m,s)為對消息m的簽名。
驗證過程:
在收到消息后,驗證 H(m)=s^e mod n是否成立。成立則簽名有效。
通過哈希函數,有效防止了對簽名的偽造,增強了簽名算法的安全性。
ElGamal數字簽名方案:
私鑰生成簽名,但簽名算法和ElGamal相差較大
?ElGamal加密
{g,y,p}是公鑰? {g,x,p}是私鑰
過程:
r=g^k(mod p)
s=k^-1(m-rx)(mod p-1)(k^-1 表示 k mod p-1 的逆元)
(m, r, s)為對消息 m 的數字簽名。
對方收到對消息 m 的數字簽名(m, r, s)后,利用簽名者的公開密鑰(y, g, p)對簽名進行以下驗證:
(y^r)(r^s) mod p=g^m(mod p)(左式計算時可以使用快速冪取模)
如果上式成立,則接受該簽名,否則拒絕該簽名。
補充:
?數字簽名實現了對消息的完整性認證,同時消息發送方不能抵賴自己的簽名。
在進行數字簽名時,往往需要對消息計算其消息摘要。一般來說,計算消息的消息摘要值有兩個作用,一個是增強了算法的安全性,比如前面我們在RSA簽名算法中所看到的,二是代簽名的消息往往比較長一般會超過其消息摘要值,計算其消息摘要值有利于減少簽名的計算量。ElGamal最好也結合hash函數使用.
我國數字簽名標準:非對稱算法SM2和摘要算法SM3
SM2數字簽名標準
圖解SM2簽名流程
總結
- 上一篇: 认知理论与技术(hash函数,SHA,M
- 下一篇: 密钥管理概述