一種對文件進行簽名的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別是涉及一種對文件進行簽名的方法和一種對 文件進行簽名的裝置。
【背景技術(shù)】
[0002] 可執(zhí)行文件在計算機科學(xué)上,是指一種內(nèi)容可被電腦解釋為程序的電腦文件。相 對于其它文件類型,可執(zhí)行文件可能是一個操作系統(tǒng)中最重要的文件類型,因為它們是完 成操作的真正執(zhí)行者??蓤?zhí)行文件的大小、運行速度、資源占用情況以及可擴展性、可移植 性等與文件格式的定義和文件加載過程緊密相關(guān)。操作系統(tǒng)中的程序具有相應(yīng)的可執(zhí)行文 件,當(dāng)需要運行某個程序時,可以將該程序?qū)?yīng)的可執(zhí)行文件加載到內(nèi)存中,從而順利運行 該程序。
[0003] 隨著計算機技術(shù)在社會生活中各個領(lǐng)域的廣泛運用,惡意軟件(是指任何故意創(chuàng) 建用來執(zhí)行未經(jīng)授權(quán)并通常是有害行為的軟件)也如同其附屬品一樣接踵而來。由于這些 惡意軟件所具有的感染性、復(fù)制性及破壞性,其已成為困擾計算機使用的一個重大問題。因 此,程序?qū)?yīng)的可執(zhí)行文件很有可能被惡意軟件破壞,從而導(dǎo)致程序被惡意軟件劫持等嚴(yán) 重后果。
【發(fā)明內(nèi)容】
[0004] 鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上 述問題的對文件進行簽名的方法和相應(yīng)的對文件進行簽名的裝置。
[0005] 依據(jù)本發(fā)明的一個方面,提供了一種對文件進行簽名的方法,包括:
[0006] 根據(jù)文件當(dāng)前的狀態(tài),將預(yù)設(shè)的所述文件對應(yīng)的簽名信息添加至所述文件中;
[0007] 對所述文件中除所述簽名信息之外的內(nèi)容數(shù)據(jù)進行壓縮得到用于校驗所述文件 的校驗數(shù)據(jù),并利用預(yù)設(shè)的加密密鑰對所述校驗數(shù)據(jù)進行加密;
[0008] 將加密后的校驗數(shù)據(jù)添加至所述簽名信息中。
[0009] 可選地,所述根據(jù)文件當(dāng)前的狀態(tài),將預(yù)設(shè)的所述文件對應(yīng)的簽名信息添加至所 述文件中的步驟包括:
[0010] 若所述文件為正在編譯狀態(tài),則當(dāng)編譯到預(yù)設(shè)的所述文件對應(yīng)的第一專用節(jié)位置 時,將所述文件對應(yīng)的簽名信息編譯到所述第一專用節(jié)中;
[0011] 其中,所述第一專用節(jié)位置為在正在編譯狀態(tài)下,所述文件中需要添加所述文件 對應(yīng)的簽名信息的位置。
[0012] 可選地,所述根據(jù)文件當(dāng)前的狀態(tài),將預(yù)設(shè)的所述文件對應(yīng)的簽名信息添加至所 述文件中的步驟包括:
[0013] 若所述文件為編譯完成狀態(tài),則從所述文件中查找預(yù)設(shè)的所述文件對應(yīng)的第二專 用節(jié)位置,將所述文件對應(yīng)的簽名信息插入所述第二專用節(jié)中;
[0014] 其中,所述第二專用節(jié)位置為在編譯完成狀態(tài)下,所述文件中需要添加所述文件 對應(yīng)的簽名信息的位置。
[0015] 可選地,所述方法還包括:
[0016] 當(dāng)需要運行程序時,在加載所述程序?qū)?yīng)的文件之前,獲取所述文件對應(yīng)的攜帶 有所述加密后的校驗數(shù)據(jù)的簽名信息;
[0017] 提取所述簽名信息攜帶的所述加密后的校驗數(shù)據(jù),并利用與所述加密密鑰對應(yīng)的 解密密鑰對所述加密后的校驗數(shù)據(jù)進行解密;
[0018] 利用所述解密后的校驗數(shù)據(jù)驗證所述文件是否被篡改;
[0019] 利用所述簽名信息驗證所述文件的安全性。
[0020] 可選地,所述利用所述簽名信息驗證所述文件的安全性的步驟包括:
[0021] 將所述簽名信息與預(yù)設(shè)的白名單數(shù)據(jù)庫進行匹配,其中,所述白名單數(shù)據(jù)庫包括 可信簽名信息;
[0022] 若所述簽名信息與所述可信簽名信息相匹配,則確定所述文件為安全文件。
[0023] 可選地,所述利用所述解密后的校驗數(shù)據(jù)驗證所述文件是否被篡改的步驟包括:
[0024] 對所述文件中除所述簽名信息之外的內(nèi)容數(shù)據(jù)進行壓縮得到用于校驗所述文件 的當(dāng)前校驗數(shù)據(jù);
[0025] 將所述解密后的校驗數(shù)據(jù)和所述當(dāng)前校驗數(shù)據(jù)進行比較;
[0026] 若所述解密后的校驗數(shù)據(jù)和所述當(dāng)前校驗數(shù)據(jù)一致,則確定所述文件未被篡改。
[0027] 可選地,所述對所述文件中除所述簽名信息之外的內(nèi)容數(shù)據(jù)進行壓縮得到用于校 驗所述文件的校驗數(shù)據(jù),并利用預(yù)設(shè)的加密密鑰對所述校驗數(shù)據(jù)進行加密的步驟包括:
[0028]計算所述內(nèi)容數(shù)據(jù)對應(yīng)的第一散列摘要信息,其中,所述第一散列摘要信息為所 述校驗數(shù)據(jù);
[0029] 利用預(yù)設(shè)的加密密鑰對所述第一散列摘要信息進行加密。
[0030] 可選地,所述對所述文件中除所述簽名信息之外的內(nèi)容數(shù)據(jù)進行壓縮得到用于校 驗所述文件的當(dāng)前校驗數(shù)據(jù)的步驟包括:
[0031]計算所述內(nèi)容數(shù)據(jù)對應(yīng)的第二散列摘要信息,其中,所述第二散列摘要信息為所 述當(dāng)前校驗數(shù)據(jù);
[0032] 所述將所述解密后的校驗數(shù)據(jù)和當(dāng)前校驗數(shù)據(jù)進行比較的步驟包括:
[0033] 將所述第二散列摘要信息與所述第一散列摘要信息進行比較;
[0034] 若所述第二散列摘要信息與所述第一散列摘要信息相同,則確定所述解密后的校 驗數(shù)據(jù)和所述當(dāng)前校驗數(shù)據(jù)一致。
[0035] 可選地,所述利用預(yù)設(shè)的加密密鑰對所述校驗數(shù)據(jù)進行加密的步驟包括:
[0036] 利用預(yù)設(shè)的公私密鑰對中的私鑰對所述校驗數(shù)據(jù)進行加密;
[0037] 所述利用與所述加密密鑰對應(yīng)的解密密鑰對所述加密后的校驗數(shù)據(jù)進行解密的 步驟包括:
[0038] 利用所述公私密鑰對中的公鑰對所述加密后的校驗數(shù)據(jù)進行解密。
[0039] 可選地,在所述獲取所述文件對應(yīng)的攜帶有所述加密后的校驗數(shù)據(jù)的簽名信息的 步驟之前,還包括:
[0040] 確定所述文件是否為需要驗證的文件;
[0041] 若是,則執(zhí)行所述獲取所述文件對應(yīng)的攜帶有所述加密后的校驗數(shù)據(jù)的簽名信息 的步驟。
[0042] 可選地,所述對所述文件中除所述簽名信息之外的內(nèi)容數(shù)據(jù)進行壓縮得到用于校 驗所述文件的校驗數(shù)據(jù)的步驟包括:
[0043] 當(dāng)所述文件為編譯完成狀態(tài)時,對所述文件中除所述簽名信息之外的內(nèi)容數(shù)據(jù)進 行壓縮得到用于校驗所述文件的校驗數(shù)據(jù)。
[0044] 可選地,所述簽名信息包括所述文件的版本信息,和/或發(fā)行者信息,和/或產(chǎn)品 信息。
[0045] 根據(jù)本發(fā)明的另一方面,提供了一種對文件進行簽名的裝置,包括:
[0046] 添加模塊,用于根據(jù)文件當(dāng)前的狀態(tài),將預(yù)設(shè)的所述文件對應(yīng)的簽名信息添加至 所述文件中;
[0047] 加密模塊,用于對所述文件中除所述簽名信息之外的內(nèi)容數(shù)據(jù)進行壓縮得到用于 校驗所述文件的校驗數(shù)據(jù),并利用預(yù)設(shè)的加密密鑰對所述校驗數(shù)據(jù)進行加密;
[0048] 生成模塊,用于將加密后的校驗數(shù)據(jù)添加至所述簽名信息中。
[0049] 可選地,所述添加模塊包括:
[0050] 第一添加子模塊,用于在所述文件為正在編譯狀態(tài)時,當(dāng)編譯到預(yù)設(shè)的所述文件 對應(yīng)的第一專用節(jié)位置時,將所述文件對應(yīng)的簽名信息編譯到所述第一專用節(jié)中;
[0051] 其中,所述第一專用節(jié)位置為在正在編譯狀態(tài)下,所述文件中需要添加所述文件 對應(yīng)的簽名信息的位置。
[0052] 可選地,所述添加模塊包括:
[0053] 第二添加子模塊,用于當(dāng)所述文件為編譯完成狀態(tài)時,從所述文件中查找預(yù)設(shè)的 所述文件對應(yīng)的第二專用節(jié)位置,將所述文件對應(yīng)的簽名信息插入所述第二專用節(jié)中;
[0054] 其中,所述第二專用節(jié)位置為在編譯完成狀態(tài)下,所述文件中需要添加所述文件 對應(yīng)的簽名信息的位置。
[0055] 可選地,所述裝置還包括:
[0056] 獲取模塊,用于當(dāng)需要運行程序時,在加載所述程序?qū)?yīng)的文件之前,獲取所述文 件對應(yīng)的攜帶有所述加密后的校驗數(shù)據(jù)的簽名信息;
[0057] 解密模塊,用于提取所述簽名信息攜帶的所述加密后的校驗數(shù)據(jù),并利用與所述 加密密鑰對應(yīng)的解密密鑰對所述加密后的校驗數(shù)據(jù)進行解密;
[0058] 第一驗證模塊,用于利用所述解密后的校驗數(shù)據(jù)驗證所述文件是否被篡改;
[0059] 第二驗證模塊,用于利用所述簽名信息驗證所述文件的安全性。
[0060] 可選地,所述第二驗證模塊包括:
[0061] 匹配子模塊,用于將所述簽名信息與預(yù)設(shè)的白名單數(shù)據(jù)庫進行匹配,其中,所述白 名單數(shù)據(jù)庫包括可信簽名信息;
[0062] 第二確定子模塊,用于當(dāng)所述簽名信息與所述可信簽名信息相匹配時,確定所述 文件為安全文件。
[0063] 可選地,所述第一驗證模塊包括:
[0064] 比較子模塊,用于對所述文件中除所述簽名信息之外的內(nèi)容數(shù)據(jù)進行壓縮得到用 于校驗所述文件的當(dāng)前校驗數(shù)據(jù),并將所述解密后的校驗數(shù)據(jù)和所述當(dāng)前校驗數(shù)據(jù)進行比 較;
[0065]第一確定子模塊,用于當(dāng)所述解密后的校驗數(shù)據(jù)和所述當(dāng)前校驗數(shù)據(jù)一致時,確 定所述文件未被篡改。
[0066]可選地,所述加密模塊包括,具體用于計算所述內(nèi)容數(shù)據(jù)對應(yīng)的第一散列摘要信 息,并利用預(yù)設(shè)的加密密鑰對所述第一散列摘要信息進行加密,其中,所述第一散列摘要信 息為所述校驗數(shù)據(jù)。
[0067]可選地,所述比較子模塊,具體用于計算所述內(nèi)容數(shù)據(jù)對應(yīng)的第二散列摘要信息, 其中,所述第二散列摘要信息為所述當(dāng)前校驗數(shù)據(jù);將所述第二散列摘要信息與所述第一 散列摘要信息進行比較;當(dāng)所述第二散列摘要信息與所述第一散列摘要信息相同時,確定 所述解密后的校驗數(shù)據(jù)和所述當(dāng)前校驗數(shù)據(jù)一致。
[0068]可選地,所述加密模塊,具體用于利用預(yù)設(shè)的公私密鑰對中的私鑰對所述校驗數(shù) 據(jù)進行加密;
[0069]所述解密模塊,具體用于利用所述公私密鑰對中的公鑰對所述加密后的校驗數(shù)據(jù) 進行解密。
[0070]可選地,所述裝置還包括:
[0071]確定模塊,用于在所述獲取模塊獲取所述文件對應(yīng)的攜帶有所述加密后的校驗數(shù) 據(jù)的簽名信息之前,確定所述文件是否為需要驗證的文件;若是,則調(diào)用所述獲取模塊獲取 所述文件對應(yīng)的攜帶有所述加密后的校驗數(shù)據(jù)的簽名信息。
[0072] 可選地,具體用于當(dāng)所述文件為編譯完成狀態(tài)時,對所述文件中除所述簽名信息 之外的內(nèi)容數(shù)據(jù)進行壓縮得到用于校驗所述文件的校驗數(shù)據(jù),并利用預(yù)設(shè)的加密密鑰對所 述校驗數(shù)據(jù)進行加密。
[0073] 可選地,所述簽名信息包括所述文件的版本信息,和/或發(fā)行者信息,和/或產(chǎn)品 信息。
[0074]根據(jù)本發(fā)明的對文件進行簽名的方案,首先根據(jù)文件當(dāng)前的狀態(tài),將預(yù)設(shè)的文件 對應(yīng)的簽名信息添加至文件中,然后對文件中除簽名信息之外的內(nèi)容數(shù)據(jù)進行壓縮得到用 于校驗所述文件的校驗數(shù)據(jù),并利用預(yù)設(shè)的加密密鑰對校驗數(shù)據(jù)進行加密,最后將加密后 的校驗數(shù)據(jù)寫入簽名信息中。由于對文件進行了簽名,并且對文件的內(nèi)容數(shù)據(jù)進行加密,因 此后續(xù)在加載文件時,即可利用對應(yīng)的文件的簽名對文