【正文】
找到一個(gè)能產(chǎn)生合法簽名的算法,從而可以對(duì)任何消息產(chǎn)生合法的簽名;② 選擇性偽造,即攻擊者可以實(shí)現(xiàn)對(duì)某一些特定的消息構(gòu)造出合法的簽名;③ 存在性偽造,即攻擊者能夠至少偽造出一個(gè)消息的簽名,但對(duì)該消息幾乎沒(méi)有控制力。比較典型的數(shù)字簽名方案有 RSA算法 (R. L. Rivest, A. Shamir, and L. M. Adleman, 1978)、 ElGamal 簽名 (T. ElGamal, 1985)、Schnorr簽名 (C. P. Schnorr, 1989)和 DSS簽名 (NIST, 1991)。 第 10章 數(shù)字簽名與消息認(rèn)證 1.? ElGamal簽名方案 假設(shè) p是一個(gè)大素?cái)?shù), g是 GF(p)的生成元。 簽名算法: Alice首先選一個(gè)與 p1互素的隨機(jī)數(shù) k Alice計(jì)算 a = gk mod p Alice對(duì) b解方程 M = x*a + k*b (mod p1). Alice對(duì)消息 M的簽名為 (a, b) 驗(yàn)證算法: 檢查 yaab mod p = gM mod p是否成立 例如: 第 10章 數(shù)字簽名與消息認(rèn)證 p = 11, g = 2, Bob 選 x = 8為私鑰 y = 28 mod 11 = 3 公鑰 : y = 3, g = 2, p = 11 Bob要對(duì) M = 5進(jìn)行簽名 選 k = 9 (gcd(9, 10) = 1) a = 29 mod 11 = 6, b=3 讀者可檢查 yaab mod p = gM mod p是否成立。 第 10章 數(shù)字簽名與消息認(rèn)證 目前對(duì)離散對(duì)數(shù)最有效的攻擊方法是指數(shù)演算攻擊,其計(jì)算量為 在 1996年的歐洲密碼學(xué)會(huì) (Proceedings of EUROCRYPT 96)上, David Pointcheval和 Jacques Stern給出一個(gè) ElGamal簽名的變體 ,并基于所謂分叉技術(shù)證明了在隨機(jī)預(yù)言模型下所給方案是安全的 (在自適應(yīng)選擇消息攻擊下能抗擊存在性偽造 )。 假設(shè) p和 q是大素?cái)?shù),是 q能被 p1整除, q是大于等于 160 bit的整數(shù), p是大于等于 512 bit的整數(shù),保證GF(p)中求解離散對(duì)數(shù)困難; g是 GF(p)中元素,且 gq?1 mod p; Alice公鑰為 y ? gx (mod p), 私鑰為 x, 1xq。在Schnorr簽名中, r=gk mod p可以預(yù)先計(jì)算, k與 M無(wú)關(guān),因而簽名只需一次 mod q乘法及減法。 第 10章 數(shù)字簽名與消息認(rèn)證 特殊簽名算法 目前國(guó)內(nèi)外研究重點(diǎn)已經(jīng)從普通簽名轉(zhuǎn)向具有特定功能、能滿(mǎn)足特定要求的數(shù)字簽名。盲簽名是指簽名人不知道簽名內(nèi)容的一種簽名,可用于電子現(xiàn)金系統(tǒng),實(shí)現(xiàn)不可追蹤性。 Alice想讓 Bob對(duì)消息 M盲簽名 (1) ?Alice 在 1和 N之間選擇隨機(jī)數(shù) k通過(guò)下述辦法對(duì)M盲化: t = Mke mod N。 (3) ?Alice用下述辦法對(duì) td脫盲: s = td/k mod N = Md mod N, s即為消息 M的簽名。 Hash函數(shù) h = H(m)也稱(chēng)為散列函數(shù),它將任意長(zhǎng)度的報(bào)文 m映射為固定長(zhǎng)度的輸出 h(摘要 ),另外該函數(shù)除滿(mǎn)足單向性外,還應(yīng)具備下列兩項(xiàng)條件之一: 第 10章 數(shù)字簽名與消息認(rèn)證 (1) 抗弱碰撞性。 (2) 抗強(qiáng)碰撞性。 顯然,滿(mǎn)足 (2)的 Hash函數(shù)的安全性要求更高,這是抗擊生日攻擊的要求。 第 10章 數(shù)字簽名與消息認(rèn)證 H a s h F u n c t i o n s文 件 或 消 息 中 有 一 位 改 變 , 應(yīng) 該 引 起 摘 要 值 5 0 % 的 位 的 改 變 。如圖 103所示。最后一個(gè)分組中還包括整個(gè)函數(shù)輸入的長(zhǎng)度值,這樣一來(lái),將使得敵手的攻擊更為困難,即敵手若想成功地產(chǎn)生假冒消息,就必須保證假冒消息的雜湊值與原消息的雜湊值相同,而且假冒消息的長(zhǎng)度也要與原消息的長(zhǎng)度相等。 f的輸出又作為下一輪的輸入。通常有 bn,因此稱(chēng)函數(shù) f為壓縮函數(shù)。 第 10章 數(shù)字簽名與消息認(rèn)證 Hash函數(shù)的安全性 對(duì) Hash函數(shù)的攻擊就是想辦法找出碰撞,相關(guān)攻擊方法主要有生日攻擊、中途相遇攻擊、修正分組攻擊和差分分析攻擊等。開(kāi)發(fā)人員應(yīng)該使用更為安全的 SHA2(SHA25 SHA512)算法,研究人員目前已經(jīng)開(kāi)始討論