專利名稱:一種數(shù)字簽名的實現(xiàn)方法及裝置的制作方法
技術領域:
本發(fā)明涉及數(shù)據(jù)加密技術,特別涉及一種數(shù)字簽名的實現(xiàn)方法及裝置。
背景技術:
目前,公鑰密碼算法已經(jīng)得到了廣泛應用,并以很快的速度得到普及。公鑰密碼算 法包含雜湊運行和數(shù)字簽名運算兩部分,其中數(shù)字簽名運算是公鑰密碼算法應用的重要部 分。實際應用中,用公鑰密碼算法對指定數(shù)據(jù)實現(xiàn)數(shù)字簽名時,要先使用雜湊算法,對待簽 名數(shù)據(jù)做雜湊運算,然后再對雜湊結果做預處理(補位填充),再采用公鑰密碼做數(shù)字簽名 運算(以下簡稱簽名運算),最終得到經(jīng)數(shù)字簽名的加密數(shù)據(jù)。在歷史應用中,曾經(jīng)采用160位的SHAl雜湊算法做雜湊運算,采用1024位的公鑰 密碼做RSA簽名運算,簽名算法的位數(shù)遠大于雜湊算法的位數(shù)。以往,對于簽名算法的安全 要求,是要保證RSA的強度,曾經(jīng)需要1024位或以上的RSA,而對于雜湊算法的安全要求,僅 需要采用160位的SHAl進行雜湊算法即認為是安全的。顯然,簽名算法要保證安全強度, 就需要位數(shù)更長的公鑰密碼,而公鑰密碼位數(shù)的增大,則意味著資源消耗的增加,包括存儲 空間、計算量、通訊帶寬等等。針對上述問題,目前,采用橢圓曲線公鑰密碼算法(ECC)簽名算法來實現(xiàn)數(shù)字簽 名,這樣可以在公鑰密碼位數(shù)很小前提下,保證簽名運算的安全強度。例如,現(xiàn)有技術下, 采用256位公鑰密碼的ECC簽名算法即可以被認為是安全的;而以前被認為安全160位的 SHAl雜湊算法,在攻擊技術迅速發(fā)展的環(huán)境中,其安全性已經(jīng)受到了威脅,為保證安全強 度,現(xiàn)有技術下,已采用了 256位的SHA256雜湊算法以提高其安全性??梢姡壳安捎玫墓?鑰密碼算法是基于長度相同的雜湊算法和ECC簽名算法來實現(xiàn)數(shù)字簽名的一種數(shù)據(jù)加密 方法,彌補了以往技術中的算法安全性不足和資源耗費較大的缺陷。然而上述公鑰密碼算法仍存在一些缺陷,主要體現(xiàn)為當256位的ECC簽名算法和256位的SHA256雜湊算法結合使用時,這種簽名算法 位數(shù)和雜湊算法位數(shù)相等的情況,存在不匹配的問題,因為,256位的雜湊結果,已經(jīng)令后續(xù) 做256位的簽名運算沒有了補位空間了,不利于提高簽名算法的安全性。其次,可能會出現(xiàn) 雜湊結果的數(shù)值大于ECC模量的情況,從而無法做正確簽名運算。
發(fā)明內(nèi)容
本發(fā)明提供一種數(shù)字簽名的實現(xiàn)方法及裝置,用以在基于相等位數(shù)的雜湊算法和 數(shù)字簽名算法對數(shù)據(jù)進行數(shù)字簽名時,保證算法的正確執(zhí)行。本發(fā)明實施例提供的具體技術方案如下一種實現(xiàn)數(shù)字簽名的方法,包括根據(jù)符合指定位數(shù)的雜湊算法,對待簽名數(shù)據(jù)進行雜湊運算;對經(jīng)雜湊運算獲得的雜湊結果進行縮小映射,以將雜湊結果包含的數(shù)據(jù)的位數(shù)縮 減至小于所述指定位數(shù);
根據(jù)符合所述指定位數(shù)的數(shù)字簽名算法對映射結果進行數(shù)字簽名運算。一種實現(xiàn)數(shù)字簽名的裝置,包括雜湊運算單元,用于根據(jù)符合指定位數(shù)的雜湊算法,對待簽名數(shù)據(jù)進行雜湊運算;映射單元,用于對經(jīng)雜湊運算獲得的雜湊結果進行縮小映射,以將雜湊結果包含 的數(shù)據(jù)的位數(shù)縮減至小于所述指定位數(shù);簽名運算單元,用于根據(jù)符合所述指定位數(shù)的數(shù)字簽名算法對映射結果進行數(shù)字 簽名運算。本發(fā)明實施例中,對待簽名數(shù)據(jù)進行符合指定位數(shù)的雜湊運算后,對獲得的雜湊 結果進行縮小映射,以將雜湊結果包含的數(shù)據(jù)的位數(shù)縮減至小于所述指定位數(shù),再根據(jù)符 合所述指定位數(shù)的數(shù)字簽名算法對映射結果進行數(shù)字簽名運算。這樣,在基于相等位數(shù)的 雜湊算法和數(shù)字簽名算法對數(shù)據(jù)進行數(shù)字簽名時,可以避免出現(xiàn)雜湊結果大于簽名模量的 情況,從而保證數(shù)字簽名算法的正確執(zhí)行。
圖1為本發(fā)明實施例中用于實現(xiàn)數(shù)字簽名的裝置功能結構圖;圖2為本發(fā)明實施例中對待簽名數(shù)據(jù)進行數(shù)據(jù)簽名流程圖。
具體實施例方式基于相等位數(shù)的雜湊算法和數(shù)字簽名算法對數(shù)據(jù)進行數(shù)字簽名時,為了保證算法 的正確執(zhí)行,本發(fā)明實施例中,根據(jù)符合指定位數(shù)的雜湊算法,對待簽名數(shù)據(jù)進行雜湊運 算;對經(jīng)雜湊運算獲得的雜湊結果進行縮小映射,以將雜湊結果包含的數(shù)據(jù)的位數(shù)縮減至 小于所述指定位數(shù);根據(jù)符合所述指定位數(shù)的數(shù)字簽名算法對映射結果進行數(shù)字簽名運
笪弁。下面結合附圖對本發(fā)明優(yōu)選的實施方式進行詳細說明。參閱圖1所示,本發(fā)明實施例中,用于實現(xiàn)數(shù)字簽名的裝置包括雜湊運算單元10、 映射單元11和簽名運算單元12,其中,雜湊運算單元10,用于根據(jù)符合指定位數(shù)的雜湊算法,對待簽名數(shù)據(jù)進行雜湊運 算;映射單元11,用于對經(jīng)雜湊運算獲得的雜湊結果進行縮小映射,以將雜湊結果包 含的數(shù)據(jù)的位數(shù)縮減至小于所述指定位數(shù);簽名運算單元12,用于根據(jù)符合所述指定位數(shù)的數(shù)字簽名算法對映射結果進行數(shù) 字簽名運算?;谏鲜鲈?,本發(fā)明實施例中,以256位雜湊算法和256位的ECC數(shù)字簽名算法 配合為例,為了保證256位的雜湊計算結果下一步用256位的ECC算法做數(shù)字簽名運算,需 要對雜湊結果做預處理,所謂預處理,即是先對雜湊結果做縮小映射,然后再做填充,之后 就可以采用256位ECC數(shù)字簽名算法進行數(shù)字簽名了。參閱圖2所示,采用上述裝置對待 簽名數(shù)據(jù)進行數(shù)字簽名的詳細流程如下步驟200 采用256位的雜湊算法,對待簽名數(shù)據(jù)進行雜湊運算。
采用256位的雜湊算法,獲得的雜湊結果是位數(shù)是256位。步驟210 對經(jīng)雜湊運算獲得的256位的雜湊結果進行縮小映射,以將雜湊結果包 含的數(shù)據(jù)的位數(shù)縮減至小于256位。步驟220 采用256位的數(shù)字簽名算法對映射結果進行數(shù)字簽名運算。在上述步驟210中,所謂的縮小映射,有多種實現(xiàn)方式,例如,截取、取模運算、或 其他映射計算。其中,所謂截取操作,就是從雜湊結果中獲取指定數(shù)據(jù)部分,實現(xiàn)方式包含但不限于去 掉雜湊結果前部分數(shù)據(jù),獲取剩余的后部分數(shù)據(jù);也可以去除雜湊結果后部分數(shù)據(jù),獲取剩 余的前部分數(shù)據(jù)。截取操作的具體實現(xiàn)步驟為確定預設的截取位數(shù)及截取位置;在所述 截取位置去除符合所述截取位數(shù)的數(shù)據(jù),并將獲取的剩余數(shù)據(jù)作為映射結果。截取操作時, 去除數(shù)據(jù)的長度,可以根據(jù)應用環(huán)境由管理員自行設置,如,去掉一個字節(jié)或N個字節(jié)(N> 1)。為了盡量避免沖突,較佳的,需要在保證后續(xù)運算效果的前提下去除盡量少的數(shù)據(jù),截 取到大部分的數(shù)據(jù)。 所謂沖突,即是指不同的待簽名數(shù)據(jù),其雜湊運算的結果是不同的,數(shù)字簽名運算 的結果也是不同的,如果不同的待簽名數(shù)據(jù),經(jīng)過雜湊運算,在簽名運算之前或簽名之后, 出現(xiàn)了相同的雜湊結果,就是發(fā)生了沖突。例如,兩個不同的待簽名數(shù)據(jù),其各自的雜湊結 果只在最前一個字節(jié)有區(qū)別,其他位數(shù)都是相同的,那么,若在進行映射處理時,把第一個 字節(jié)截掉,取后面的剩余部分,則在進行數(shù)字簽名運算之前就已經(jīng)發(fā)生了沖突。沖突發(fā)生的概率,隨截取長度的不同而變化,去除的數(shù)據(jù)越多,獲取的剩余數(shù)據(jù)便 越少,則發(fā)生沖突的概率就越大。因此,本實施例中,預設截取方法時,應盡量減少去除的數(shù) 據(jù)量,而保留盡量多的剩余數(shù)據(jù),只要保證補位空間即可。對于截取操作,實際應用中,舉一個極端的例子,若把256位的雜湊結果包含的大 部分數(shù)據(jù)都去除,如,只獲取一個字節(jié)的數(shù)據(jù),那么雜湊結果只可能有256種變化,很容易 遭受攻擊。所以執(zhí)行截取操作時,要盡可能多地保留雜湊結果中包含的數(shù)據(jù),減小受到攻擊 的概率。反之,若把雜湊結果包含的數(shù)據(jù)僅去除一個字節(jié),而獲取剩余的31個字節(jié),則變化 數(shù)量是10的75次方數(shù)量級,顯然,可以很好地避免受到攻擊。盡管如此,因為截掉了 1個 字節(jié),就不可避免地在理論上存在了沖突,只不過,這種沖突出現(xiàn)的概率很小,其數(shù)量級是 變化數(shù)的倒數(shù),其安全性是在可信范圍內(nèi)。經(jīng)實驗證明,執(zhí)行截取操作時,保留20字節(jié)是下 限,即要保留20字節(jié)以上長度的數(shù)據(jù),才能保證算法的安全性。例如,以256位雜湊算法和256位的ECC數(shù)字簽名算法配合為例,256位的雜湊結 果以二進制形式輸出,共有32字節(jié),去掉最前邊的1個字節(jié),取剩余的部分(31個字節(jié)),最 前邊的一個字節(jié)空間,可作為補位空間。較佳地,補位的原則為最高位補零,如,補位字節(jié) 可以是十六進制的04,也就是二進制的00001000,保證了最前邊有4個二進制位的0。所謂取模運算,即是采用ECC簽名算法的模量做一次取模運算,得到取模結果。在 實際應用中,以取模運算作為映射手段,只解決了最高位的問題,是發(fā)生沖突概率比較小的 一種方法;但是,因為空出來的空間有限,沒有足夠的補位空間,無法約定其他種類的補位 協(xié)議,只能不進行補位,僅保證最高位0,以確保后續(xù)的數(shù)字簽名運算能夠正確進行,即確保 映射結果小于簽名模量。。其中,所謂模量,是ECC簽名算法中預設的一個參數(shù),即橢圓曲線 參數(shù)中的一個參數(shù)。
取模運算的具體實現(xiàn)步驟為確定數(shù)字簽名算法所使用的模量,采用所述模量對 所述雜湊結果進行取模操作,并將獲取的取模結果作為映射結果。其中,為了保證映射效 果,當雜湊結果可能大于簽名算法的模量時,較佳的,取模運算采用以下方式實現(xiàn)用數(shù)字 簽名算法的模量與雜湊結果相除,不取商,只取余數(shù),計算出來的余數(shù),作為映射結果,這 樣,可以保證映映射結果的大小,小于數(shù)字簽名算法所使用的模量。這里的其他映射計算,可以是任何可行的映射,只要把雜湊結果映射到小于256 位的空間。較佳的,在后續(xù)的補位填充時,將需填充的數(shù)據(jù)部分放在數(shù)據(jù)高位,將需映射的 數(shù)據(jù)部分放在數(shù)據(jù)低位,填充后構成256位的填充結果,這256位的填充結果可提供ECC做 數(shù)字簽名運算。同時,在采用其他映射對雜湊結果進行映射處理時,也需要考慮盡量避免發(fā)生沖 突,減小遭受攻擊的可能性。這里的沖突,同樣是指雜湊計算后,由于還要進行映射處理,就 可能出現(xiàn)針對輸出的不同雜湊結果,輸出相同的映射結果。例如,兩種雜湊結果的區(qū)別僅在 于最高位字節(jié),其他字節(jié)相同,若采用去掉最高位字節(jié)的截取方法實現(xiàn)映射,便會令映射后 的結果相同了。因此實際應用中,針對不同的雜湊結果,在進行映射處理時,要盡量減少去 年的字節(jié)數(shù),盡量避免不同的雜湊結果經(jīng)映射處理后輸出的映射結果相同。 綜上所述,本發(fā)明實施例中,對待簽名數(shù)據(jù)進行符合指定位數(shù)的雜湊運算后,對獲 得的雜湊結果進行縮小映射,以將雜湊結果包含的數(shù)據(jù)的位數(shù)縮減至小于所述指定位數(shù), 再根據(jù)符合所述指定位數(shù)的數(shù)字簽名算法對映射結果進行數(shù)字簽名運算。這樣,在基于相 等位數(shù)的雜湊算法和數(shù)字簽名算法對數(shù)據(jù)進行數(shù)字簽名時,可以避免出現(xiàn)雜湊結果大于簽 名模量的情況,從而保證數(shù)字簽名算法的正確執(zhí)行。另一方面,本發(fā)明實施例中以截取操作 為映射手段時,為后續(xù)的數(shù)字簽名算法提供了補位空間,有利于應用中簽名協(xié)議的制定。本領域內(nèi)的技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序 產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實 施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機 可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn) 品的形式。本申請是參照根據(jù)本申請實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程 圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一 流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算 機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理 器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生 用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能 的裝置。這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特 定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指 令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或 多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計 算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。盡管已描述了本申請的優(yōu)選實施例,但本領域內(nèi)的技術人員一旦得知了基本創(chuàng)造 性概念,則可對這些實施例做出另外的變更和修改。所以,所附權利要求意欲解釋為包括優(yōu) 選實施例以及落入本申請范圍的所有變更和修改。顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權利要求
一種實現(xiàn)數(shù)字簽名的方法,其特征在于,包括根據(jù)符合指定位數(shù)的雜湊算法,對待簽名數(shù)據(jù)進行雜湊運算;對經(jīng)雜湊運算獲得的雜湊結果進行縮小映射,以將雜湊結果包含的數(shù)據(jù)的位數(shù)縮減至小于所述指定位數(shù);根據(jù)符合所述指定位數(shù)的數(shù)字簽名算法對映射結果進行數(shù)字簽名運算。
2.如權利要求1所述的方法,其特征在于,在對經(jīng)雜湊運算獲得的雜湊結果進行縮小 映射后,在根據(jù)符合所述指定位數(shù)的數(shù)字簽名算法對映射結果進行數(shù)字簽名運算之前,包 括對映射結果進行補位填充。
3.如權利要求2所述的方法,其特征在于,對映射結果進行補位填充,包括在高位放 置填充數(shù)據(jù),在低位放置需映射數(shù)據(jù)。
4.如權利要求1、2或3所述的方法,其特征在于,所述縮小映射為截取操作,包括確定預設的截取位數(shù)及截取位置;在所述截取位置去除符合所述截取位數(shù)的數(shù)據(jù),并將獲取的剩余數(shù)據(jù)作為映射結果。
5.如權利要求4所述的方法,其特征在于,所述剩余數(shù)據(jù)包含至少20字節(jié)。
6.如權利要求1、2或3所述的方法,其特征在于,所述縮小映射為取模運算,包括確定所述數(shù)字簽名算法所使用的模量;采用所述模量對所述雜湊結果進行取模操作,并將獲取的取模結果作為映射結果。
7.一種實現(xiàn)數(shù)字簽名的裝置,其特征在于,包括雜湊運算單元,用于根據(jù)符合指定位數(shù)的雜湊算法,對待簽名數(shù)據(jù)進行雜湊運算;映射單元,用于對經(jīng)雜湊運算獲得的雜湊結果進行縮小映射,以將雜湊結果包含的數(shù) 據(jù)的位數(shù)縮減至小于所述指定位數(shù);簽名運算單元,用于根據(jù)符合所述指定位數(shù)的數(shù)字簽名算法對映射結果進行數(shù)字簽名 運算。
8.如權利要求7所述的裝置,其特征在于,所述映射單元在對雜湊運算獲得的雜湊結 果進行縮小映射后,所述簽名運算單元在根據(jù)符合所述指定位數(shù)的數(shù)字簽名算法對映射結 果進行數(shù)字簽名運算之前,對映射結果進行補位填充。
9.如權利要求7或8所述的裝置,其特征在于,所述映射單元對經(jīng)雜湊運算獲得的雜湊 結果進行縮小映射時,確定預設的截取位數(shù)及截取位置,并在所述截取位置去除符合所述 截取位數(shù)的數(shù)據(jù),以及將獲取的剩余數(shù)據(jù)作為映射結果。
10.如權利要求7所述的裝置,其特征在于,所述映射單元對經(jīng)雜湊運算獲得的雜湊結 果進行縮小映射時,確定所述數(shù)字簽名算法所使用的模量,并采用所述模量對所述雜湊結 果進行取模操作,以及將獲取的取模結果作為映射結果。
全文摘要
本發(fā)明公開了一種數(shù)字簽名的實現(xiàn)方法及裝置,用于在基于相等位數(shù)的雜湊算法和數(shù)字簽名算法對數(shù)據(jù)進行數(shù)字簽名時,保證算法的正確執(zhí)行。該方法為根據(jù)符合指定位數(shù)的雜湊算法,對待簽名數(shù)據(jù)進行雜湊運算;對經(jīng)雜湊運算獲得的雜湊結果進行縮小映射,以將雜湊結果包含的數(shù)據(jù)的位數(shù)縮減至小于所述指定位數(shù);根據(jù)符合所述指定位數(shù)的數(shù)字簽名算法對映射結果進行數(shù)字簽名運算。這樣,在基于相等位數(shù)的雜湊算法和數(shù)字簽名算法對數(shù)據(jù)進行數(shù)字簽名時,可以避免出現(xiàn)雜湊結果大于簽名模量的情況,從而保證數(shù)字簽名算法的正確執(zhí)行。本發(fā)明同時公開了一種用于實現(xiàn)數(shù)字簽名的裝置。
文檔編號H04L9/30GK101860434SQ20101018991
公開日2010年10月13日 申請日期2010年5月25日 優(yōu)先權日2010年5月25日
發(fā)明者胡俊義 申請人:北京握奇數(shù)據(jù)系統(tǒng)有限公司