專利名稱:一種提高數(shù)字簽名安全性的方法
技術領域:
本發(fā)明涉及數(shù)據(jù)安全技術,尤其涉及一種提高數(shù)字簽名安全性的方法。
背景技術:
在電子商務、企業(yè)信息平臺等領域中,數(shù)字簽名體制被廣泛運用。數(shù)字簽名的安全性是保障認證、授權、完整性、不可抵賴等安全服務的關鍵技術。
數(shù)字簽名的目標類似于物理的筆記簽名,它必須易生成和驗證而難偽造和抵賴,并且保證被簽名的內(nèi)容難以篡改。
這可以通過非對稱密碼體制實現(xiàn)。在用于數(shù)字簽名的非對稱密碼體制中,簽名者有兩個一一對應的密鑰,一個是私有密鑰(簡稱私有密鑰),必須嚴格保密,另一個是公有密鑰(簡稱公有密鑰),可以公之于眾。使用私有密鑰對數(shù)據(jù)進行加密很容易,由與之對應的公有密鑰進行解密也很容易。雖然這兩個密鑰完全是一一對應的,但由于產(chǎn)生它們所基于的數(shù)學難題的特點,使得用公有密鑰推導出私有密鑰非常困難,并且很難將任意的數(shù)據(jù)加密為可以被一個未知私有密鑰所對應的公有密鑰解密的密文。
可以很容易地利用這種非對稱密碼體制來構造滿足要求的數(shù)字簽名體制。要生成數(shù)字簽名,可以對要簽名的數(shù)據(jù)使用私有密鑰進行加密,將密文作為數(shù)字簽名。要進行數(shù)字簽名驗證,就可以使用公有密鑰對數(shù)字簽名進行解密,將解密結果與被簽名的數(shù)據(jù)對比,對比無誤就認為驗證通過。很容易根據(jù)前面所提到的非對稱密碼體制的特點來說明這種方案是易生成和驗證而難偽造和抵賴以及難篡改的。
但前面的討論跟實際應用中的數(shù)字簽名有所不同,已知的所有非對稱密碼體制的效率都很低,而且密文常常比對應的明文尺寸大許多。所以,通常在用私有密鑰進行加密之前都要對要簽名的數(shù)據(jù)進行壓縮,壓縮的方式是通過密碼學中的單向散列函數(shù)生成散列值,然后對這個散列值進行加密和解密。單向散列函數(shù)效率遠遠高于非對稱密碼體制,而利用單向散列函數(shù)運算之后的數(shù)據(jù)尺寸縮短為一個較短的固定長度,非對稱密碼體制就可以用很少的次數(shù)(通常是一次)完成加密。
然而,采用了單向散列函數(shù)的數(shù)字簽名體制的安全性就由原來的僅僅依賴于非對稱密碼體制的安全性變成同時還依賴于單向散列函數(shù)的安全性,二者中任何一個被攻破整個數(shù)字簽名體制都不再安全。
對于一個特定的單向散列函數(shù),其安全性取決于解決與之相關的以下幾個問題的難度a.原像問題找到一組數(shù)據(jù)使其散列值恰好等于指定的值。
b.第二原像問題找到一組不同的數(shù)據(jù)使其散列值恰好和指定的數(shù)據(jù)相同。
c.碰撞問題找到任意兩組不同的數(shù)據(jù)使二者的散列值恰好相等。
密碼學對于以上三個問題有如下結論原像問題和第二原像問題的難度都不小于碰撞問題。如果解決了原像問題或者第二原像問題,則一定可以解決碰撞問題。反過來解決了碰撞問題,對解決原像問題或第二原像問題則可能毫無幫助。對于一個特定的單向散列函數(shù)找到解決這三個問題中任何一個的有效算法,都會對該單向散列函數(shù)的安全性造成威脅。
圖1為數(shù)字簽名生成的過程以及數(shù)字簽名驗證過程的示意圖在數(shù)字簽名生成過程中,單向散列函數(shù)將待簽名的數(shù)據(jù)(圖中就是一個許可文件)進行壓縮生成一個散列值,再經(jīng)過非對稱密碼算法用私有密鑰進行加密,就得到了許可文件的數(shù)字簽名。在數(shù)字簽名驗證過程中,數(shù)字簽名經(jīng)過非對稱密碼算法經(jīng)公共密鑰進行解密,還原出散列值,與待驗證的數(shù)據(jù)通過單向散列函數(shù)生成的散列值相比較,二者如果完全相同,則驗證成功。
實際上即使不使用單向散列函數(shù),對待簽名數(shù)據(jù)進行全文非對稱加密,也可以生成數(shù)字簽名,但這樣得到的數(shù)字簽名值尺寸要比待簽名數(shù)據(jù)還大(甚至大幾倍),而且目前已知的非對稱加密算法速度都是系統(tǒng)性能的瓶頸,這在實際應用中都是難以忍受的問題。所以,實際的數(shù)字簽名方案都會先使用高效的單向散列函數(shù)對數(shù)據(jù)進行不可逆壓縮。這樣一來,數(shù)字簽名方案的安全性同時依賴于單向散列函數(shù)的安全性和非對稱加密算法的安全性,一旦二者之一被發(fā)現(xiàn)了安全漏洞,整個數(shù)字簽名方案就不再安全。
雖然現(xiàn)有的數(shù)字簽名技術方案有許多種,但絕大部分都是先利用單向散列函數(shù)計算待簽名數(shù)據(jù)的散列值,然后對散列值用私有密鑰加密。這些方案之間的區(qū)別僅僅在于使用的單向散列函數(shù)不同和非對稱加密算法不同??蛇x的單向散列函數(shù)有MD2、MD4、MD5、HAVAL、RIPEMD、SHA0、SHA1、SHA2、HMAC等,除此之外單向散列函數(shù)還可以由各種加密算法來構造,非對稱加密算法包括RSA、EC、DH、DSA等。
由于目前的各種安全體制和安全產(chǎn)品中,安全性在相當大的程度上是基于對所使用的算法的無條件信任。這種無條件的信任很可能是危險的,因為沒有任何一種實用的密碼算法能夠被徹底證明是安全的。這些算法的安全性實際上建立在大量密碼學家長時間廣泛的分析之后仍然沒有發(fā)現(xiàn)可利用的弱點上,這樣的算法被稱作久經(jīng)考驗的算法,人們對這種算法的信心有理由大于新的未經(jīng)過廣泛分析考驗的算法。但下面這種情況卻出現(xiàn)過多次一種算法很久以來都沒有人能夠發(fā)現(xiàn)其安全漏洞,突然有人宣布找到了該算法的安全漏洞。如果安全性完全建立在對算法的信任基礎之上,那么一旦出現(xiàn)這種突發(fā)事件,大量已經(jīng)投入使用的體制和產(chǎn)品就會因措手不及而陷入安全危機之中。更糟糕的是可能有人已經(jīng)找到了算法的安全漏洞,卻沒有公開,而是利用這個安全漏洞進行非法活動。所以在實際應用中如何在算法存在潛在安全漏洞的情況下仍然最大程度地保障安全性也應該引起足夠的重視。
前面提到的一些單向散列函數(shù)中有些單向散列函數(shù)已經(jīng)找到了制造碰撞的有效算法,或者被認為存在著潛在的碰撞威脅。當這些弱點被找到時,常常已經(jīng)存在了基于該算法的數(shù)字簽名標準或者安全產(chǎn)品。這些標準或者產(chǎn)品在被新標準或產(chǎn)品取代之前,仍然會存在一段時間,造成安全隱患。
在現(xiàn)有的數(shù)字簽名體制中,如果解決了單向散列函數(shù)的碰撞問題就可以對電子商務系統(tǒng)進行如下碰撞攻擊,如果圖2所示
假定參與電子商務的三方為買方A,賣方X,銀行B。A和X都在B中開有戶頭。A訂購了X的若干產(chǎn)品,X向A提供一份購物清單,注明了A訂購的商品和價格等信息,A確定這些信息準確無誤之后,用A的私有密鑰對購物清單的散列值進行數(shù)字簽名,并將簽名后的購物清單返回給X。X將原始購物清單和簽了名的購物清單提交給B,B用A的公有密鑰對數(shù)字簽名進行驗證,如果驗證通過B就認為A確實認可交易金額,于是從A的戶頭上把清單中確定的交易金額轉賬到X的戶頭。
如果X試圖進行欺詐,并且掌握了解決所使用的單向散列函數(shù)碰撞問題的有效算法,那么X就可以事先產(chǎn)生兩個不同的購物清單,一份是A認可的,另一份是A不認可的(比如把商品的價格提高了一千倍,或者包含了A根本不想要的物品),然后X利用制造碰撞的有效算法,同時在兩份清單中做一些看似無關緊要的調(diào)整調(diào)整清單中的商品順序,增加或刪除一些空白字符,將某些單詞用同義詞替代,使兩份清單的散列值相等。然后X將A認可的清單(雖然有一些看似無關緊要的調(diào)整),提交給A進行簽名,A簽名之后X把另外一份A不會認可清單和數(shù)字簽名提交給B審核,由于二者散列值相同,認證自然會通過,B就會把遠遠超過A認可的金額轉賬到X的戶頭。
必須提到的是,除了這種攻擊之外,A也可以利用這個漏洞進行抵賴明明認可了一份購物清單,但A卻誣陷X在清單中做了前面所描述的手腳而拒不承認自己曾經(jīng)所簽名的就是這份購物清單。
也就是說,一旦找到了所使用的單向散列函數(shù)碰撞問題的有效算法,交易的雙方都可以用這種方式非法獲利。
總之,隨著找到越來越多的制造碰撞的有效算法,使現(xiàn)有使用了單向散列函數(shù)的數(shù)字簽名體制也越來越容易遭到碰撞攻擊,從而導致現(xiàn)有的數(shù)字簽名體制存在很大的安全隱患。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種提高數(shù)字簽名安全性的方法,以解決現(xiàn)有的數(shù)字簽名體制容易遭到抗碰撞攻擊的問題。
為解決上述問題,本發(fā)明提供如下技術方案一種提高數(shù)字簽名安全性的方法,該方法包括如下步驟A、由簽名方主動修改待簽名原始許可文件,并使修改后許可文件中數(shù)據(jù)的語意和所述原始許可文件中數(shù)據(jù)的原始語意保持不變;B、利用單向散列函數(shù)對修改后的許可文件進行運算得到第一散列值;C、對第一散列值進行加密得到數(shù)字簽名。
所述方法還包括步驟D、將待驗證許可文件和所述數(shù)字簽名提交給驗證方;E、驗證方解密所述數(shù)字簽名得到第一散列值,以及利用單向散列函數(shù)對待驗證許可文件進行運算得到第二散列值;F、確定第一散列值和第二散列值是否相同,如果相同則驗證成功,否則驗證失敗。
所述原始許可文件是指從不完全可信任途徑得到的待簽名的許可文件。
步驟A中所述的主動修改是指根據(jù)原始許可文件的數(shù)據(jù)類型增加、刪除和/或替換不改變數(shù)據(jù)原始語意的內(nèi)容。
步驟A中所述的主動修改是指在原始許可文件中附加一個隨機擾碼。
本發(fā)明通過簽名方主動對原始許可文件進行保護數(shù)據(jù)原始語意不變的篡改,在對數(shù)字簽名體制的性能沒有明顯影響的前提下,讓數(shù)字簽名體制的安全性依賴于所用單向散列函數(shù)的更難解的第二原像問題,不再依賴于相對容易解決的碰撞問題,從而有效提高了數(shù)字簽名體制的安全性。
本發(fā)明將數(shù)字簽名攻擊方所需要解決的問題由碰撞問題提升為第二原像問題。理論上可以一般性地證明任何單向散列函數(shù)第二原像問題的難度都絕對不會低于碰撞問題,實際應用中經(jīng)過長期廣泛分析和應用的單向散列函數(shù)一般認為第二原像問題不僅不低于碰撞問題,而是明顯高于碰撞問題,近年來對若干單向散列函數(shù)的分析進展在一定程度上也支持了這種看法。因此可以合理地斷言本發(fā)明的方法將提高數(shù)字簽名體制的安全性。這種方法的具體實現(xiàn)是高效的,對系統(tǒng)整體性能的影響可以忽略不計。此外,這種方案既可以用于制定數(shù)字簽名標準,又可以在相關的標準出臺之前在許多安全產(chǎn)品中單方面實施而不會導致通訊對方無法理解所接收的數(shù)字簽名信息。
圖1為現(xiàn)有技術中數(shù)字簽名和簽名驗證的示意圖;圖2為對數(shù)字簽名進行碰撞攻擊的示意圖;圖3為本發(fā)明數(shù)字簽名和簽名驗證的流程圖;圖4為難以對本發(fā)明的數(shù)字簽名進行攻擊的示意圖。
具體實施例方式
本發(fā)明主要是針對現(xiàn)有技術中對簽名體制的碰撞攻擊,將攻擊者面臨的與單向散列函數(shù)相關的碰撞問題提升為第二原象問題,達到無論簽名中使用的單向散列函數(shù)是否抗碰撞,均可使數(shù)字簽名體制能夠抵抗碰撞攻擊的目的。因此本發(fā)明僅涉及如何減少數(shù)字簽名體制對單向散列函數(shù)安全性的依賴,不涉及非對稱密碼體制的內(nèi)容。
前述碰撞攻擊的原理是攻擊者事先生成兩個具有相同散列值的不同數(shù)據(jù),然后將其中一份數(shù)據(jù)提交給簽名者簽名。如果簽名者對數(shù)據(jù)做出了攻擊者無法預期的主動篡改,再對數(shù)據(jù)生成數(shù)字簽名,那么攻擊者事先生成的另外一份數(shù)據(jù)由于其散列值與主動篡改后的數(shù)據(jù)不同,就無法利用其進行攻擊。如果攻擊者要根據(jù)簽名者修改后的數(shù)據(jù)生成另外一組數(shù)據(jù)使之散列值不變,就需要解決更難的單向散列函數(shù)第二原象問題,只要第二原象問題沒有找到有效算法,這種攻擊就是不可行的,參閱圖3所示。
因此,本發(fā)明的原理是在數(shù)字簽名之前,簽名方主動執(zhí)行隨機篡改步驟,將待簽名數(shù)據(jù)進行一種非破壞性的隨機擾亂,稱為主動篡改,但要注意的是,這種主動篡改過程必須保護篡改前和篡改后數(shù)據(jù)的原始語意不變;然后再執(zhí)行數(shù)字簽名。
為了讓攻擊者不能預期主動篡改,因此可能的修改方式的組合總數(shù)必須足夠多,并且在這些組合中進行挑選的算法也必須足夠隨機。如果只有一種固定的修改方式,那么攻擊者可以在提交簽署之前把這種固定的修改方式考慮進去,仍然可以進行碰撞攻擊??赡艿牟煌薷慕M合總數(shù)的最低限度根據(jù)此次簽名能夠容忍多大的攻擊概率確定。沒有絕對的安全,任何手段都不可能保證遭到攻擊的概率為0,但必須要降低到可以接受的程度。價值1元的訂單和價值100億元的訂單的安全要求顯然是不同的。但可能修改的組合數(shù)是否越大越安全呢?并非如此,這只是安全鏈條的一個環(huán)節(jié),如果所有可能修改的組合數(shù)的位寬度超過了散列值的位寬度,繼續(xù)增大組合數(shù)就不會再提高安全性。例如,散列值的寬度是128bit,在許可文件中找到了200個修改位置,每個位置有兩種修改方式,那么組合數(shù)的位寬度就是200bit,這種情況下所提高的安全性受散列值的位寬度限制,有72個修改位置是多余的。
保持數(shù)據(jù)原始語意不變的修改方式有許多種,可以構造一種數(shù)字簽名協(xié)議,根據(jù)協(xié)議確定一種修改方式。但在針對這種問題的協(xié)議出現(xiàn)之前,本發(fā)明的機制仍然可以工作,但需要根據(jù)數(shù)據(jù)類型的不同,采取以下不同的隨機修改方案1、文本格式。對于文本格式的數(shù)據(jù)(例如協(xié)議書或物品清單之類的數(shù)據(jù)),由于自然語言自身所具有的冗余性,可以選擇的修改非常多將一些名詞用同義詞或縮略語替代,詞和詞、句和句之間的空格數(shù)量可以是一個、兩個或者更多,段落尾部的空格數(shù)量可以更加隨意地控制,空行中空格的數(shù)量,文件尾部空格和空行的數(shù)量,文件中某些列表的順序等。除此之外,如果文本格式限制不是非常嚴格,可以直接在文本格式中附加一個輔助的隨機擾碼,直接附加在文本中。這個隨機擾碼可以用16進制來表示,所表示的數(shù)據(jù)寬度沒有必要超過所用單向散列函數(shù)產(chǎn)生的散列值寬度。
2、圖形格式。對于圖形格式,或者視頻格式,可以采用類似圖像水印之類的機制,在不明顯影響圖片視覺效果的前提下進行隨機微擾。要注意微擾本身的可能組合數(shù)沒有必要超過散列值寬度,對于通常的圖像來說,可能僅僅其中極少量的像素點就可以達到目的了。
3、聲音格式。與圖形格式類似,在不明顯影響聲音效果的前提下進行隨機微擾,通常只需要修改極少量的采樣點。
4、其它各種類型的數(shù)據(jù)格式,需要分析格式中的冗余信息,這些信息可以進行替代或增刪而絲毫不影響數(shù)據(jù)的原始語意。如果格式本身就包括一些無關緊要的信息,例如程序代碼中的注釋,或者一些備注信息等等,可以直接在其中加入一個明顯的隨機擾碼。
通過對這些格式的討論可以看到,對于不同的格式,采取主動篡改的方式可能不同,而且在文本格式中,甚至可能難以完全自動化實現(xiàn),某些類型的修改只能實現(xiàn)為半自動的人機交互版本。這顯然對于安全產(chǎn)品的開發(fā)是不利的。不同的安全產(chǎn)品必須對它所處理的數(shù)據(jù)類型進行針對性的隨機修改,甚至需要用戶參與。
如何解決這個問題呢?一個更好的辦法是創(chuàng)建使用主動篡改技術的數(shù)字簽名標準協(xié)議。規(guī)定數(shù)字簽名生成必須對原始數(shù)據(jù)附加一個與散列值寬度相同的隨機擾碼,數(shù)字簽名驗證方也必須對包含了擾碼的數(shù)字簽名進行驗證。這樣無論什么數(shù)據(jù),都可以進行統(tǒng)一的自動化處理。這就是主動篡改法在數(shù)字簽名協(xié)議中的應用方式,這種方式完全可以進行通用的自動化實現(xiàn)。
隨機擾動過程中對隨機性的要求。在計算機中使用隨機擾動,就需要使用隨機數(shù)發(fā)生器。隨機數(shù)發(fā)生器包括硬件真隨機數(shù)發(fā)生器,也包括軟件偽隨機數(shù)發(fā)生器,在完善的安全系統(tǒng)中,還可以得到安全隨機數(shù)服務。對于無統(tǒng)計偏差的硬件真隨機數(shù)發(fā)生器,其安全性自然得到保證。但更廣泛使用的是軟件偽隨機數(shù)發(fā)生器。這種隨機數(shù)發(fā)生器必須滿足密碼學對偽隨機數(shù)的安全要求,否則一旦攻擊者能夠?qū)χM行預測,那么隨機擾碼就毫無用處了。(真或偽)隨機數(shù)發(fā)生器的安全性實際上不僅是主動篡改技術所必須的,密鑰生成,數(shù)字簽名驗證等重要的安全服務,其安全性都依賴于隨機數(shù)發(fā)生器的安全性(本發(fā)明不涉及如何保證偽隨機數(shù)發(fā)生器的安全性,有關符合密碼學安全標準的隨機數(shù)發(fā)生器的內(nèi)容請參考密碼學和算法方面的專著)。
以數(shù)字簽名協(xié)議為例說明具有主動篡改的數(shù)字簽名和簽名驗證過程,如圖4所示步驟1簽名方在得到待簽名的原始許可文件后,主動在待簽名文本尾部附加一個名為“擾碼”的字段,內(nèi)容為隨機生成的16進制數(shù)字字符串,該串所表示的隨機數(shù)據(jù)位寬度等于原有數(shù)字簽名體制中所用的單向散列函數(shù)生成的散列值寬度。所述的原始許可文件主要是指從不完全可信任途徑得到的待簽名的許可文件。
步驟2簽名方利用單向散列函數(shù)對經(jīng)過主動篡改的文件進行運算得到第一散列值。
步驟3簽名方利用私有密鑰對步驟2中得到的第一散列值進行加密得到數(shù)字簽名。
步驟4將待驗證的許可文件和數(shù)字簽名提交給驗證方。
簽名方主動篡改之后的許可文件和數(shù)字簽名均需要提交給驗證方,主動篡改之后的許可文件作為待簽名文件。當然驗證方收到的待驗證文件可能是簽名方主動篡改后的許可文件,也可能是經(jīng)第三方惡意修改后的待簽名文件。
步驟5驗證方利用簽名方私有密鑰所對應的公有密鑰解密所述數(shù)字簽名得到第一散列值。
步驟6驗證方利用與步驟2中相同的單向散列函數(shù)對待驗證的許可文件明文進行運算得到第二散列值。
步驟7判斷第一散列值和第二散列值是否相同,如果相同則驗證成功,即說明待驗證的許可文件內(nèi)容是真實有效的,如果不相同則驗證失敗,即說明待驗證的許可文件內(nèi)容不真實。
驗證方并不關心“擾碼”字段的內(nèi)容,只要包括“擾碼”字段的文本全文能夠通過原有的簽名驗證即可確保許可文件內(nèi)容真實有效。
上述簽名過程采用的是非對稱加/解密算法,當然也可以用對稱加/解密算法,其主要不同之處在于簽名方和驗證方使用的是相同的密鑰。對于具體的單向散列函數(shù)和加/解算法的采用與現(xiàn)有技術相同。
對于不允許附加額外字段的數(shù)據(jù)類型或者協(xié)議,也可以選擇前述的幾種對不同類型數(shù)據(jù)的主動篡改方式對待簽名數(shù)據(jù)進行主動篡改,“擾碼”字段的寬度也不一定要等于單向散列函數(shù)的散列值寬度相同,根據(jù)安全性的要求,可以小于這個寬度,以便減少數(shù)據(jù)長度。
從上述可知,無論單向散列函數(shù)是否抗碰撞,采用本發(fā)明都可使數(shù)字簽名體制能夠抵抗碰撞攻擊,因此能夠提高數(shù)字簽名的安全性;而且本發(fā)明對數(shù)字簽名體制的運行效率(包括時間和空間效率)沒有負面影響。本發(fā)明的方法可以應用在數(shù)字簽名標準或者安全產(chǎn)品中。
顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若對本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權利要求
1.一種提高數(shù)字簽名安全性的方法,其特征在于包括如下步驟A、由簽名方主動修改待簽名原始許可文件,并使修改后許可文件中數(shù)據(jù)的語意和所述原始許可文件中數(shù)據(jù)的原始語意保持不變;B、利用單向散列函數(shù)對修改后的許可文件進行運算得到第一散列值;C、對第一散列值進行加密得到數(shù)字簽名。
2.如權利要求1所述的方法,其特征在于該方法還包括步驟D、將待驗證許可文件和所述數(shù)字簽名提交給驗證方;E、驗證方解密所述數(shù)字簽名得到第一散列值,以及利用單向散列函數(shù)對待驗證許可文件進行運算得到第二散列值;F、確定第一散列值和第二散列值是否相同,如果相同則驗證成功,否則驗證失敗。
3.如權利要求1所述的方法,其特征在于,所述原始許可文件是指從不完全可信任途徑得到的待簽名的許可文件。
4.如權利要求1、2或3所述的方法,其特征在于,步驟A中所述的主動修改是指根據(jù)原始許可文件的數(shù)據(jù)類型增加、刪除和/或替換不改變數(shù)據(jù)原始語意的內(nèi)容。
5.如權利要求4所述的方法,其特征在于,根據(jù)不同修改方式組合總數(shù)的位寬不大于所述單向散列函數(shù)的散列值位寬的原則進行隨機修改。
6.如權利要求1、2或3所述的方法,其特征在于,步驟A中所述的主動修改是指在原始許可文件中附加一個隨機擾碼。
7.如權利要求6所述的方法,其特征在于,所述隨機擾碼插入原始許可文件的尾部。
8.如權利要求6所述的方法,其特征在于,所述隨機擾碼的位寬不大于所述散列值的位寬。
9.如權利要求6所述的方法,其特征在于,采用硬件真隨機數(shù)發(fā)生器或符合密碼學安全要求的軟件偽隨機數(shù)發(fā)生器產(chǎn)生所述隨機擾碼。
10.如權利要求1所述的方法,其特征在于,所述加密和解密采用對稱加/解密算法,或者采用非對稱加/解密算法。
全文摘要
本發(fā)明公開了一種提高數(shù)字簽名安全性的方法,以使數(shù)字簽名體制能夠抵抗碰撞攻擊。該方法為由簽名方主動修改從不完全可信任途徑得到的待簽名的原始許可文件,并使修改后許可文件中數(shù)據(jù)的語意和所述原始許可文件中數(shù)據(jù)的原始語意保持不變;然后對修改后的許可文件進行哈希運算和加密得到數(shù)字簽名。本發(fā)明將數(shù)字簽名攻擊方所需要解決的問題由碰撞問題提升為第二原像問題,從而使數(shù)字簽名體制能夠抵抗碰撞攻擊。
文檔編號H04L9/30GK1753360SQ20041007928
公開日2006年3月29日 申請日期2004年9月26日 優(yōu)先權日2004年9月26日
發(fā)明者孫伊 申請人:華為技術有限公司