DSA数字签名算法
DSA數(shù)字簽名算法
美國國家標(biāo)準(zhǔn)與技術(shù)研究所(NIST)發(fā)布的聯(lián)邦信息處理標(biāo)準(zhǔn)FIPS? 186,稱為數(shù)字簽名算法(DSA)。DSA最初提出于1991年,1993年根據(jù)公眾對其安全性的反饋意見進(jìn)行了一些修改,1996年又稍作修改。2000年發(fā)布了該標(biāo)準(zhǔn)的擴(kuò)充版,及FIPS 186-2,隨后在2009年更新為FIPS 186-3,在2013年更新為FIPS? 186-4。這個(gè)最新版本還包括基于RSA和橢圓曲線密碼的數(shù)字簽名算法。
下圖是用DSA產(chǎn)生數(shù)字簽名和用RSA產(chǎn)生數(shù)字簽名的這兩種方法的對比
?
分析:
- 在RSA方法中,Hash函數(shù)的輸入值時(shí)要簽名的消息,輸出值是定長Hash碼,用發(fā)送方的私鑰PR將該hash碼加密形成簽名,然后發(fā)送其消息和簽名。接收方收到消息后,計(jì)算hash碼。接收方用發(fā)送方的公鑰PU對簽名進(jìn)行解密,如果計(jì)算出的Hash碼與解密出的結(jié)果相同,則認(rèn)為簽名是有效的。因?yàn)橹挥邪l(fā)送方擁有私鑰,所以只有發(fā)送方能產(chǎn)生有效的簽名
- 在DSA方法中,也使用了hash函數(shù),它產(chǎn)生的hash碼和為此次簽名產(chǎn)生的隨機(jī)數(shù)k作為簽名函數(shù)的輸入,簽名函數(shù)依賴于發(fā)送方的私鑰PR和一組參數(shù)PU,這些參數(shù)為一組通信伙伴所有,我們可以認(rèn)為這些參數(shù)構(gòu)成全局參數(shù)PU。簽名由兩部分組成,標(biāo)記為s和r。接收方對于接收到的消息產(chǎn)生hash碼,這個(gè)hash碼和簽名一起作為驗(yàn)證函數(shù)的輸入,驗(yàn)證函數(shù)依賴于全局公鑰和發(fā)送方公鑰,該發(fā)送方公鑰同發(fā)送方私鑰組成密鑰對。若認(rèn)證函數(shù)的輸出等于簽名中的r成分,則簽名有效。簽名函數(shù)保證只有擁有私鑰的發(fā)送方才能產(chǎn)生有效的簽名。
- 對比:RSA與DSA安全性能差不多,但是DSA有兩個(gè)素?cái)?shù)公開,因此,當(dāng)使用別人的p和q時(shí),即使不知道公鑰,仍能確定它們是否隨機(jī)產(chǎn)生還是做了手腳,但是RSA則不行。
?
數(shù)字簽名算法
下圖歸納總結(jié)了DSA算法,其中有三個(gè)公開參數(shù)為一組用戶所共有。選擇一個(gè)N位的素?cái)?shù)q;然后選擇一個(gè)長度在512-1024間且滿足q能整除(p-1)的素?cái)?shù)p;最后選擇形為的g,其中h是1到p-1間的整數(shù),使得g>1.
DSA的公開參數(shù)的選擇與Schnorr簽名方案完全一樣
? ? ? 選定這些參數(shù)后,每個(gè)用戶選擇私鑰并產(chǎn)生公鑰。私鑰x的選擇必須是隨機(jī)或偽隨機(jī)選擇的、位于1到q-1之間的數(shù)。由計(jì)算出公鑰。由給定的x計(jì)算y比較簡單,而由給定的y確定x則在計(jì)算上是不可行的,因?yàn)檫@是求y的以g為低的模p的離散對數(shù)
? ? ? 要進(jìn)行簽名,用戶需計(jì)算兩個(gè)量r和s。r和s是公鑰(p,q,g)、用戶私鑰x、消息的hash 碼H(M)和附加整數(shù)k的函數(shù),其中k是隨機(jī)或偽隨機(jī)產(chǎn)生的,且k對每次簽名是唯一的。
? ? ? 令為接收方收到的M,r,s,接收方用圖上公式進(jìn)行驗(yàn)證。接收方計(jì)算值v,它是公鑰(p,q,g)、發(fā)送方公鑰、接收到的消息的hash碼的函數(shù)。若v與簽名中的r相同,則簽名是有效的
下圖描述了DSA算法的簽名和驗(yàn)證函數(shù)
?
上圖所示的算法有這樣一個(gè)特點(diǎn):接收端的驗(yàn)證依賴于r,但是r卻根本不依賴于消息,它是k和全局公鑰的函數(shù)。k模p的乘法逆元傳給函數(shù)f1,f1的輸入還包含消息的hash碼和用戶私鑰,函數(shù)的這種結(jié)構(gòu)使接收方可利用其收到的消息和簽名、他的公鑰以及全局公鑰來恢復(fù)r
?
?
?
?
?
?
?
?
?
總結(jié)
- 上一篇: GPS 定位管理车辆系统
- 下一篇: 计算机视觉领域 CCF重要期刊/国际会议