【正文】
?pj,他能求出: 4 6 7m o d1 3 221 7 999?? 117 151 m od 466 41? ? ? ? ? 99 41 m od 46 6 33 1x ? ? ? 那么( 1 17 , 41 )是消息 331 的有效簽名,這可從下面的式子得到驗(yàn)證: 117 41132 117 303 ( m od 467 )?; 3312 303 ( m od 467 )?。它屬于已知消息攻擊的存在性偽造。設(shè) h , i和j是整數(shù),2,0 ??? pjih,且1)1,g c d ( ??? pjh ??。因此,),( ??是 x ? 的有效簽名。因此,在使用安全 H as h 函數(shù)的情況下,這兩種方法似乎對 El Gamal 簽名方案的安全性不構(gòu)成威脅。 1 、 首先,在計(jì)算簽名時(shí)所使用的隨機(jī)值不能泄露。一旦a被泄露,那么系統(tǒng)就完全被破壞了, Os car能隨意地偽造簽名了。 這將使 O scar 計(jì)算a變得容易,因而攻破系統(tǒng) (見下頁) 。令 k?? ?,對未知的k我們獲得如下的等式:)( m o d)(2121pkxx ???????。設(shè))1,g c d (21??? pd ??。定義dxxx)(21??? ,d)(21?????? ,dpp1??? , 那 么 等 式 變 為 :)( m o d pkx ???? ?。對于 d 個(gè)候選的 k 值,可通過等式)( m o d pk?? ?檢測出其中唯一正確的那一個(gè)。 ? 數(shù)字簽名算法 DSA ? DSA 是在 E l Gamal 和 Sc hn orr 兩個(gè)簽名方案的基礎(chǔ)上設(shè)計(jì)的,其安全性基于求離散對數(shù)的困難性。 q : p 1 的素因子,滿足 1 5 9 1 6 022 q??,即 q 長為 160 比特。 ○ 2 用戶秘密鑰 x x 是滿足 0 x q 的隨機(jī)數(shù)或偽隨機(jī)數(shù)。 ○ 4 用戶為待簽消息選取的秘密數(shù) k k 是滿足 0 k q 的隨機(jī)數(shù)或偽隨機(jī)數(shù)。 ○ 6 驗(yàn)證過程 設(shè)接收方收到的消息為 M ? ,簽名為),( sr ??。(1??,qwMHu m o d])([1??, qwru m o d2??,qpygvuum o d]m o d)[(21?。這是因?yàn)槿?,(),( srMsrM ????, 則 rqpgqpgqpggvksxrMHx r wwMH??????m od)m od(m od]m od[m od]m od)[(1))(()( ? 由于離散對數(shù)的困難性,敵手從 r 恢復(fù) k 或從 s 恢復(fù)x 都是不可行的。 ? 事實(shí)上,用戶可以預(yù)先計(jì)算出很多 r 和 1?k 以備以后的簽名使用,從而可大大加快產(chǎn)生簽名的速度。 ? 消息及其簽 名 被一起發(fā)給收方,收方得到消息后再產(chǎn)生出消息的雜湊值,且使用發(fā)方的公開鑰對收到的簽名解密。 ? DSS 簽字也利用雜湊函數(shù)產(chǎn)生消息的一個(gè)雜湊值,雜湊值連同隨機(jī)數(shù) k 一起作為簽名函數(shù)的輸入,簽名函數(shù)還需使用發(fā)方的秘密鑰ASK和供所有用戶使用的一族參數(shù),稱這一族參數(shù)為全局公開鑰GPK。接收方收到消息后再產(chǎn)生出消息的雜湊值,將雜湊值與收到的簽名一起輸入驗(yàn)證函數(shù),驗(yàn)證函數(shù)還需輸入全局公開鑰GPK和發(fā)方的公開鑰APK。 ElGamal 與 DSA 簽名長度 的比較: ? ElGamal 簽名長度 20 48 bits ? DSA 簽名長度 32 0 bit s ? 基于離散對數(shù)問題的一般數(shù)字簽名體制 ElGamal 、 DSA 等簽字體制都可歸結(jié)為離散對數(shù)簽字體制的特例。 ○ 2 簽 名 的產(chǎn)生過程 對于待簽名的消息 m , A 執(zhí)行以下步驟: ? 計(jì)算 m 的雜湊值)( mH; ? 選擇隨機(jī)數(shù) k :qk ??1,計(jì)算)( m o d pgrk?; ? 從簽名方程)( m o d qcxbak ??中解出 s 。以),( sr作為產(chǎn)生的數(shù)字簽名。 ? 其它 簽名方案 ? 一次簽名 : 一個(gè)簽名方案僅對一則消息簽名時(shí)是安全的、 但 可以對簽名進(jìn)行任意次驗(yàn)證 (一套密鑰只能用一次,第二次簽名時(shí)需要產(chǎn)生新的密鑰)。例如軟件公司發(fā)布軟件時(shí)可以對每一份拷貝進(jìn)行簽名,用來保證不包含病毒。 ? 群簽名 : 只有某團(tuán)體內(nèi)的成員能夠?qū)ο⒑灻?;簽名的接收者能夠證實(shí)消息是該團(tuán)體的有效簽名;簽名的接收者不能決定是該團(tuán)體內(nèi)哪一個(gè)成員的簽名;當(dāng)出現(xiàn)爭議時(shí),簽名能夠被“打開”,以揭示簽名者的身份。 ? 多重簽名 : 多個(gè)人對同一文件進(jìn)行簽名。 ? 代理 簽名 : 當(dāng)需要簽名的人不方便簽名時(shí)(比如生病或者到一些不方便上網(wǎng)的地方出差),他可以讓秘書代簽,但前提是他不能把自己的私鑰給秘書。 ? 盲 簽名 : 簽名者看不到自己所簽文件的內(nèi)容,或者只看到所簽的一部分信息。 ygp , 公開, x 保密。