關(guān)于瑞術(shù)
黨建活動
|
數(shù)字簽名技術(shù)概覽 二維碼
發(fā)表時間:2020-07-24 10:00作者:Cismag來源:信息安全與通信保密雜志社 摘 要 本文對數(shù)字簽名技術(shù)進行概覽綜述,以便讀者對該技術(shù)有一個比較全面的了解。文章首先介紹數(shù)字簽名技術(shù)的基本原理,然后回顧數(shù)字簽名技術(shù)四十年發(fā)展的歷程以及期間發(fā)生的一些具有標志性的事件。另外針對特殊功能需求,學術(shù)界提出了許多具有附加屬性的數(shù)字簽名技術(shù),本文對這類技術(shù)進行一個梳理和概覽。文章最后對一些重要的數(shù)字簽名技術(shù)標準進行匯總。 關(guān)鍵詞:數(shù)字簽名技術(shù);數(shù)字簽名算法標準;帶屬性的數(shù)字簽名;公鑰密碼 內(nèi)容目錄: 1 數(shù)字簽名原理 2 數(shù)字簽名技術(shù)發(fā)展歷程 3 具備附加屬性的數(shù)字簽名技術(shù) 4 數(shù)字簽名算法標準 5 結(jié) 語 01 數(shù)字簽名原理 人類在很長時間都是以手寫簽名、印章或指模等來確認作品、文件等的真實性,包括認定作品的創(chuàng)作者、文件簽署者的身份,推定作品的真?zhèn)位蛘呶募?nèi)容的真實性。數(shù)字簽名技術(shù)用于在數(shù)字社會中實現(xiàn)類似于手寫簽名或者印章的功能,即實現(xiàn)對數(shù)字文檔進行簽名。數(shù)字簽名技術(shù)實際上能夠提供比手寫簽名或印章更多的安全保障。一個有效的數(shù)字簽名能夠確保簽名確實由認定的簽名人完成,即簽名人身份的真實性(authentication);被簽名的數(shù)字內(nèi)容在簽名后沒有發(fā)生任何的改變,即被簽名數(shù)據(jù)(也稱簽名消息或簡稱消息)的完整性(integrity);接收人一旦獲得簽名人的(包括被簽名數(shù)據(jù)的) 有效簽名后,簽名人無法否認其簽名行為,即不可抵賴性(non-repudiation)。 本文中的數(shù)字簽名技術(shù)特指采用非對稱密碼機制來實現(xiàn)的簽名技術(shù)。一個簽名人具有一對密鑰,包括一個公鑰和一個私鑰。簽名人公開其公鑰,簽名驗證人(簡稱驗簽人)需要在驗證簽名前獲取簽名人的真實公鑰。如果驗簽人需驗證多個簽名人的簽名,則必須預(yù)先知道每個簽名人和其公鑰的對應(yīng)關(guān)系。在滿足以上前提的情況下,簽名人就可以使用其私鑰對任意消息進行簽名操作,生成簽名值;任意知道公鑰的驗簽人都可以通過驗簽操作驗證對消息的簽名值相對于某公鑰是否有效。若待簽名消息過大時,可以先采用雜湊算法生成消息的摘要(類似于數(shù)據(jù)的指紋)后再對摘要進行數(shù)字簽名。 為了實現(xiàn)真實性、完整性和不可抵賴性功能,數(shù)字簽名機制需要滿足一定的安全需求。簡單地講,安全的數(shù)字簽名機制要求:1)在沒有私鑰的情況下,生成某個消息的有效簽名在計算上是不可行的;2)根據(jù)公鑰和消息/ 簽名對, 計算出簽名私鑰是不可行的。更加嚴格的數(shù)字簽名機制安全定義是在選擇消息攻擊下具有不可偽造性(Existential Unforgeability under Adaptive Chosen Message Attack: EUF-CMA),即攻擊者可任意選擇多項式個消息請簽名人生成并獲得對應(yīng)的簽名,仍然無法生成一個新消息的合法簽名。更高安全性的定義是選擇消息攻擊強不可偽造性(Strong Existential Unforgeability under Adaptive Chosen Message Attack: SUF-CMA),即攻擊者可任意選擇多項式個消息請簽名人生成并獲得對應(yīng)的簽名,仍然無法生成一個新消息的合法簽名或者一個已簽名消息的新合法簽名。 02 數(shù)字簽名技術(shù)發(fā)展歷程 從 Whitfield Diffie 和 Martin Hellman 在 1976 年發(fā)表歷史性的論文《密碼學的新方向》提出數(shù)字簽名的概念到今天,數(shù)字簽名技術(shù)經(jīng)過了四十多年的發(fā)展。這四十多年中,數(shù)字簽名技術(shù)在理論研究上經(jīng)歷了從一個可能的數(shù)學概念,發(fā)展到基于計算復(fù)雜性問題的具體實現(xiàn)、到扎實的安全模型定義、到安全性可證明的高效構(gòu)造、再到滿足各類差異化需求的特性簽名技術(shù)。數(shù)字簽名技術(shù)在應(yīng)用上從小規(guī)模的商業(yè)和個人數(shù)據(jù)保護開始,伴隨著互聯(lián)網(wǎng)和電子商務(wù)的發(fā)展,到今天已經(jīng)發(fā)展成為數(shù)字社會的安全基石之一。 作為一個相對全面的概覽,下面列出數(shù)字簽名技術(shù)發(fā)展過程中的一些重要學術(shù)工作和重大事件。這個列表無意列出過去四十年所有重要的工作和事件。未出現(xiàn)在列表中的學術(shù)工作或相關(guān)事件并不表示其重要性比列出的低。 (1)1976 年 Whitfield Diffie 和 Martin Hellman 在《密碼學的新方向》一文中提出數(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ū)別。該算法成為一類基于雜湊的數(shù)字簽名(hash-based digital signature)算法(例如 XMSS)的基礎(chǔ)。這類算法在后量子計算時代可能依然安全。算法中的Merkle 樹具有眾多應(yīng)用,如區(qū)塊鏈使用 Merkle 樹存儲交易記錄。 (5)1984 年 Taher Elgamal 發(fā)表基于離散對數(shù)問題的 Elgamal 數(shù)字簽名算法。 (6)1984 年 Adi Shamir 提出基于身份的密碼技術(shù)(Identity-Based Cryptography: IBC)并給出第一個基于身份的數(shù)字簽名算法(Identity- Based Signature: IBS)?;谏矸莸拿艽a也稱基于標識的密碼。 (7)1984 年 Shafi Goldwasser, Silvio Micali 和 Ronald Rivest 給出了數(shù)字簽名機制安全模型的嚴格定義(選擇消息攻擊下不可偽造模型:EUF-CMA)。這個模型后來被廣泛接受,用于分析各種數(shù)字簽名算法的安全性。 (8)1986 年 Amos Fiat和 Adi Shamir發(fā)表Fiat-Shamir變換。該變換可將一大類身份認證方案轉(zhuǎn)化為數(shù)字簽名算法。 (9)1989 年 Claus Schnorr 發(fā)表Schnorr 數(shù)字簽名算法。該算法的安全性可以基于離散對數(shù)問題在隨機諭示模型下獲得證明。2011 年發(fā)表的 EdDSA 數(shù)字簽名算法也是以 Schnorr 算法為基礎(chǔ)。 (10)1989 年 Lotus Notes 1.0發(fā)布采用RSA算法的數(shù)字簽名功能。這是第一款大規(guī)模應(yīng)用的商業(yè)軟件支持數(shù)字簽名技術(shù)。 (11)1991年NIST發(fā)布數(shù)字簽名算法DSA。該算法是Elgamal數(shù)字簽名算法的變形, 在1994年作為 FIPS 186 中的數(shù)字簽名標準DSS發(fā)布。DSA和橢圓曲線上的ECDSA算法的安全性分析一直是個挑戰(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 提出自認證密鑰的概念并設(shè)計一個基于自認證密鑰的身份認證協(xié)議。1998 年 Guillaume Poupard 和 Jacques Stern 利用 Fiat-Shamir 變換將該身份認證協(xié)議轉(zhuǎn)換為 GPS 數(shù)字簽名算法并證明了其安全性。 (14)1993 年 RSA 發(fā)布包括 RSA 數(shù)字簽名算法的 PKCS #1 版本 1.5,通過規(guī)定消息編碼方式改進 RSA 數(shù)字簽名算法的安全性。 (15)1995 年 Netscape 發(fā)布支持數(shù)字簽名算法的 SSL 2.0,支持 RSA 和 DSS 簽名算法。 (16)1996 年 Mihir Bellare 和 Phillip Rogaway 提出安全性可證明的 RSA-PSS 簽名算法。 (17)1996 年 David Pointcheval 和 Jacques Stern 提出分叉引理(forking lemma)。基于分叉引理可分析一大類數(shù)字簽名算法的安全性, 包括 Schnorr簽名算法。 (18)1996 年 Paul C. Kocher 發(fā)表側(cè)信道攻擊技術(shù),展示采用時間攻擊技術(shù)攻擊 RSA、DSS 等算法的不安全實現(xiàn)以獲取私鑰 [24]。該工作開啟了密碼側(cè)信道攻防技術(shù)的研究領(lǐng)域。 (19)1999 年 Rosario Gennaro, Shai Halevi 和 Tal Rabin與Ronald Cramer和Victor Shoup 分別構(gòu)造了不依賴隨機諭示模型的 RSA 簽名算法。 (20)2001 年 Dan Boneh, Ben Lynn 和Hovav Shacham 發(fā)表采用雙線性對構(gòu)造的短簽名算法 BLS。 (21)2002 年 Jae Choon Cha 與 Jung Hee Cheon 以及 Florian Hess 分別發(fā)表采用雙線性對構(gòu)造的基于標識的數(shù)字簽名算法 Cha-Cheon- IBS和 Hess-IBS。 (22)2003 年 Sattam S. Al-Riyami 和Kenneth G. Paterson 提出無證書密碼的概念,并設(shè)計無證書的數(shù)字簽名算法。雖然 Al- Riyami-Paterson 無證書簽名算法后來被證明不安全,但該工作開啟了相關(guān)領(lǐng)域的研究工作。例如,2018 年 Zhaohui Cheng 和 Liqun Chen 統(tǒng)一了基于 Girault 的自認證密鑰的數(shù)字簽名機制和Al-Riyami-Paterson 無證書數(shù)字簽名機制的安全模型,并設(shè)計安全、高效的無證書簽名算法。 (23)2008 年 Craig Gentry, Chris Peikert 和Vinod Vaikuntanathan 基于等工作發(fā)表了第一個安全性可證明的基于格的數(shù)字簽名算法GPV。后續(xù)更多格基數(shù)字簽名算法被提出,如BLISS、Dilithium等。 (24)2017 年 NIST 開始后量子公鑰算法標準化工作,全球征集相關(guān)算法,包括數(shù)字簽名算法。 03 具備附加屬性的數(shù)字簽名技術(shù) 伴隨著通用數(shù)字簽名技術(shù)的發(fā)展,針對一些特殊需求,特別是電子現(xiàn)金、電子選舉等領(lǐng)域的應(yīng)用以及隱私保護與簽名公平性需求的增強,眾多具有附加屬性的數(shù)字簽名技術(shù)的概念和算法構(gòu)造被提出。下面列出一些典型的具有附加屬性的數(shù)字簽名技術(shù)。本文無意列出所有特性數(shù)字簽名技術(shù),讀者可以參考更多的綜述資料如 [38,39]。 (1)盲簽名 (blind signature):1982 年David Chaum 提出盲簽名的概念。盲簽名機制允許簽名人對盲化過的消息(簽名人在不知道消息內(nèi)容的情況下)生成消息簽名。簽名的有效性可以在消息去盲化后被公開驗證。盲簽名機制可用于電子選舉、電子現(xiàn)金等應(yīng)用。 (2)多簽名(multi-signature):1983 年 K. Itakura 和 K. Nakamura 提出多簽名的概念。多簽名機制允許多個簽名人對消息進行簽名且生成的簽名比各個簽名人獨立簽名生成的簽名值集合更簡短。多簽名機制可用于區(qū)塊鏈等對多方簽名有需求且對簽名長度敏感的應(yīng)用。和多簽名機制緊密相關(guān)的簽名壓縮機制還有聚合簽名(aggregate signature)。聚合簽名可以將多個簽名壓縮為一個簽名。聚合簽名進一步可分為通用聚合簽名如 [42] 和順序聚合簽名如 [43] 等。順序聚合簽名中簽名和聚合操作根據(jù)已經(jīng)簽名的消息集、已經(jīng)聚合的簽名以及待簽名新消息,利用私鑰進行簽名并完成聚合操作。 (3)門限簽名(threshold signature):1987 年 Yvo Desmedt 提出門限簽名的概念。門限簽名機制允許n個簽名人中的任意 k 個簽名人對消息生成簽名,但少于 k 個簽名人參與則無法生成有效簽名。門限簽名機制可以構(gòu)建強健的簽名系統(tǒng),防止部分簽名人的不法行為。 (4)不可否認簽名(undeniable signature):1989 年 David Chaum 和 Hans van Antwerpen 提 出不可否認簽名的概念。不可否認簽名機制允許簽名人生成一個簽名并且確保沒有簽名人的允許(不參與驗證過程),驗證人無法驗證簽名的有效性;同時不可否認機制能夠防止簽名人(以不可忽略的概率)否認某個真實簽名。不可否認簽名機制可以防止簽名數(shù)據(jù)被濫用。 (5)失敗-中止簽名(fail-stop signature):1991 年 Birgit Pfitzmann 提出失敗-中止簽名的概念。失敗-中止簽名機制除了滿足普通簽名機制的安全要求外,額外要求:1)如果偽造者要偽造一個簽名則需要完成指數(shù)級的工作量, 2)如果偽造者成功偽造了某人(被冒充人)對一個消息的簽名,則被冒充人可以有效地證明這個簽名是偽造的。失敗-中止簽名機制可以應(yīng)用于需要對簽名人提供更高保護的場景。 (6)群簽名(group signature):1991 年David Chaum 和 Eugene van Heyst 提出群簽名的概。群簽名機制允許多個簽名人形成一個簽名人群組,群組中的任意一個成員可代表整個群組匿名地生成某個消息的簽名(“匿名”表示驗簽人無法判斷生成簽名的具體群成員的身份)。群組有個管理員負責維護群組中成員的群組資格,并在必要時識別生成某個簽名的簽名人身份。群簽名機制的變體如可追蹤群簽名(traceable group signature)允許授權(quán)方追蹤某個成員的簽名而不暴露其他成員的身份信息及其生成的簽名;可追責的追蹤群簽名(accountable tracing signature)可限制群組管理員濫用追蹤群成員簽名的能力。群簽名機制可用于有隱私保護需求的諸多簽名應(yīng)用。 (7)指定證實人簽名(designated confirmer signature): 1994 年 David Chaum 提出指定證實人簽名的概念。指定證實人簽名機制引入半可信第三方的角色:證實人(confirmer),其和驗證人執(zhí)行交換式協(xié)議判斷某個簽名是否有效,且證實人可以將一個有效的指定證實人簽名轉(zhuǎn)換為普通簽名(任意具有簽名人公鑰的實體都可驗證普通簽名的合法性)。指定證實人簽名機制解決了不可否認簽名機制中簽名人可能不參與簽名驗證過程導致簽名接收人利益受損的問題。 (8)代理簽名(proxy signature):1996 年Masahiro Mambo, Keisuke Usuda 和 Eiji Okamoto 提出代理簽名的概念。代理簽名機制允許原簽名人在不將其簽名私鑰轉(zhuǎn)移的情況下將其簽名能力轉(zhuǎn)移給指定的代理人,由代理人代為簽名。代理簽名機制有許多應(yīng)用,例如在分布式環(huán)境中簽名人可將其簽名能力委托給信任的某個系統(tǒng)部件。 (9)指定驗簽人簽名(designated verifier signature):1996 年 Jakobsson Markus, Kazue Sako 和 Russell Impagliazzo 提出指定驗簽人簽名的概念。指定驗簽人簽名機制允許簽名人在生成簽名時指定可以驗證簽名的驗證人,非指定的其他人無法驗證簽名的有效性。指定驗簽人簽名機制和不可否認簽名不同,其簽名驗證過程無需簽名人參與。指定驗簽人簽名機制可以提供一定的隱私保護能力。 (10)簽密(signcryption):1997 年Yuliang Zheng 提出簽密的概念。簽密機制允許以盡量小的開銷同時完成消息加密和簽名的功能。簽密機制可以用于同時有加密和簽名需求的場景, 減少計算和帶寬的需求。 (11)環(huán)簽名(ring signature):2001 年Ron Rivest, Adi Shamir 和 Yael Tauman 提出環(huán)簽名的概念。環(huán)簽名機制和群簽名類似,環(huán)上任意成員可以匿名地代表整個環(huán)成員完成簽名操作。和群簽名不同的是,環(huán)簽名機制沒有環(huán)成員管理機制,因此也就沒有環(huán)管理員,進而沒有機制能夠確認某個簽名的具體簽名人的身份。這意味著環(huán)簽名比群簽名在簽名人隱私保護方面更徹底。環(huán)簽名機制有諸多變體,如門限環(huán)簽名(threshold ring signature)結(jié)合環(huán)簽名和門限簽名的功能,既保護簽名人的隱私又防止小部分環(huán)中成員濫用簽名能力;可關(guān)聯(lián)環(huán)簽名(linkable ring signature)可以確定兩個簽名是否是同一個簽名人生成(但不能確定具體簽名人的身份);可追蹤環(huán)簽名(traceable ring signature)可以確定生成了兩次或以上簽名的某個簽名人的身份。和環(huán)簽名相近的還有網(wǎng)簽名(mesh signature),該機制允許在無公鑰的情況下,將某人變成環(huán)上成員。環(huán)簽名機制有眾多應(yīng)用,包括隱私保護、電子現(xiàn)金、電子選舉等。 (12)具有高效協(xié)議的簽名(signature with efficient protocols):2001 年 Jan Camenisch 和Anna Lysyanskaya 提出具有高效協(xié)議的簽名機制。具有高效協(xié)議的簽名機制允許簽名擁有者和簽名人采用安全兩方計算機制高效地完成簽名操作(簽名人不知道被簽名消息的內(nèi)容);允許簽名擁有者采用零知識證明機制高效證明其擁有一個有效的消息簽名(驗證人可完成驗證過程但不知道簽名擁有者的消息簽名值)。具有高效協(xié)議的 CL 類簽名機制可應(yīng)用在多種具有隱私保護需求的場景中,例如在可信平臺模塊 TPM 中實現(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)簽名機制允許任意人在沒有簽名私鑰的情況下計算出兩組簽名消息進行聯(lián)合操作后的結(jié)果數(shù)據(jù)的簽名值,或者一個簽名消息集合的任意消息子集的簽名值等。這樣的功能也稱為可修訂簽名(redactable signature)。同態(tài)簽名機制進一步可以分為線性同態(tài)簽名如、多項式函數(shù)同態(tài)簽名如 [64]、全同態(tài)簽名。與同態(tài)簽名機制相關(guān)的簽名機制還有增量簽名(incremental signature),可傳遞簽名(transitive signature)等。同態(tài)簽名具有眾多應(yīng)用,如電子選舉等。允許簽名后再修改簽名消息的機制還有:可凈化簽名(sanitizable signature)允許經(jīng)授權(quán)的半信任第三方在無需簽名人協(xié)助的情況下對簽名消息進行受控地修改;只附加簽名(append-only signature)允許任意一方在獲得消息A和其簽名的情況下, 獲得消息 A 附加消息 B 后新消息的簽名;空白簽名(blank digital signature)允許簽名發(fā)起人簽名一個模板(模板包括確定的數(shù)據(jù)域和有多重選擇的可修改數(shù)據(jù)域), 簽名發(fā)起人允許一個代理人對簽名過的模板中可修改數(shù)據(jù)域選擇一個特定值并形成完整消息和簽名,驗簽人使用簽名發(fā)起人和代理人的公鑰驗證完整消息和簽名的有效性;多變簽名(protean signature)允許同時刪除和修改被簽名消息(即同時實現(xiàn)可修訂簽名和可凈化簽名的功能)。這類簽名機制為消息簽名應(yīng)用提供了更多靈活性。ISO/IEC 正在開展可修訂簽名算法的標準化工作 。 (14)可驗證加密簽名(verifiably-encrypted- signature):2003 年 Dan Boneh, Craig Gentry, Ben Lynn 和 Hovav Shacham 提出可驗證加密簽名的概念。為了提高簽名過程的公平性,可驗證加密簽名允許簽名人生成消息簽名后,使用一個受信任的仲裁方的公鑰加密簽名值,同時能生成一個證明來表明密文中包含了一個有效簽名。簽名雙方相互交換可驗證加密簽名并證明加密簽名的正確性后,披露各自的普通簽名。如果一方不披露其普通簽名,另外一方可以向仲裁方提交已收到的對方的可驗證加密簽名,仲裁方可以據(jù)此還原對方的普通簽名。可驗證加密簽名進一步發(fā)展為對換簽名(commuting signature)允許簽名人在同時加密了消息和簽名的情況下生成明文有效性的證明,還允許在密文消息上生成可驗證加密簽名。 (15)并行簽名(concurrent signature):2004 年 Liqun Chen, Caroline Kudla 和 Kenneth Paterson 提出并行簽名的概念。并行簽名機制是提高兩方簽名過程公平性的另一種嘗試,它允許簽名雙方在第三方的幫助下同時完成對兩個消息(或同一消息)的確認(commitment,即生成簽名)。完成確認的過程是通過簽名一方釋放一個秘密(keystone)來完成的。在未釋放keystone 前,簽名雙方對消息的簽名都是不完整的(驗證方無法根據(jù)公開信息判斷簽名的有效性);當任意一簽名方釋放了 keystone 時,則雙方對消息的簽名都完成了。 (16)匿名簽名 (anonymous signature): 2006 年 Guomin Yang, Duncan S. Wong, Xiaotie Deng 和Huaxiong Wang 提出匿名簽名的概念,即在無簽名消息的情況下,無法判斷某個簽名的簽名人。匿名簽名技術(shù)可在一些不明文傳遞簽名消息的情況下提高簽名人的隱私保護能力。 (17)基于知識簽名(signature of knowledge): 2006 年 Melissa Chase 和 Anna Lysyanskaya 提出基于知識簽名的概念?;谥R簽名機制允許簽名人在擁有某個聲明 x 屬于某個語言 L 的證據(jù)的前提下生成某個消息的簽名[即驗簽者可以確認合法簽名的生成人知道斷言(predicate)xL的證據(jù)]?;谥R簽名有許多應(yīng)用,包括隱私保護,構(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)保留簽名機制要求驗簽密鑰、簽名和消息處于雙線性對使用的群中,且驗證簽名有效性的斷言僅使用以驗簽密鑰、簽名和 消息為輸入的雙線性對運算。結(jié)構(gòu)保留簽名作為一個基礎(chǔ)功能模塊可以在眾多應(yīng)用中發(fā)揮作用,如高效盲簽名、群簽名、代理簽名等。 (19)基于屬性的簽名(attribute-based signature):2011年 Hemanta K. Maji, Manoj Prabhakaran 和 Mike Rosulek提出基于屬性的簽名的概念?;趯傩缘暮灻试S一個從權(quán)威機構(gòu)獲得一系列屬性的簽名人能夠創(chuàng)建依賴于其屬性的某個斷言的消息簽名,即驗簽人根據(jù)消息簽名的合法性可以判斷簽名人是否具有一系列屬性的組合。相關(guān)的概念還有基于策略的簽名(policy-based signature)?;诓呗缘暮灻麢C制中簽名人只有在滿足權(quán)威機構(gòu)指定的策略的情況下才生成對消息的簽名,且簽名不泄露策略信息。這類簽名可以簡潔地實現(xiàn)細粒度的身份認證、策略控制等。 (20)功能簽名 (functional signature): 2014 年 Elette Boyle, Shafi Goldwasser 和 Ioana Ivan 提出功能簽名的概念。功能簽名機制中除了有一個主簽名密鑰可以簽名任意消息外, 還有函數(shù)簽名密鑰。對應(yīng)某個函數(shù) f 的函數(shù)簽名密鑰只能用于對函數(shù)計算結(jié)果數(shù)據(jù) f(m) 生成簽名。功能簽名可用于構(gòu)建單輪代理機制,允許客戶方將函數(shù)計算外包給服務(wù)方,而客戶方可以驗證計算的正確性。 04 數(shù)字簽名算法標準 伴隨著數(shù)字簽名技術(shù)應(yīng)用的發(fā)展,數(shù)字簽名算法標準也逐步形成。1991 年美國 NIST 公布DSA 數(shù)字簽名算法并在 1994 年正式將 DSA 納入FIPS 186 中成為數(shù)字簽名標準 DSS。基于橢圓曲線的 DSA 算法(ECDSA)在 1995 年被提交到 IEEE P1363 工作組并在 2000 年被納入 FIPS 186-280。為了加強 RSA 算法的安全性,RSA 公司在 1993 年發(fā)布 PKCS #1 版本1.5,其中包括了使用消息填充機制(EMSA-PKCS1-v1_5)的RSA 簽名算法(RSASSA-PKCS1-v1_5)。該版本在 1998 年被重新發(fā)布為 RFC 2313。這兩個簽名算法成為了產(chǎn)業(yè)界的事實標準,例如互聯(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)勢。Daniel J. Bernstein 等根據(jù) Schnorr 算法在愛德華橢圓曲線上(Edwards-curve)設(shè)計了數(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。 除美國外,俄羅斯在1994年發(fā)布數(shù)字簽名算法標準 GOST R 34.10-94,并在2001年發(fā)布橢圓曲線數(shù)字簽名算法標準GOST R34.10- 2001。GOST R34.10-2001在2012年更新為 GOST R34.10-2012。韓國在1998年發(fā)表韓國基于證書的數(shù)字簽名算法 KCDSA 和 EC- KCDA,對應(yīng)標準發(fā)布于[88,89]。德國在 2005 年發(fā)布德國橢圓曲線數(shù)字簽名算法標準 EC- GDSA。中國在 2012 年發(fā)布 SM2 橢圓曲線數(shù)字簽名算法標準,在 2016 年發(fā)布 SM9 標識密碼數(shù)字簽名算法標準。 作為重要的國際標準化組織,ISO/IEC發(fā)布了一系列的數(shù)字簽名算法標準。標準系列包括: (1)帶消息恢復(fù)的數(shù)字簽名算法標準系列ISO/IEC 9796,包括基于大數(shù)分解的 9796-2、基于離散對數(shù)的 9796-3。 (2)帶附錄的數(shù)字簽名算法標準系列 ISO/ IEC 14888,包括基于大數(shù)分解的 14888-2、基于離散對數(shù)的14888-3。 (3)匿名簽名算法標準系列 ISO/IEC 20008,包括基于群公鑰簽名的 20008-2。 (4)盲簽名算法標準系列 ISO/IEC 18370,包括基于離散對數(shù)的 18370-2。 (5)可修訂的簽名算法系列 ISO/IEC 23264,包括基于非對稱技術(shù)的可修訂簽名23264-2(正在制定中)。 ISO/IEC14888 系列標準包含著一系列廣泛使用的通用數(shù)字簽名算法: (1)14888-2 收錄了7個基于大數(shù)分解的數(shù)字簽名算法,包括:RSA、RW(Rabin-Williams)、 GQ1、GQ2、GPS1、GPS2、ESIGN。其中RSA和 RW 算法使用 PSS 消息編碼,GQ1是基于標識的簽名算法。 (2)14888-3 收錄了 14 個基于離散對數(shù)的數(shù)字簽名算法,其中: ①基于素域上離散對數(shù)的簽名算法有:DSA、KCDSA、SDSA(Schnorr-DSA)、Pointcheval/ Vaudenay 算法; ②基于橢圓曲線上離散對數(shù)的簽名算法有 EC-DSA(美國)、EC-KCDSA(韓國)、EC-GDSA( 德國)、EC-RDSA(俄羅斯 GOSTR34.10-2012)、EC-SDSA(Schnorr 簽名算法)、EC-FSDA(完整Schnorr 簽名算法)、SM2(中國); ③采用雙線性對的基于標識的簽名算法有IBS1(Cha-Cheon-IBS)、IBS2(Hess-IBS)、Chinese IBS(SM9)。 這里順帶提及另外一個和數(shù)字簽名密切相關(guān)的技術(shù):不可否認(non-repudiation)技術(shù)。ISO/IEC 制定了系列的不可否認技術(shù)標準 ISO/ IEC13888,包括:基于對稱密鑰機制的 13888-2、基于非對稱密鑰機制的 13888-3。13888-2 標準包括基于對稱密碼的不可否認機制、源不可否認機制、投遞不可否認機制、時間戳令牌機制;13888-3 標準包括基于非對稱密鑰的源不可否認機制、投遞不可否認機制、提交不可否認機制以及傳輸不可否認機制。 05 結(jié)語 數(shù)字簽名技術(shù)在數(shù)字社會中起到重要作用。本文對數(shù)字簽名技術(shù)過去四十多年的發(fā)展做了一個綜述,以便讀者可以對這一重要技術(shù)有一個相對全面的了解。文章回顧了數(shù)字簽名技術(shù)發(fā)展歷程中的一些重要的學術(shù)工作和重大事件。數(shù)字簽名技術(shù)發(fā)展至今已經(jīng)相當成熟,除了滿足基本的安全性要求外,出現(xiàn)了眾多具有附加屬性的數(shù)字簽名技術(shù)。本文以列表的形式概述了歷史上出現(xiàn)的眾多特殊數(shù)字簽名技術(shù)的概念和工作。文章最后匯總了一些重要的數(shù)字簽名技術(shù)標準,以便工程技術(shù)人員參考。 引用本文:程朝輝.數(shù)字簽名技術(shù)概覽[J].信息安全與通信保密,2020(7):48-62. |