日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DSA签名

發(fā)布時(shí)間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DSA签名 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

DSA簽名

  • 【實(shí)驗(yàn)?zāi)康摹?/li>
  • 【實(shí)驗(yàn)環(huán)境】
  • 【實(shí)驗(yàn)預(yù)備知識(shí)點(diǎn)】
  • 【實(shí)驗(yàn)內(nèi)容】
  • 【實(shí)驗(yàn)步驟】
  • 【實(shí)驗(yàn)思考題】

【實(shí)驗(yàn)?zāi)康摹?/h1>

1、了解DSS標(biāo)準(zhǔn);
2、了解DSA數(shù)字簽名的原理;
3、驗(yàn)證DSA的簽名及簽名驗(yàn)證過程。

【實(shí)驗(yàn)環(huán)境】

假定有用戶A需要將一段信息進(jìn)行DSA簽名后發(fā)送給B。先定義DSA算法的運(yùn)行參數(shù),生成DSA算法所需的公私鑰對,用戶A先對消息進(jìn)行簽名,然后消息與簽名均發(fā)送給用戶B,用戶B再利用A的公鑰加以驗(yàn)證。
完成本實(shí)驗(yàn)需要使用密碼學(xué)教學(xué)軟件,在D:\Release\bin目錄下打開Crypto軟件。

【實(shí)驗(yàn)預(yù)備知識(shí)點(diǎn)】

DSA(Digital Signature Algorithm)簽名算法是由美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST, National Institute of Standards and Technology)提出的一個(gè)關(guān)于數(shù)字簽名的美國聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS, Federal Information Processing Standard)。該標(biāo)準(zhǔn)在1991年8月提出,1993以FIPS 186被采用,作為數(shù)字簽名(DSS, Digital Signature Standard)的一部分。
公鑰、私鑰生成:
分為兩部分,首先約定算法的一些參數(shù),然后為各個(gè)用戶生成公私鑰。

算法參數(shù):
1、選定一個(gè)哈希函數(shù)H,最初為SHA-1,現(xiàn)在SHA-2也可以使用。函數(shù)輸出有可能需要截短到密鑰對的長度。
2、選定密鑰的長度L、N。密鑰長度決定了加密可靠度。最近的標(biāo)準(zhǔn)FIPS 186-3指定長度應(yīng)該為:(1024,160), (2048,224), (2048,256), and (3072,256)
3、選取N位長度的一個(gè)質(zhì)數(shù)q。N長度必須小于或等于哈希函數(shù)H輸出長度。
4、選取L位長度的一個(gè)質(zhì)數(shù)p,并滿足(p-1)%q=0。
5、選取一個(gè)整數(shù)g,g是滿足等式q^g%p=1的最小整數(shù)。g可以用公式g = h^((p–1)/q)%p得到,h為任意整數(shù),只要1 < h < p?1,h通常選為2,但如果g的結(jié)果為1時(shí),需要再選一個(gè)其它數(shù)。
(p, q, g)構(gòu)成公用的算法參數(shù)。
公、私鑰生成:
1、選取任意整數(shù)x, 0 < x < q
2、計(jì)算 y = g^x%p
3、公鑰為(p, q, g, y),私鑰為x
生成簽名:
1、生成隨機(jī)數(shù)k,0 < k < q
2、計(jì)算r = g^k%p%q,如果r=0,重新選取k
3、計(jì)算s=(H(m)-xr)(k^(-1))%q,H為哈希函數(shù),m為待簽名數(shù)據(jù),如果s=0,重新選取k
4、(r, s)構(gòu)成簽名

驗(yàn)證簽名:
1、驗(yàn)證:0<r<q,0<s<q
2、計(jì)算w = (s^(-1))%q
3、計(jì)算u1 = H(m)w%q
4、計(jì)算u2 = rw%q
5、計(jì)算v = (((gu1)*(yu2))%p)%q
6、如果v=r則簽名有效。
隨機(jī)數(shù)k的選取很重要,如果不夠隨機(jī),或者即使其中幾位為泄露,也足夠使DSA被攻破。

【實(shí)驗(yàn)內(nèi)容】

數(shù)字簽名標(biāo)準(zhǔn)(DSS)由NIST公布,該標(biāo)準(zhǔn)能夠使接收者能夠驗(yàn)證數(shù)據(jù)的完整性和數(shù)據(jù)發(fā)送者的身份而制定,所采用的算法稱為DSA算法,也稱為DSA簽名。

【實(shí)驗(yàn)步驟】

(1). 自選DSA算法的運(yùn)行參數(shù),確定公私鑰對;
(2). 輸入待簽名的明文信息m;
(3). 點(diǎn)擊簽名按鈕,觀察簽名信息r,s;
(4). 驗(yàn)證簽名過程中隨機(jī)數(shù)的作用;
(5). 點(diǎn)擊簽名驗(yàn)證按鈕,觀察簽名驗(yàn)證結(jié)果;
(6). 修改m’以及簽名r’,s’;
(7). 點(diǎn)擊簽名驗(yàn)證按鈕,驗(yàn)證簽名正確性。
操作說明
為便于手工驗(yàn)證DSA簽名,本演示程序的素?cái)?shù)p不超過1000的小素?cái)?shù),同時(shí)待簽名的明文也為不超過1000的十進(jìn)制整數(shù),直接對明文進(jìn)行簽名。
系統(tǒng)包含兩個(gè)按鈕:簽名和驗(yàn)證。分別完成對輸入信息的簽名和驗(yàn)證。

(1)進(jìn)入DSA演示程序
點(diǎn)擊教學(xué)軟件中的非對稱密碼算法的DSA 簽名,系統(tǒng)隨機(jī)選擇符合要求的素?cái)?shù)p,屏幕顯示類似下圖。

圖 1DSA簽名實(shí)驗(yàn)演示界面

(2) 選擇參數(shù)
分別點(diǎn)擊第二個(gè)(素?cái)?shù)q)和私鑰x下拉框。
完成DSA的基本參數(shù)的確定

圖 2完成DSA的基本參數(shù)的確定

(3)簽名
輸入十進(jìn)制整數(shù)形式的消息m后,按下簽名按鈕,生成簽名r和s。

圖 3生成簽名r和s
再次點(diǎn)擊簽名按鈕,可以發(fā)現(xiàn)隨著隨機(jī)數(shù)的變化,簽名值也發(fā)生變化。

圖 4簽名值隨著隨機(jī)數(shù)變化而變化
(4) 驗(yàn)證簽名
簽名正確性的驗(yàn)證取決于r’’是否與r’相等。點(diǎn)擊驗(yàn)證按鈕,顯示驗(yàn)證成功的信息。


圖 5驗(yàn)證簽名
(5)修改
修改m’后,點(diǎn)擊驗(yàn)證,出現(xiàn)驗(yàn)證失敗信息。

圖 6修改m’,驗(yàn)證失敗
修改r’后,點(diǎn)擊驗(yàn)證,出現(xiàn)驗(yàn)證失敗信息。

圖 7修改r’,驗(yàn)證失敗
修改s’后,點(diǎn)擊驗(yàn)證,出現(xiàn)驗(yàn)證失敗信息。
圖 8修改s’,驗(yàn)證失敗

【實(shí)驗(yàn)思考題】

1、 DSA簽名的數(shù)學(xué)背景是什么?
答:數(shù)字簽名算法(DSA)是使數(shù)字簽名依賴于數(shù)學(xué)概念的聯(lián)邦信息處理標(biāo)準(zhǔn)之一,或者可以說模冪運(yùn)算的公式和離散對數(shù)問題,用于在該算法中對數(shù)字進(jìn)行數(shù)字加密。數(shù)字簽名是根據(jù)數(shù)據(jù)和僅由簽名者或簽名者知道的秘密密鑰計(jì)算出的密碼值。
DSA(Digital Signature Algorithm,數(shù)字簽名算法,用作數(shù)字簽名標(biāo)準(zhǔn)的一部分)是公開密鑰算法,它不能用作加密,只用作數(shù)字簽名。DSA使用公開密鑰,為接受者驗(yàn)證數(shù)據(jù)的完整性和數(shù)據(jù)發(fā)送者的身份。它也可用于由第三方去確定簽名和所簽數(shù)據(jù)的真實(shí)性。DSA算法的安全性基于解離散對數(shù)的困難性,這類簽字標(biāo)準(zhǔn)具有較大的兼容性和適用性。

2、 DSA簽名為什么可使用Hash函數(shù)?
答:Hash 算法也是現(xiàn)代密碼體系中的一個(gè)重要組成部分。由于非對稱算法的運(yùn)算速度較慢,所以在數(shù)字簽名協(xié)議中,單向散列函數(shù)扮演了一個(gè)重要的角色。對 Hash 值,又稱"數(shù)字摘要"進(jìn)行數(shù)字簽名,在統(tǒng)計(jì)上可以認(rèn)為與對文件本身進(jìn)行DSA數(shù)字簽名是等效的。
DSA結(jié)合使用了非對稱加密技術(shù)與哈希算法來實(shí)現(xiàn),它包含兩種互補(bǔ)的運(yùn)算:一個(gè)用于數(shù)字簽名的簽署,另一個(gè)用于數(shù)字簽名的驗(yàn)證。簽名和驗(yàn)簽的過程一般由啟用 PKI 的應(yīng)用程序完成,首先由數(shù)據(jù)的發(fā)送方用哈希算法生成數(shù)據(jù)的哈希值,然后用自己的私鑰將這個(gè)哈希值加密形成數(shù)字簽名,將它與數(shù)據(jù)一起加密發(fā)送給接收方;接收方進(jìn)行解密獲得數(shù)據(jù)和數(shù)字簽名后,用發(fā)送方的公鑰對數(shù)字簽名進(jìn)行解密,如果成功解密,即證明了發(fā)送方的身份;對數(shù)字簽名解密得到數(shù)據(jù)的哈希值之后,數(shù)據(jù)的接收方對數(shù)據(jù)用相同的哈希算法生成另一個(gè)哈希值,然后將這兩個(gè)哈希值進(jìn)行比較,如果兩者相同,則證明這塊數(shù)據(jù)極有可能在傳輸期間沒有被篡改。因此,DSA簽名可使用Hash函數(shù)。

總結(jié)

以上是生活随笔為你收集整理的DSA签名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。