數(shù)字簽名技術(shù)概覽

 二維碼
發(fā)表時(shí)間:2020-07-24 10:00作者:Cismag來(lái)源:信息安全與通信保密雜志社

摘 要

本文對(duì)數(shù)字簽名技術(shù)進(jìn)行概覽綜述,以便讀者對(duì)該技術(shù)有一個(gè)比較全面的了解。文章首先介紹數(shù)字簽名技術(shù)的基本原理,然后回顧數(shù)字簽名技術(shù)四十年發(fā)展的歷程以及期間發(fā)生的一些具有標(biāo)志性的事件。另外針對(duì)特殊功能需求,學(xué)術(shù)界提出了許多具有附加屬性的數(shù)字簽名技術(shù),本文對(duì)這類(lèi)技術(shù)進(jìn)行一個(gè)梳理和概覽。文章最后對(duì)一些重要的數(shù)字簽名技術(shù)標(biāo)準(zhǔn)進(jìn)行匯總。


關(guān)鍵詞:數(shù)字簽名技術(shù);數(shù)字簽名算法標(biāo)準(zhǔn);帶屬性的數(shù)字簽名;公鑰密碼


內(nèi)容目錄:

1 數(shù)字簽名原理

2 數(shù)字簽名技術(shù)發(fā)展歷程

3 具備附加屬性的數(shù)字簽名技術(shù)

4 數(shù)字簽名算法標(biāo)準(zhǔn)

5 結(jié) 語(yǔ)


01 數(shù)字簽名原理

人類(lèi)在很長(zhǎng)時(shí)間都是以手寫(xiě)簽名、印章或指模等來(lái)確認(rèn)作品、文件等的真實(shí)性,包括認(rèn)定作品的創(chuàng)作者、文件簽署者的身份,推定作品的真?zhèn)位蛘呶募?nèi)容的真實(shí)性。數(shù)字簽名技術(shù)用于在數(shù)字社會(huì)中實(shí)現(xiàn)類(lèi)似于手寫(xiě)簽名或者印章的功能,即實(shí)現(xiàn)對(duì)數(shù)字文檔進(jìn)行簽名。數(shù)字簽名技術(shù)實(shí)際上能夠提供比手寫(xiě)簽名或印章更多的安全保障。一個(gè)有效的數(shù)字簽名能夠確保簽名確實(shí)由認(rèn)定的簽名人完成,即簽名人身份的真實(shí)性(authentication);被簽名的數(shù)字內(nèi)容在簽名后沒(méi)有發(fā)生任何的改變,即被簽名數(shù)據(jù)(也稱(chēng)簽名消息或簡(jiǎn)稱(chēng)消息)的完整性(integrity);接收人一旦獲得簽名人的(包括被簽名數(shù)據(jù)的) 有效簽名后,簽名人無(wú)法否認(rèn)其簽名行為,即不可抵賴(lài)性(non-repudiation)。

本文中的數(shù)字簽名技術(shù)特指采用非對(duì)稱(chēng)密碼機(jī)制來(lái)實(shí)現(xiàn)的簽名技術(shù)。一個(gè)簽名人具有一對(duì)密鑰,包括一個(gè)公鑰和一個(gè)私鑰。簽名人公開(kāi)其公鑰,簽名驗(yàn)證人(簡(jiǎn)稱(chēng)驗(yàn)簽人)需要在驗(yàn)證簽名前獲取簽名人的真實(shí)公鑰。如果驗(yàn)簽人需驗(yàn)證多個(gè)簽名人的簽名,則必須預(yù)先知道每個(gè)簽名人和其公鑰的對(duì)應(yīng)關(guān)系。在滿(mǎn)足以上前提的情況下,簽名人就可以使用其私鑰對(duì)任意消息進(jìn)行簽名操作,生成簽名值;任意知道公鑰的驗(yàn)簽人都可以通過(guò)驗(yàn)簽操作驗(yàn)證對(duì)消息的簽名值相對(duì)于某公鑰是否有效。若待簽名消息過(guò)大時(shí),可以先采用雜湊算法生成消息的摘要(類(lèi)似于數(shù)據(jù)的指紋)后再對(duì)摘要進(jìn)行數(shù)字簽名。

為了實(shí)現(xiàn)真實(shí)性、完整性和不可抵賴(lài)性功能,數(shù)字簽名機(jī)制需要滿(mǎn)足一定的安全需求。簡(jiǎn)單地講,安全的數(shù)字簽名機(jī)制要求:1)在沒(méi)有私鑰的情況下,生成某個(gè)消息的有效簽名在計(jì)算上是不可行的;2)根據(jù)公鑰和消息/ 簽名對(duì), 計(jì)算出簽名私鑰是不可行的。更加嚴(yán)格的數(shù)字簽名機(jī)制安全定義是在選擇消息攻擊下具有不可偽造性(Existential Unforgeability under Adaptive Chosen Message Attack: EUF-CMA),即攻擊者可任意選擇多項(xiàng)式個(gè)消息請(qǐng)簽名人生成并獲得對(duì)應(yīng)的簽名,仍然無(wú)法生成一個(gè)新消息的合法簽名。更高安全性的定義是選擇消息攻擊強(qiáng)不可偽造性(Strong Existential Unforgeability under Adaptive Chosen Message Attack: SUF-CMA),即攻擊者可任意選擇多項(xiàng)式個(gè)消息請(qǐng)簽名人生成并獲得對(duì)應(yīng)的簽名,仍然無(wú)法生成一個(gè)新消息的合法簽名或者一個(gè)已簽名消息的新合法簽名。


02 數(shù)字簽名技術(shù)發(fā)展歷程

從 Whitfield Diffie 和 Martin Hellman 在 1976 年發(fā)表歷史性的論文《密碼學(xué)的新方向》提出數(shù)字簽名的概念到今天,數(shù)字簽名技術(shù)經(jīng)過(guò)了四十多年的發(fā)展。這四十多年中,數(shù)字簽名技術(shù)在理論研究上經(jīng)歷了從一個(gè)可能的數(shù)學(xué)概念,發(fā)展到基于計(jì)算復(fù)雜性問(wèn)題的具體實(shí)現(xiàn)、到扎實(shí)的安全模型定義、到安全性可證明的高效構(gòu)造、再到滿(mǎn)足各類(lèi)差異化需求的特性簽名技術(shù)。數(shù)字簽名技術(shù)在應(yīng)用上從小規(guī)模的商業(yè)和個(gè)人數(shù)據(jù)保護(hù)開(kāi)始,伴隨著互聯(lián)網(wǎng)和電子商務(wù)的發(fā)展,到今天已經(jīng)發(fā)展成為數(shù)字社會(huì)的安全基石之一。

作為一個(gè)相對(duì)全面的概覽,下面列出數(shù)字簽名技術(shù)發(fā)展過(guò)程中的一些重要學(xué)術(shù)工作和重大事件。這個(gè)列表無(wú)意列出過(guò)去四十年所有重要的工作和事件。未出現(xiàn)在列表中的學(xué)術(shù)工作或相關(guān)事件并不表示其重要性比列出的低。

(1)1976 年 Whitfield Diffie 和 Martin Hellman 在《密碼學(xué)的新方向》一文中提出數(shù)字簽名的概念。

(2)1978 年 Ronald Rivest, Adi Shamir和Len Adleman發(fā)表RSA數(shù)字簽名算法。

(3)1978 年 Michael O. Rabin 發(fā)表一次數(shù)字簽名(one-time digital signature)算法Rabin。

(4)1979 年 Ralph Merkle 發(fā) 表 Merkle 數(shù)字簽名算法。該算法也是一種一次數(shù)字簽名算法,但和 Rabin 算法有重要區(qū)別。該算法成為一類(lèi)基于雜湊的數(shù)字簽名(hash-based digital signature)算法(例如 XMSS)的基礎(chǔ)。這類(lèi)算法在后量子計(jì)算時(shí)代可能依然安全。算法中的Merkle 樹(shù)具有眾多應(yīng)用,如區(qū)塊鏈?zhǔn)褂?Merkle 樹(shù)存儲(chǔ)交易記錄。

(5)1984 年 Taher Elgamal 發(fā)表基于離散對(duì)數(shù)問(wèn)題的 Elgamal 數(shù)字簽名算法。

(6)1984 年 Adi Shamir 提出基于身份的密碼技術(shù)(Identity-Based Cryptography: IBC)并給出第一個(gè)基于身份的數(shù)字簽名算法(Identity- Based Signature: IBS)?;谏矸莸拿艽a也稱(chēng)基于標(biāo)識(shí)的密碼。

(7)1984 年 Shafi Goldwasser, Silvio Micali 和 Ronald Rivest 給出了數(shù)字簽名機(jī)制安全模型的嚴(yán)格定義(選擇消息攻擊下不可偽造模型:EUF-CMA)。這個(gè)模型后來(lái)被廣泛接受,用于分析各種數(shù)字簽名算法的安全性。

(8)1986 年 Amos Fiat和 Adi Shamir發(fā)表Fiat-Shamir變換。該變換可將一大類(lèi)身份認(rèn)證方案轉(zhuǎn)化為數(shù)字簽名算法。

(9)1989 年 Claus Schnorr 發(fā)表Schnorr 數(shù)字簽名算法。該算法的安全性可以基于離散對(duì)數(shù)問(wèn)題在隨機(jī)諭示模型下獲得證明。2011 年發(fā)表的 EdDSA 數(shù)字簽名算法也是以 Schnorr 算法為基礎(chǔ)。

(10)1989 年 Lotus Notes 1.0發(fā)布采用RSA算法的數(shù)字簽名功能。這是第一款大規(guī)模應(yīng)用的商業(yè)軟件支持?jǐn)?shù)字簽名技術(shù)。

(11)1991年NIST發(fā)布數(shù)字簽名算法DSA。該算法是Elgamal數(shù)字簽名算法的變形, 在1994年作為 FIPS 186 中的數(shù)字簽名標(biāo)準(zhǔn)DSS發(fā)布。DSA和橢圓曲線(xiàn)上的ECDSA算法的安全性分析一直是個(gè)挑戰(zhàn)。2000年Daniel R. L. Brown在一般群模型下分析了ECDSA算法的安全性。

(12)1991年P(guān)hil R Zimmermann 發(fā) 布 PGP 1.0,支持RSA數(shù)字簽名算法。

(13)1991年Marc Girault 提出自認(rèn)證密鑰的概念并設(shè)計(jì)一個(gè)基于自認(rèn)證密鑰的身份認(rèn)證協(xié)議。1998 年 Guillaume Poupard 和 Jacques Stern 利用 Fiat-Shamir 變換將該身份認(rèn)證協(xié)議轉(zhuǎn)換為 GPS 數(shù)字簽名算法并證明了其安全性。

(14)1993 年 RSA 發(fā)布包括 RSA 數(shù)字簽名算法的 PKCS #1 版本 1.5,通過(guò)規(guī)定消息編碼方式改進(jìn) RSA 數(shù)字簽名算法的安全性。

(15)1995 年 Netscape 發(fā)布支持?jǐn)?shù)字簽名算法的 SSL 2.0,支持 RSA 和 DSS 簽名算法。

(16)1996 年 Mihir Bellare 和 Phillip Rogaway 提出安全性可證明的 RSA-PSS 簽名算法。

(17)1996 年 David Pointcheval 和 Jacques Stern 提出分叉引理(forking lemma)?;诜植嬉砜煞治鲆淮箢?lèi)數(shù)字簽名算法的安全性, 包括 Schnorr簽名算法。

(18)1996 年 Paul C. Kocher 發(fā)表側(cè)信道攻擊技術(shù),展示采用時(shí)間攻擊技術(shù)攻擊 RSA、DSS 等算法的不安全實(shí)現(xiàn)以獲取私鑰 [24]。該工作開(kāi)啟了密碼側(cè)信道攻防技術(shù)的研究領(lǐng)域。

(19)1999 年 Rosario Gennaro, Shai Halevi 和 Tal Rabin與Ronald Cramer和Victor Shoup 分別構(gòu)造了不依賴(lài)隨機(jī)諭示模型的 RSA 簽名算法。

(20)2001 年 Dan Boneh, Ben Lynn 和Hovav Shacham 發(fā)表采用雙線(xiàn)性對(duì)構(gòu)造的短簽名算法 BLS。

(21)2002 年 Jae Choon Cha 與 Jung Hee Cheon 以及 Florian Hess 分別發(fā)表采用雙線(xiàn)性對(duì)構(gòu)造的基于標(biāo)識(shí)的數(shù)字簽名算法 Cha-Cheon- IBS和 Hess-IBS。

(22)2003 年 Sattam S. Al-Riyami 和Kenneth G. Paterson 提出無(wú)證書(shū)密碼的概念,并設(shè)計(jì)無(wú)證書(shū)的數(shù)字簽名算法。雖然 Al- Riyami-Paterson 無(wú)證書(shū)簽名算法后來(lái)被證明不安全,但該工作開(kāi)啟了相關(guān)領(lǐng)域的研究工作。例如,2018 年 Zhaohui Cheng 和 Liqun Chen 統(tǒng)一了基于 Girault 的自認(rèn)證密鑰的數(shù)字簽名機(jī)制和Al-Riyami-Paterson 無(wú)證書(shū)數(shù)字簽名機(jī)制的安全模型,并設(shè)計(jì)安全、高效的無(wú)證書(shū)簽名算法。

(23)2008 年 Craig Gentry, Chris Peikert 和Vinod Vaikuntanathan 基于等工作發(fā)表了第一個(gè)安全性可證明的基于格的數(shù)字簽名算法GPV。后續(xù)更多格基數(shù)字簽名算法被提出,如BLISS、Dilithium等。

(24)2017 年 NIST 開(kāi)始后量子公鑰算法標(biāo)準(zhǔn)化工作,全球征集相關(guān)算法,包括數(shù)字簽名算法。


03 具備附加屬性的數(shù)字簽名技術(shù)

伴隨著通用數(shù)字簽名技術(shù)的發(fā)展,針對(duì)一些特殊需求,特別是電子現(xiàn)金、電子選舉等領(lǐng)域的應(yīng)用以及隱私保護(hù)與簽名公平性需求的增強(qiáng),眾多具有附加屬性的數(shù)字簽名技術(shù)的概念和算法構(gòu)造被提出。下面列出一些典型的具有附加屬性的數(shù)字簽名技術(shù)。本文無(wú)意列出所有特性數(shù)字簽名技術(shù),讀者可以參考更多的綜述資料如 [38,39]。

(1)盲簽名 (blind signature):1982 年David Chaum 提出盲簽名的概念。盲簽名機(jī)制允許簽名人對(duì)盲化過(guò)的消息(簽名人在不知道消息內(nèi)容的情況下)生成消息簽名。簽名的有效性可以在消息去盲化后被公開(kāi)驗(yàn)證。盲簽名機(jī)制可用于電子選舉、電子現(xiàn)金等應(yīng)用。

(2)多簽名(multi-signature):1983 年 K. Itakura 和 K. Nakamura 提出多簽名的概念。多簽名機(jī)制允許多個(gè)簽名人對(duì)消息進(jìn)行簽名且生成的簽名比各個(gè)簽名人獨(dú)立簽名生成的簽名值集合更簡(jiǎn)短。多簽名機(jī)制可用于區(qū)塊鏈等對(duì)多方簽名有需求且對(duì)簽名長(zhǎng)度敏感的應(yīng)用。和多簽名機(jī)制緊密相關(guān)的簽名壓縮機(jī)制還有聚合簽名(aggregate signature)。聚合簽名可以將多個(gè)簽名壓縮為一個(gè)簽名。聚合簽名進(jìn)一步可分為通用聚合簽名如 [42] 和順序聚合簽名如 [43] 等。順序聚合簽名中簽名和聚合操作根據(jù)已經(jīng)簽名的消息集、已經(jīng)聚合的簽名以及待簽名新消息,利用私鑰進(jìn)行簽名并完成聚合操作。

(3)門(mén)限簽名(threshold signature):1987 年 Yvo Desmedt 提出門(mén)限簽名的概念。門(mén)限簽名機(jī)制允許n個(gè)簽名人中的任意 k 個(gè)簽名人對(duì)消息生成簽名,但少于 k 個(gè)簽名人參與則無(wú)法生成有效簽名。門(mén)限簽名機(jī)制可以構(gòu)建強(qiáng)健的簽名系統(tǒng),防止部分簽名人的不法行為。

(4)不可否認(rèn)簽名(undeniable signature):1989 年 David Chaum 和 Hans van Antwerpen 提 出不可否認(rèn)簽名的概念。不可否認(rèn)簽名機(jī)制允許簽名人生成一個(gè)簽名并且確保沒(méi)有簽名人的允許(不參與驗(yàn)證過(guò)程),驗(yàn)證人無(wú)法驗(yàn)證簽名的有效性;同時(shí)不可否認(rèn)機(jī)制能夠防止簽名人(以不可忽略的概率)否認(rèn)某個(gè)真實(shí)簽名。不可否認(rèn)簽名機(jī)制可以防止簽名數(shù)據(jù)被濫用。

(5)失敗-中止簽名(fail-stop signature):1991 年 Birgit Pfitzmann 提出失敗-中止簽名的概念。失敗-中止簽名機(jī)制除了滿(mǎn)足普通簽名機(jī)制的安全要求外,額外要求:1)如果偽造者要偽造一個(gè)簽名則需要完成指數(shù)級(jí)的工作量, 2)如果偽造者成功偽造了某人(被冒充人)對(duì)一個(gè)消息的簽名,則被冒充人可以有效地證明這個(gè)簽名是偽造的。失敗-中止簽名機(jī)制可以應(yīng)用于需要對(duì)簽名人提供更高保護(hù)的場(chǎng)景。

(6)群簽名(group signature):1991 年David Chaum 和 Eugene van Heyst 提出群簽名的概。群簽名機(jī)制允許多個(gè)簽名人形成一個(gè)簽名人群組,群組中的任意一個(gè)成員可代表整個(gè)群組匿名地生成某個(gè)消息的簽名(“匿名”表示驗(yàn)簽人無(wú)法判斷生成簽名的具體群成員的身份)。群組有個(gè)管理員負(fù)責(zé)維護(hù)群組中成員的群組資格,并在必要時(shí)識(shí)別生成某個(gè)簽名的簽名人身份。群簽名機(jī)制的變體如可追蹤群簽名(traceable group signature)允許授權(quán)方追蹤某個(gè)成員的簽名而不暴露其他成員的身份信息及其生成的簽名;可追責(zé)的追蹤群簽名(accountable tracing signature)可限制群組管理員濫用追蹤群成員簽名的能力。群簽名機(jī)制可用于有隱私保護(hù)需求的諸多簽名應(yīng)用。

(7)指定證實(shí)人簽名(designated confirmer signature): 1994 年 David Chaum 提出指定證實(shí)人簽名的概念。指定證實(shí)人簽名機(jī)制引入半可信第三方的角色:證實(shí)人(confirmer),其和驗(yàn)證人執(zhí)行交換式協(xié)議判斷某個(gè)簽名是否有效,且證實(shí)人可以將一個(gè)有效的指定證實(shí)人簽名轉(zhuǎn)換為普通簽名(任意具有簽名人公鑰的實(shí)體都可驗(yàn)證普通簽名的合法性)。指定證實(shí)人簽名機(jī)制解決了不可否認(rèn)簽名機(jī)制中簽名人可能不參與簽名驗(yàn)證過(guò)程導(dǎo)致簽名接收人利益受損的問(wèn)題。

(8)代理簽名(proxy signature):1996 年Masahiro Mambo, Keisuke Usuda 和 Eiji Okamoto 提出代理簽名的概念。代理簽名機(jī)制允許原簽名人在不將其簽名私鑰轉(zhuǎn)移的情況下將其簽名能力轉(zhuǎn)移給指定的代理人,由代理人代為簽名。代理簽名機(jī)制有許多應(yīng)用,例如在分布式環(huán)境中簽名人可將其簽名能力委托給信任的某個(gè)系統(tǒng)部件。

(9)指定驗(yàn)簽人簽名(designated verifier signature):1996 年 Jakobsson Markus, Kazue Sako 和 Russell Impagliazzo 提出指定驗(yàn)簽人簽名的概念。指定驗(yàn)簽人簽名機(jī)制允許簽名人在生成簽名時(shí)指定可以驗(yàn)證簽名的驗(yàn)證人,非指定的其他人無(wú)法驗(yàn)證簽名的有效性。指定驗(yàn)簽人簽名機(jī)制和不可否認(rèn)簽名不同,其簽名驗(yàn)證過(guò)程無(wú)需簽名人參與。指定驗(yàn)簽人簽名機(jī)制可以提供一定的隱私保護(hù)能力。

(10)簽密(signcryption):1997 年Yuliang Zheng 提出簽密的概念。簽密機(jī)制允許以盡量小的開(kāi)銷(xiāo)同時(shí)完成消息加密和簽名的功能。簽密機(jī)制可以用于同時(shí)有加密和簽名需求的場(chǎng)景, 減少計(jì)算和帶寬的需求。

(11)環(huán)簽名(ring signature):2001 年Ron Rivest, Adi Shamir 和 Yael Tauman 提出環(huán)簽名的概念。環(huán)簽名機(jī)制和群簽名類(lèi)似,環(huán)上任意成員可以匿名地代表整個(gè)環(huán)成員完成簽名操作。和群簽名不同的是,環(huán)簽名機(jī)制沒(méi)有環(huán)成員管理機(jī)制,因此也就沒(méi)有環(huán)管理員,進(jìn)而沒(méi)有機(jī)制能夠確認(rèn)某個(gè)簽名的具體簽名人的身份。這意味著環(huán)簽名比群簽名在簽名人隱私保護(hù)方面更徹底。環(huán)簽名機(jī)制有諸多變體,如門(mén)限環(huán)簽名(threshold ring signature)結(jié)合環(huán)簽名和門(mén)限簽名的功能,既保護(hù)簽名人的隱私又防止小部分環(huán)中成員濫用簽名能力;可關(guān)聯(lián)環(huán)簽名(linkable ring signature)可以確定兩個(gè)簽名是否是同一個(gè)簽名人生成(但不能確定具體簽名人的身份);可追蹤環(huán)簽名(traceable ring signature)可以確定生成了兩次或以上簽名的某個(gè)簽名人的身份。和環(huán)簽名相近的還有網(wǎng)簽名(mesh signature),該機(jī)制允許在無(wú)公鑰的情況下,將某人變成環(huán)上成員。環(huán)簽名機(jī)制有眾多應(yīng)用,包括隱私保護(hù)、電子現(xiàn)金、電子選舉等。

(12)具有高效協(xié)議的簽名(signature with efficient protocols):2001 年 Jan Camenisch 和Anna Lysyanskaya 提出具有高效協(xié)議的簽名機(jī)制。具有高效協(xié)議的簽名機(jī)制允許簽名擁有者和簽名人采用安全兩方計(jì)算機(jī)制高效地完成簽名操作(簽名人不知道被簽名消息的內(nèi)容);允許簽名擁有者采用零知識(shí)證明機(jī)制高效證明其擁有一個(gè)有效的消息簽名(驗(yàn)證人可完成驗(yàn)證過(guò)程但不知道簽名擁有者的消息簽名值)。具有高效協(xié)議的 CL 類(lèi)簽名機(jī)制可應(yīng)用在多種具有隱私保護(hù)需求的場(chǎng)景中,例如在可信平臺(tái)模塊 TPM 中實(shí)現(xiàn)直接匿名證明 DAA[60]。

(13)同態(tài)簽名(homomorphic signature):2002年Robert Johnson, David Molnar, Dawn Song 和 David Wagner 系統(tǒng)性地提出同態(tài)簽名的概念和潛在應(yīng)用。同態(tài)簽名機(jī)制允許任意人在沒(méi)有簽名私鑰的情況下計(jì)算出兩組簽名消息進(jìn)行聯(lián)合操作后的結(jié)果數(shù)據(jù)的簽名值,或者一個(gè)簽名消息集合的任意消息子集的簽名值等。這樣的功能也稱(chēng)為可修訂簽名(redactable signature)。同態(tài)簽名機(jī)制進(jìn)一步可以分為線(xiàn)性同態(tài)簽名如、多項(xiàng)式函數(shù)同態(tài)簽名如 [64]、全同態(tài)簽名。與同態(tài)簽名機(jī)制相關(guān)的簽名機(jī)制還有增量簽名(incremental signature),可傳遞簽名(transitive signature)等。同態(tài)簽名具有眾多應(yīng)用,如電子選舉等。允許簽名后再修改簽名消息的機(jī)制還有:可凈化簽名(sanitizable signature)允許經(jīng)授權(quán)的半信任第三方在無(wú)需簽名人協(xié)助的情況下對(duì)簽名消息進(jìn)行受控地修改;只附加簽名(append-only signature)允許任意一方在獲得消息A和其簽名的情況下, 獲得消息 A 附加消息 B 后新消息的簽名;空白簽名(blank digital signature)允許簽名發(fā)起人簽名一個(gè)模板(模板包括確定的數(shù)據(jù)域和有多重選擇的可修改數(shù)據(jù)域), 簽名發(fā)起人允許一個(gè)代理人對(duì)簽名過(guò)的模板中可修改數(shù)據(jù)域選擇一個(gè)特定值并形成完整消息和簽名,驗(yàn)簽人使用簽名發(fā)起人和代理人的公鑰驗(yàn)證完整消息和簽名的有效性;多變簽名(protean signature)允許同時(shí)刪除和修改被簽名消息(即同時(shí)實(shí)現(xiàn)可修訂簽名和可凈化簽名的功能)。這類(lèi)簽名機(jī)制為消息簽名應(yīng)用提供了更多靈活性。ISO/IEC 正在開(kāi)展可修訂簽名算法的標(biāo)準(zhǔn)化工作 。

(14)可驗(yàn)證加密簽名(verifiably-encrypted- signature):2003 年 Dan Boneh, Craig Gentry, Ben Lynn 和 Hovav Shacham 提出可驗(yàn)證加密簽名的概念。為了提高簽名過(guò)程的公平性,可驗(yàn)證加密簽名允許簽名人生成消息簽名后,使用一個(gè)受信任的仲裁方的公鑰加密簽名值,同時(shí)能生成一個(gè)證明來(lái)表明密文中包含了一個(gè)有效簽名。簽名雙方相互交換可驗(yàn)證加密簽名并證明加密簽名的正確性后,披露各自的普通簽名。如果一方不披露其普通簽名,另外一方可以向仲裁方提交已收到的對(duì)方的可驗(yàn)證加密簽名,仲裁方可以據(jù)此還原對(duì)方的普通簽名??沈?yàn)證加密簽名進(jìn)一步發(fā)展為對(duì)換簽名(commuting signature)允許簽名人在同時(shí)加密了消息和簽名的情況下生成明文有效性的證明,還允許在密文消息上生成可驗(yàn)證加密簽名。

(15)并行簽名(concurrent signature):2004 年 Liqun Chen, Caroline Kudla 和 Kenneth Paterson 提出并行簽名的概念。并行簽名機(jī)制是提高兩方簽名過(guò)程公平性的另一種嘗試,它允許簽名雙方在第三方的幫助下同時(shí)完成對(duì)兩個(gè)消息(或同一消息)的確認(rèn)(commitment,即生成簽名)。完成確認(rèn)的過(guò)程是通過(guò)簽名一方釋放一個(gè)秘密(keystone)來(lái)完成的。在未釋放keystone 前,簽名雙方對(duì)消息的簽名都是不完整的(驗(yàn)證方無(wú)法根據(jù)公開(kāi)信息判斷簽名的有效性);當(dāng)任意一簽名方釋放了 keystone 時(shí),則雙方對(duì)消息的簽名都完成了。

(16)匿名簽名 (anonymous signature): 2006 年 Guomin Yang, Duncan S. Wong, Xiaotie Deng 和Huaxiong Wang 提出匿名簽名的概念,即在無(wú)簽名消息的情況下,無(wú)法判斷某個(gè)簽名的簽名人。匿名簽名技術(shù)可在一些不明文傳遞簽名消息的情況下提高簽名人的隱私保護(hù)能力。

(17)基于知識(shí)簽名(signature of knowledge): 2006 年 Melissa Chase 和 Anna Lysyanskaya 提出基于知識(shí)簽名的概念?;谥R(shí)簽名機(jī)制允許簽名人在擁有某個(gè)聲明 x 屬于某個(gè)語(yǔ)言 L 的證據(jù)的前提下生成某個(gè)消息的簽名[即驗(yàn)簽者可以確認(rèn)合法簽名的生成人知道斷言(predicate)xL的證據(jù)]?;谥R(shí)簽名有許多應(yīng)用,包括隱私保護(hù),構(gòu)造群簽名、環(huán)簽名等。

(18)結(jié)構(gòu)保留簽名(structure-preserving signature):2010 年Masayuki Abe, Georg Fuchsbauer, Jens Groth 和 Miyako Ohkubo 提出結(jié)構(gòu)保留簽名的概念。結(jié)構(gòu)保留簽名機(jī)制要求驗(yàn)簽密鑰、簽名和消息處于雙線(xiàn)性對(duì)使用的群中,且驗(yàn)證簽名有效性的斷言?xún)H使用以驗(yàn)簽密鑰、簽名和

消息為輸入的雙線(xiàn)性對(duì)運(yùn)算。結(jié)構(gòu)保留簽名作為一個(gè)基礎(chǔ)功能模塊可以在眾多應(yīng)用中發(fā)揮作用,如高效盲簽名、群簽名、代理簽名等。

(19)基于屬性的簽名(attribute-based signature):2011年 Hemanta K. Maji, Manoj Prabhakaran 和 Mike Rosulek提出基于屬性的簽名的概念?;趯傩缘暮灻试S一個(gè)從權(quán)威機(jī)構(gòu)獲得一系列屬性的簽名人能夠創(chuàng)建依賴(lài)于其屬性的某個(gè)斷言的消息簽名,即驗(yàn)簽人根據(jù)消息簽名的合法性可以判斷簽名人是否具有一系列屬性的組合。相關(guān)的概念還有基于策略的簽名(policy-based signature)。基于策略的簽名機(jī)制中簽名人只有在滿(mǎn)足權(quán)威機(jī)構(gòu)指定的策略的情況下才生成對(duì)消息的簽名,且簽名不泄露策略信息。這類(lèi)簽名可以簡(jiǎn)潔地實(shí)現(xiàn)細(xì)粒度的身份認(rèn)證、策略控制等。

(20)功能簽名 (functional signature): 2014 年 Elette Boyle, Shafi Goldwasser 和 Ioana Ivan 提出功能簽名的概念。功能簽名機(jī)制中除了有一個(gè)主簽名密鑰可以簽名任意消息外, 還有函數(shù)簽名密鑰。對(duì)應(yīng)某個(gè)函數(shù) f 的函數(shù)簽名密鑰只能用于對(duì)函數(shù)計(jì)算結(jié)果數(shù)據(jù) f(m) 生成簽名。功能簽名可用于構(gòu)建單輪代理機(jī)制,允許客戶(hù)方將函數(shù)計(jì)算外包給服務(wù)方,而客戶(hù)方可以驗(yàn)證計(jì)算的正確性。


04 數(shù)字簽名算法標(biāo)準(zhǔn)

伴隨著數(shù)字簽名技術(shù)應(yīng)用的發(fā)展,數(shù)字簽名算法標(biāo)準(zhǔn)也逐步形成。1991 年美國(guó) NIST 公布DSA 數(shù)字簽名算法并在 1994 年正式將 DSA 納入FIPS 186 中成為數(shù)字簽名標(biāo)準(zhǔn) DSS?;跈E圓曲線(xiàn)的 DSA 算法(ECDSA)在 1995 年被提交到 IEEE P1363 工作組并在 2000 年被納入 FIPS 186-280。為了加強(qiáng) RSA 算法的安全性,RSA 公司在 1993 年發(fā)布 PKCS #1 版本1.5,其中包括了使用消息填充機(jī)制(EMSA-PKCS1-v1_5)的RSA 簽名算法(RSASSA-PKCS1-v1_5)。該版本在 1998 年被重新發(fā)布為 RFC 2313。這兩個(gè)簽名算法成為了產(chǎn)業(yè)界的事實(shí)標(biāo)準(zhǔn),例如互聯(lián)網(wǎng)廣泛使用的 SSL/TLS 協(xié)議(在 2018 年 TLS1.3 發(fā)布以前)只支持以上兩種簽名算法。伴隨可證明安全性的理念逐步被業(yè)界接受,2002 年RSA 公司發(fā)布 PKCS #1 版本 2.2,納入了簽名算法 RSA-PSS,該版本在 2016 年被重新發(fā)布為RFC 8017。Schnorr 算法也具有安全性易于證明的優(yōu)勢(shì)。Daniel J. Bernstein 等根據(jù) Schnorr 算法在愛(ài)德華橢圓曲線(xiàn)上(Edwards-curve)設(shè)計(jì)了數(shù)字簽名算法 EdDSA 并在 2017 年發(fā)布 RFC8032 Edwards-Curve Digital Signature Algorithm (EdDSA) 。2018 年新制定的 TLS 協(xié)議 1.3 版目前只支持以下數(shù)字簽名算法:RSASSA-PKCS1-v1_5、RSA-PSS、ECDSA、EdDSA。

除美國(guó)外,俄羅斯在1994年發(fā)布數(shù)字簽名算法標(biāo)準(zhǔn) GOST R 34.10-94,并在2001年發(fā)布橢圓曲線(xiàn)數(shù)字簽名算法標(biāo)準(zhǔn)GOST R34.10- 2001。GOST R34.10-2001在2012年更新為 GOST R34.10-2012。韓國(guó)在1998年發(fā)表韓國(guó)基于證書(shū)的數(shù)字簽名算法 KCDSA 和 EC- KCDA,對(duì)應(yīng)標(biāo)準(zhǔn)發(fā)布于[88,89]。德國(guó)在 2005 年發(fā)布德國(guó)橢圓曲線(xiàn)數(shù)字簽名算法標(biāo)準(zhǔn) EC- GDSA。中國(guó)在 2012 年發(fā)布 SM2 橢圓曲線(xiàn)數(shù)字簽名算法標(biāo)準(zhǔn),在 2016 年發(fā)布 SM9 標(biāo)識(shí)密碼數(shù)字簽名算法標(biāo)準(zhǔn)。

作為重要的國(guó)際標(biāo)準(zhǔn)化組織,ISO/IEC發(fā)布了一系列的數(shù)字簽名算法標(biāo)準(zhǔn)。標(biāo)準(zhǔn)系列包括:

(1)帶消息恢復(fù)的數(shù)字簽名算法標(biāo)準(zhǔn)系列ISO/IEC 9796,包括基于大數(shù)分解的 9796-2、基于離散對(duì)數(shù)的 9796-3。

(2)帶附錄的數(shù)字簽名算法標(biāo)準(zhǔn)系列 ISO/ IEC 14888,包括基于大數(shù)分解的 14888-2、基于離散對(duì)數(shù)的14888-3。

(3)匿名簽名算法標(biāo)準(zhǔn)系列 ISO/IEC 20008,包括基于群公鑰簽名的 20008-2。

(4)盲簽名算法標(biāo)準(zhǔn)系列 ISO/IEC 18370,包括基于離散對(duì)數(shù)的 18370-2。

(5)可修訂的簽名算法系列 ISO/IEC 23264,包括基于非對(duì)稱(chēng)技術(shù)的可修訂簽名23264-2(正在制定中)。

ISO/IEC14888 系列標(biāo)準(zhǔn)包含著一系列廣泛使用的通用數(shù)字簽名算法:

(1)14888-2 收錄了7個(gè)基于大數(shù)分解的數(shù)字簽名算法,包括:RSA、RW(Rabin-Williams)、 GQ1、GQ2、GPS1、GPS2、ESIGN。其中RSA和 RW 算法使用 PSS 消息編碼,GQ1是基于標(biāo)識(shí)的簽名算法。

(2)14888-3 收錄了 14 個(gè)基于離散對(duì)數(shù)的數(shù)字簽名算法,其中:

①基于素域上離散對(duì)數(shù)的簽名算法有:DSA、KCDSA、SDSA(Schnorr-DSA)、Pointcheval/ Vaudenay 算法;

②基于橢圓曲線(xiàn)上離散對(duì)數(shù)的簽名算法有 EC-DSA(美國(guó))、EC-KCDSA(韓國(guó))、EC-GDSA( 德國(guó))、EC-RDSA(俄羅斯 GOSTR34.10-2012)、EC-SDSA(Schnorr 簽名算法)、EC-FSDA(完整Schnorr 簽名算法)、SM2(中國(guó));

③采用雙線(xiàn)性對(duì)的基于標(biāo)識(shí)的簽名算法有IBS1(Cha-Cheon-IBS)、IBS2(Hess-IBS)、Chinese IBS(SM9)。

這里順帶提及另外一個(gè)和數(shù)字簽名密切相關(guān)的技術(shù):不可否認(rèn)(non-repudiation)技術(shù)。ISO/IEC 制定了系列的不可否認(rèn)技術(shù)標(biāo)準(zhǔn) ISO/ IEC13888,包括:基于對(duì)稱(chēng)密鑰機(jī)制的 13888-2、基于非對(duì)稱(chēng)密鑰機(jī)制的 13888-3。13888-2 標(biāo)準(zhǔn)包括基于對(duì)稱(chēng)密碼的不可否認(rèn)機(jī)制、源不可否認(rèn)機(jī)制、投遞不可否認(rèn)機(jī)制、時(shí)間戳令牌機(jī)制;13888-3 標(biāo)準(zhǔn)包括基于非對(duì)稱(chēng)密鑰的源不可否認(rèn)機(jī)制、投遞不可否認(rèn)機(jī)制、提交不可否認(rèn)機(jī)制以及傳輸不可否認(rèn)機(jī)制。


05 結(jié)語(yǔ)

數(shù)字簽名技術(shù)在數(shù)字社會(huì)中起到重要作用。本文對(duì)數(shù)字簽名技術(shù)過(guò)去四十多年的發(fā)展做了一個(gè)綜述,以便讀者可以對(duì)這一重要技術(shù)有一個(gè)相對(duì)全面的了解。文章回顧了數(shù)字簽名技術(shù)發(fā)展歷程中的一些重要的學(xué)術(shù)工作和重大事件。數(shù)字簽名技術(shù)發(fā)展至今已經(jīng)相當(dāng)成熟,除了滿(mǎn)足基本的安全性要求外,出現(xiàn)了眾多具有附加屬性的數(shù)字簽名技術(shù)。本文以列表的形式概述了歷史上出現(xiàn)的眾多特殊數(shù)字簽名技術(shù)的概念和工作。文章最后匯總了一些重要的數(shù)字簽名技術(shù)標(biāo)準(zhǔn),以便工程技術(shù)人員參考。


引用本文:程朝輝.數(shù)字簽名技術(shù)概覽[J].信息安全與通信保密,2020(7):48-62.